Initial commit.

This commit is contained in:
Orne Brocaar
2022-04-06 21:18:32 +01:00
commit 96fe672fc7
709 changed files with 335482 additions and 0 deletions

47
api/python/Makefile Normal file
View File

@ -0,0 +1,47 @@
.PHONY: requirements common gw api integration meta
PROTOC := python -m grpc_tools.protoc
PROTOC_ARGS := -I=/googleapis -I=proto --python_out=src --grpc_python_out=src
PACKAGE_NAME := import \"chirpstack-api/
all: requirements pre-build version common gw api integration meta
requirements:
pip install grpcio-tools
version:
sed -i 's/version.*/version = "$(VERSION)",/g' ./src/setup.py
# See: https://github.com/protocolbuffers/protobuf/issues/7061
pre-build:
rm -rf proto
mkdir -p proto/chirpstack-api
cp -r ../proto/* proto/chirpstack-api/
sed -i 's@^import "common/@$(PACKAGE_NAME)common/@g' `find proto/chirpstack-api -type f -name "*.proto*"`
sed -i 's@^import "gw/@$(PACKAGE_NAME)gw/@g' `find proto/chirpstack-api -type f -name "*.proto*"`
sed -i 's@^import "api/@$(PACKAGE_NAME)api/@g' `find proto/chirpstack-api -type f -name "*.proto*"`
mkdir -p src
common:
$(PROTOC) $(PROTOC_ARGS) chirpstack-api/common/common.proto
gw:
$(PROTOC) $(PROTOC_ARGS) chirpstack-api/gw/gw.proto
api:
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/internal.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/user.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/tenant.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/application.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/device_profile.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/device.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/gateway.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/frame_log.proto
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/api/multicast_group.proto
integration:
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/integration/integration.proto
meta:
$(PROTOC) ${PROTOC_ARGS} chirpstack-api/meta/meta.proto

View File

@ -0,0 +1,738 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "ApplicationProto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
// ApplicationService is the service providing API methods for managing applications.
service ApplicationService {
// Create creates the given application.
rpc Create(CreateApplicationRequest) returns (CreateApplicationResponse) {}
// Get the application for the given ID.
rpc Get(GetApplicationRequest) returns (GetApplicationResponse) {}
// Update updates the given application.
rpc Update(UpdateApplicationRequest) returns (google.protobuf.Empty) {}
// Delete the application for the given ID.
rpc Delete(DeleteApplicationRequest) returns (google.protobuf.Empty) {}
// Get the list of applications.
rpc List(ListApplicationsRequest) returns (ListApplicationsResponse) {}
// List all configured integrations.
rpc ListIntegrations(ListIntegrationsRequest) returns (ListIntegrationsResponse) {}
// Create HTTP integration.
rpc CreateHttpIntegration(CreateHttpIntegrationRequest) returns (google.protobuf.Empty) {}
// Get the configured HTTP integration.
rpc GetHttpIntegration(GetHttpIntegrationRequest) returns (GetHttpIntegrationResponse) {}
// Update the HTTP integration.
rpc UpdateHttpIntegration(UpdateHttpIntegrationRequest) returns (google.protobuf.Empty) {}
// Delete the HTTP integration.
rpc DeleteHttpIntegration(DeleteHttpIntegrationRequest) returns (google.protobuf.Empty) {}
// Create InfluxDb integration.
rpc CreateInfluxDbIntegration(CreateInfluxDbIntegrationRequest) returns (google.protobuf.Empty) {}
// Get InfluxDb integration.
rpc GetInfluxDbIntegration(GetInfluxDbIntegrationRequest) returns (GetInfluxDbIntegrationResponse) {}
// Update InfluxDb integration.
rpc UpdateInfluxDbIntegration(UpdateInfluxDbIntegrationRequest) returns (google.protobuf.Empty) {}
// Delete InfluxDb integration.
rpc DeleteInfluxDbIntegration(DeleteInfluxDbIntegrationRequest) returns (google.protobuf.Empty) {}
// Create ThingsBoard integration.
rpc CreateThingsBoardIntegration(CreateThingsBoardIntegrationRequest) returns (google.protobuf.Empty) {}
// Get ThingsBoard integration.
rpc GetThingsBoardIntegration(GetThingsBoardIntegrationRequest) returns (GetThingsBoardIntegrationResponse) {}
// Update ThingsBoard integration.
rpc UpdateThingsBoardIntegration(UpdateThingsBoardIntegrationRequest) returns (google.protobuf.Empty) {}
// Delete ThingsBoard integration.
rpc DeleteThingsBoardIntegration(DeleteThingsBoardIntegrationRequest) returns (google.protobuf.Empty) {}
// Create myDevices integration.
rpc CreateMyDevicesIntegration(CreateMyDevicesIntegrationRequest) returns (google.protobuf.Empty) {}
// Get myDevices integration.
rpc GetMyDevicesIntegration(GetMyDevicesIntegrationRequest) returns (GetMyDevicesIntegrationResponse) {}
// Update myDevices integration.
rpc UpdateMyDevicesIntegration(UpdateMyDevicesIntegrationRequest) returns (google.protobuf.Empty) {}
// Delete myDevices integration.
rpc DeleteMyDevicesIntegration(DeleteMyDevicesIntegrationRequest) returns (google.protobuf.Empty) {}
// Create LoRaCloud integration.
rpc CreateLoraCloudIntegration(CreateLoraCloudIntegrationRequest) returns (google.protobuf.Empty) {}
// Get LoRaCloud integration.
rpc GetLoraCloudIntegration(GetLoraCloudIntegrationRequest) returns (GetLoraCloudIntegrationResponse) {}
// Update LoRaCloud integration.
rpc UpdateLoraCloudIntegration(UpdateLoraCloudIntegrationRequest) returns (google.protobuf.Empty) {}
// Delete LoRaCloud integration.
rpc DeleteLoraCloudIntegration(DeleteLoraCloudIntegrationRequest) returns (google.protobuf.Empty) {}
// Create GCP Pub/Sub integration.
rpc CreateGcpPubSubIntegration(CreateGcpPubSubIntegrationRequest) returns (google.protobuf.Empty) {}
// Get GCP Pub/Sub integration.
rpc GetGcpPubSubIntegration(GetGcpPubSubIntegrationRequest) returns (GetGcpPubSubIntegrationResponse) {}
// Update GCP Pub/Sub integration.
rpc UpdateGcpPubSubIntegration(UpdateGcpPubSubIntegrationRequest) returns (google.protobuf.Empty) {}
// Delete GCP Pub/Sub integration.
rpc DeleteGcpPubSubIntegration(DeleteGcpPubSubIntegrationRequest) returns (google.protobuf.Empty) {}
// Create AWS SNS integration.
rpc CreateAwsSnsIntegration(CreateAwsSnsIntegrationRequest) returns (google.protobuf.Empty) {}
// Get AWS SNS integration.
rpc GetAwsSnsIntegration(GetAwsSnsIntegrationRequest) returns (GetAwsSnsIntegrationResponse) {}
// Update AWS SNS integration.
rpc UpdateAwsSnsIntegration(UpdateAwsSnsIntegrationRequest) returns (google.protobuf.Empty) {}
// Delete AWS SNS integration.
rpc DeleteAwsSnsIntegration(DeleteAwsSnsIntegrationRequest) returns (google.protobuf.Empty) {}
// Create Azure Service-Bus integration.
rpc CreateAzureServiceBusIntegration(CreateAzureServiceBusIntegrationRequest) returns (google.protobuf.Empty) {}
// Get Azure Service-Bus integration.
rpc GetAzureServiceBusIntegration(GetAzureServiceBusIntegrationRequest) returns (GetAzureServiceBusIntegrationResponse) {}
// Update Azure Service-Bus integration.
rpc UpdateAzureServiceBusIntegration(UpdateAzureServiceBusIntegrationRequest) returns (google.protobuf.Empty) {}
// Delete Azure Service-Bus integration.
rpc DeleteAzureServiceBusIntegration(DeleteAzureServiceBusIntegrationRequest) returns (google.protobuf.Empty) {}
// Create Pilot Things integration.
rpc CreatePilotThingsIntegration(CreatePilotThingsIntegrationRequest) returns (google.protobuf.Empty) {}
// Get Pilot Things integration.
rpc GetPilotThingsIntegration(GetPilotThingsIntegrationRequest) returns (GetPilotThingsIntegrationResponse) {}
// Update Pilot Things integration.
rpc UpdatePilotThingsIntegration(UpdatePilotThingsIntegrationRequest) returns (google.protobuf.Empty) {}
// Delete Pilot Things integration.
rpc DeletePilotThingsIntegration(DeletePilotThingsIntegrationRequest) returns (google.protobuf.Empty) {}
// Generates application ID specific client-certificate.
rpc GenerateMqttIntegrationClientCertificate(GenerateMqttIntegrationClientCertificateRequest) returns (GenerateMqttIntegrationClientCertificateResponse) {}
}
enum Encoding {
JSON = 0;
PROTOBUF = 1;
}
enum IntegrationKind {
HTTP = 0;
INFLUX_DB = 1;
THINGS_BOARD = 2;
MY_DEVICES = 3;
LORA_CLOUD = 4;
GCP_PUB_SUB = 5;
AWS_SNS = 6;
AZURE_SERVICE_BUS = 7;
PILOT_THINGS = 8;
MQTT_GLOBAL = 9;
}
message Application {
// Application ID (UUID).
// Note: on create this will be automatically generated.
string id = 1;
// Application name.
string name = 2;
// Application description.
string description = 3;
// Tenant ID (UUID).
string tenant_id = 4;
}
message ApplicationListItem {
// Application ID (UUID).
string id = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Application name.
string name = 4;
// Application description.
string description = 5;
}
message CreateApplicationRequest {
// Application object to create.
Application application = 1;
}
message CreateApplicationResponse {
// Application ID (UUID).
string id = 1;
}
message GetApplicationRequest {
// Application ID (UUID).
string id = 1;
}
message GetApplicationResponse {
// Application object.
Application application = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
}
message UpdateApplicationRequest {
// Application object.
Application application = 1;
}
message DeleteApplicationRequest {
// Application ID (UUID).
string id = 1;
}
message ListApplicationsRequest {
// Max number of applications to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
// If set, the given string will be used to search on name (optional).
string search = 3;
// Tenant ID to list the applications for.
string tenant_id = 4;
}
message ListApplicationsResponse {
// Total number of applications.
uint32 total_count = 1;
// Result-set.
repeated ApplicationListItem result = 2;
}
message ListIntegrationsRequest {
// Application ID (UUID).
string application_id = 1;
}
message IntegrationListItem {
// Integration kind.
IntegrationKind kind = 1;
}
message ListIntegrationsResponse {
// Total number of integrations available within the result-set.
uint32 total_count = 1;
// Integrations within result-set.
repeated IntegrationListItem result = 2;
}
message HttpIntegration {
// Application ID (UUIO).
string application_id = 1;
// HTTP headers to set when making requests.
map<string, string> headers = 2;
// Payload encoding.
Encoding encoding = 3;
// Event endpoint URL.
// The HTTP integration will POST all events to this enpoint. The request
// will contain a query parameters "event" containing the type of the
// event.
string event_endpoint_url = 4;
}
message CreateHttpIntegrationRequest {
// Integration object to create.
HttpIntegration integration = 1;
}
message GetHttpIntegrationRequest {
// Application ID (UUIO).
string application_id = 1;
}
message GetHttpIntegrationResponse {
// Integration object.
HttpIntegration integration = 1;
}
message UpdateHttpIntegrationRequest {
// Integration object to update.
HttpIntegration integration = 1;
}
message DeleteHttpIntegrationRequest {
// Application ID (UUIO).
string application_id = 1;
}
enum InfluxDbPrecision {
NS = 0;
U = 1;
MS = 2;
S = 3;
M = 4;
H = 5;
}
enum InfluxDbVersion {
INFLUXDB_1 = 0;
INFLUXDB_2 = 1;
}
message InfluxDbIntegration {
// Application ID (UUIO).
string application_id = 1;
// InfluxDb API write endpoint (e.g. http://localhost:8086/write).
string endpoint = 2;
// InfluxDb database name. (InfluxDb v1)
string db = 3;
// InfluxDb username. (InfluxDb v1)
string username = 4;
// InfluxDb password. (InfluxDb v1)
string password = 5;
// InfluxDb retention policy name. (InfluxDb v1)
string retention_policy_name = 6;
// InfluxDb timestamp precision (InfluxDb v1).
InfluxDbPrecision precision = 7;
// InfluxDb version.
InfluxDbVersion version = 8;
// Token. (InfluxDb v2)
string token = 9;
// Organization. (InfluxDb v2)
string organization = 10;
// Bucket. (InfluxDb v2)
string bucket = 11;
}
message CreateInfluxDbIntegrationRequest {
// Integration object to create.
InfluxDbIntegration integration = 1;
}
message GetInfluxDbIntegrationRequest {
// Application ID (UUIO).
string application_id = 1;
}
message GetInfluxDbIntegrationResponse {
// Integration object.
InfluxDbIntegration integration = 1;
}
message UpdateInfluxDbIntegrationRequest {
// Integration object to update.
InfluxDbIntegration integration = 1;
}
message DeleteInfluxDbIntegrationRequest {
// Application ID (UUIO).
string application_id = 1;
}
message ThingsBoardIntegration {
// Application ID (UUIO).
string application_id = 1;
// ThingsBoard server endpoint, e.g. https://example.com
string server = 2;
}
message CreateThingsBoardIntegrationRequest {
// Integration object to create.
ThingsBoardIntegration integration = 1;
}
message GetThingsBoardIntegrationRequest {
// Application ID (UUIO).
string application_id = 1;
}
message GetThingsBoardIntegrationResponse {
// Integration object.
ThingsBoardIntegration integration = 1;
}
message UpdateThingsBoardIntegrationRequest {
// Integration object to update.
ThingsBoardIntegration integration = 1;
}
message DeleteThingsBoardIntegrationRequest {
// Application ID (UUIO).
string application_id = 1;
}
message MyDevicesIntegration {
// Application ID (UUIO).
string application_id = 1;
// myDevices API endpoint.
string endpoint = 2;
}
message CreateMyDevicesIntegrationRequest {
// Integration object to create.
MyDevicesIntegration integration = 1;
}
message GetMyDevicesIntegrationRequest {
// Application ID (UUIO).
string application_id = 1;
}
message GetMyDevicesIntegrationResponse {
// Integration object.
MyDevicesIntegration integration = 1;
}
message UpdateMyDevicesIntegrationRequest {
// Integration object to update.
MyDevicesIntegration integration = 1;
}
message DeleteMyDevicesIntegrationRequest {
// Application ID (UUIO).
string application_id = 1;
}
message LoraCloudIntegration {
// Application ID (UUID).
string application_id = 1;
// Modem & Geolocation Services configuration.
LoraCloudModemGeolocationServices modem_geolocation_services = 2;
}
message LoraCloudModemGeolocationServices {
// API token.
string token = 1;
// Device implements Modem / Modem-E stack.
bool modem_enabled = 2;
// Modem port (fPort).
// ChirpStack will only forward the FrmPayload to the MGS if the port
// is equal to the configured value.
uint32 modem_port = 3;
// GNSS port (fPort).
// ChirpStack will forward the FrmPayload to MGS as GNSS payload if the
// port is equal to the configured value.
uint32 gnss_port = 4;
// Use rx time for GNSS resolving.
// In case this is set to true, the MGS resolver will use the RX time of the
// network instead of the timestamp included in the LR1110 payload.
bool gnss_use_rx_time = 5;
// Parse TLV records.
// If enabled, stream records (expected in TLV format) are scanned for GNSS
// data (0x06 or 0x07). If found, ChirpStack will make an additional
// geolocation call to the MGS API for resolving the location of the detected
// payload.
bool parse_tlv = 6;
// Geolocation buffer TTL (in seconds).
// If > 0, uplink RX meta-data will be stored in a buffer so that
// the meta-data of multiple uplinks can be used for geolocation.
uint32 geolocation_buffer_ttl = 7;
// Geolocation minimum buffer size.
// If > 0, geolocation will only be performed when the buffer has
// at least the given size.
uint32 geolocation_min_buffer_size = 8;
// TDOA based geolocation is enabled.
bool geolocation_tdoa = 9;
// RSSI based geolocation is enabled.
bool geolocation_rssi = 10;
// GNSS based geolocation is enabled (LR1110).
bool geolocation_gnss = 11;
// GNSS payload field.
// This holds the name of the field in the decoded payload object which
// contains the GNSS payload bytes (as HEX string).
string geolocation_gnss_payload_field = 12;
// GNSS use RX time.
// In case this is set to true, the resolver will use the RX time of the
// network instead of the timestamp included in the LR1110 payload.
bool geolocation_gnss_use_rx_time = 13;
// Wifi based geolocation is enabled.
bool geolocation_wifi = 14;
// Wifi payload field.
// This holds the name of the field in the decoded payload object which
// contains an array of objects with the following fields:
// * macAddress - e.g. 01:23:45:67:89:ab
// * signalStrength - e.g. -51 (optional)
string geolocation_wifi_payload_field = 15;
}
message CreateLoraCloudIntegrationRequest {
// Integration object to create.
LoraCloudIntegration integration = 1;
}
message GetLoraCloudIntegrationRequest {
// Application ID (UUID).
string application_id = 1;
}
message GetLoraCloudIntegrationResponse {
// Integration object.
LoraCloudIntegration integration = 1;
}
message UpdateLoraCloudIntegrationRequest {
// Integration object to update.
LoraCloudIntegration integration = 1;
}
message DeleteLoraCloudIntegrationRequest {
// Application ID (UUID).
string application_id = 1;
}
message GcpPubSubIntegration {
// Application ID (UUID).
string application_id = 1;
// Encoding.
Encoding encoding = 2;
// Credentials file.
// This IAM service-account credentials file (JSON) must have the following Pub/Sub roles:
// * Pub/Sub Publisher
string credentials_file = 3;
// Project ID.
string project_id = 4;
// Topic name.
// This is the name of the Pub/Sub topic.
string topic_name = 5;
}
message CreateGcpPubSubIntegrationRequest {
// Integration object to create.
GcpPubSubIntegration integration = 1;
}
message GetGcpPubSubIntegrationRequest {
// Application ID (UUID).
string application_id = 1;
}
message GetGcpPubSubIntegrationResponse {
// Integration object.
GcpPubSubIntegration integration = 1;
}
message UpdateGcpPubSubIntegrationRequest {
// Integration object to update.
GcpPubSubIntegration integration = 1;
}
message DeleteGcpPubSubIntegrationRequest {
// Application ID (UUID).
string application_id = 1;
}
message AwsSnsIntegration {
// Application ID (UUID).
string application_id = 1;
// Encoding.
Encoding encoding = 2;
// AWS region.
string region = 3;
// AWS Access Key ID.
string access_key_id = 4;
// AWS Secret Access Key.
string secret_access_key = 5;
// Topic ARN.
string topic_arn = 6;
}
message CreateAwsSnsIntegrationRequest {
// Integration object to create.
AwsSnsIntegration integration = 1;
}
message GetAwsSnsIntegrationRequest {
// Application ID (UUID).
string application_id = 1;
}
message GetAwsSnsIntegrationResponse {
// Integration object.
AwsSnsIntegration integration = 1;
}
message UpdateAwsSnsIntegrationRequest {
// Integration object to update.
AwsSnsIntegration integration = 1;
}
message DeleteAwsSnsIntegrationRequest {
// Application ID (UUID).
string application_id = 1;
}
message AzureServiceBusIntegration {
// Application ID (UUID).
string application_id = 1;
// Encoding.
Encoding encoding = 2;
// Connection string.
string connection_string = 3;
// Publish name.
// This is the name of the topic or queue.
string publish_name = 4;
}
message CreateAzureServiceBusIntegrationRequest {
// Integration object to create.
AzureServiceBusIntegration integration = 1;
}
message GetAzureServiceBusIntegrationRequest {
// Application ID (UUID).
string application_id = 1;
}
message GetAzureServiceBusIntegrationResponse {
// Integration object.
AzureServiceBusIntegration integration = 1;
}
message UpdateAzureServiceBusIntegrationRequest {
// Integration object to create.
AzureServiceBusIntegration integration = 1;
}
message DeleteAzureServiceBusIntegrationRequest {
// Application ID (UUID).
string application_id = 1;
}
message PilotThingsIntegration {
// Application ID (UUID).
string application_id = 1;
// Server URL.
string server = 2;
// Authentication token.
string token = 3;
}
message CreatePilotThingsIntegrationRequest {
// Integration object to create.
PilotThingsIntegration integration = 1;
}
message GetPilotThingsIntegrationRequest {
// Application ID (UUID).
string application_id = 1;
}
message GetPilotThingsIntegrationResponse {
// Integration object.
PilotThingsIntegration integration = 1;
}
message UpdatePilotThingsIntegrationRequest {
// Integration object to update.
PilotThingsIntegration integration = 1;
}
message DeletePilotThingsIntegrationRequest {
// Application ID (UUID).
string application_id = 1;
}
message GenerateMqttIntegrationClientCertificateRequest {
// Application ID (UUID).
string application_id = 1;
}
message GenerateMqttIntegrationClientCertificateResponse {
// TLS certificate.
string tls_cert = 1;
// TLS key.
string tls_key = 2;
// CA certificate.
string ca_cert = 3;
// Expires at defines the expiration date of the certificate.
google.protobuf.Timestamp expires_at = 4;
}

View File

@ -0,0 +1,414 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/empty.proto";
// DeviceService is the service providing API methods for managing devices.
service DeviceService {
// Create the given device.
rpc Create(CreateDeviceRequest) returns (google.protobuf.Empty) {}
// Get returns the device for the given DevEUI.
rpc Get(GetDeviceRequest) returns (GetDeviceResponse) {}
// Update the given device.
rpc Update(UpdateDeviceRequest) returns (google.protobuf.Empty) {}
// Delete the device with the given DevEUI.
rpc Delete(DeleteDeviceRequest) returns (google.protobuf.Empty) {}
// Get the list of devices.
rpc List(ListDevicesRequest) returns (ListDevicesResponse) {}
// Create the given device-keys.
rpc CreateKeys(CreateDeviceKeysRequest) returns (google.protobuf.Empty) {}
// Get the device-keys for the given DevEUI.
rpc GetKeys(GetDeviceKeysRequest) returns (GetDeviceKeysResponse) {}
// Update the given device-keys.
rpc UpdateKeys(UpdateDeviceKeysRequest) returns (google.protobuf.Empty) {}
// Delete the device-keys for the given DevEUI.
rpc DeleteKeys(DeleteDeviceKeysRequest) returns (google.protobuf.Empty) {}
// FlushDevNonces flushes the OTAA device nonces.
rpc FlushDevNonces(FlushDevNoncesRequest) returns (google.protobuf.Empty) {}
// Activate (re)activates the device with the given parameters (for ABP or for importing OTAA activations).
rpc Activate(ActivateDeviceRequest) returns (google.protobuf.Empty) {}
// Deactivate de-activates the device.
rpc Deactivate(DeactivateDeviceRequest) returns (google.protobuf.Empty) {}
// GetActivation returns the current activation details of the device (OTAA or ABP).
rpc GetActivation(GetDeviceActivationRequest) returns (GetDeviceActivationResponse) {}
// GetRandomDevAddr returns a random DevAddr taking the NwkID prefix into account.
rpc GetRandomDevAddr(GetRandomDevAddrRequest) returns (GetRandomDevAddrResponse) {}
// GetStats returns the device stats.
rpc GetStats(GetDeviceStatsRequest) returns (GetDeviceStatsResponse) {}
// Enqueue adds the given item to the downlink queue.
rpc Enqueue(EnqueueDeviceQueueItemRequest) returns (EnqueueDeviceQueueItemResponse) {}
// FlushQueue flushes the downlink device-queue.
rpc FlushQueue(FlushDeviceQueueRequest) returns (google.protobuf.Empty) {}
// GetQueue returns the downlink device-queue.
rpc GetQueue(GetDeviceQueueItemsRequest) returns (GetDeviceQueueItemsResponse) {}
}
message Device {
// DevEUI (EUI64).
string dev_eui = 1;
// Name.
string name = 2;
// Description.
string description = 3;
// Application ID (UUID).
string application_id = 4;
// Device-profile ID (UUID).
string device_profile_id = 5;
// Skip frame-counter checks (this is insecure, but could be helpful for debugging).
bool skip_fcnt_check = 6;
// Device is disabled.
bool is_disabled = 7;
// Variables (user defined).
// These variables can be used together with integrations to store tokens /
// secrets that must be configured per device. These variables are not
// exposed in the event payloads.
map<string, string> variables = 8;
// Tags (user defined).
// These tags are exposed in the event payloads or to integration. Tags are
// intended for aggregation and filtering.
map<string, string> tags = 9;
}
message DeviceStatus {
// The device margin status
// -32..32: The demodulation SNR ration in dB
int32 margin = 1;
// Device is connected to an external power source.
bool external_power_source = 2;
// Device battery level as a percentage.
// -1 when the battery level is not available.
float battery_level = 3;
}
message DeviceListItem {
// DevEUI (EUI64).
string dev_eui = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Last seen at timestamp.
google.protobuf.Timestamp last_seen_at = 4;
// Name.
string name = 5;
// Description.
string description = 6;
// Device-profile ID (UUID).
string device_profile_id = 7;
// Device-profile name.
string device_profile_name = 8;
// Device status.
DeviceStatus device_status = 9;
}
message DeviceKeys {
// DevEUI (EUI64).
string dev_eui = 1;
// Network root key (128 bit).
// Note: For LoRaWAN 1.0.x, use this field for the LoRaWAN 1.0.x 'AppKey`!
string nwk_key = 2;
// Application root key (128 bit).
// Note: This field only needs to be set for LoRaWAN 1.1.x devices!
string app_key = 3;
}
message CreateDeviceRequest {
// Device object.
Device device = 1;
}
message GetDeviceRequest {
// DevEUI (EUI64).
string dev_eui = 1;
}
message GetDeviceResponse {
// Device object.
Device device = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Last seen at timestamp.
google.protobuf.Timestamp last_seen_at = 4;
// Device status.
DeviceStatus device_status = 5;
}
message UpdateDeviceRequest {
// Device object.
Device device = 1;
}
message DeleteDeviceRequest {
// DevEUI (EUI64).
string dev_eui = 1;
}
message ListDevicesRequest {
// Max number of devices to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
// If set, the given string will be used to search on name (optional).
string search = 3;
// Application ID (UUID) to filter devices on.
string application_id = 4;
// Multicst-group ID (UUID) to filter devices on.
string multicast_group_id = 5;
}
message ListDevicesResponse {
// Total number of devices.
uint32 total_count = 1;
// Result-set.
repeated DeviceListItem result = 2;
}
message CreateDeviceKeysRequest {
// Device-keys object.
DeviceKeys device_keys = 1;
}
message GetDeviceKeysRequest {
// DevEUI (EUI64).
string dev_eui = 1;
}
message GetDeviceKeysResponse {
// Device-keys object.
DeviceKeys device_keys = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
}
message UpdateDeviceKeysRequest {
// Device-keys object.
DeviceKeys device_keys = 1;
}
message DeleteDeviceKeysRequest {
// DevEUI (EUI64).
string dev_eui = 1;
}
message DeviceActivation {
// Device EUI (EUI64).
string dev_eui = 1;
// Device address (HEX encoded).
string dev_addr = 2;
// Application session key (HEX encoded).
string app_s_key = 3;
// Network session encryption key (HEX encoded).
string nwk_s_enc_key = 4;
// Serving network session integrity key (HEX encoded).
string s_nwk_s_int_key = 8;
// Forwarding network session integrity key (HEX encoded).
string f_nwk_s_int_key = 9;
// Uplink frame-counter.
uint32 f_cnt_up = 5;
// Downlink network frame-counter.
uint32 n_f_cnt_down = 6;
// Downlink application frame-counter.
uint32 a_f_cnt_down = 10;
}
message ActivateDeviceRequest {
// Device activation object.
DeviceActivation device_activation = 1;
}
message DeactivateDeviceRequest {
// DevEUI (EUI64).
string dev_eui = 1;
}
message GetDeviceActivationRequest {
// DevEUI (EUI64).
string dev_eui = 1;
}
message GetDeviceActivationResponse {
// Device activation object.
DeviceActivation device_activation = 1;
}
message GetRandomDevAddrRequest {
// DevEUI (EUI64).
string dev_eui = 1;
}
message GetRandomDevAddrResponse {
// DevAddr.
string dev_addr = 1;
}
message GetDeviceStatsRequest {
// DevEUI (EUI64).
string dev_eui = 1;
// Interval start timestamp.
google.protobuf.Timestamp start = 2;
// Interval end timestamp.
google.protobuf.Timestamp end = 3;
}
message GetDeviceStatsResponse {
repeated DeviceStats result = 1;
}
message DeviceStats {
// Timestamp of the (aggregated) measurement.
google.protobuf.Timestamp time = 1;
// Packets received from the device.
uint32 rx_packets = 2;
// Average RSSI (as reported by the gateway(s)).
float gw_rssi = 3;
// Average SNR (as reported by the gateway(s)).
float gw_snr = 4;
// Packets received by frequency.
map<uint32, uint32> rx_packets_per_frequency = 5;
// Packets received by DR.
map<uint32, uint32> rx_packets_per_dr = 6;
// Error count.
map<string, uint32> errors = 7;
}
message DeviceQueueItem {
// ID (UUID).
// This is automatically generated on enqueue.
string id = 1;
// Device EUI (EUI64).
string dev_eui = 2;
// Confirmed.
bool confirmed = 3;
// FPort (must be > 0).
uint32 f_port = 4;
// Data.
// Or use the json_object field when a codec has been configured.
bytes data = 5;
// Only use this when a codec has been configured that can encode this
// object to bytes.
google.protobuf.Struct object = 6;
// Is pending.
// This is set to true when the downlink is pending.
bool is_pending = 7;
// Downlink frame-counter.
// This is set when the payload has been sent as downlink.
uint32 f_cnt_down = 8;
}
message EnqueueDeviceQueueItemRequest {
DeviceQueueItem item = 1;
}
message EnqueueDeviceQueueItemResponse {
// ID (UUID).
string id = 1;
}
message FlushDeviceQueueRequest {
// Device EUI (EUI64).
string dev_eui = 1;
}
message GetDeviceQueueItemsRequest {
// Device EUI (EUI64).
string dev_eui = 1;
// Return only the count, not the result-set.
bool count_only = 2;
}
message GetDeviceQueueItemsResponse {
// Total number of queue items.
uint32 total_count = 1;
// Result-set.
repeated DeviceQueueItem result = 2;
}
message FlushDevNoncesRequest {
// Device EUI (EUI64).
string dev_eui = 1;
}

View File

@ -0,0 +1,235 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "DeviceProfileProto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
import "chirpstack-api/common/common.proto";
enum CodecRuntime {
// None.
NONE = 0;
// Cayenne LPP.
CAYENNE_LPP = 1;
// JavaScript.
JS = 2;
}
// DeviceProfileService is the service providing API methods for managing device-profiles.
service DeviceProfileService {
// Create the given device-profile.
rpc Create(CreateDeviceProfileRequest) returns (CreateDeviceProfileResponse) {}
// Get the device-profile for the given ID.
rpc Get(GetDeviceProfileRequest) returns (GetDeviceProfileResponse) {}
// Update the given device-profile.
rpc Update(UpdateDeviceProfileRequest) returns (google.protobuf.Empty) {}
// Delete the device-profile with the given ID.
rpc Delete(DeleteDeviceProfileRequest) returns (google.protobuf.Empty) {}
// List the available device-profiles.
rpc List(ListDeviceProfilesRequest) returns (ListDeviceProfilesResponse) {}
// List available ADR algorithms.
rpc ListAdrAlgorithms(google.protobuf.Empty) returns (ListDeviceProfileAdrAlgorithmsResponse) {}
}
message DeviceProfile {
// Device-profile ID (UUID).
// Note: on create this will be automatically generated.
string id = 1;
// Tenant ID (UUID).
string tenant_id = 2;
// Name.
string name = 3;
// Region.
common.Region region = 4;
// LoRaWAN mac-version.
common.MacVersion mac_version = 5;
// Regional parameters revision.
common.RegParamsRevision reg_params_revision = 6;
// ADR algorithm ID.
string adr_algorithm_id = 7;
// Payload codec runtime.
CodecRuntime payload_codec_runtime = 8;
// Payload codec encoder config.
string payload_encoder_config = 9;
// Payload codec decoder config.
string payload_decoder_config = 10;
// Uplink interval (seconds).
// This defines the expected uplink interval which the device uses for
// communication. When the uplink interval has expired and no uplink has
// been received, the device is considered inactive.
uint32 uplink_interval = 11;
// Device-status request interval (times / day).
// This defines the times per day that ChirpStack will request the device-status
// from the device.
uint32 device_status_req_interval = 12;
// Supports OTAA.
bool supports_otaa = 13;
// Supports Class B.
bool supports_class_b = 14;
// Supports Class-C.
bool supports_class_c = 15;
// Class-B timeout (seconds).
// This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested).
uint32 class_b_timeout = 16;
// Class-B ping-slot periodicity.
uint32 class_b_ping_slot_period = 17;
// Class-B ping-slot DR.
uint32 class_b_ping_slot_dr = 18;
// Class-B ping-slot freq (Hz).
uint32 class_b_ping_slot_freq = 19;
// Class-C timeout (seconds).
// This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested).
uint32 class_c_timeout = 20;
// RX1 delay (for ABP).
uint32 abp_rx1_delay = 21;
// RX1 DR offset (for ABP).
uint32 abp_rx1_dr_offset = 22;
// RX2 DR (for ABP).
uint32 abp_rx2_dr = 23;
// RX2 frequency (for ABP, Hz).
uint32 abp_rx2_freq = 24;
// User defined tags.
map<string, string> tags = 25;
}
message DeviceProfileListItem {
// Device-profile ID (UUID).
string id = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Name.
string name = 4;
// Region.
common.Region region = 5;
// LoRaWAN mac-version.
common.MacVersion mac_version = 6;
// Regional parameters revision.
common.RegParamsRevision reg_params_revision = 7;
// Supports OTAA.
bool supports_otaa = 8;
// Supports Class-B.
bool supports_class_b = 9;
// Supports Class-C.
bool supports_class_c = 10;
}
message CreateDeviceProfileRequest {
// Object to create.
DeviceProfile device_profile = 1;
}
message CreateDeviceProfileResponse {
// ID (UUID).
string id = 1;
}
message GetDeviceProfileRequest {
// ID (UUID).
string id = 1;
}
message GetDeviceProfileResponse {
// Device-profile object.
DeviceProfile device_profile = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
}
message UpdateDeviceProfileRequest {
// Device-profile object.
DeviceProfile device_profile = 1;
}
message DeleteDeviceProfileRequest {
// ID (UUID).
string id = 1;
}
message ListDeviceProfilesRequest {
// Max number of device-profiles to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
// If set, the given string will be used to search on name.
string search = 3;
// Tenant ID to list the device-profiles for.
string tenant_id = 4;
}
message ListDeviceProfilesResponse {
// Total number of device-profiles.
uint32 total_count = 1;
// Result-set.
repeated DeviceProfileListItem result = 2;
}
message ListDeviceProfileAdrAlgorithmsResponse {
// Total number of algorithms.
uint32 total_count = 1;
// Result-set.
repeated AdrAlgorithmListItem result = 2;
}
message AdrAlgorithmListItem {
// Algorithm ID.
string id = 1;
// Algorithm name.
string name = 2;
}

View File

@ -0,0 +1,61 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "FrameLogProto";
import "google/protobuf/timestamp.proto";
import "chirpstack-api/common/common.proto";
import "chirpstack-api/gw/gw.proto";
message UplinkFrameLog {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
gw.UplinkTXInfo tx_info = 2;
// RX meta-data.
repeated gw.UplinkRXInfo rx_info = 3;
// Message type.
common.MType m_type = 4;
// Device address (optional).
string dev_addr = 5;
// Device EUI (optional).
string dev_eui = 6;
// Time.
google.protobuf.Timestamp time = 7;
}
message DownlinkFrameLog {
// Time.
google.protobuf.Timestamp time = 1;
// PHYPayload.
bytes phy_payload = 2;
// TX meta-data.
gw.DownlinkTXInfo tx_info = 3;
// Downlink ID (UUID).
string downlink_id = 4;
// Gateway ID (EUI64).
string gateway_id = 5;
// Message type.
common.MType m_type = 6;
// Device address (optional).
string dev_addr = 7;
// Device EUI (optional).
string dev_eui = 8;
}

View File

@ -0,0 +1,205 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
import "chirpstack-api/common/common.proto";
// GatewayService is the service providing API methods for managing gateways.
service GatewayService {
// Create creates the given gateway.
rpc Create(CreateGatewayRequest) returns (google.protobuf.Empty) {}
// Get returns the gateway for the given Gateway ID.
rpc Get(GetGatewayRequest) returns (GetGatewayResponse) {}
// Update updates the given gateway.
rpc Update(UpdateGatewayRequest) returns (google.protobuf.Empty) {}
// Delete deletes the gateway matching the given Gateway ID.
rpc Delete(DeleteGatewayRequest) returns (google.protobuf.Empty) {}
// Get the list of gateways.
rpc List(ListGatewaysRequest) returns (ListGatewaysResponse) {}
// Generate client-certificate for the gateway.
rpc GenerateClientCertificate(GenerateGatewayClientCertificateRequest) returns (GenerateGatewayClientCertificateResponse) {}
// GetStats returns the gateway stats.
rpc GetStats(GetGatewayStatsRequest) returns (GetGatewayStatsResponse) {}
}
message Gateway {
// Gateway ID (EUI64).
string gateway_id = 1;
// Name.
string name = 2;
// Description.
string description = 3;
// Gateway location.
common.Location location = 4;
// Tenant ID (UUID).
string tenant_id = 5;
// Tags.
map<string, string> tags = 6;
// Properties (provided by the gateway).
map<string, string> properties = 7;
}
message GatewayListItem {
// Tenant ID.
string tenant_id = 1;
// Gateway ID (EUI64).
string gateway_id = 2;
// Name.
string name = 3;
// Description.
string description = 4;
// Location.
common.Location location = 5;
// Gateway properties.
map<string, string> properties = 6;
// Created at timestamp.
google.protobuf.Timestamp created_at = 7;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 8;
// Last seen at timestamp.
google.protobuf.Timestamp last_seen_at = 9;
}
message CreateGatewayRequest {
// Gateway object.
Gateway gateway = 1;
}
message GetGatewayRequest {
// Gateway ID (EUI64).
string gateway_id = 1;
}
message GetGatewayResponse {
// Gateway object.
Gateway gateway = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Last seen at timestamp.
google.protobuf.Timestamp last_seen_at = 4;
}
message UpdateGatewayRequest {
// Gateway object.
Gateway gateway = 1;
}
message DeleteGatewayRequest {
// Gateway ID (EUI64).
string gateway_id = 1;
}
message ListGatewaysRequest {
// Max number of gateways to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
// If set, the given string will be used to search on name (optional).
string search = 3;
// Tenant ID (UUID) to filter gateways on.
// To list all gateways as a global admin user, this field can be left blank.
string tenant_id = 4;
}
message ListGatewaysResponse {
// Total number of gateways.
uint32 total_count = 1;
// Result-set.
repeated GatewayListItem result = 2;
}
message GenerateGatewayClientCertificateRequest {
// Gateway ID (EUI64).
string gateway_id = 1;
}
message GenerateGatewayClientCertificateResponse {
// TLS certificate.
string tls_cert = 1;
// TLS key.
string tls_key = 2;
// CA certificate.
string ca_cert = 3;
// Expires at defines the expiration date of the certificate.
google.protobuf.Timestamp expires_at = 4;
}
message GetGatewayStatsRequest {
// Gateway ID (EUI64).
string gateway_id = 1;
// Interval start timestamp.
google.protobuf.Timestamp start = 2;
// Interval end timestamp.
google.protobuf.Timestamp end = 3;
}
message GetGatewayStatsResponse {
repeated GatewayStats result = 1;
}
message GatewayStats {
// Timestamp of the (aggregated) measurement.
google.protobuf.Timestamp time = 1;
// Packets received.
uint32 rx_packets = 2;
// Packets emitted.
uint32 tx_packets = 3;
// Tx packets per frequency.
map<uint32, uint32> tx_packets_per_frequency = 4;
// Rx packets per frequency.
map<uint32, uint32> rx_packets_per_frequency = 5;
// Tx packets per DR.
map<uint32, uint32> tx_packets_per_dr = 6;
// Rx packets per DR.
map<uint32, uint32> rx_packets_per_dr = 7;
// Tx packets per status.
map<string, uint32> tx_packets_per_status = 8;
}

View File

@ -0,0 +1,300 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "InternalProto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
import "chirpstack-api/api/user.proto";
// InternalService is the service providing API endpoints for internal usage.
service InternalService {
// Log in a user
rpc Login(LoginRequest) returns (LoginResponse) {}
// Get the current user's profile
rpc Profile(google.protobuf.Empty) returns (ProfileResponse) {}
// Perform a global search.
rpc GlobalSearch(GlobalSearchRequest) returns (GlobalSearchResponse) {}
// CreateApiKey creates the given API key.
rpc CreateApiKey(CreateApiKeyRequest) returns (CreateApiKeyResponse) {}
// DeleteApiKey deletes the API key.
rpc DeleteApiKey(DeleteApiKeyRequest) returns (google.protobuf.Empty) {}
// ListApiKeys lists the available API keys.
rpc ListApiKeys(ListApiKeysRequest) returns (ListApiKeysResponse) {}
// Get the global settings.
rpc Settings(google.protobuf.Empty) returns (SettingsResponse) {}
// OpenId Connect login.
rpc OpenIdConnectLogin(OpenIdConnectLoginRequest) returns (OpenIdConnectLoginResponse) {}
// GetDevicesSummary returns an aggregated summary of the devices.
rpc GetDevicesSummary(GetDevicesSummaryRequest) returns (GetDevicesSummaryResponse) {}
// GetGatewaysSummary returns an aggregated summary of the gateways.
rpc GetGatewaysSummary(GetGatewaysSummaryRequest) returns (GetGatewaysSummaryResponse) {}
// Stream frame for the given Gateway ID.
rpc StreamGatewayFrames(StreamGatewayFramesRequest) returns (stream LogItem) {}
// Stream frames for the given Device EUI.
rpc StreamDeviceFrames(StreamDeviceFramesRequest) returns (stream LogItem) {}
// Stream events for the given Device EUI.
rpc StreamDeviceEvents(StreamDeviceEventsRequest) returns (stream LogItem) {}
}
message ApiKey {
// API key ID.
// This value will be automatically generated on create.
string id = 1;
// Name.
string name = 2;
// Is global admin key.
bool is_admin = 3;
// Tenant ID.
// In case the API key is intended to manage resources under a single tenant.
string tenant_id = 4;
}
message CreateApiKeyRequest {
// The API key to create.
ApiKey api_key = 1;
}
message CreateApiKeyResponse {
// API key ID.
string id = 1;
// API token for authentication API requests.
string token = 2;
}
message DeleteApiKeyRequest {
// API key ID.
string id = 1;
}
message ListApiKeysRequest {
// Max number of items to return.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
// Return only admin keys.
bool is_admin = 3;
// Filter on tenant ID.
string tenant_id = 4;
}
message ListApiKeysResponse {
// Total number of API keys.
uint32 total_count = 1;
repeated ApiKey result = 2;
}
// Defines a tenant to which the user is associated.
message UserTenantLink {
// Created at timestamp.
google.protobuf.Timestamp created_at = 1;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 2;
// Tenant ID.
string tenant_id = 3;
// User is admin within the context of this tenant.
// There is no need to set the is_device_admin and is_gateway_admin flags.
bool is_admin = 4;
// User is able to modify device related resources (applications,
// device-profiles, devices, multicast-groups).
bool is_device_admin = 5;
// User is able to modify gateways.
bool is_gateway_admin = 6;
}
message LoginRequest {
// Email of the user.
string email = 1;
// Password of the user.
string password = 2;
}
message LoginResponse {
// The JWT tag to be used to access chirpstack-application-server interfaces.
string jwt = 1;
}
message ProfileResponse {
// User object.
User user = 1;
// Tenants to which the user is associated.
repeated UserTenantLink tenants = 3;
}
message GlobalSearchRequest {
// Search query.
string search = 1;
// Max number of results to return.
int64 limit = 2;
// Offset offset of the result-set (for pagination).
int64 offset = 3;
}
message GlobalSearchResponse {
repeated GlobalSearchResult result = 1;
}
message GlobalSearchResult {
// Record kind.
string kind = 1;
// Search score.
float score = 2;
// Organization id.
string tenant_id = 3;
// Organization name.
string tenant_name = 4;
// Application id.
string application_id = 5;
// Application name.
string application_name = 6;
// Device DevEUI (hex encoded).
string device_dev_eui = 7;
// Device name.
string device_name = 8;
// Gateway MAC (hex encoded).
string gateway_id = 9;
// Gateway name.
string gateway_name = 10;
}
message SettingsResponse {
// OpenId Connect settings.
OpenIdConnect openid_connect = 1;
}
message OpenIdConnect {
// Enable OpenId Connect authentication.
bool enabled = 1;
// Login url.
string login_url = 2 [json_name = "loginURL"];
// Login label.
string login_label = 3;
// Logout url.
string logout_url = 4 [json_name = "logoutURL"];
}
message OpenIdConnectLoginRequest {
// OpenId Connect callback code.
string code = 1;
// OpenId Connect callback state.
string state = 2;
}
message OpenIdConnectLoginResponse {
// Token to use for authentication.
string token = 1;
}
message GetDevicesSummaryRequest {
// Tenant ID (UUID).
string tenant_id = 1;
}
message GetDevicesSummaryResponse {
// Active count.
uint32 active_count = 1;
// Inactive count.
uint32 inactive_count = 2;
// per data-rate count.
// Devices that have never been seen are excluded.
map<uint32, uint32> dr_count = 3;
// Never seen count.
uint32 never_seen_count = 4;
}
message GetGatewaysSummaryRequest {
// Tenant ID (UUID).
string tenant_id = 1;
}
message GetGatewaysSummaryResponse {
// Active count.
uint32 active_count = 1;
// Inactive count.
uint32 inactive_count = 2;
// Never seen count.
uint32 never_seen_count = 3;
}
message LogItem {
// ID.
string id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
// Message.
string description = 3;
// Body.
string body = 4;
// Properties.
map<string, string> properties = 5;
}
message StreamGatewayFramesRequest {
// Gateway ID (EUI64).
string gateway_id = 1;
}
message StreamDeviceFramesRequest {
// Device EUI.
string dev_eui = 1;
}
message StreamDeviceEventsRequest {
// Device EUI.
string dev_eui = 1;
}

View File

@ -0,0 +1,228 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "MulticastGroupProto";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
import "chirpstack-api/common/common.proto";
// MulticastGroupService is the service managing multicast-groups.
service MulticastGroupService {
// Create the given multicast group.
rpc Create(CreateMulticastGroupRequest) returns (CreateMulticastGroupResponse) {}
// Get returns the multicast group for the given ID.
rpc Get(GetMulticastGroupRequest) returns (GetMulticastGroupResponse) {}
// Update the given multicast group.
rpc Update(UpdateMulticastGroupRequest) returns (google.protobuf.Empty) {}
// Delete the multicast-group with the given ID.
rpc Delete(DeleteMulticastGroupRequest) returns (google.protobuf.Empty) {}
// List the available multicast groups.
rpc List(ListMulticastGroupsRequest) returns (ListMulticastGroupsResponse) {}
// Add a device to the multicast group.
rpc AddDevice(AddDeviceToMulticastGroupRequest) returns (google.protobuf.Empty) {}
// Remove a device from the multicast group.
rpc RemoveDevice(RemoveDeviceFromMulticastGroupRequest) returns (google.protobuf.Empty) {}
// Add the given item to the multcast group queue.
rpc Enqueue(EnqueueMulticastGroupQueueItemRequest) returns (EnqueueMulticastGroupQueueItemResponse) {}
// Flush the queue for the given multicast group.
rpc FlushQueue(FlushMulticastGroupQueueRequest) returns (google.protobuf.Empty) {}
// List the items in the multicast group queue.
rpc ListQueue(ListMulticastGroupQueueRequest) returns (ListMulticastGroupQueueResponse) {}
}
enum MulticastGroupType {
// Class C.
CLASS_C = 0;
// Class-B.
CLASS_B = 1;
}
message MulticastGroup {
// ID (UUID).
// This will be generated automatically on create.
string id = 1;
// Name.
string name = 2;
// Application ID.
// After creation, this can not be updated.
string application_id = 3;
// Region.
common.Region region = 4;
// Multicast address (HEX encoded DevAddr).
string mc_addr = 5;
// Multicast network session key (HEX encoded AES128 key).
string mc_nwk_s_key = 6;
// Multicast application session key (HEX encoded AES128 key).
string mc_app_s_key = 7;
// Frame-counter.
uint32 f_cnt = 8;
// Multicast group type.
MulticastGroupType group_type = 9;
// Data-rate.
uint32 dr = 10;
// Frequency (Hz).
uint32 frequency = 11;
// Ping-slot period (only for Class-B).
uint32 class_b_ping_slot_period = 12;
}
message MulticastGroupListItem {
// ID.
string id = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Name.
string name = 4;
// Region.
common.Region region = 5;
// Multicast group type.
MulticastGroupType group_type = 6;
}
message CreateMulticastGroupRequest {
// Multicast group to create.
MulticastGroup multicast_group = 1;
}
message CreateMulticastGroupResponse {
// ID of created multicast group (UUID).
string id = 1;
}
message GetMulticastGroupRequest {
// Multicast group ID.
string id = 1;
}
message GetMulticastGroupResponse {
// Multicast group object.
MulticastGroup multicast_group = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
}
message UpdateMulticastGroupRequest {
// Multicast group object to update.
MulticastGroup multicast_group = 1;
}
message DeleteMulticastGroupRequest {
// Multicast group iD.
string id = 1;
}
message ListMulticastGroupsRequest {
// Max number of multicast groups to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
// If set, the given string will be used to search on name.
string search = 3;
// Application ID to list the multicast groups for.
string application_id = 4;
}
message ListMulticastGroupsResponse {
// Total number of multicast groups.
uint32 total_count = 1;
// Result-test.
repeated MulticastGroupListItem result = 2;
}
message AddDeviceToMulticastGroupRequest {
// Multicast group ID.
string multicast_group_id = 1;
// Device EUI (HEX encoded).
string dev_eui = 2;
}
message RemoveDeviceFromMulticastGroupRequest {
// Multicast group ID.
string multicast_group_id = 1;
// Device EUI (HEX encoded).
string dev_eui = 2;
}
message MulticastGroupQueueItem {
// Multicast group ID.
string multicast_group_id = 1;
// Downlink frame-counter.
// This will be automatically set on enqueue.
uint32 f_cnt = 2;
// FPort (must be > 0).
uint32 f_port = 3;
// Payload.
bytes data = 4;
}
message EnqueueMulticastGroupQueueItemRequest {
// Multicast queue-item to enqueue.
MulticastGroupQueueItem multicast_group_queue_item = 1;
}
message EnqueueMulticastGroupQueueItemResponse {
// Frame-counter of the enqueued payload.
uint32 f_cnt = 1;
}
message FlushMulticastGroupQueueRequest {
// Multicast group ID.
string multicast_group_id = 1;
}
message ListMulticastGroupQueueRequest {
// Multicast group ID.
string multicast_group_id = 1;
}
message ListMulticastGroupQueueResponse {
repeated MulticastGroupQueueItem items = 1;
}

View File

@ -0,0 +1,261 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "InternalProto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
// TenantService is the service providing API methods for managing tenants.
service TenantService {
// Create a new tenant.
rpc Create(CreateTenantRequest) returns (CreateTenantResponse) {}
// Get the tenant for the given ID.
rpc Get(GetTenantRequest) returns (GetTenantResponse) {}
// Update the given tenant.
rpc Update(UpdateTenantRequest) returns (google.protobuf.Empty) {}
// Delete the tenant with the given ID.
rpc Delete(DeleteTenantRequest) returns (google.protobuf.Empty) {}
// Get the list of tenants.
rpc List(ListTenantsRequest) returns (ListTenantsResponse) {}
// Add an user to the tenant.
// Note: the user must already exist.
rpc AddUser(AddTenantUserRequest) returns (google.protobuf.Empty) {}
// Get the the tenant user for the given tenant and user IDs.
rpc GetUser(GetTenantUserRequest) returns (GetTenantUserResponse) {}
// Update the given tenant user.
rpc UpdateUser(UpdateTenantUserRequest) returns (google.protobuf.Empty) {}
// Delete the given tenant user.
rpc DeleteUser(DeleteTenantUserRequest) returns (google.protobuf.Empty) {}
// Get the list of tenant users.
rpc ListUsers(ListTenantUsersRequest) returns (ListTenantUsersResponse) {}
}
message Tenant {
// Tenant ID (UUID).
// Note: this value will be automatically generated on create.
string id = 1;
// Tenant name,
string name = 2;
// Tenant description.
string description = 3;
// Can the tenant create and "own" Gateways?
bool can_have_gateways = 4;
// Max. gateway count for tenant.
// When set to 0, the tenant can have unlimited gateways.
uint32 max_gateway_count = 5;
// Max. device count for tenant.
// When set to 0, the tenant can have unlimited devices.
uint32 max_device_count = 6;
// Private gateways.
// Gateways under this tenant are private.
bool private_gateways = 7;
}
message TenantListItem {
// Tenant ID (UUID).
string id = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Tenant name.
string name = 4;
// Can the tenant create and "own" Gateways?
bool can_have_gateways = 5;
// Gateways are private to tenant.
bool private_gateways = 6;
// Max gateway count.
// 0 = unlimited.
uint32 max_gateway_count = 7;
// Max device count.
// 0 = unlimited.
uint32 max_device_count = 8;
}
message CreateTenantRequest {
// Tenant object to create.
Tenant tenant = 1;
}
message CreateTenantResponse {
// Tenant ID.
string id = 1;
}
message GetTenantRequest {
// Tenant ID.
string id = 1;
}
message GetTenantResponse {
// Tenant object.
Tenant tenant = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
}
message UpdateTenantRequest {
// Tenant object.
Tenant tenant = 1;
}
message DeleteTenantRequest {
// Tenant ID.
string id = 1;
}
message ListTenantsRequest {
// Max number of tenants to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
// If set, the given string will be used to search on name.
string search = 3;
}
message ListTenantsResponse {
// Total number of tenants.
uint32 total_count = 1;
// Result-set.
repeated TenantListItem result = 2;
}
message TenantUser {
// Tenant ID (UUID).
string tenant_id = 1;
// User ID (UUID).
string user_id = 2;
// User is admin within the context of the tenant.
// There is no need to set the is_device_admin and is_gateway_admin flags.
bool is_admin = 3;
// User is able to modify device related resources (applications,
// device-profiles, devices, multicast-groups).
bool is_device_admin = 4;
// User is able to modify gateways.
bool is_gateway_admin = 5;
// Email (only used on get and when adding a user to a tenant).
string email = 6;
}
message TenantUserListItem {
// Tenant ID (UUID).
string tenant_id = 1;
// User ID (UUID).
string user_id = 2;
// Created at timestamp.
google.protobuf.Timestamp created_at = 3;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 4;
// Email.
string email = 5;
// User is admin within the context of the tenant.
// There is no need to set the is_device_admin and is_gateway_admin flags.
bool is_admin = 6;
// User is able to modify device related resources (applications,
// device-profiles, devices, multicast-groups).
bool is_device_admin = 7;
// User is able to modify gateways.
bool is_gateway_admin = 8;
}
message AddTenantUserRequest {
// Tenant user object.
TenantUser tenant_user = 1;
}
message GetTenantUserRequest {
// Tenant ID (UUID).
string tenant_id = 1;
// User ID (UUID).
string user_id = 2;
}
message GetTenantUserResponse {
// Tenant user object.
TenantUser tenant_user = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
}
message UpdateTenantUserRequest {
// Tenant user object.
TenantUser tenant_user = 1;
}
message DeleteTenantUserRequest {
// Tenant ID (UUID).
string tenant_id = 1;
// User ID (UUID).
string user_id = 2;
}
message ListTenantUsersRequest {
// Tenant ID (UUID).
string tenant_id = 1;
// Max number of tenants to return in the result-set.
uint32 limit = 2;
// Offset in the result-set (for pagination).
uint32 offset = 3;
}
message ListTenantUsersResponse {
// Total number of tenants.
uint32 total_count = 1;
// Result-set.
repeated TenantUserListItem result = 2;
}

View File

@ -0,0 +1,153 @@
syntax = "proto3";
package api;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "UserProto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
// UserService is the service providing API methods for managing users.
service UserService {
// Create a new user.
rpc Create(CreateUserRequest) returns (CreateUserResponse) {}
// Get the user for the given ID.
rpc Get(GetUserRequest) returns (GetUserResponse) {}
// Update the given user.
rpc Update(UpdateUserRequest) returns (google.protobuf.Empty) {}
// Delete the user with the given ID.
rpc Delete(DeleteUserRequest) returns (google.protobuf.Empty) {}
// Get the list of users.
rpc List(ListUsersRequest) returns (ListUsersResponse) {}
// Update the password for the given user.
rpc UpdatePassword(UpdateUserPasswordRequest) returns (google.protobuf.Empty) {}
}
message User {
// User ID (UUID).
// Will be set automatically on create.
string id = 1;
// Set to true to make the user a global administrator.
bool is_admin = 4;
// Set to false to disable the user.
bool is_active = 5;
// E-mail of the user.
string email = 6;
// Optional note to store with the user.
string note = 7;
}
message UserListItem {
// User ID (UUID).
string id = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// Email of the user.
string email = 4;
// Set to true to make the user a global administrator.
bool is_admin = 5;
// Set to false to disable the user.
bool is_active = 6;
}
message UserTenant {
// Tenant ID.
string tenant_id = 1;
// User is admin within the context of the tenant.
// There is no need to set the is_device_admin and is_gateway_admin flags.
bool is_admin = 2;
// User is able to modify device related resources (applications,
// device-profiles, devices, multicast-groups).
bool is_device_admin = 3;
// User is able to modify gateways.
bool is_gateway_admin = 4;
}
message CreateUserRequest {
// User object to create.
User user = 1;
// Password to set for the user.
string password = 2;
// Add the user to the following tenants.
repeated UserTenant tenants = 3;
}
message CreateUserResponse {
// User ID.
string id = 1;
}
message GetUserRequest {
// User ID.
string id = 1;
}
message GetUserResponse {
// User object.
User user = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
}
message UpdateUserRequest {
// User object.
User user = 1;
}
message DeleteUserRequest {
// User ID.
string id = 1;
}
message ListUsersRequest {
// Max number of tenants to return in the result-set.
uint32 limit = 1;
// Offset in the result-set (for pagination).
uint32 offset = 2;
}
message ListUsersResponse {
// Total number of users.
uint32 total_count = 1;
// Result-set.
repeated UserListItem result = 2;
}
message UpdateUserPasswordRequest {
// User ID.
string user_id = 1;
// Password to set.
string password = 2;
}

View File

@ -0,0 +1,155 @@
syntax = "proto3";
package common;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/common";
option java_package = "io.chirpstack.api";
option java_multiple_files = true;
option java_outer_classname = "CommonProto";
enum Modulation {
// LoRa
LORA = 0;
// FSK
FSK = 1;
// LR-FHSS
LR_FHSS = 2;
}
enum Region {
// EU868
EU868 = 0;
// US915
US915 = 2;
// CN779
CN779 = 3;
// EU433
EU433 = 4;
// AU915
AU915 = 5;
// CN470
CN470 = 6;
// AS923
AS923 = 7;
// AS923 with -1.80 MHz frequency offset
AS923_2 = 12;
// AS923 with -6.60 MHz frequency offset
AS923_3 = 13;
// (AS923 with -5.90 MHz frequency offset).
AS923_4 = 14;
// KR920
KR920 = 8;
// IN865
IN865 = 9;
// RU864
RU864 = 10;
// ISM2400 (LoRaWAN 2.4 GHz)
ISM2400 = 11;
}
enum MType {
// JoinRequest.
JOIN_REQUEST = 0;
// JoinAccept.
JOIN_ACCEPT = 1;
// UnconfirmedDataUp.
UNCONFIRMED_DATA_UP = 2;
// UnconfirmedDataDown.
UNCONFIRMED_DATA_DOWN = 3;
// ConfirmedDataUp.
CONFIRMED_DATA_UP = 4;
// ConfirmedDataDown.
CONFIRMED_DATA_DOWN = 5;
// RejoinRequest.
REJOIN_REQUEST = 6;
// Proprietary.
PROPRIETARY = 7;
}
enum MacVersion {
LORAWAN_1_0_0 = 0;
LORAWAN_1_0_1 = 1;
LORAWAN_1_0_2 = 2;
LORAWAN_1_0_3 = 3;
LORAWAN_1_0_4 = 4;
LORAWAN_1_1_0 = 5;
}
enum RegParamsRevision {
A = 0;
B = 1;
RP002_1_0_0 = 2;
RP002_1_0_1 = 3;
RP002_1_0_2 = 4;
RP002_1_0_3 = 5;
}
enum LocationSource {
// Unknown.
UNKNOWN = 0;
// GPS.
GPS = 1;
// Manually configured.
CONFIG = 2;
// Geo resolver (TDOA).
GEO_RESOLVER_TDOA = 3;
// Geo resolver (RSSI).
GEO_RESOLVER_RSSI = 4;
// Geo resolver (GNSS).
GEO_RESOLVER_GNSS = 5;
// Geo resolver (WIFI).
GEO_RESOLVER_WIFI = 6;
}
message Location {
// Latitude.
double latitude = 1;
// Longitude.
double longitude = 2;
// Altitude.
double altitude = 3;
// Location source.
LocationSource source = 4;
// Accuracy.
float accuracy = 5;
}
message KeyEnvelope {
// KEK label.
string kek_label = 1;
// AES key (when the kek_label is set, this value must first be decrypted).
bytes aes_key = 2;
}

View File

@ -0,0 +1,557 @@
syntax = "proto3";
package gw;
option go_package = "github.com/chirpstack/chirpstack-api/go/v4/gw";
option java_package = "io.chirpstack.api.gw";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
import "chirpstack-api/common/common.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
enum DownlinkTiming {
// Send the downlink immediately.
IMMEDIATELY = 0;
// Send downlink at the given delay (based on provided context).
DELAY = 1;
// Send at given GPS epoch value.
GPS_EPOCH = 2;
}
enum FineTimestampType {
// No fine-timestamp available.
NONE = 0;
// Encrypted fine-timestamp.
ENCRYPTED = 1;
// Plain fine-timestamp.
PLAIN = 2;
}
enum CRCStatus {
// No CRC.
NO_CRC = 0;
// Bad CRC.
BAD_CRC = 1;
// CRC OK.
CRC_OK = 2;
}
enum TxAckStatus {
// Ignored (when a previous item was already emitted).
IGNORED = 0;
// Packet has been programmed for downlink.
OK = 1;
// Rejected because it was already too late to program this packet for downlink.
TOO_LATE = 2;
// Rejected because downlink packet timestamp is too much in advance.
TOO_EARLY = 3;
// Rejected because there was already a packet programmed in requested timeframe.
COLLISION_PACKET = 4;
// Rejected because there was already a beacon planned in requested timeframe.
COLLISION_BEACON = 5;
// Rejected because requested frequency is not supported by TX RF chain.
TX_FREQ = 6;
// Rejected because requested power is not supported by gateway.
TX_POWER = 7;
// Rejected because GPS is unlocked, so GPS timestamp cannot be used.
GPS_UNLOCKED = 8;
// Downlink queue is full.
QUEUE_FULL = 9;
// Internal error.
INTERNAL_ERROR = 10;
}
message Modulation {
oneof parameters {
// LoRa modulation information.
LoRaModulationInfo lora = 3 [json_name = "loRa"];
// FSK modulation information.
FSKModulationInfo fsk = 4;
// LR-FHSS modulation information.
LRFHSSModulationInfo lr_fhss = 5 [json_name = "lrFHSS"];
}
}
message UplinkTXInfo {
// Frequency (Hz).
uint32 frequency = 1;
// Modulation.
common.Modulation modulation = 2;
oneof modulation_info {
// LoRa modulation information.
LoRaModulationInfo lora_modulation_info = 3 [json_name = "loRaModulationInfo"];
// FSK modulation information.
FSKModulationInfo fsk_modulation_info = 4;
// LR-FHSS modulation information.
LRFHSSModulationInfo lr_fhss_modulation_info = 5 [json_name = "lrFHSSModulationInfo"];
}
}
message LoRaModulationInfo {
// Bandwidth.
uint32 bandwidth = 1;
// Speading-factor.
uint32 spreading_factor = 2;
// Code-rate.
string code_rate = 3;
// Polarization inversion.
bool polarization_inversion = 4;
}
message FSKModulationInfo {
// Frequency deviation.
uint32 frequency_deviation = 1;
// FSK datarate (bits / sec).
uint32 datarate = 2;
}
message LRFHSSModulationInfo {
// Operating channel width (OCW) in Hz.
uint32 operating_channel_width = 1;
// Code-rate.
string code_rate = 2;
// Hopping grid number of steps.
uint32 grid_steps = 3;
}
message EncryptedFineTimestamp {
// AES key index used for encrypting the fine timestamp.
uint32 aes_key_index = 1;
// Encrypted 'main' fine-timestamp (ns precision part of the timestamp).
bytes encrypted_ns = 2 [json_name = "encryptedNS"];
// FPGA ID.
bytes fpga_id = 3 [json_name = "fpgaID"];
}
message PlainFineTimestamp {
// Full timestamp.
google.protobuf.Timestamp time = 1;
}
message GatewayStats {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
// Gateway IP.
string ip = 9;
// Gateway time.
google.protobuf.Timestamp time = 2;
// Gateway location.
common.Location location = 3;
// Gateway configuration version (this maps to the config_version sent
// by LoRa Server to the gateway).
string config_version = 4;
// Number of radio packets received.
uint32 rx_packets_received = 5;
// Number of radio packets received with valid PHY CRC.
uint32 rx_packets_received_ok = 6 [json_name = "rxPacketsReceivedOK"];
// Number of downlink packets received for transmission.
uint32 tx_packets_received = 7;
// Number of downlink packets emitted.
uint32 tx_packets_emitted = 8;
// Additional gateway meta-data.
map<string, string> meta_data = 10;
// Stats ID (UUID).
// Unique identifier for the gateway stats.
bytes stats_id = 11 [json_name = "statsID"];
// Tx packets per frequency.
map<uint32, uint32> tx_packets_per_frequency = 12;
// Rx packets per frequency.
map<uint32, uint32> rx_packets_per_frequency = 13;
// Tx packets per modulation parameters.
repeated PerModulationCount tx_packets_per_modulation = 14;
// Rx packets per modulation parameters.
repeated PerModulationCount rx_packets_per_modulation = 15;
// Tx packets per status.
map<string, uint32> tx_packets_per_status = 16;
}
message PerModulationCount {
// Modulation.
Modulation modulation = 1;
// Count.
uint32 count = 2;
}
message UplinkRXInfo {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
// RX time (only set when the gateway has a GPS module).
google.protobuf.Timestamp time = 2;
// RX time since GPS epoch (only set when the gateway has a GPS module).
google.protobuf.Duration time_since_gps_epoch = 3 [json_name = "timeSinceGPSEpoch"];
// RSSI.
int32 rssi = 5;
// LoRa SNR.
double lora_snr = 6 [json_name = "loRaSNR"];
// Channel.
uint32 channel = 7;
// RF Chain.
uint32 rf_chain = 8;
// Board.
uint32 board = 9;
// Antenna.
uint32 antenna = 10;
// Location.
common.Location location = 11;
// Fine-timestamp type.
FineTimestampType fine_timestamp_type = 12;
// Fine-timestamp data.
oneof fine_timestamp {
// Encrypted fine-timestamp data.
EncryptedFineTimestamp encrypted_fine_timestamp = 13;
// Plain fine-timestamp data.
PlainFineTimestamp plain_fine_timestamp = 14;
}
// Gateway specific context.
bytes context = 15;
// Uplink ID (UUID bytes).
// Unique and random ID which can be used to correlate the uplink across multiple logs.
bytes uplink_id = 16 [json_name = "uplinkID"];
// CRC status.
CRCStatus crc_status = 17 [json_name = "crcStatus"];
// Optional meta-data map.
map<string, string> metadata = 18;
}
message DownlinkTXInfo {
// Gateway ID.
// Deprecated: replaced by gateway_id in DownlinkFrame.
bytes gateway_id = 1 [json_name = "gatewayID"];
// TX frequency (in Hz).
uint32 frequency = 5;
// TX power (in dBm).
int32 power = 6;
// Modulation.
common.Modulation modulation = 7;
oneof modulation_info {
// LoRa modulation information.
LoRaModulationInfo lora_modulation_info = 8 [json_name = "loRaModulationInfo"];
// FSK modulation information.
FSKModulationInfo fsk_modulation_info = 9;
}
// The board identifier for emitting the frame.
uint32 board = 10;
// The antenna identifier for emitting the frame.
uint32 antenna = 11;
// Timing defines the downlink timing to use.
DownlinkTiming timing = 12;
oneof timing_info {
// Immediately timing information.
ImmediatelyTimingInfo immediately_timing_info = 13;
// Context based delay timing information.
DelayTimingInfo delay_timing_info = 14;
// GPS Epoch timing information.
GPSEpochTimingInfo gps_epoch_timing_info = 15;
}
// Gateway specific context.
// In case of a Class-A downlink, this contains a copy of the uplink context.
bytes context = 16;
}
message ImmediatelyTimingInfo {
// Not implemented yet.
}
message DelayTimingInfo {
// Delay (duration).
// The delay will be added to the gateway internal timing, provided by the context object.
google.protobuf.Duration delay = 1;
}
message GPSEpochTimingInfo {
// Duration since GPS Epoch.
google.protobuf.Duration time_since_gps_epoch = 1 [json_name = "timeSinceGPSEpoch"];
}
message UplinkFrame {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
UplinkTXInfo tx_info = 2;
// RX meta-data.
UplinkRXInfo rx_info = 3;
}
message UplinkFrameSet {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
UplinkTXInfo tx_info = 2;
// RX meta-data set.
repeated UplinkRXInfo rx_info = 3;
}
message DownlinkFrame {
// PHYPayload.
// Deprecated: replaced by items.
bytes phy_payload = 1;
// TX meta-data.
// Deprecated: replaced by items.
DownlinkTXInfo tx_info = 2;
// Token (uint16 value).
// Deprecated: replaced by downlink_id.
uint32 token = 3;
// Downlink ID (UUID).
bytes downlink_id = 4 [json_name = "downlinkID"];
// Downlink frame items.
// This makes it possible to send multiple downlink opportunities to the
// gateway at once (e.g. RX1 and RX2 in LoRaWAN). The first item has the
// highest priority, the last the lowest. The gateway will emit at most
// one item.
repeated DownlinkFrameItem items = 5;
// Gateway ID.
bytes gateway_id = 6 [json_name = "gatewayID"];
}
message DownlinkFrameItem {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
DownlinkTXInfo tx_info = 2;
}
message DownlinkTXAck {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
// Token (uint16 value).
// Deprecated: replaced by downlink_id.
uint32 token = 2;
// Error.
// Deprecated: replaced by items.
string error = 3;
// Downlink ID (UUID).
bytes downlink_id = 4 [json_name = "downlinkID"];
// Downlink frame items.
// This list has the same length as the request and indicates which
// downlink frame has been emitted of the requested list (or why it failed).
// Note that at most one item has a positive acknowledgement.
repeated DownlinkTXAckItem items = 5;
}
message DownlinkTXAckItem {
// The Ack status of this item.
TxAckStatus status = 1;
}
message GatewayConfiguration {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
// Configuration version.
string version = 2;
// Channels.
repeated ChannelConfiguration channels = 3;
// Stats interval.
google.protobuf.Duration stats_interval = 4;
}
message ChannelConfiguration {
// Frequency (Hz).
uint32 frequency = 1;
// Channel modulation.
common.Modulation modulation = 2;
oneof modulation_config {
// LoRa modulation config.
LoRaModulationConfig lora_modulation_config = 3 [json_name = "loRaModulationConfig"];
// FSK modulation config.
FSKModulationConfig fsk_modulation_config = 4;
}
// Board index.
uint32 board = 5;
// Demodulator index (of the given board).
uint32 demodulator = 6;
}
message LoRaModulationConfig {
// Bandwidth.
uint32 bandwidth = 1;
// Spreading-factors.
repeated uint32 spreading_factors = 2;
}
message FSKModulationConfig {
// Bandwidth.
uint32 bandwidth = 1;
// Bitrate.
uint32 bitrate = 2;
}
message GatewayCommandExecRequest {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
// Command to execute.
// This command must be pre-configured in the LoRa Gateway Bridge configuration.
string command = 2;
// Execution request ID (UUID).
// The same token will be returned when the execution of the command has
// completed.
bytes ExecId = 3 [json_name = "execID"];
// Standard input.
bytes stdin = 4;
// Environment variables.
map<string, string> environment = 5;
}
message GatewayCommandExecResponse {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
// Execution request ID (UUID).
bytes exec_id = 2 [json_name = "execID"];
// Standard output.
bytes stdout = 3;
// Standard error.
bytes stderr = 4;
// Error message.
string error = 5;
}
// RawPacketForwarderEvent contains a raw packet-forwarder event.
// It can be used to access packet-forwarder features that are not (fully)
// integrated with the ChirpStack Gateway Bridge.
message RawPacketForwarderEvent {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
// Raw ID (UUID).
bytes raw_id = 2 [json_name = "rawID"];
// Payload contains the raw payload.
bytes payload = 3;
}
// RawPacketForwarderEvent contains a raw packet-forwarder command.
// It can be used to access packet-forwarder features that are not (fully)
// integrated with the ChirpStack Gateway Bridge.
message RawPacketForwarderCommand {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
// Raw ID (UUID).
bytes raw_id = 2 [json_name = "rawID"];
// Payload contains the raw payload.
bytes payload = 3;
}
// ConnState contains the connection state of a gateway.
message ConnState {
// Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"];
enum State {
OFFLINE = 0;
ONLINE = 1;
}
State state = 2;
}

View File

@ -0,0 +1,202 @@
syntax = "proto3";
package gw;
option go_package = "github.com/chirpstack/chirpstack/api/go/v4/gw";
option java_package = "io.chirpstack.api.gw";
option java_multiple_files = true;
option java_outer_classname = "GatewayProto";
import "chirpstack-api/common/common.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
enum CodeRate {
CR_UNDEFINED = 0;
CR_4_5 = 1;
CR_4_6 = 2;
CR_4_7 = 3;
CR_4_8 = 4;
}
message UplinkFrame {
// PHYPayload.
bytes phy_payload = 1;
// TX meta-data.
UplinkTxParams tx_params = 2;
// RX meta-data.
UplinkRxParams rx_params = 3;
}
message DownlinkFrame {
// Gateway ID.
string gateway_id = 1;
// Downlink ID.
uint32 downlink_id = 2;
// Downlink frame items.
// This makes it possible to send multiple downlink opportunities to the
// gateway at once (e.g. RX1 and RX2 in LoRaWAN). The first item has the
// highest priority, the last the lowest. The gateway will emit at most
// one item.
repeated DownlinkFrameItem items = 3;
}
message UplinkTxParams {
// Frequency (Hz).
uint32 frequency = 1;
// Modulation.
Modulation modulation = 2;
}
message Modulation {
oneof parameters {
// LoRa.
LoraModulationParams lora = 1;
// FSK.
FskModulationParams fsk = 2;
// LR-FHSS.
LrFhssModulationParams lr_fhss = 3;
}
}
message LoraModulationParams {
// Bandwidth (Hz).
uint32 bandwidth = 1;
// Spreading-factor.
uint32 spreading_factor = 2;
// Polarization inversion.
bool polarization_inversion = 3;
// Code-rate.
CodeRate code_rate = 4;
}
message FskModulationParams {
// Frequency deviation.
uint32 frequency_deviation = 1;
// FSK datarate (bits / sec).
uint32 datarate = 2;
}
message LrFhssModulationParams {
// Operating channel width (OCW) in Hz.
uint32 operating_channel_width = 1;
// Code-rate.
CodeRate code_rate = 2;
// Hopping grid number of steps.
uint32 grid_steps = 3;
}
message UplinkRxParams {
// Gateway ID (EUI).
string gateway_id = 1;
// Uplink ID (UUID).
uint32 uplink_id = 2;
// Rx time.
google.protobuf.Timestamp time = 3;
// RX time since GPS epoch (only set when the gateway has a GPS module).
google.protobuf.Duration time_since_gps_epoch = 4;
// Fine-timestamp.
// This timestamp can be used for TDOA based geolocation.
google.protobuf.Duration fine_time_since_gps_epoch = 5;
// RSSI.
int32 rssi = 6;
// SNR.
// Note: only available for LoRa modulation.
float snr = 7;
// Board.
uint32 board = 8;
// Antenna.
uint32 antenna = 9;
// Location.
common.Location location = 10;
// Gateway specific context.
// This value must be returned to the gateway on (Class-A) downlink.
bytes context = 11;
// Properties.
google.protobuf.Struct properties = 12;
}
message DownlinkFrameItem {
// PHYPayload.
bytes phy_payload = 1;
// Tx parameters.
DownlinkTxParams tx_params = 2;
}
message DownlinkTxParams {
// Tx frequency (Hz).
uint32 frequency = 1;
// Tx power (dBm).
int32 power = 2;
// Modulation.
Modulation modulation = 3;
// The board identifier for emitting the frame.
uint32 board = 4;
// The antenna identifier for emitting the frame.
uint32 antenna = 5;
// Downlink timing.
DownlinkTiming timing = 6;
// Gateway specific context.
// In case of a Class-A downlink, this must contain a copy of the uplink context.
bytes context = 7;
}
message DownlinkTiming {
oneof parameters {
// Immediately timing information.
DownlinkTimingImmediately immediately = 1;
// Delay timing information.
DownlinkTimingDelay delay = 2;
// GPS epoch timing information.
DownlinkTimingGpsEpoch gps_epoch = 3;
}
}
message DownlinkTimingImmediately {
// No fields implemented yet.
}
message DownlinkTimingDelay {
// Delay relative to provided context.
google.protobuf.Duration delay = 1;
}
message DownlinkTimingGpsEpoch {
// Duration since GPS epoch.
google.protobuf.Duration time_since_gps_epoch = 1;
}

View File

@ -0,0 +1,278 @@
syntax = "proto3";
package integration;
option go_package = "github.com/brocaar/chirpstack/api/go/v4/integration";
option java_package = "io.chirpstack.api.as.integration";
option java_multiple_files = true;
option java_outer_classname = "IntegrationProto";
import "chirpstack-api/common/common.proto";
import "chirpstack-api/gw/gw.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/struct.proto";
enum LogLevel {
// Info.
INFO = 0;
// Warning.
WARNING = 1;
// Error.
ERROR = 2;
}
enum LogCode {
// Unknown type.
UNKNOWN = 0;
// Error related to the downlink payload size.
// Usually seen when the payload exceeded the maximum allowed payload size.
DOWNLINK_PAYLOAD_SIZE = 1;
// Uplink codec error.
UPLINK_CODEC = 2;
// Downlink codec error.
DOWNLINK_CODEC = 3;
// OTAA error.
OTAA = 4;
// Uplink frame-counter was reset.
UPLINK_F_CNT_RESET = 5;
// Uplink MIC error.
UPLINK_MIC = 6;
// Uplink frame-counter retransmission.
UPLINK_F_CNT_RETRANSMISSION = 7;
// Downlink gateway error.
DOWNLINK_GATEWAY = 8;
}
// Device information.
message DeviceInfo {
// Tenant ID (UUID).
string tenant_id = 1;
// Tenant name.
string tenant_name = 2;
// Application ID (UUID).
string application_id = 3;
// Application name.
string application_name = 4;
// Device-profile ID (UUID).
string device_profile_id = 5;
// Device-profile name.
string device_profile_name = 6;
// Device name.
string device_name = 7;
// Device EUI.
string dev_eui = 8;
// Device-profile and device tags.
map<string, string> tags = 9;
}
// UplinkEvent is the message sent when an uplink payload has been received.
message UplinkEvent {
// Deduplication ID (UUID).
string deduplication_id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
// Device information.
DeviceInfo device_info = 3;
// Device address.
string dev_addr = 4;
// Device has ADR bit set.
bool adr = 5;
// Data-rate.
uint32 dr = 6;
// Frame counter.
uint32 f_cnt_up = 7;
// Frame port.
uint32 f_port = 8;
// Uplink was of type confirmed.
bool confirmed = 9;
// FRMPayload data.
bytes data = 10;
// Note that this is only set when a codec is configured in the Device Profile.
google.protobuf.Struct object = 11;
// Receiving gateway RX info.
repeated gw.UplinkRXInfo rx_info = 12;
// TX info.
gw.UplinkTXInfo tx_info = 13;
}
// JoinEvent is the message sent when a device joined the network.
// Note: this event is sent at the first uplink after OTAA.
message JoinEvent {
// Deduplication ID (UUID).
string deduplication_id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
// Device info.
DeviceInfo device_info = 3;
// Device address.
string dev_addr = 4;
}
// AckEvent is the message sent when a confirmation on a confirmed downlink
// has been received -or- when the downlink timed out.
message AckEvent {
// Deduplication ID (UUID).
string deduplication_id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
// Device info.
DeviceInfo device_info = 3;
// Downlink queue item ID (UUID).
string queue_item_id = 4;
// Frame was acknowledged.
bool acknowledged = 5;
// Downlink frame counter to which the acknowledgement relates.
uint32 f_cnt_down = 6;
}
// TxAckEvent is the message sent when a downlink was acknowledged by the gateway
// for transmission. As a downlink can be scheduled in the future, this event
// does not confirm that the message has already been transmitted.
message TxAckEvent {
// Downlink ID (UUID).
string downlink_id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
// Device info.
DeviceInfo device_info = 3;
// Downlink queue item ID (UUID).
string queue_item_id = 4;
// Downlink frame-counter.
uint32 f_cnt_down = 5;
// Gateway ID.
string gateway_id = 6;
// TX info.
gw.DownlinkTXInfo tx_info = 7;
}
// LogEvent is the message sent when a device-related log was sent.
message LogEvent {
// Deduplication ID (UUID).
string deduplication_id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
// Device info.
DeviceInfo device_info = 3;
// Log level.
LogLevel level = 4;
// Log code.
LogCode code = 5;
// Description message.
string description = 6;
// Context map.
map<string, string> context = 7;
}
// StatusEvent is the message sent when a device-status mac-command was sent
// by the device.
message StatusEvent {
// Deduplication ID (UUID).
string deduplication_id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
// Device info.
DeviceInfo device_info = 3;
// The demodulation signal-to-noise ratio in dB for the last successfully
// received device-status request by the Network Server.
int32 margin = 5;
// Device is connected to an external power source.
bool external_power_source = 6;
// Battery level is not available.
bool battery_level_unavailable = 7;
// Battery level.
float battery_level = 8;
}
// LocationEvent is the message sent when a geolocation resolve was returned.
message LocationEvent {
// Deduplication ID (UUID).
string deduplication_id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
// Device info.
DeviceInfo device_info = 3;
// Location.
common.Location location = 4;
}
// IntegrationEvent is the message that can be sent by an integration.
// It allows for sending events which are provided by an external integration
// which are "not native" to ChirpStack.
message IntegrationEvent {
// Deduplication ID (UUID).
string deduplication_id = 1;
// Timestamp.
google.protobuf.Timestamp time = 2;
// Device info.
DeviceInfo device_info = 3;
// Integration name.
string integration_name = 4;
// Event type.
string event_type = 5;
// Struct containing the event object.
google.protobuf.Struct object = 6;
}

View File

@ -0,0 +1,235 @@
syntax = "proto3";
package internal;
import "chirpstack-api/common/common.proto";
import "chirpstack-api/gw/gw.proto";
import "google/protobuf/timestamp.proto";
message DeviceSession {
// Device EUI.
bytes dev_eui = 1;
// Device address.
bytes dev_addr = 2;
// Join EUI.
bytes join_eui = 3;
// LoRaWAN mac-version.
common.MacVersion mac_version = 4;
// FNwkSIntKey.
bytes f_nwk_s_int_key = 5;
// SNwkSIntKey.
bytes s_nwk_s_int_key = 6;
// NwkSEncKey.
bytes nwk_s_enc_key = 7;
// AppSKey envelope.
common.KeyEnvelope app_s_key = 8;
// Uplink frame-counter.
uint32 f_cnt_up = 9;
// Downlink frame-counter (ns).
uint32 n_f_cnt_down = 10;
// Downlink frame-counter (as).
uint32 a_f_cnt_down = 11;
// Frame-counter holding the last confirmed downlink frame (n_f_cnt_down or a_f_cnt_down).
uint32 conf_f_cnt = 12;
// Skip uplink frame-counter validation.
bool skip_f_cnt_check = 13;
// RX1 delay.
uint32 rx1_delay = 14;
// RX1 data-rate offset.
uint32 rx1_dr_offset = 15;
// RX2 data-rate.
uint32 rx2_dr = 16;
// RX2 frequency.
uint32 rx2_frequency = 17;
// Enabled uplink channels.
repeated uint32 enabled_uplink_channel_indices = 18;
// Extra user-defined uplink channels.
map<uint32, DeviceSessionChannel> extra_uplink_channels = 19;
// Class-B ping-slot data-rate.
uint32 class_b_ping_slot_dr = 20;
// Class-B ping-slot frequency.
uint32 class_b_ping_slot_freq = 21;
// Class-B ping-slot nb.
uint32 class_b_ping_slot_nb = 22;
// Nb. transmissions.
uint32 nb_trans = 23;
// TXPowerIndex which the node is using. The possible values are defined
// by the lorawan/band package and are region specific. By default it is
// assumed that the node is using TXPower 0. This value is controlled by
// the ADR engine.
uint32 tx_power_index = 24;
// DR defines the (last known) data-rate at which the node is operating.
// This value is controlled by the ADR engine.
uint32 dr = 25;
// ADR defines if the device has ADR enabled.
bool adr = 26;
// MaxSupportedTXPowerIndex defines the maximum supported tx-power index
// by the node, or 0 when not set.
uint32 max_supported_tx_power_index = 27;
// MinSupportedTXPowerIndex defines the minimum supported tx-power index
// by the node (default 0).
uint32 min_supported_tx_power_index = 28;
// Pending rejoin device-session contains a device-session which has not
// yet been activated by the device (by sending a first uplink).
DeviceSession pending_rejoin_device_session = 29;
// Uplink history for ADR (last 20 uplink transmissions).
repeated UplinkAdrHistory uplink_adr_history = 30;
// Mac-command error count.
map<uint32, uint32> mac_command_error_count = 31;
// Last device-status request.
google.protobuf.Timestamp last_device_status_request = 32;
// RejoinRequestEnabled defines if the rejoin-request is enabled on the
// device.
bool rejoin_request_enabled = 33;
// RejoinRequestMaxCountN defines the 2^(C+4) uplink message interval for
// the rejoin-request.
uint32 rejoin_request_max_count_n = 34;
// RejoinRequestMaxTimeN defines the 2^(T+10) time interval (seconds)
// for the rejoin-request.
uint32 rejoin_request_max_time_n = 35;
// Rejoin counter (RJCount0).
// This counter is reset to 0 after each successful join-accept.
uint32 rejoin_count_0 = 36;
// Uplink dwell time.
bool uplink_dwell_time_400ms = 37;
// Downlink dwell time.
bool downlink_dwell_time_400ms = 38;
// Uplink max. EIRP index.
uint32 uplink_max_eirp_index = 39;
// Region name.
string region_name = 40;
}
message UplinkAdrHistory {
// Uplink frame-counter.
uint32 f_cnt = 1;
// Max SNR (of deduplicated frames received by one or multiple gateways).
float max_snr = 2;
// Max RSSI.
int32 max_rssi = 5;
// TX Power (as known by the network-server).
uint32 tx_power_index = 3;
// Number of receiving gateways.
uint32 gateway_count = 4;
}
message DeviceSessionChannel {
// Frequency Hz.
uint32 frequency = 1;
// Min. data-rate.
uint32 min_dr = 2;
// Max. data-rate.
uint32 max_dr = 3;
}
message DeviceGatewayRxInfo {
// DevEUI (EUI64).
bytes dev_eui = 1;
// Data-rate.
uint32 dr = 2;
// Gateway RxInfo elements.
repeated DeviceGatewayRxInfoItem items = 3;
}
message DeviceGatewayRxInfoItem {
// Gateway ID (EUI64).
bytes gateway_id = 1;
// RSSI.
int32 rssi = 2;
// LoRa SNR.
float lora_snr = 3;
// Antenna.
uint32 antenna = 4;
// Board.
uint32 board = 5;
// Context blob.
bytes context = 6;
}
message DownlinkFrame {
// Downlink ID (UUID).
bytes downlink_id = 1;
// DevEUI.
bytes dev_eui = 2;
// Device queue item ID.
bytes device_queue_item_id = 3;
// Multicast Group ID.
bytes multicast_group_id = 4;
// Multicast queue item ID.
bytes multicast_group_queue_item_id = 5;
// Downlink frames.
gw.DownlinkFrame downlink_frame = 6;
// Encrypted FOpts (LoRaWAN 1.1).
bool encrypted_fopts = 8;
// Network session encryption key (for FOpts).
bytes nwk_s_enc_key = 9;
}
message LoraCloudGeolocBuffer {
// Uplinks in buffer.
repeated LoraCloudGeolocBufferUplink uplinks = 1;
}
message LoraCloudGeolocBufferUplink {
// RxInfo set for a single uplink.
repeated gw.UplinkRXInfo rx_info = 1;
}

View File

@ -0,0 +1,61 @@
syntax = "proto3";
package meta;
option go_package = "github.com/chirpstack/chirpstack-api/go/v4/meta";
option java_package = "io.chirpstack.api.meta";
option java_multiple_files = true;
option java_outer_classname = "MetaProto";
import "chirpstack-api/common/common.proto";
import "chirpstack-api/gw/gw.proto";
message UplinkMeta {
// Device EUI (EUI64).
string dev_eui = 1;
// TX meta-data.
gw.UplinkTXInfo tx_info = 2;
// RX meta-data.
repeated gw.UplinkRXInfo rx_info = 3;
// PHYPayload byte count.
uint32 phy_payload_byte_count = 4;
// MAC-Command byte count.
uint32 mac_command_byte_count = 5;
// Application payload byte count.
uint32 application_payload_byte_count = 6;
// Message type.
common.MType message_type = 7;
}
message DownlinkMeta {
// Device EUI (EUI64).
string dev_eui = 1;
// Multicast Group ID (UUID).
string multicast_group_id = 2;
// TX meta-data.
gw.DownlinkTXInfo tx_info = 3;
// PHYPayload byte count.
uint32 phy_payload_byte_count = 4;
// MAC-Command byte count.
uint32 mac_command_byte_count = 5;
// Application payload byte count.
uint32 application_payload_byte_count = 6;
// Message type.
common.MType message_type = 7;
// Gateway ID (EUI64).
string gateway_id = 8;
}

22
api/python/src/README.md Normal file
View File

@ -0,0 +1,22 @@
# chirpstack-api
ChirpStack gRPC API message and service wrappers for Python.
## Install
```sh
pip install chirpstack-api
```
## Usage
All messages, services, constants, etc. are auto-generated from the ChirpStack protobuf definitions. The result is that
this package structure matches that of the protobuf definitions.
The protobuf definitions can be found here: https://github.com/brocaar/chirpstack-api/tree/master/protobuf
## Links
* [`chirpstack-api` Python package page](https://pypi.org/project/chirpstack-api/)
* [ChirpStack documentation](https://www.chirpstack.io/)
* [ChirpStack Application Server API examples](https://www.chirpstack.io/application-server/api/python-examples/)

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,649 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from chirpstack_api.api import device_pb2 as chirpstack__api_dot_api_dot_device__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class DeviceServiceStub(object):
"""DeviceService is the service providing API methods for managing devices.
"""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.Create = channel.unary_unary(
'/api.DeviceService/Create',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.CreateDeviceRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Get = channel.unary_unary(
'/api.DeviceService/Get',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceResponse.FromString,
)
self.Update = channel.unary_unary(
'/api.DeviceService/Update',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.UpdateDeviceRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Delete = channel.unary_unary(
'/api.DeviceService/Delete',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.DeleteDeviceRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.List = channel.unary_unary(
'/api.DeviceService/List',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.ListDevicesRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__pb2.ListDevicesResponse.FromString,
)
self.CreateKeys = channel.unary_unary(
'/api.DeviceService/CreateKeys',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.CreateDeviceKeysRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.GetKeys = channel.unary_unary(
'/api.DeviceService/GetKeys',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceKeysRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceKeysResponse.FromString,
)
self.UpdateKeys = channel.unary_unary(
'/api.DeviceService/UpdateKeys',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.UpdateDeviceKeysRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.DeleteKeys = channel.unary_unary(
'/api.DeviceService/DeleteKeys',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.DeleteDeviceKeysRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.FlushDevNonces = channel.unary_unary(
'/api.DeviceService/FlushDevNonces',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.FlushDevNoncesRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Activate = channel.unary_unary(
'/api.DeviceService/Activate',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.ActivateDeviceRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Deactivate = channel.unary_unary(
'/api.DeviceService/Deactivate',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.DeactivateDeviceRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.GetActivation = channel.unary_unary(
'/api.DeviceService/GetActivation',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceActivationRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceActivationResponse.FromString,
)
self.GetRandomDevAddr = channel.unary_unary(
'/api.DeviceService/GetRandomDevAddr',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrResponse.FromString,
)
self.GetStats = channel.unary_unary(
'/api.DeviceService/GetStats',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsResponse.FromString,
)
self.Enqueue = channel.unary_unary(
'/api.DeviceService/Enqueue',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.EnqueueDeviceQueueItemRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__pb2.EnqueueDeviceQueueItemResponse.FromString,
)
self.FlushQueue = channel.unary_unary(
'/api.DeviceService/FlushQueue',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.FlushDeviceQueueRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.GetQueue = channel.unary_unary(
'/api.DeviceService/GetQueue',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceQueueItemsRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceQueueItemsResponse.FromString,
)
class DeviceServiceServicer(object):
"""DeviceService is the service providing API methods for managing devices.
"""
def Create(self, request, context):
"""Create the given device.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Get(self, request, context):
"""Get returns the device for the given DevEUI.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Update(self, request, context):
"""Update the given device.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Delete(self, request, context):
"""Delete the device with the given DevEUI.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def List(self, request, context):
"""Get the list of devices.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def CreateKeys(self, request, context):
"""Create the given device-keys.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetKeys(self, request, context):
"""Get the device-keys for the given DevEUI.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def UpdateKeys(self, request, context):
"""Update the given device-keys.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def DeleteKeys(self, request, context):
"""Delete the device-keys for the given DevEUI.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def FlushDevNonces(self, request, context):
"""FlushDevNonces flushes the OTAA device nonces.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Activate(self, request, context):
"""Activate (re)activates the device with the given parameters (for ABP or for importing OTAA activations).
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Deactivate(self, request, context):
"""Deactivate de-activates the device.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetActivation(self, request, context):
"""GetActivation returns the current activation details of the device (OTAA or ABP).
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetRandomDevAddr(self, request, context):
"""GetRandomDevAddr returns a random DevAddr taking the NwkID prefix into account.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetStats(self, request, context):
"""GetStats returns the device stats.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Enqueue(self, request, context):
"""Enqueue adds the given item to the downlink queue.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def FlushQueue(self, request, context):
"""FlushQueue flushes the downlink device-queue.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetQueue(self, request, context):
"""GetQueue returns the downlink device-queue.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_DeviceServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
'Create': grpc.unary_unary_rpc_method_handler(
servicer.Create,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.CreateDeviceRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Get': grpc.unary_unary_rpc_method_handler(
servicer.Get,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceResponse.SerializeToString,
),
'Update': grpc.unary_unary_rpc_method_handler(
servicer.Update,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.UpdateDeviceRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Delete': grpc.unary_unary_rpc_method_handler(
servicer.Delete,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.DeleteDeviceRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'List': grpc.unary_unary_rpc_method_handler(
servicer.List,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.ListDevicesRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__pb2.ListDevicesResponse.SerializeToString,
),
'CreateKeys': grpc.unary_unary_rpc_method_handler(
servicer.CreateKeys,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.CreateDeviceKeysRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'GetKeys': grpc.unary_unary_rpc_method_handler(
servicer.GetKeys,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceKeysRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceKeysResponse.SerializeToString,
),
'UpdateKeys': grpc.unary_unary_rpc_method_handler(
servicer.UpdateKeys,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.UpdateDeviceKeysRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'DeleteKeys': grpc.unary_unary_rpc_method_handler(
servicer.DeleteKeys,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.DeleteDeviceKeysRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'FlushDevNonces': grpc.unary_unary_rpc_method_handler(
servicer.FlushDevNonces,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.FlushDevNoncesRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Activate': grpc.unary_unary_rpc_method_handler(
servicer.Activate,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.ActivateDeviceRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Deactivate': grpc.unary_unary_rpc_method_handler(
servicer.Deactivate,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.DeactivateDeviceRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'GetActivation': grpc.unary_unary_rpc_method_handler(
servicer.GetActivation,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceActivationRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceActivationResponse.SerializeToString,
),
'GetRandomDevAddr': grpc.unary_unary_rpc_method_handler(
servicer.GetRandomDevAddr,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrResponse.SerializeToString,
),
'GetStats': grpc.unary_unary_rpc_method_handler(
servicer.GetStats,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsResponse.SerializeToString,
),
'Enqueue': grpc.unary_unary_rpc_method_handler(
servicer.Enqueue,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.EnqueueDeviceQueueItemRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__pb2.EnqueueDeviceQueueItemResponse.SerializeToString,
),
'FlushQueue': grpc.unary_unary_rpc_method_handler(
servicer.FlushQueue,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.FlushDeviceQueueRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'GetQueue': grpc.unary_unary_rpc_method_handler(
servicer.GetQueue,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceQueueItemsRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceQueueItemsResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'api.DeviceService', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class DeviceService(object):
"""DeviceService is the service providing API methods for managing devices.
"""
@staticmethod
def Create(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/Create',
chirpstack__api_dot_api_dot_device__pb2.CreateDeviceRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Get(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/Get',
chirpstack__api_dot_api_dot_device__pb2.GetDeviceRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__pb2.GetDeviceResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Update(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/Update',
chirpstack__api_dot_api_dot_device__pb2.UpdateDeviceRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Delete(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/Delete',
chirpstack__api_dot_api_dot_device__pb2.DeleteDeviceRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def List(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/List',
chirpstack__api_dot_api_dot_device__pb2.ListDevicesRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__pb2.ListDevicesResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def CreateKeys(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/CreateKeys',
chirpstack__api_dot_api_dot_device__pb2.CreateDeviceKeysRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetKeys(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/GetKeys',
chirpstack__api_dot_api_dot_device__pb2.GetDeviceKeysRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__pb2.GetDeviceKeysResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def UpdateKeys(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/UpdateKeys',
chirpstack__api_dot_api_dot_device__pb2.UpdateDeviceKeysRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def DeleteKeys(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/DeleteKeys',
chirpstack__api_dot_api_dot_device__pb2.DeleteDeviceKeysRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def FlushDevNonces(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/FlushDevNonces',
chirpstack__api_dot_api_dot_device__pb2.FlushDevNoncesRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Activate(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/Activate',
chirpstack__api_dot_api_dot_device__pb2.ActivateDeviceRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Deactivate(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/Deactivate',
chirpstack__api_dot_api_dot_device__pb2.DeactivateDeviceRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetActivation(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/GetActivation',
chirpstack__api_dot_api_dot_device__pb2.GetDeviceActivationRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__pb2.GetDeviceActivationResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetRandomDevAddr(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/GetRandomDevAddr',
chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetStats(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/GetStats',
chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Enqueue(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/Enqueue',
chirpstack__api_dot_api_dot_device__pb2.EnqueueDeviceQueueItemRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__pb2.EnqueueDeviceQueueItemResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def FlushQueue(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/FlushQueue',
chirpstack__api_dot_api_dot_device__pb2.FlushDeviceQueueRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetQueue(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/GetQueue',
chirpstack__api_dot_api_dot_device__pb2.GetDeviceQueueItemsRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__pb2.GetDeviceQueueItemsResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

View File

@ -0,0 +1,172 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: chirpstack-api/api/device_profile.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from chirpstack_api.common import common_pb2 as chirpstack__api_dot_common_dot_common__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'chirpstack-api/api/device_profile.proto\x12\x03\x61pi\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\"chirpstack-api/common/common.proto\"\x98\x06\n\rDeviceProfile\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\ttenant_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1e\n\x06region\x18\x04 \x01(\x0e\x32\x0e.common.Region\x12\'\n\x0bmac_version\x18\x05 \x01(\x0e\x32\x12.common.MacVersion\x12\x36\n\x13reg_params_revision\x18\x06 \x01(\x0e\x32\x19.common.RegParamsRevision\x12\x18\n\x10\x61\x64r_algorithm_id\x18\x07 \x01(\t\x12\x30\n\x15payload_codec_runtime\x18\x08 \x01(\x0e\x32\x11.api.CodecRuntime\x12\x1e\n\x16payload_encoder_config\x18\t \x01(\t\x12\x1e\n\x16payload_decoder_config\x18\n \x01(\t\x12\x17\n\x0fuplink_interval\x18\x0b \x01(\r\x12\"\n\x1a\x64\x65vice_status_req_interval\x18\x0c \x01(\r\x12\x15\n\rsupports_otaa\x18\r \x01(\x08\x12\x18\n\x10supports_class_b\x18\x0e \x01(\x08\x12\x18\n\x10supports_class_c\x18\x0f \x01(\x08\x12\x17\n\x0f\x63lass_b_timeout\x18\x10 \x01(\r\x12 \n\x18\x63lass_b_ping_slot_period\x18\x11 \x01(\r\x12\x1c\n\x14\x63lass_b_ping_slot_dr\x18\x12 \x01(\r\x12\x1e\n\x16\x63lass_b_ping_slot_freq\x18\x13 \x01(\r\x12\x17\n\x0f\x63lass_c_timeout\x18\x14 \x01(\r\x12\x15\n\rabp_rx1_delay\x18\x15 \x01(\r\x12\x19\n\x11\x61\x62p_rx1_dr_offset\x18\x16 \x01(\r\x12\x12\n\nabp_rx2_dr\x18\x17 \x01(\r\x12\x14\n\x0c\x61\x62p_rx2_freq\x18\x18 \x01(\r\x12*\n\x04tags\x18\x19 \x03(\x0b\x32\x1c.api.DeviceProfile.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xdd\x02\n\x15\x44\x65viceProfileListItem\x12\n\n\x02id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x1e\n\x06region\x18\x05 \x01(\x0e\x32\x0e.common.Region\x12\'\n\x0bmac_version\x18\x06 \x01(\x0e\x32\x12.common.MacVersion\x12\x36\n\x13reg_params_revision\x18\x07 \x01(\x0e\x32\x19.common.RegParamsRevision\x12\x15\n\rsupports_otaa\x18\x08 \x01(\x08\x12\x18\n\x10supports_class_b\x18\t \x01(\x08\x12\x18\n\x10supports_class_c\x18\n \x01(\x08\"H\n\x1a\x43reateDeviceProfileRequest\x12*\n\x0e\x64\x65vice_profile\x18\x01 \x01(\x0b\x32\x12.api.DeviceProfile\")\n\x1b\x43reateDeviceProfileResponse\x12\n\n\x02id\x18\x01 \x01(\t\"%\n\x17GetDeviceProfileRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\xa6\x01\n\x18GetDeviceProfileResponse\x12*\n\x0e\x64\x65vice_profile\x18\x01 \x01(\x0b\x32\x12.api.DeviceProfile\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"H\n\x1aUpdateDeviceProfileRequest\x12*\n\x0e\x64\x65vice_profile\x18\x01 \x01(\x0b\x32\x12.api.DeviceProfile\"(\n\x1a\x44\x65leteDeviceProfileRequest\x12\n\n\x02id\x18\x01 \x01(\t\"]\n\x19ListDeviceProfilesRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\r\x12\x0e\n\x06search\x18\x03 \x01(\t\x12\x11\n\ttenant_id\x18\x04 \x01(\t\"]\n\x1aListDeviceProfilesResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12*\n\x06result\x18\x02 \x03(\x0b\x32\x1a.api.DeviceProfileListItem\"h\n&ListDeviceProfileAdrAlgorithmsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12)\n\x06result\x18\x02 \x03(\x0b\x32\x19.api.AdrAlgorithmListItem\"0\n\x14\x41\x64rAlgorithmListItem\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t*1\n\x0c\x43odecRuntime\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0b\x43\x41YENNE_LPP\x10\x01\x12\x06\n\x02JS\x10\x02\x32\xdc\x03\n\x14\x44\x65viceProfileService\x12M\n\x06\x43reate\x12\x1f.api.CreateDeviceProfileRequest\x1a .api.CreateDeviceProfileResponse\"\x00\x12\x44\n\x03Get\x12\x1c.api.GetDeviceProfileRequest\x1a\x1d.api.GetDeviceProfileResponse\"\x00\x12\x43\n\x06Update\x12\x1f.api.UpdateDeviceProfileRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x43\n\x06\x44\x65lete\x12\x1f.api.DeleteDeviceProfileRequest\x1a\x16.google.protobuf.Empty\"\x00\x12I\n\x04List\x12\x1e.api.ListDeviceProfilesRequest\x1a\x1f.api.ListDeviceProfilesResponse\"\x00\x12Z\n\x11ListAdrAlgorithms\x12\x16.google.protobuf.Empty\x1a+.api.ListDeviceProfileAdrAlgorithmsResponse\"\x00\x42U\n\x11io.chirpstack.apiB\x12\x44\x65viceProfileProtoP\x01Z*github.com/chirpstack/chirpstack/api/go/v4b\x06proto3')
_CODECRUNTIME = DESCRIPTOR.enum_types_by_name['CodecRuntime']
CodecRuntime = enum_type_wrapper.EnumTypeWrapper(_CODECRUNTIME)
NONE = 0
CAYENNE_LPP = 1
JS = 2
_DEVICEPROFILE = DESCRIPTOR.message_types_by_name['DeviceProfile']
_DEVICEPROFILE_TAGSENTRY = _DEVICEPROFILE.nested_types_by_name['TagsEntry']
_DEVICEPROFILELISTITEM = DESCRIPTOR.message_types_by_name['DeviceProfileListItem']
_CREATEDEVICEPROFILEREQUEST = DESCRIPTOR.message_types_by_name['CreateDeviceProfileRequest']
_CREATEDEVICEPROFILERESPONSE = DESCRIPTOR.message_types_by_name['CreateDeviceProfileResponse']
_GETDEVICEPROFILEREQUEST = DESCRIPTOR.message_types_by_name['GetDeviceProfileRequest']
_GETDEVICEPROFILERESPONSE = DESCRIPTOR.message_types_by_name['GetDeviceProfileResponse']
_UPDATEDEVICEPROFILEREQUEST = DESCRIPTOR.message_types_by_name['UpdateDeviceProfileRequest']
_DELETEDEVICEPROFILEREQUEST = DESCRIPTOR.message_types_by_name['DeleteDeviceProfileRequest']
_LISTDEVICEPROFILESREQUEST = DESCRIPTOR.message_types_by_name['ListDeviceProfilesRequest']
_LISTDEVICEPROFILESRESPONSE = DESCRIPTOR.message_types_by_name['ListDeviceProfilesResponse']
_LISTDEVICEPROFILEADRALGORITHMSRESPONSE = DESCRIPTOR.message_types_by_name['ListDeviceProfileAdrAlgorithmsResponse']
_ADRALGORITHMLISTITEM = DESCRIPTOR.message_types_by_name['AdrAlgorithmListItem']
DeviceProfile = _reflection.GeneratedProtocolMessageType('DeviceProfile', (_message.Message,), {
'TagsEntry' : _reflection.GeneratedProtocolMessageType('TagsEntry', (_message.Message,), {
'DESCRIPTOR' : _DEVICEPROFILE_TAGSENTRY,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.DeviceProfile.TagsEntry)
})
,
'DESCRIPTOR' : _DEVICEPROFILE,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.DeviceProfile)
})
_sym_db.RegisterMessage(DeviceProfile)
_sym_db.RegisterMessage(DeviceProfile.TagsEntry)
DeviceProfileListItem = _reflection.GeneratedProtocolMessageType('DeviceProfileListItem', (_message.Message,), {
'DESCRIPTOR' : _DEVICEPROFILELISTITEM,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.DeviceProfileListItem)
})
_sym_db.RegisterMessage(DeviceProfileListItem)
CreateDeviceProfileRequest = _reflection.GeneratedProtocolMessageType('CreateDeviceProfileRequest', (_message.Message,), {
'DESCRIPTOR' : _CREATEDEVICEPROFILEREQUEST,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.CreateDeviceProfileRequest)
})
_sym_db.RegisterMessage(CreateDeviceProfileRequest)
CreateDeviceProfileResponse = _reflection.GeneratedProtocolMessageType('CreateDeviceProfileResponse', (_message.Message,), {
'DESCRIPTOR' : _CREATEDEVICEPROFILERESPONSE,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.CreateDeviceProfileResponse)
})
_sym_db.RegisterMessage(CreateDeviceProfileResponse)
GetDeviceProfileRequest = _reflection.GeneratedProtocolMessageType('GetDeviceProfileRequest', (_message.Message,), {
'DESCRIPTOR' : _GETDEVICEPROFILEREQUEST,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.GetDeviceProfileRequest)
})
_sym_db.RegisterMessage(GetDeviceProfileRequest)
GetDeviceProfileResponse = _reflection.GeneratedProtocolMessageType('GetDeviceProfileResponse', (_message.Message,), {
'DESCRIPTOR' : _GETDEVICEPROFILERESPONSE,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.GetDeviceProfileResponse)
})
_sym_db.RegisterMessage(GetDeviceProfileResponse)
UpdateDeviceProfileRequest = _reflection.GeneratedProtocolMessageType('UpdateDeviceProfileRequest', (_message.Message,), {
'DESCRIPTOR' : _UPDATEDEVICEPROFILEREQUEST,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.UpdateDeviceProfileRequest)
})
_sym_db.RegisterMessage(UpdateDeviceProfileRequest)
DeleteDeviceProfileRequest = _reflection.GeneratedProtocolMessageType('DeleteDeviceProfileRequest', (_message.Message,), {
'DESCRIPTOR' : _DELETEDEVICEPROFILEREQUEST,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.DeleteDeviceProfileRequest)
})
_sym_db.RegisterMessage(DeleteDeviceProfileRequest)
ListDeviceProfilesRequest = _reflection.GeneratedProtocolMessageType('ListDeviceProfilesRequest', (_message.Message,), {
'DESCRIPTOR' : _LISTDEVICEPROFILESREQUEST,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.ListDeviceProfilesRequest)
})
_sym_db.RegisterMessage(ListDeviceProfilesRequest)
ListDeviceProfilesResponse = _reflection.GeneratedProtocolMessageType('ListDeviceProfilesResponse', (_message.Message,), {
'DESCRIPTOR' : _LISTDEVICEPROFILESRESPONSE,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.ListDeviceProfilesResponse)
})
_sym_db.RegisterMessage(ListDeviceProfilesResponse)
ListDeviceProfileAdrAlgorithmsResponse = _reflection.GeneratedProtocolMessageType('ListDeviceProfileAdrAlgorithmsResponse', (_message.Message,), {
'DESCRIPTOR' : _LISTDEVICEPROFILEADRALGORITHMSRESPONSE,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.ListDeviceProfileAdrAlgorithmsResponse)
})
_sym_db.RegisterMessage(ListDeviceProfileAdrAlgorithmsResponse)
AdrAlgorithmListItem = _reflection.GeneratedProtocolMessageType('AdrAlgorithmListItem', (_message.Message,), {
'DESCRIPTOR' : _ADRALGORITHMLISTITEM,
'__module__' : 'chirpstack_api.api.device_profile_pb2'
# @@protoc_insertion_point(class_scope:api.AdrAlgorithmListItem)
})
_sym_db.RegisterMessage(AdrAlgorithmListItem)
_DEVICEPROFILESERVICE = DESCRIPTOR.services_by_name['DeviceProfileService']
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\022DeviceProfileProtoP\001Z*github.com/chirpstack/chirpstack/api/go/v4'
_DEVICEPROFILE_TAGSENTRY._options = None
_DEVICEPROFILE_TAGSENTRY._serialized_options = b'8\001'
_CODECRUNTIME._serialized_start=2080
_CODECRUNTIME._serialized_end=2129
_DEVICEPROFILE._serialized_start=147
_DEVICEPROFILE._serialized_end=939
_DEVICEPROFILE_TAGSENTRY._serialized_start=896
_DEVICEPROFILE_TAGSENTRY._serialized_end=939
_DEVICEPROFILELISTITEM._serialized_start=942
_DEVICEPROFILELISTITEM._serialized_end=1291
_CREATEDEVICEPROFILEREQUEST._serialized_start=1293
_CREATEDEVICEPROFILEREQUEST._serialized_end=1365
_CREATEDEVICEPROFILERESPONSE._serialized_start=1367
_CREATEDEVICEPROFILERESPONSE._serialized_end=1408
_GETDEVICEPROFILEREQUEST._serialized_start=1410
_GETDEVICEPROFILEREQUEST._serialized_end=1447
_GETDEVICEPROFILERESPONSE._serialized_start=1450
_GETDEVICEPROFILERESPONSE._serialized_end=1616
_UPDATEDEVICEPROFILEREQUEST._serialized_start=1618
_UPDATEDEVICEPROFILEREQUEST._serialized_end=1690
_DELETEDEVICEPROFILEREQUEST._serialized_start=1692
_DELETEDEVICEPROFILEREQUEST._serialized_end=1732
_LISTDEVICEPROFILESREQUEST._serialized_start=1734
_LISTDEVICEPROFILESREQUEST._serialized_end=1827
_LISTDEVICEPROFILESRESPONSE._serialized_start=1829
_LISTDEVICEPROFILESRESPONSE._serialized_end=1922
_LISTDEVICEPROFILEADRALGORITHMSRESPONSE._serialized_start=1924
_LISTDEVICEPROFILEADRALGORITHMSRESPONSE._serialized_end=2028
_ADRALGORITHMLISTITEM._serialized_start=2030
_ADRALGORITHMLISTITEM._serialized_end=2078
_DEVICEPROFILESERVICE._serialized_start=2132
_DEVICEPROFILESERVICE._serialized_end=2608
# @@protoc_insertion_point(module_scope)

View File

@ -0,0 +1,241 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from chirpstack_api.api import device_profile_pb2 as chirpstack__api_dot_api_dot_device__profile__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class DeviceProfileServiceStub(object):
"""DeviceProfileService is the service providing API methods for managing device-profiles.
"""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.Create = channel.unary_unary(
'/api.DeviceProfileService/Create',
request_serializer=chirpstack__api_dot_api_dot_device__profile__pb2.CreateDeviceProfileRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__profile__pb2.CreateDeviceProfileResponse.FromString,
)
self.Get = channel.unary_unary(
'/api.DeviceProfileService/Get',
request_serializer=chirpstack__api_dot_api_dot_device__profile__pb2.GetDeviceProfileRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__profile__pb2.GetDeviceProfileResponse.FromString,
)
self.Update = channel.unary_unary(
'/api.DeviceProfileService/Update',
request_serializer=chirpstack__api_dot_api_dot_device__profile__pb2.UpdateDeviceProfileRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Delete = channel.unary_unary(
'/api.DeviceProfileService/Delete',
request_serializer=chirpstack__api_dot_api_dot_device__profile__pb2.DeleteDeviceProfileRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.List = channel.unary_unary(
'/api.DeviceProfileService/List',
request_serializer=chirpstack__api_dot_api_dot_device__profile__pb2.ListDeviceProfilesRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__profile__pb2.ListDeviceProfilesResponse.FromString,
)
self.ListAdrAlgorithms = channel.unary_unary(
'/api.DeviceProfileService/ListAdrAlgorithms',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__profile__pb2.ListDeviceProfileAdrAlgorithmsResponse.FromString,
)
class DeviceProfileServiceServicer(object):
"""DeviceProfileService is the service providing API methods for managing device-profiles.
"""
def Create(self, request, context):
"""Create the given device-profile.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Get(self, request, context):
"""Get the device-profile for the given ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Update(self, request, context):
"""Update the given device-profile.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Delete(self, request, context):
"""Delete the device-profile with the given ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def List(self, request, context):
"""List the available device-profiles.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ListAdrAlgorithms(self, request, context):
"""List available ADR algorithms.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_DeviceProfileServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
'Create': grpc.unary_unary_rpc_method_handler(
servicer.Create,
request_deserializer=chirpstack__api_dot_api_dot_device__profile__pb2.CreateDeviceProfileRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__profile__pb2.CreateDeviceProfileResponse.SerializeToString,
),
'Get': grpc.unary_unary_rpc_method_handler(
servicer.Get,
request_deserializer=chirpstack__api_dot_api_dot_device__profile__pb2.GetDeviceProfileRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__profile__pb2.GetDeviceProfileResponse.SerializeToString,
),
'Update': grpc.unary_unary_rpc_method_handler(
servicer.Update,
request_deserializer=chirpstack__api_dot_api_dot_device__profile__pb2.UpdateDeviceProfileRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Delete': grpc.unary_unary_rpc_method_handler(
servicer.Delete,
request_deserializer=chirpstack__api_dot_api_dot_device__profile__pb2.DeleteDeviceProfileRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'List': grpc.unary_unary_rpc_method_handler(
servicer.List,
request_deserializer=chirpstack__api_dot_api_dot_device__profile__pb2.ListDeviceProfilesRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__profile__pb2.ListDeviceProfilesResponse.SerializeToString,
),
'ListAdrAlgorithms': grpc.unary_unary_rpc_method_handler(
servicer.ListAdrAlgorithms,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__profile__pb2.ListDeviceProfileAdrAlgorithmsResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'api.DeviceProfileService', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class DeviceProfileService(object):
"""DeviceProfileService is the service providing API methods for managing device-profiles.
"""
@staticmethod
def Create(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceProfileService/Create',
chirpstack__api_dot_api_dot_device__profile__pb2.CreateDeviceProfileRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__profile__pb2.CreateDeviceProfileResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Get(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceProfileService/Get',
chirpstack__api_dot_api_dot_device__profile__pb2.GetDeviceProfileRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__profile__pb2.GetDeviceProfileResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Update(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceProfileService/Update',
chirpstack__api_dot_api_dot_device__profile__pb2.UpdateDeviceProfileRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Delete(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceProfileService/Delete',
chirpstack__api_dot_api_dot_device__profile__pb2.DeleteDeviceProfileRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def List(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceProfileService/List',
chirpstack__api_dot_api_dot_device__profile__pb2.ListDeviceProfilesRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__profile__pb2.ListDeviceProfilesResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ListAdrAlgorithms(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceProfileService/ListAdrAlgorithms',
google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
chirpstack__api_dot_api_dot_device__profile__pb2.ListDeviceProfileAdrAlgorithmsResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

View File

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: chirpstack-api/api/frame_log.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from chirpstack_api.common import common_pb2 as chirpstack__api_dot_common_dot_common__pb2
from chirpstack_api.gw import gw_pb2 as chirpstack__api_dot_gw_dot_gw__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"chirpstack-api/api/frame_log.proto\x12\x03\x61pi\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\"chirpstack-api/common/common.proto\x1a\x1a\x63hirpstack-api/gw/gw.proto\"\xd7\x01\n\x0eUplinkFrameLog\x12\x13\n\x0bphy_payload\x18\x01 \x01(\x0c\x12!\n\x07tx_info\x18\x02 \x01(\x0b\x32\x10.gw.UplinkTXInfo\x12!\n\x07rx_info\x18\x03 \x03(\x0b\x32\x10.gw.UplinkRXInfo\x12\x1d\n\x06m_type\x18\x04 \x01(\x0e\x32\r.common.MType\x12\x10\n\x08\x64\x65v_addr\x18\x05 \x01(\t\x12\x0f\n\x07\x64\x65v_eui\x18\x06 \x01(\t\x12(\n\x04time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xe1\x01\n\x10\x44ownlinkFrameLog\x12(\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0bphy_payload\x18\x02 \x01(\x0c\x12#\n\x07tx_info\x18\x03 \x01(\x0b\x32\x12.gw.DownlinkTXInfo\x12\x13\n\x0b\x64ownlink_id\x18\x04 \x01(\t\x12\x12\n\ngateway_id\x18\x05 \x01(\t\x12\x1d\n\x06m_type\x18\x06 \x01(\x0e\x32\r.common.MType\x12\x10\n\x08\x64\x65v_addr\x18\x07 \x01(\t\x12\x0f\n\x07\x64\x65v_eui\x18\x08 \x01(\tBP\n\x11io.chirpstack.apiB\rFrameLogProtoP\x01Z*github.com/chirpstack/chirpstack/api/go/v4b\x06proto3')
_UPLINKFRAMELOG = DESCRIPTOR.message_types_by_name['UplinkFrameLog']
_DOWNLINKFRAMELOG = DESCRIPTOR.message_types_by_name['DownlinkFrameLog']
UplinkFrameLog = _reflection.GeneratedProtocolMessageType('UplinkFrameLog', (_message.Message,), {
'DESCRIPTOR' : _UPLINKFRAMELOG,
'__module__' : 'chirpstack_api.api.frame_log_pb2'
# @@protoc_insertion_point(class_scope:api.UplinkFrameLog)
})
_sym_db.RegisterMessage(UplinkFrameLog)
DownlinkFrameLog = _reflection.GeneratedProtocolMessageType('DownlinkFrameLog', (_message.Message,), {
'DESCRIPTOR' : _DOWNLINKFRAMELOG,
'__module__' : 'chirpstack_api.api.frame_log_pb2'
# @@protoc_insertion_point(class_scope:api.DownlinkFrameLog)
})
_sym_db.RegisterMessage(DownlinkFrameLog)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\rFrameLogProtoP\001Z*github.com/chirpstack/chirpstack/api/go/v4'
_UPLINKFRAMELOG._serialized_start=141
_UPLINKFRAMELOG._serialized_end=356
_DOWNLINKFRAMELOG._serialized_start=359
_DOWNLINKFRAMELOG._serialized_end=584
# @@protoc_insertion_point(module_scope)

View File

@ -0,0 +1,4 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,275 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from chirpstack_api.api import gateway_pb2 as chirpstack__api_dot_api_dot_gateway__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class GatewayServiceStub(object):
"""GatewayService is the service providing API methods for managing gateways.
"""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.Create = channel.unary_unary(
'/api.GatewayService/Create',
request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.CreateGatewayRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Get = channel.unary_unary(
'/api.GatewayService/Get',
request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayResponse.FromString,
)
self.Update = channel.unary_unary(
'/api.GatewayService/Update',
request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.UpdateGatewayRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Delete = channel.unary_unary(
'/api.GatewayService/Delete',
request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.DeleteGatewayRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.List = channel.unary_unary(
'/api.GatewayService/List',
request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.ListGatewaysRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.ListGatewaysResponse.FromString,
)
self.GenerateClientCertificate = channel.unary_unary(
'/api.GatewayService/GenerateClientCertificate',
request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateResponse.FromString,
)
self.GetStats = channel.unary_unary(
'/api.GatewayService/GetStats',
request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsResponse.FromString,
)
class GatewayServiceServicer(object):
"""GatewayService is the service providing API methods for managing gateways.
"""
def Create(self, request, context):
"""Create creates the given gateway.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Get(self, request, context):
"""Get returns the gateway for the given Gateway ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Update(self, request, context):
"""Update updates the given gateway.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Delete(self, request, context):
"""Delete deletes the gateway matching the given Gateway ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def List(self, request, context):
"""Get the list of gateways.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GenerateClientCertificate(self, request, context):
"""Generate client-certificate for the gateway.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetStats(self, request, context):
"""GetStats returns the gateway stats.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_GatewayServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
'Create': grpc.unary_unary_rpc_method_handler(
servicer.Create,
request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.CreateGatewayRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Get': grpc.unary_unary_rpc_method_handler(
servicer.Get,
request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayResponse.SerializeToString,
),
'Update': grpc.unary_unary_rpc_method_handler(
servicer.Update,
request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.UpdateGatewayRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Delete': grpc.unary_unary_rpc_method_handler(
servicer.Delete,
request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.DeleteGatewayRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'List': grpc.unary_unary_rpc_method_handler(
servicer.List,
request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.ListGatewaysRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_gateway__pb2.ListGatewaysResponse.SerializeToString,
),
'GenerateClientCertificate': grpc.unary_unary_rpc_method_handler(
servicer.GenerateClientCertificate,
request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateResponse.SerializeToString,
),
'GetStats': grpc.unary_unary_rpc_method_handler(
servicer.GetStats,
request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'api.GatewayService', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class GatewayService(object):
"""GatewayService is the service providing API methods for managing gateways.
"""
@staticmethod
def Create(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.GatewayService/Create',
chirpstack__api_dot_api_dot_gateway__pb2.CreateGatewayRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Get(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.GatewayService/Get',
chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayRequest.SerializeToString,
chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Update(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.GatewayService/Update',
chirpstack__api_dot_api_dot_gateway__pb2.UpdateGatewayRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Delete(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.GatewayService/Delete',
chirpstack__api_dot_api_dot_gateway__pb2.DeleteGatewayRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def List(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.GatewayService/List',
chirpstack__api_dot_api_dot_gateway__pb2.ListGatewaysRequest.SerializeToString,
chirpstack__api_dot_api_dot_gateway__pb2.ListGatewaysResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GenerateClientCertificate(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.GatewayService/GenerateClientCertificate',
chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateRequest.SerializeToString,
chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetStats(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.GatewayService/GetStats',
chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsRequest.SerializeToString,
chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,479 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from chirpstack_api.api import internal_pb2 as chirpstack__api_dot_api_dot_internal__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class InternalServiceStub(object):
"""InternalService is the service providing API endpoints for internal usage.
"""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.Login = channel.unary_unary(
'/api.InternalService/Login',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.LoginRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.LoginResponse.FromString,
)
self.Profile = channel.unary_unary(
'/api.InternalService/Profile',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.ProfileResponse.FromString,
)
self.GlobalSearch = channel.unary_unary(
'/api.InternalService/GlobalSearch',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.GlobalSearchRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.GlobalSearchResponse.FromString,
)
self.CreateApiKey = channel.unary_unary(
'/api.InternalService/CreateApiKey',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.CreateApiKeyRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.CreateApiKeyResponse.FromString,
)
self.DeleteApiKey = channel.unary_unary(
'/api.InternalService/DeleteApiKey',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.DeleteApiKeyRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.ListApiKeys = channel.unary_unary(
'/api.InternalService/ListApiKeys',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.ListApiKeysRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.ListApiKeysResponse.FromString,
)
self.Settings = channel.unary_unary(
'/api.InternalService/Settings',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.SettingsResponse.FromString,
)
self.OpenIdConnectLogin = channel.unary_unary(
'/api.InternalService/OpenIdConnectLogin',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.OpenIdConnectLoginRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.OpenIdConnectLoginResponse.FromString,
)
self.GetDevicesSummary = channel.unary_unary(
'/api.InternalService/GetDevicesSummary',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.GetDevicesSummaryRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.GetDevicesSummaryResponse.FromString,
)
self.GetGatewaysSummary = channel.unary_unary(
'/api.InternalService/GetGatewaysSummary',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.GetGatewaysSummaryRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.GetGatewaysSummaryResponse.FromString,
)
self.StreamGatewayFrames = channel.unary_stream(
'/api.InternalService/StreamGatewayFrames',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.StreamGatewayFramesRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.LogItem.FromString,
)
self.StreamDeviceFrames = channel.unary_stream(
'/api.InternalService/StreamDeviceFrames',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.StreamDeviceFramesRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.LogItem.FromString,
)
self.StreamDeviceEvents = channel.unary_stream(
'/api.InternalService/StreamDeviceEvents',
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.StreamDeviceEventsRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.LogItem.FromString,
)
class InternalServiceServicer(object):
"""InternalService is the service providing API endpoints for internal usage.
"""
def Login(self, request, context):
"""Log in a user
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Profile(self, request, context):
"""Get the current user's profile
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GlobalSearch(self, request, context):
"""Perform a global search.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def CreateApiKey(self, request, context):
"""CreateApiKey creates the given API key.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def DeleteApiKey(self, request, context):
"""DeleteApiKey deletes the API key.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ListApiKeys(self, request, context):
"""ListApiKeys lists the available API keys.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Settings(self, request, context):
"""Get the global settings.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def OpenIdConnectLogin(self, request, context):
"""OpenId Connect login.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetDevicesSummary(self, request, context):
"""GetDevicesSummary returns an aggregated summary of the devices.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetGatewaysSummary(self, request, context):
"""GetGatewaysSummary returns an aggregated summary of the gateways.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def StreamGatewayFrames(self, request, context):
"""Stream frame for the given Gateway ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def StreamDeviceFrames(self, request, context):
"""Stream frames for the given Device EUI.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def StreamDeviceEvents(self, request, context):
"""Stream events for the given Device EUI.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_InternalServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
'Login': grpc.unary_unary_rpc_method_handler(
servicer.Login,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.LoginRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.LoginResponse.SerializeToString,
),
'Profile': grpc.unary_unary_rpc_method_handler(
servicer.Profile,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.ProfileResponse.SerializeToString,
),
'GlobalSearch': grpc.unary_unary_rpc_method_handler(
servicer.GlobalSearch,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.GlobalSearchRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.GlobalSearchResponse.SerializeToString,
),
'CreateApiKey': grpc.unary_unary_rpc_method_handler(
servicer.CreateApiKey,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.CreateApiKeyRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.CreateApiKeyResponse.SerializeToString,
),
'DeleteApiKey': grpc.unary_unary_rpc_method_handler(
servicer.DeleteApiKey,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.DeleteApiKeyRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'ListApiKeys': grpc.unary_unary_rpc_method_handler(
servicer.ListApiKeys,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.ListApiKeysRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.ListApiKeysResponse.SerializeToString,
),
'Settings': grpc.unary_unary_rpc_method_handler(
servicer.Settings,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.SettingsResponse.SerializeToString,
),
'OpenIdConnectLogin': grpc.unary_unary_rpc_method_handler(
servicer.OpenIdConnectLogin,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.OpenIdConnectLoginRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.OpenIdConnectLoginResponse.SerializeToString,
),
'GetDevicesSummary': grpc.unary_unary_rpc_method_handler(
servicer.GetDevicesSummary,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.GetDevicesSummaryRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.GetDevicesSummaryResponse.SerializeToString,
),
'GetGatewaysSummary': grpc.unary_unary_rpc_method_handler(
servicer.GetGatewaysSummary,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.GetGatewaysSummaryRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.GetGatewaysSummaryResponse.SerializeToString,
),
'StreamGatewayFrames': grpc.unary_stream_rpc_method_handler(
servicer.StreamGatewayFrames,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.StreamGatewayFramesRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.LogItem.SerializeToString,
),
'StreamDeviceFrames': grpc.unary_stream_rpc_method_handler(
servicer.StreamDeviceFrames,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.StreamDeviceFramesRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.LogItem.SerializeToString,
),
'StreamDeviceEvents': grpc.unary_stream_rpc_method_handler(
servicer.StreamDeviceEvents,
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.StreamDeviceEventsRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.LogItem.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'api.InternalService', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class InternalService(object):
"""InternalService is the service providing API endpoints for internal usage.
"""
@staticmethod
def Login(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.InternalService/Login',
chirpstack__api_dot_api_dot_internal__pb2.LoginRequest.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.LoginResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Profile(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.InternalService/Profile',
google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.ProfileResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GlobalSearch(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.InternalService/GlobalSearch',
chirpstack__api_dot_api_dot_internal__pb2.GlobalSearchRequest.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.GlobalSearchResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def CreateApiKey(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.InternalService/CreateApiKey',
chirpstack__api_dot_api_dot_internal__pb2.CreateApiKeyRequest.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.CreateApiKeyResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def DeleteApiKey(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.InternalService/DeleteApiKey',
chirpstack__api_dot_api_dot_internal__pb2.DeleteApiKeyRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ListApiKeys(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.InternalService/ListApiKeys',
chirpstack__api_dot_api_dot_internal__pb2.ListApiKeysRequest.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.ListApiKeysResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Settings(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.InternalService/Settings',
google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.SettingsResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def OpenIdConnectLogin(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.InternalService/OpenIdConnectLogin',
chirpstack__api_dot_api_dot_internal__pb2.OpenIdConnectLoginRequest.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.OpenIdConnectLoginResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetDevicesSummary(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.InternalService/GetDevicesSummary',
chirpstack__api_dot_api_dot_internal__pb2.GetDevicesSummaryRequest.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.GetDevicesSummaryResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetGatewaysSummary(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.InternalService/GetGatewaysSummary',
chirpstack__api_dot_api_dot_internal__pb2.GetGatewaysSummaryRequest.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.GetGatewaysSummaryResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def StreamGatewayFrames(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_stream(request, target, '/api.InternalService/StreamGatewayFrames',
chirpstack__api_dot_api_dot_internal__pb2.StreamGatewayFramesRequest.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.LogItem.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def StreamDeviceFrames(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_stream(request, target, '/api.InternalService/StreamDeviceFrames',
chirpstack__api_dot_api_dot_internal__pb2.StreamDeviceFramesRequest.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.LogItem.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def StreamDeviceEvents(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_stream(request, target, '/api.InternalService/StreamDeviceEvents',
chirpstack__api_dot_api_dot_internal__pb2.StreamDeviceEventsRequest.SerializeToString,
chirpstack__api_dot_api_dot_internal__pb2.LogItem.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

View File

@ -0,0 +1,219 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: chirpstack-api/api/multicast_group.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from chirpstack_api.common import common_pb2 as chirpstack__api_dot_common_dot_common__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(chirpstack-api/api/multicast_group.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\"chirpstack-api/common/common.proto\"\x9c\x02\n\x0eMulticastGroup\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x16\n\x0e\x61pplication_id\x18\x03 \x01(\t\x12\x1e\n\x06region\x18\x04 \x01(\x0e\x32\x0e.common.Region\x12\x0f\n\x07mc_addr\x18\x05 \x01(\t\x12\x14\n\x0cmc_nwk_s_key\x18\x06 \x01(\t\x12\x14\n\x0cmc_app_s_key\x18\x07 \x01(\t\x12\r\n\x05\x66_cnt\x18\x08 \x01(\r\x12+\n\ngroup_type\x18\t \x01(\x0e\x32\x17.api.MulticastGroupType\x12\n\n\x02\x64r\x18\n \x01(\r\x12\x11\n\tfrequency\x18\x0b \x01(\r\x12 \n\x18\x63lass_b_ping_slot_period\x18\x0c \x01(\r\"\xdf\x01\n\x16MulticastGroupListItem\x12\n\n\x02id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x1e\n\x06region\x18\x05 \x01(\x0e\x32\x0e.common.Region\x12+\n\ngroup_type\x18\x06 \x01(\x0e\x32\x17.api.MulticastGroupType\"K\n\x1b\x43reateMulticastGroupRequest\x12,\n\x0fmulticast_group\x18\x01 \x01(\x0b\x32\x13.api.MulticastGroup\"*\n\x1c\x43reateMulticastGroupResponse\x12\n\n\x02id\x18\x01 \x01(\t\"&\n\x18GetMulticastGroupRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\xa9\x01\n\x19GetMulticastGroupResponse\x12,\n\x0fmulticast_group\x18\x01 \x01(\x0b\x32\x13.api.MulticastGroup\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"K\n\x1bUpdateMulticastGroupRequest\x12,\n\x0fmulticast_group\x18\x01 \x01(\x0b\x32\x13.api.MulticastGroup\")\n\x1b\x44\x65leteMulticastGroupRequest\x12\n\n\x02id\x18\x01 \x01(\t\"c\n\x1aListMulticastGroupsRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\r\x12\x0e\n\x06search\x18\x03 \x01(\t\x12\x16\n\x0e\x61pplication_id\x18\x04 \x01(\t\"_\n\x1bListMulticastGroupsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12+\n\x06result\x18\x02 \x03(\x0b\x32\x1b.api.MulticastGroupListItem\"O\n AddDeviceToMulticastGroupRequest\x12\x1a\n\x12multicast_group_id\x18\x01 \x01(\t\x12\x0f\n\x07\x64\x65v_eui\x18\x02 \x01(\t\"T\n%RemoveDeviceFromMulticastGroupRequest\x12\x1a\n\x12multicast_group_id\x18\x01 \x01(\t\x12\x0f\n\x07\x64\x65v_eui\x18\x02 \x01(\t\"b\n\x17MulticastGroupQueueItem\x12\x1a\n\x12multicast_group_id\x18\x01 \x01(\t\x12\r\n\x05\x66_cnt\x18\x02 \x01(\r\x12\x0e\n\x06\x66_port\x18\x03 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\"i\n%EnqueueMulticastGroupQueueItemRequest\x12@\n\x1amulticast_group_queue_item\x18\x01 \x01(\x0b\x32\x1c.api.MulticastGroupQueueItem\"7\n&EnqueueMulticastGroupQueueItemResponse\x12\r\n\x05\x66_cnt\x18\x01 \x01(\r\"=\n\x1f\x46lushMulticastGroupQueueRequest\x12\x1a\n\x12multicast_group_id\x18\x01 \x01(\t\"<\n\x1eListMulticastGroupQueueRequest\x12\x1a\n\x12multicast_group_id\x18\x01 \x01(\t\"N\n\x1fListMulticastGroupQueueResponse\x12+\n\x05items\x18\x01 \x03(\x0b\x32\x1c.api.MulticastGroupQueueItem*.\n\x12MulticastGroupType\x12\x0b\n\x07\x43LASS_C\x10\x00\x12\x0b\n\x07\x43LASS_B\x10\x01\x32\xbb\x06\n\x15MulticastGroupService\x12O\n\x06\x43reate\x12 .api.CreateMulticastGroupRequest\x1a!.api.CreateMulticastGroupResponse\"\x00\x12\x46\n\x03Get\x12\x1d.api.GetMulticastGroupRequest\x1a\x1e.api.GetMulticastGroupResponse\"\x00\x12\x44\n\x06Update\x12 .api.UpdateMulticastGroupRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x44\n\x06\x44\x65lete\x12 .api.DeleteMulticastGroupRequest\x1a\x16.google.protobuf.Empty\"\x00\x12K\n\x04List\x12\x1f.api.ListMulticastGroupsRequest\x1a .api.ListMulticastGroupsResponse\"\x00\x12L\n\tAddDevice\x12%.api.AddDeviceToMulticastGroupRequest\x1a\x16.google.protobuf.Empty\"\x00\x12T\n\x0cRemoveDevice\x12*.api.RemoveDeviceFromMulticastGroupRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x64\n\x07\x45nqueue\x12*.api.EnqueueMulticastGroupQueueItemRequest\x1a+.api.EnqueueMulticastGroupQueueItemResponse\"\x00\x12L\n\nFlushQueue\x12$.api.FlushMulticastGroupQueueRequest\x1a\x16.google.protobuf.Empty\"\x00\x12X\n\tListQueue\x12#.api.ListMulticastGroupQueueRequest\x1a$.api.ListMulticastGroupQueueResponse\"\x00\x42V\n\x11io.chirpstack.apiB\x13MulticastGroupProtoP\x01Z*github.com/chirpstack/chirpstack/api/go/v4b\x06proto3')
_MULTICASTGROUPTYPE = DESCRIPTOR.enum_types_by_name['MulticastGroupType']
MulticastGroupType = enum_type_wrapper.EnumTypeWrapper(_MULTICASTGROUPTYPE)
CLASS_C = 0
CLASS_B = 1
_MULTICASTGROUP = DESCRIPTOR.message_types_by_name['MulticastGroup']
_MULTICASTGROUPLISTITEM = DESCRIPTOR.message_types_by_name['MulticastGroupListItem']
_CREATEMULTICASTGROUPREQUEST = DESCRIPTOR.message_types_by_name['CreateMulticastGroupRequest']
_CREATEMULTICASTGROUPRESPONSE = DESCRIPTOR.message_types_by_name['CreateMulticastGroupResponse']
_GETMULTICASTGROUPREQUEST = DESCRIPTOR.message_types_by_name['GetMulticastGroupRequest']
_GETMULTICASTGROUPRESPONSE = DESCRIPTOR.message_types_by_name['GetMulticastGroupResponse']
_UPDATEMULTICASTGROUPREQUEST = DESCRIPTOR.message_types_by_name['UpdateMulticastGroupRequest']
_DELETEMULTICASTGROUPREQUEST = DESCRIPTOR.message_types_by_name['DeleteMulticastGroupRequest']
_LISTMULTICASTGROUPSREQUEST = DESCRIPTOR.message_types_by_name['ListMulticastGroupsRequest']
_LISTMULTICASTGROUPSRESPONSE = DESCRIPTOR.message_types_by_name['ListMulticastGroupsResponse']
_ADDDEVICETOMULTICASTGROUPREQUEST = DESCRIPTOR.message_types_by_name['AddDeviceToMulticastGroupRequest']
_REMOVEDEVICEFROMMULTICASTGROUPREQUEST = DESCRIPTOR.message_types_by_name['RemoveDeviceFromMulticastGroupRequest']
_MULTICASTGROUPQUEUEITEM = DESCRIPTOR.message_types_by_name['MulticastGroupQueueItem']
_ENQUEUEMULTICASTGROUPQUEUEITEMREQUEST = DESCRIPTOR.message_types_by_name['EnqueueMulticastGroupQueueItemRequest']
_ENQUEUEMULTICASTGROUPQUEUEITEMRESPONSE = DESCRIPTOR.message_types_by_name['EnqueueMulticastGroupQueueItemResponse']
_FLUSHMULTICASTGROUPQUEUEREQUEST = DESCRIPTOR.message_types_by_name['FlushMulticastGroupQueueRequest']
_LISTMULTICASTGROUPQUEUEREQUEST = DESCRIPTOR.message_types_by_name['ListMulticastGroupQueueRequest']
_LISTMULTICASTGROUPQUEUERESPONSE = DESCRIPTOR.message_types_by_name['ListMulticastGroupQueueResponse']
MulticastGroup = _reflection.GeneratedProtocolMessageType('MulticastGroup', (_message.Message,), {
'DESCRIPTOR' : _MULTICASTGROUP,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.MulticastGroup)
})
_sym_db.RegisterMessage(MulticastGroup)
MulticastGroupListItem = _reflection.GeneratedProtocolMessageType('MulticastGroupListItem', (_message.Message,), {
'DESCRIPTOR' : _MULTICASTGROUPLISTITEM,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.MulticastGroupListItem)
})
_sym_db.RegisterMessage(MulticastGroupListItem)
CreateMulticastGroupRequest = _reflection.GeneratedProtocolMessageType('CreateMulticastGroupRequest', (_message.Message,), {
'DESCRIPTOR' : _CREATEMULTICASTGROUPREQUEST,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.CreateMulticastGroupRequest)
})
_sym_db.RegisterMessage(CreateMulticastGroupRequest)
CreateMulticastGroupResponse = _reflection.GeneratedProtocolMessageType('CreateMulticastGroupResponse', (_message.Message,), {
'DESCRIPTOR' : _CREATEMULTICASTGROUPRESPONSE,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.CreateMulticastGroupResponse)
})
_sym_db.RegisterMessage(CreateMulticastGroupResponse)
GetMulticastGroupRequest = _reflection.GeneratedProtocolMessageType('GetMulticastGroupRequest', (_message.Message,), {
'DESCRIPTOR' : _GETMULTICASTGROUPREQUEST,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.GetMulticastGroupRequest)
})
_sym_db.RegisterMessage(GetMulticastGroupRequest)
GetMulticastGroupResponse = _reflection.GeneratedProtocolMessageType('GetMulticastGroupResponse', (_message.Message,), {
'DESCRIPTOR' : _GETMULTICASTGROUPRESPONSE,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.GetMulticastGroupResponse)
})
_sym_db.RegisterMessage(GetMulticastGroupResponse)
UpdateMulticastGroupRequest = _reflection.GeneratedProtocolMessageType('UpdateMulticastGroupRequest', (_message.Message,), {
'DESCRIPTOR' : _UPDATEMULTICASTGROUPREQUEST,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.UpdateMulticastGroupRequest)
})
_sym_db.RegisterMessage(UpdateMulticastGroupRequest)
DeleteMulticastGroupRequest = _reflection.GeneratedProtocolMessageType('DeleteMulticastGroupRequest', (_message.Message,), {
'DESCRIPTOR' : _DELETEMULTICASTGROUPREQUEST,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.DeleteMulticastGroupRequest)
})
_sym_db.RegisterMessage(DeleteMulticastGroupRequest)
ListMulticastGroupsRequest = _reflection.GeneratedProtocolMessageType('ListMulticastGroupsRequest', (_message.Message,), {
'DESCRIPTOR' : _LISTMULTICASTGROUPSREQUEST,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.ListMulticastGroupsRequest)
})
_sym_db.RegisterMessage(ListMulticastGroupsRequest)
ListMulticastGroupsResponse = _reflection.GeneratedProtocolMessageType('ListMulticastGroupsResponse', (_message.Message,), {
'DESCRIPTOR' : _LISTMULTICASTGROUPSRESPONSE,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.ListMulticastGroupsResponse)
})
_sym_db.RegisterMessage(ListMulticastGroupsResponse)
AddDeviceToMulticastGroupRequest = _reflection.GeneratedProtocolMessageType('AddDeviceToMulticastGroupRequest', (_message.Message,), {
'DESCRIPTOR' : _ADDDEVICETOMULTICASTGROUPREQUEST,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.AddDeviceToMulticastGroupRequest)
})
_sym_db.RegisterMessage(AddDeviceToMulticastGroupRequest)
RemoveDeviceFromMulticastGroupRequest = _reflection.GeneratedProtocolMessageType('RemoveDeviceFromMulticastGroupRequest', (_message.Message,), {
'DESCRIPTOR' : _REMOVEDEVICEFROMMULTICASTGROUPREQUEST,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.RemoveDeviceFromMulticastGroupRequest)
})
_sym_db.RegisterMessage(RemoveDeviceFromMulticastGroupRequest)
MulticastGroupQueueItem = _reflection.GeneratedProtocolMessageType('MulticastGroupQueueItem', (_message.Message,), {
'DESCRIPTOR' : _MULTICASTGROUPQUEUEITEM,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.MulticastGroupQueueItem)
})
_sym_db.RegisterMessage(MulticastGroupQueueItem)
EnqueueMulticastGroupQueueItemRequest = _reflection.GeneratedProtocolMessageType('EnqueueMulticastGroupQueueItemRequest', (_message.Message,), {
'DESCRIPTOR' : _ENQUEUEMULTICASTGROUPQUEUEITEMREQUEST,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.EnqueueMulticastGroupQueueItemRequest)
})
_sym_db.RegisterMessage(EnqueueMulticastGroupQueueItemRequest)
EnqueueMulticastGroupQueueItemResponse = _reflection.GeneratedProtocolMessageType('EnqueueMulticastGroupQueueItemResponse', (_message.Message,), {
'DESCRIPTOR' : _ENQUEUEMULTICASTGROUPQUEUEITEMRESPONSE,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.EnqueueMulticastGroupQueueItemResponse)
})
_sym_db.RegisterMessage(EnqueueMulticastGroupQueueItemResponse)
FlushMulticastGroupQueueRequest = _reflection.GeneratedProtocolMessageType('FlushMulticastGroupQueueRequest', (_message.Message,), {
'DESCRIPTOR' : _FLUSHMULTICASTGROUPQUEUEREQUEST,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.FlushMulticastGroupQueueRequest)
})
_sym_db.RegisterMessage(FlushMulticastGroupQueueRequest)
ListMulticastGroupQueueRequest = _reflection.GeneratedProtocolMessageType('ListMulticastGroupQueueRequest', (_message.Message,), {
'DESCRIPTOR' : _LISTMULTICASTGROUPQUEUEREQUEST,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.ListMulticastGroupQueueRequest)
})
_sym_db.RegisterMessage(ListMulticastGroupQueueRequest)
ListMulticastGroupQueueResponse = _reflection.GeneratedProtocolMessageType('ListMulticastGroupQueueResponse', (_message.Message,), {
'DESCRIPTOR' : _LISTMULTICASTGROUPQUEUERESPONSE,
'__module__' : 'chirpstack_api.api.multicast_group_pb2'
# @@protoc_insertion_point(class_scope:api.ListMulticastGroupQueueResponse)
})
_sym_db.RegisterMessage(ListMulticastGroupQueueResponse)
_MULTICASTGROUPSERVICE = DESCRIPTOR.services_by_name['MulticastGroupService']
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\023MulticastGroupProtoP\001Z*github.com/chirpstack/chirpstack/api/go/v4'
_MULTICASTGROUPTYPE._serialized_start=1977
_MULTICASTGROUPTYPE._serialized_end=2023
_MULTICASTGROUP._serialized_start=178
_MULTICASTGROUP._serialized_end=462
_MULTICASTGROUPLISTITEM._serialized_start=465
_MULTICASTGROUPLISTITEM._serialized_end=688
_CREATEMULTICASTGROUPREQUEST._serialized_start=690
_CREATEMULTICASTGROUPREQUEST._serialized_end=765
_CREATEMULTICASTGROUPRESPONSE._serialized_start=767
_CREATEMULTICASTGROUPRESPONSE._serialized_end=809
_GETMULTICASTGROUPREQUEST._serialized_start=811
_GETMULTICASTGROUPREQUEST._serialized_end=849
_GETMULTICASTGROUPRESPONSE._serialized_start=852
_GETMULTICASTGROUPRESPONSE._serialized_end=1021
_UPDATEMULTICASTGROUPREQUEST._serialized_start=1023
_UPDATEMULTICASTGROUPREQUEST._serialized_end=1098
_DELETEMULTICASTGROUPREQUEST._serialized_start=1100
_DELETEMULTICASTGROUPREQUEST._serialized_end=1141
_LISTMULTICASTGROUPSREQUEST._serialized_start=1143
_LISTMULTICASTGROUPSREQUEST._serialized_end=1242
_LISTMULTICASTGROUPSRESPONSE._serialized_start=1244
_LISTMULTICASTGROUPSRESPONSE._serialized_end=1339
_ADDDEVICETOMULTICASTGROUPREQUEST._serialized_start=1341
_ADDDEVICETOMULTICASTGROUPREQUEST._serialized_end=1420
_REMOVEDEVICEFROMMULTICASTGROUPREQUEST._serialized_start=1422
_REMOVEDEVICEFROMMULTICASTGROUPREQUEST._serialized_end=1506
_MULTICASTGROUPQUEUEITEM._serialized_start=1508
_MULTICASTGROUPQUEUEITEM._serialized_end=1606
_ENQUEUEMULTICASTGROUPQUEUEITEMREQUEST._serialized_start=1608
_ENQUEUEMULTICASTGROUPQUEUEITEMREQUEST._serialized_end=1713
_ENQUEUEMULTICASTGROUPQUEUEITEMRESPONSE._serialized_start=1715
_ENQUEUEMULTICASTGROUPQUEUEITEMRESPONSE._serialized_end=1770
_FLUSHMULTICASTGROUPQUEUEREQUEST._serialized_start=1772
_FLUSHMULTICASTGROUPQUEUEREQUEST._serialized_end=1833
_LISTMULTICASTGROUPQUEUEREQUEST._serialized_start=1835
_LISTMULTICASTGROUPQUEUEREQUEST._serialized_end=1895
_LISTMULTICASTGROUPQUEUERESPONSE._serialized_start=1897
_LISTMULTICASTGROUPQUEUERESPONSE._serialized_end=1975
_MULTICASTGROUPSERVICE._serialized_start=2026
_MULTICASTGROUPSERVICE._serialized_end=2853
# @@protoc_insertion_point(module_scope)

View File

@ -0,0 +1,377 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from chirpstack_api.api import multicast_group_pb2 as chirpstack__api_dot_api_dot_multicast__group__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class MulticastGroupServiceStub(object):
"""MulticastGroupService is the service managing multicast-groups.
"""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.Create = channel.unary_unary(
'/api.MulticastGroupService/Create',
request_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.CreateMulticastGroupRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.CreateMulticastGroupResponse.FromString,
)
self.Get = channel.unary_unary(
'/api.MulticastGroupService/Get',
request_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.GetMulticastGroupRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.GetMulticastGroupResponse.FromString,
)
self.Update = channel.unary_unary(
'/api.MulticastGroupService/Update',
request_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.UpdateMulticastGroupRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Delete = channel.unary_unary(
'/api.MulticastGroupService/Delete',
request_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.DeleteMulticastGroupRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.List = channel.unary_unary(
'/api.MulticastGroupService/List',
request_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupsRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupsResponse.FromString,
)
self.AddDevice = channel.unary_unary(
'/api.MulticastGroupService/AddDevice',
request_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.AddDeviceToMulticastGroupRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.RemoveDevice = channel.unary_unary(
'/api.MulticastGroupService/RemoveDevice',
request_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.RemoveDeviceFromMulticastGroupRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Enqueue = channel.unary_unary(
'/api.MulticastGroupService/Enqueue',
request_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.EnqueueMulticastGroupQueueItemRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.EnqueueMulticastGroupQueueItemResponse.FromString,
)
self.FlushQueue = channel.unary_unary(
'/api.MulticastGroupService/FlushQueue',
request_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.FlushMulticastGroupQueueRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.ListQueue = channel.unary_unary(
'/api.MulticastGroupService/ListQueue',
request_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupQueueRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupQueueResponse.FromString,
)
class MulticastGroupServiceServicer(object):
"""MulticastGroupService is the service managing multicast-groups.
"""
def Create(self, request, context):
"""Create the given multicast group.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Get(self, request, context):
"""Get returns the multicast group for the given ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Update(self, request, context):
"""Update the given multicast group.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Delete(self, request, context):
"""Delete the multicast-group with the given ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def List(self, request, context):
"""List the available multicast groups.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def AddDevice(self, request, context):
"""Add a device to the multicast group.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def RemoveDevice(self, request, context):
"""Remove a device from the multicast group.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Enqueue(self, request, context):
"""Add the given item to the multcast group queue.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def FlushQueue(self, request, context):
"""Flush the queue for the given multicast group.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ListQueue(self, request, context):
"""List the items in the multicast group queue.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_MulticastGroupServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
'Create': grpc.unary_unary_rpc_method_handler(
servicer.Create,
request_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.CreateMulticastGroupRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.CreateMulticastGroupResponse.SerializeToString,
),
'Get': grpc.unary_unary_rpc_method_handler(
servicer.Get,
request_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.GetMulticastGroupRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.GetMulticastGroupResponse.SerializeToString,
),
'Update': grpc.unary_unary_rpc_method_handler(
servicer.Update,
request_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.UpdateMulticastGroupRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Delete': grpc.unary_unary_rpc_method_handler(
servicer.Delete,
request_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.DeleteMulticastGroupRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'List': grpc.unary_unary_rpc_method_handler(
servicer.List,
request_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupsRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupsResponse.SerializeToString,
),
'AddDevice': grpc.unary_unary_rpc_method_handler(
servicer.AddDevice,
request_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.AddDeviceToMulticastGroupRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'RemoveDevice': grpc.unary_unary_rpc_method_handler(
servicer.RemoveDevice,
request_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.RemoveDeviceFromMulticastGroupRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Enqueue': grpc.unary_unary_rpc_method_handler(
servicer.Enqueue,
request_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.EnqueueMulticastGroupQueueItemRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.EnqueueMulticastGroupQueueItemResponse.SerializeToString,
),
'FlushQueue': grpc.unary_unary_rpc_method_handler(
servicer.FlushQueue,
request_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.FlushMulticastGroupQueueRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'ListQueue': grpc.unary_unary_rpc_method_handler(
servicer.ListQueue,
request_deserializer=chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupQueueRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupQueueResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'api.MulticastGroupService', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class MulticastGroupService(object):
"""MulticastGroupService is the service managing multicast-groups.
"""
@staticmethod
def Create(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.MulticastGroupService/Create',
chirpstack__api_dot_api_dot_multicast__group__pb2.CreateMulticastGroupRequest.SerializeToString,
chirpstack__api_dot_api_dot_multicast__group__pb2.CreateMulticastGroupResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Get(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.MulticastGroupService/Get',
chirpstack__api_dot_api_dot_multicast__group__pb2.GetMulticastGroupRequest.SerializeToString,
chirpstack__api_dot_api_dot_multicast__group__pb2.GetMulticastGroupResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Update(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.MulticastGroupService/Update',
chirpstack__api_dot_api_dot_multicast__group__pb2.UpdateMulticastGroupRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Delete(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.MulticastGroupService/Delete',
chirpstack__api_dot_api_dot_multicast__group__pb2.DeleteMulticastGroupRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def List(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.MulticastGroupService/List',
chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupsRequest.SerializeToString,
chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupsResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def AddDevice(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.MulticastGroupService/AddDevice',
chirpstack__api_dot_api_dot_multicast__group__pb2.AddDeviceToMulticastGroupRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def RemoveDevice(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.MulticastGroupService/RemoveDevice',
chirpstack__api_dot_api_dot_multicast__group__pb2.RemoveDeviceFromMulticastGroupRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Enqueue(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.MulticastGroupService/Enqueue',
chirpstack__api_dot_api_dot_multicast__group__pb2.EnqueueMulticastGroupQueueItemRequest.SerializeToString,
chirpstack__api_dot_api_dot_multicast__group__pb2.EnqueueMulticastGroupQueueItemResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def FlushQueue(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.MulticastGroupService/FlushQueue',
chirpstack__api_dot_api_dot_multicast__group__pb2.FlushMulticastGroupQueueRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ListQueue(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.MulticastGroupService/ListQueue',
chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupQueueRequest.SerializeToString,
chirpstack__api_dot_api_dot_multicast__group__pb2.ListMulticastGroupQueueResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

View File

@ -0,0 +1,220 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: chirpstack-api/api/tenant.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x63hirpstack-api/api/tenant.proto\x12\x03\x61pi\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xa1\x01\n\x06Tenant\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x19\n\x11\x63\x61n_have_gateways\x18\x04 \x01(\x08\x12\x19\n\x11max_gateway_count\x18\x05 \x01(\r\x12\x18\n\x10max_device_count\x18\x06 \x01(\r\x12\x18\n\x10private_gateways\x18\x07 \x01(\x08\"\xf4\x01\n\x0eTenantListItem\x12\n\n\x02id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x19\n\x11\x63\x61n_have_gateways\x18\x05 \x01(\x08\x12\x18\n\x10private_gateways\x18\x06 \x01(\x08\x12\x19\n\x11max_gateway_count\x18\x07 \x01(\r\x12\x18\n\x10max_device_count\x18\x08 \x01(\r\"2\n\x13\x43reateTenantRequest\x12\x1b\n\x06tenant\x18\x01 \x01(\x0b\x32\x0b.api.Tenant\"\"\n\x14\x43reateTenantResponse\x12\n\n\x02id\x18\x01 \x01(\t\"\x1e\n\x10GetTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x90\x01\n\x11GetTenantResponse\x12\x1b\n\x06tenant\x18\x01 \x01(\x0b\x32\x0b.api.Tenant\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"2\n\x13UpdateTenantRequest\x12\x1b\n\x06tenant\x18\x01 \x01(\x0b\x32\x0b.api.Tenant\"!\n\x13\x44\x65leteTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\"C\n\x12ListTenantsRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\r\x12\x0e\n\x06search\x18\x03 \x01(\t\"O\n\x13ListTenantsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12#\n\x06result\x18\x02 \x03(\x0b\x32\x13.api.TenantListItem\"\x84\x01\n\nTenantUser\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12\x10\n\x08is_admin\x18\x03 \x01(\x08\x12\x17\n\x0fis_device_admin\x18\x04 \x01(\x08\x12\x18\n\x10is_gateway_admin\x18\x05 \x01(\x08\x12\r\n\x05\x65mail\x18\x06 \x01(\t\"\xec\x01\n\x12TenantUserListItem\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12.\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\r\n\x05\x65mail\x18\x05 \x01(\t\x12\x10\n\x08is_admin\x18\x06 \x01(\x08\x12\x17\n\x0fis_device_admin\x18\x07 \x01(\x08\x12\x18\n\x10is_gateway_admin\x18\x08 \x01(\x08\"<\n\x14\x41\x64\x64TenantUserRequest\x12$\n\x0btenant_user\x18\x01 \x01(\x0b\x32\x0f.api.TenantUser\":\n\x14GetTenantUserRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"\x9d\x01\n\x15GetTenantUserResponse\x12$\n\x0btenant_user\x18\x01 \x01(\x0b\x32\x0f.api.TenantUser\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"?\n\x17UpdateTenantUserRequest\x12$\n\x0btenant_user\x18\x01 \x01(\x0b\x32\x0f.api.TenantUser\"=\n\x17\x44\x65leteTenantUserRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"J\n\x16ListTenantUsersRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\r\n\x05limit\x18\x02 \x01(\r\x12\x0e\n\x06offset\x18\x03 \x01(\r\"W\n\x17ListTenantUsersResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12\'\n\x06result\x18\x02 \x03(\x0b\x32\x17.api.TenantUserListItem2\x9b\x05\n\rTenantService\x12?\n\x06\x43reate\x12\x18.api.CreateTenantRequest\x1a\x19.api.CreateTenantResponse\"\x00\x12\x36\n\x03Get\x12\x15.api.GetTenantRequest\x1a\x16.api.GetTenantResponse\"\x00\x12<\n\x06Update\x12\x18.api.UpdateTenantRequest\x1a\x16.google.protobuf.Empty\"\x00\x12<\n\x06\x44\x65lete\x12\x18.api.DeleteTenantRequest\x1a\x16.google.protobuf.Empty\"\x00\x12;\n\x04List\x12\x17.api.ListTenantsRequest\x1a\x18.api.ListTenantsResponse\"\x00\x12>\n\x07\x41\x64\x64User\x12\x19.api.AddTenantUserRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x42\n\x07GetUser\x12\x19.api.GetTenantUserRequest\x1a\x1a.api.GetTenantUserResponse\"\x00\x12\x44\n\nUpdateUser\x12\x1c.api.UpdateTenantUserRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x44\n\nDeleteUser\x12\x1c.api.DeleteTenantUserRequest\x1a\x16.google.protobuf.Empty\"\x00\x12H\n\tListUsers\x12\x1b.api.ListTenantUsersRequest\x1a\x1c.api.ListTenantUsersResponse\"\x00\x42P\n\x11io.chirpstack.apiB\rInternalProtoP\x01Z*github.com/chirpstack/chirpstack/api/go/v4b\x06proto3')
_TENANT = DESCRIPTOR.message_types_by_name['Tenant']
_TENANTLISTITEM = DESCRIPTOR.message_types_by_name['TenantListItem']
_CREATETENANTREQUEST = DESCRIPTOR.message_types_by_name['CreateTenantRequest']
_CREATETENANTRESPONSE = DESCRIPTOR.message_types_by_name['CreateTenantResponse']
_GETTENANTREQUEST = DESCRIPTOR.message_types_by_name['GetTenantRequest']
_GETTENANTRESPONSE = DESCRIPTOR.message_types_by_name['GetTenantResponse']
_UPDATETENANTREQUEST = DESCRIPTOR.message_types_by_name['UpdateTenantRequest']
_DELETETENANTREQUEST = DESCRIPTOR.message_types_by_name['DeleteTenantRequest']
_LISTTENANTSREQUEST = DESCRIPTOR.message_types_by_name['ListTenantsRequest']
_LISTTENANTSRESPONSE = DESCRIPTOR.message_types_by_name['ListTenantsResponse']
_TENANTUSER = DESCRIPTOR.message_types_by_name['TenantUser']
_TENANTUSERLISTITEM = DESCRIPTOR.message_types_by_name['TenantUserListItem']
_ADDTENANTUSERREQUEST = DESCRIPTOR.message_types_by_name['AddTenantUserRequest']
_GETTENANTUSERREQUEST = DESCRIPTOR.message_types_by_name['GetTenantUserRequest']
_GETTENANTUSERRESPONSE = DESCRIPTOR.message_types_by_name['GetTenantUserResponse']
_UPDATETENANTUSERREQUEST = DESCRIPTOR.message_types_by_name['UpdateTenantUserRequest']
_DELETETENANTUSERREQUEST = DESCRIPTOR.message_types_by_name['DeleteTenantUserRequest']
_LISTTENANTUSERSREQUEST = DESCRIPTOR.message_types_by_name['ListTenantUsersRequest']
_LISTTENANTUSERSRESPONSE = DESCRIPTOR.message_types_by_name['ListTenantUsersResponse']
Tenant = _reflection.GeneratedProtocolMessageType('Tenant', (_message.Message,), {
'DESCRIPTOR' : _TENANT,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.Tenant)
})
_sym_db.RegisterMessage(Tenant)
TenantListItem = _reflection.GeneratedProtocolMessageType('TenantListItem', (_message.Message,), {
'DESCRIPTOR' : _TENANTLISTITEM,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.TenantListItem)
})
_sym_db.RegisterMessage(TenantListItem)
CreateTenantRequest = _reflection.GeneratedProtocolMessageType('CreateTenantRequest', (_message.Message,), {
'DESCRIPTOR' : _CREATETENANTREQUEST,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.CreateTenantRequest)
})
_sym_db.RegisterMessage(CreateTenantRequest)
CreateTenantResponse = _reflection.GeneratedProtocolMessageType('CreateTenantResponse', (_message.Message,), {
'DESCRIPTOR' : _CREATETENANTRESPONSE,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.CreateTenantResponse)
})
_sym_db.RegisterMessage(CreateTenantResponse)
GetTenantRequest = _reflection.GeneratedProtocolMessageType('GetTenantRequest', (_message.Message,), {
'DESCRIPTOR' : _GETTENANTREQUEST,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.GetTenantRequest)
})
_sym_db.RegisterMessage(GetTenantRequest)
GetTenantResponse = _reflection.GeneratedProtocolMessageType('GetTenantResponse', (_message.Message,), {
'DESCRIPTOR' : _GETTENANTRESPONSE,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.GetTenantResponse)
})
_sym_db.RegisterMessage(GetTenantResponse)
UpdateTenantRequest = _reflection.GeneratedProtocolMessageType('UpdateTenantRequest', (_message.Message,), {
'DESCRIPTOR' : _UPDATETENANTREQUEST,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.UpdateTenantRequest)
})
_sym_db.RegisterMessage(UpdateTenantRequest)
DeleteTenantRequest = _reflection.GeneratedProtocolMessageType('DeleteTenantRequest', (_message.Message,), {
'DESCRIPTOR' : _DELETETENANTREQUEST,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.DeleteTenantRequest)
})
_sym_db.RegisterMessage(DeleteTenantRequest)
ListTenantsRequest = _reflection.GeneratedProtocolMessageType('ListTenantsRequest', (_message.Message,), {
'DESCRIPTOR' : _LISTTENANTSREQUEST,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.ListTenantsRequest)
})
_sym_db.RegisterMessage(ListTenantsRequest)
ListTenantsResponse = _reflection.GeneratedProtocolMessageType('ListTenantsResponse', (_message.Message,), {
'DESCRIPTOR' : _LISTTENANTSRESPONSE,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.ListTenantsResponse)
})
_sym_db.RegisterMessage(ListTenantsResponse)
TenantUser = _reflection.GeneratedProtocolMessageType('TenantUser', (_message.Message,), {
'DESCRIPTOR' : _TENANTUSER,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.TenantUser)
})
_sym_db.RegisterMessage(TenantUser)
TenantUserListItem = _reflection.GeneratedProtocolMessageType('TenantUserListItem', (_message.Message,), {
'DESCRIPTOR' : _TENANTUSERLISTITEM,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.TenantUserListItem)
})
_sym_db.RegisterMessage(TenantUserListItem)
AddTenantUserRequest = _reflection.GeneratedProtocolMessageType('AddTenantUserRequest', (_message.Message,), {
'DESCRIPTOR' : _ADDTENANTUSERREQUEST,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.AddTenantUserRequest)
})
_sym_db.RegisterMessage(AddTenantUserRequest)
GetTenantUserRequest = _reflection.GeneratedProtocolMessageType('GetTenantUserRequest', (_message.Message,), {
'DESCRIPTOR' : _GETTENANTUSERREQUEST,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.GetTenantUserRequest)
})
_sym_db.RegisterMessage(GetTenantUserRequest)
GetTenantUserResponse = _reflection.GeneratedProtocolMessageType('GetTenantUserResponse', (_message.Message,), {
'DESCRIPTOR' : _GETTENANTUSERRESPONSE,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.GetTenantUserResponse)
})
_sym_db.RegisterMessage(GetTenantUserResponse)
UpdateTenantUserRequest = _reflection.GeneratedProtocolMessageType('UpdateTenantUserRequest', (_message.Message,), {
'DESCRIPTOR' : _UPDATETENANTUSERREQUEST,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.UpdateTenantUserRequest)
})
_sym_db.RegisterMessage(UpdateTenantUserRequest)
DeleteTenantUserRequest = _reflection.GeneratedProtocolMessageType('DeleteTenantUserRequest', (_message.Message,), {
'DESCRIPTOR' : _DELETETENANTUSERREQUEST,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.DeleteTenantUserRequest)
})
_sym_db.RegisterMessage(DeleteTenantUserRequest)
ListTenantUsersRequest = _reflection.GeneratedProtocolMessageType('ListTenantUsersRequest', (_message.Message,), {
'DESCRIPTOR' : _LISTTENANTUSERSREQUEST,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.ListTenantUsersRequest)
})
_sym_db.RegisterMessage(ListTenantUsersRequest)
ListTenantUsersResponse = _reflection.GeneratedProtocolMessageType('ListTenantUsersResponse', (_message.Message,), {
'DESCRIPTOR' : _LISTTENANTUSERSRESPONSE,
'__module__' : 'chirpstack_api.api.tenant_pb2'
# @@protoc_insertion_point(class_scope:api.ListTenantUsersResponse)
})
_sym_db.RegisterMessage(ListTenantUsersResponse)
_TENANTSERVICE = DESCRIPTOR.services_by_name['TenantService']
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\rInternalProtoP\001Z*github.com/chirpstack/chirpstack/api/go/v4'
_TENANT._serialized_start=103
_TENANT._serialized_end=264
_TENANTLISTITEM._serialized_start=267
_TENANTLISTITEM._serialized_end=511
_CREATETENANTREQUEST._serialized_start=513
_CREATETENANTREQUEST._serialized_end=563
_CREATETENANTRESPONSE._serialized_start=565
_CREATETENANTRESPONSE._serialized_end=599
_GETTENANTREQUEST._serialized_start=601
_GETTENANTREQUEST._serialized_end=631
_GETTENANTRESPONSE._serialized_start=634
_GETTENANTRESPONSE._serialized_end=778
_UPDATETENANTREQUEST._serialized_start=780
_UPDATETENANTREQUEST._serialized_end=830
_DELETETENANTREQUEST._serialized_start=832
_DELETETENANTREQUEST._serialized_end=865
_LISTTENANTSREQUEST._serialized_start=867
_LISTTENANTSREQUEST._serialized_end=934
_LISTTENANTSRESPONSE._serialized_start=936
_LISTTENANTSRESPONSE._serialized_end=1015
_TENANTUSER._serialized_start=1018
_TENANTUSER._serialized_end=1150
_TENANTUSERLISTITEM._serialized_start=1153
_TENANTUSERLISTITEM._serialized_end=1389
_ADDTENANTUSERREQUEST._serialized_start=1391
_ADDTENANTUSERREQUEST._serialized_end=1451
_GETTENANTUSERREQUEST._serialized_start=1453
_GETTENANTUSERREQUEST._serialized_end=1511
_GETTENANTUSERRESPONSE._serialized_start=1514
_GETTENANTUSERRESPONSE._serialized_end=1671
_UPDATETENANTUSERREQUEST._serialized_start=1673
_UPDATETENANTUSERREQUEST._serialized_end=1736
_DELETETENANTUSERREQUEST._serialized_start=1738
_DELETETENANTUSERREQUEST._serialized_end=1799
_LISTTENANTUSERSREQUEST._serialized_start=1801
_LISTTENANTUSERSREQUEST._serialized_end=1875
_LISTTENANTUSERSRESPONSE._serialized_start=1877
_LISTTENANTUSERSRESPONSE._serialized_end=1964
_TENANTSERVICE._serialized_start=1967
_TENANTSERVICE._serialized_end=2634
# @@protoc_insertion_point(module_scope)

View File

@ -0,0 +1,378 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from chirpstack_api.api import tenant_pb2 as chirpstack__api_dot_api_dot_tenant__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class TenantServiceStub(object):
"""TenantService is the service providing API methods for managing tenants.
"""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.Create = channel.unary_unary(
'/api.TenantService/Create',
request_serializer=chirpstack__api_dot_api_dot_tenant__pb2.CreateTenantRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.CreateTenantResponse.FromString,
)
self.Get = channel.unary_unary(
'/api.TenantService/Get',
request_serializer=chirpstack__api_dot_api_dot_tenant__pb2.GetTenantRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.GetTenantResponse.FromString,
)
self.Update = channel.unary_unary(
'/api.TenantService/Update',
request_serializer=chirpstack__api_dot_api_dot_tenant__pb2.UpdateTenantRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Delete = channel.unary_unary(
'/api.TenantService/Delete',
request_serializer=chirpstack__api_dot_api_dot_tenant__pb2.DeleteTenantRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.List = channel.unary_unary(
'/api.TenantService/List',
request_serializer=chirpstack__api_dot_api_dot_tenant__pb2.ListTenantsRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.ListTenantsResponse.FromString,
)
self.AddUser = channel.unary_unary(
'/api.TenantService/AddUser',
request_serializer=chirpstack__api_dot_api_dot_tenant__pb2.AddTenantUserRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.GetUser = channel.unary_unary(
'/api.TenantService/GetUser',
request_serializer=chirpstack__api_dot_api_dot_tenant__pb2.GetTenantUserRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.GetTenantUserResponse.FromString,
)
self.UpdateUser = channel.unary_unary(
'/api.TenantService/UpdateUser',
request_serializer=chirpstack__api_dot_api_dot_tenant__pb2.UpdateTenantUserRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.DeleteUser = channel.unary_unary(
'/api.TenantService/DeleteUser',
request_serializer=chirpstack__api_dot_api_dot_tenant__pb2.DeleteTenantUserRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.ListUsers = channel.unary_unary(
'/api.TenantService/ListUsers',
request_serializer=chirpstack__api_dot_api_dot_tenant__pb2.ListTenantUsersRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.ListTenantUsersResponse.FromString,
)
class TenantServiceServicer(object):
"""TenantService is the service providing API methods for managing tenants.
"""
def Create(self, request, context):
"""Create a new tenant.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Get(self, request, context):
"""Get the tenant for the given ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Update(self, request, context):
"""Update the given tenant.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Delete(self, request, context):
"""Delete the tenant with the given ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def List(self, request, context):
"""Get the list of tenants.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def AddUser(self, request, context):
"""Add an user to the tenant.
Note: the user must already exist.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetUser(self, request, context):
"""Get the the tenant user for the given tenant and user IDs.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def UpdateUser(self, request, context):
"""Update the given tenant user.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def DeleteUser(self, request, context):
"""Delete the given tenant user.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ListUsers(self, request, context):
"""Get the list of tenant users.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_TenantServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
'Create': grpc.unary_unary_rpc_method_handler(
servicer.Create,
request_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.CreateTenantRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_tenant__pb2.CreateTenantResponse.SerializeToString,
),
'Get': grpc.unary_unary_rpc_method_handler(
servicer.Get,
request_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.GetTenantRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_tenant__pb2.GetTenantResponse.SerializeToString,
),
'Update': grpc.unary_unary_rpc_method_handler(
servicer.Update,
request_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.UpdateTenantRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Delete': grpc.unary_unary_rpc_method_handler(
servicer.Delete,
request_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.DeleteTenantRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'List': grpc.unary_unary_rpc_method_handler(
servicer.List,
request_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.ListTenantsRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_tenant__pb2.ListTenantsResponse.SerializeToString,
),
'AddUser': grpc.unary_unary_rpc_method_handler(
servicer.AddUser,
request_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.AddTenantUserRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'GetUser': grpc.unary_unary_rpc_method_handler(
servicer.GetUser,
request_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.GetTenantUserRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_tenant__pb2.GetTenantUserResponse.SerializeToString,
),
'UpdateUser': grpc.unary_unary_rpc_method_handler(
servicer.UpdateUser,
request_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.UpdateTenantUserRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'DeleteUser': grpc.unary_unary_rpc_method_handler(
servicer.DeleteUser,
request_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.DeleteTenantUserRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'ListUsers': grpc.unary_unary_rpc_method_handler(
servicer.ListUsers,
request_deserializer=chirpstack__api_dot_api_dot_tenant__pb2.ListTenantUsersRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_tenant__pb2.ListTenantUsersResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'api.TenantService', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class TenantService(object):
"""TenantService is the service providing API methods for managing tenants.
"""
@staticmethod
def Create(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.TenantService/Create',
chirpstack__api_dot_api_dot_tenant__pb2.CreateTenantRequest.SerializeToString,
chirpstack__api_dot_api_dot_tenant__pb2.CreateTenantResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Get(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.TenantService/Get',
chirpstack__api_dot_api_dot_tenant__pb2.GetTenantRequest.SerializeToString,
chirpstack__api_dot_api_dot_tenant__pb2.GetTenantResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Update(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.TenantService/Update',
chirpstack__api_dot_api_dot_tenant__pb2.UpdateTenantRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Delete(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.TenantService/Delete',
chirpstack__api_dot_api_dot_tenant__pb2.DeleteTenantRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def List(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.TenantService/List',
chirpstack__api_dot_api_dot_tenant__pb2.ListTenantsRequest.SerializeToString,
chirpstack__api_dot_api_dot_tenant__pb2.ListTenantsResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def AddUser(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.TenantService/AddUser',
chirpstack__api_dot_api_dot_tenant__pb2.AddTenantUserRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetUser(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.TenantService/GetUser',
chirpstack__api_dot_api_dot_tenant__pb2.GetTenantUserRequest.SerializeToString,
chirpstack__api_dot_api_dot_tenant__pb2.GetTenantUserResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def UpdateUser(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.TenantService/UpdateUser',
chirpstack__api_dot_api_dot_tenant__pb2.UpdateTenantUserRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def DeleteUser(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.TenantService/DeleteUser',
chirpstack__api_dot_api_dot_tenant__pb2.DeleteTenantUserRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ListUsers(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.TenantService/ListUsers',
chirpstack__api_dot_api_dot_tenant__pb2.ListTenantUsersRequest.SerializeToString,
chirpstack__api_dot_api_dot_tenant__pb2.ListTenantUsersResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

View File

@ -0,0 +1,150 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: chirpstack-api/api/user.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x63hirpstack-api/api/user.proto\x12\x03\x61pi\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"T\n\x04User\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08is_admin\x18\x04 \x01(\x08\x12\x11\n\tis_active\x18\x05 \x01(\x08\x12\r\n\x05\x65mail\x18\x06 \x01(\t\x12\x0c\n\x04note\x18\x07 \x01(\t\"\xae\x01\n\x0cUserListItem\x12\n\n\x02id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\r\n\x05\x65mail\x18\x04 \x01(\t\x12\x10\n\x08is_admin\x18\x05 \x01(\x08\x12\x11\n\tis_active\x18\x06 \x01(\x08\"d\n\nUserTenant\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x10\n\x08is_admin\x18\x02 \x01(\x08\x12\x17\n\x0fis_device_admin\x18\x03 \x01(\x08\x12\x18\n\x10is_gateway_admin\x18\x04 \x01(\x08\"`\n\x11\x43reateUserRequest\x12\x17\n\x04user\x18\x01 \x01(\x0b\x32\t.api.User\x12\x10\n\x08password\x18\x02 \x01(\t\x12 \n\x07tenants\x18\x03 \x03(\x0b\x32\x0f.api.UserTenant\" \n\x12\x43reateUserResponse\x12\n\n\x02id\x18\x01 \x01(\t\"\x1c\n\x0eGetUserRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x8a\x01\n\x0fGetUserResponse\x12\x17\n\x04user\x18\x01 \x01(\x0b\x32\t.api.User\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\",\n\x11UpdateUserRequest\x12\x17\n\x04user\x18\x01 \x01(\x0b\x32\t.api.User\"\x1f\n\x11\x44\x65leteUserRequest\x12\n\n\x02id\x18\x01 \x01(\t\"1\n\x10ListUsersRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\r\"K\n\x11ListUsersResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12!\n\x06result\x18\x02 \x03(\x0b\x32\x11.api.UserListItem\">\n\x19UpdateUserPasswordRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t2\xfb\x02\n\x0bUserService\x12;\n\x06\x43reate\x12\x16.api.CreateUserRequest\x1a\x17.api.CreateUserResponse\"\x00\x12\x32\n\x03Get\x12\x13.api.GetUserRequest\x1a\x14.api.GetUserResponse\"\x00\x12:\n\x06Update\x12\x16.api.UpdateUserRequest\x1a\x16.google.protobuf.Empty\"\x00\x12:\n\x06\x44\x65lete\x12\x16.api.DeleteUserRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x37\n\x04List\x12\x15.api.ListUsersRequest\x1a\x16.api.ListUsersResponse\"\x00\x12J\n\x0eUpdatePassword\x12\x1e.api.UpdateUserPasswordRequest\x1a\x16.google.protobuf.Empty\"\x00\x42L\n\x11io.chirpstack.apiB\tUserProtoP\x01Z*github.com/chirpstack/chirpstack/api/go/v4b\x06proto3')
_USER = DESCRIPTOR.message_types_by_name['User']
_USERLISTITEM = DESCRIPTOR.message_types_by_name['UserListItem']
_USERTENANT = DESCRIPTOR.message_types_by_name['UserTenant']
_CREATEUSERREQUEST = DESCRIPTOR.message_types_by_name['CreateUserRequest']
_CREATEUSERRESPONSE = DESCRIPTOR.message_types_by_name['CreateUserResponse']
_GETUSERREQUEST = DESCRIPTOR.message_types_by_name['GetUserRequest']
_GETUSERRESPONSE = DESCRIPTOR.message_types_by_name['GetUserResponse']
_UPDATEUSERREQUEST = DESCRIPTOR.message_types_by_name['UpdateUserRequest']
_DELETEUSERREQUEST = DESCRIPTOR.message_types_by_name['DeleteUserRequest']
_LISTUSERSREQUEST = DESCRIPTOR.message_types_by_name['ListUsersRequest']
_LISTUSERSRESPONSE = DESCRIPTOR.message_types_by_name['ListUsersResponse']
_UPDATEUSERPASSWORDREQUEST = DESCRIPTOR.message_types_by_name['UpdateUserPasswordRequest']
User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), {
'DESCRIPTOR' : _USER,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.User)
})
_sym_db.RegisterMessage(User)
UserListItem = _reflection.GeneratedProtocolMessageType('UserListItem', (_message.Message,), {
'DESCRIPTOR' : _USERLISTITEM,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.UserListItem)
})
_sym_db.RegisterMessage(UserListItem)
UserTenant = _reflection.GeneratedProtocolMessageType('UserTenant', (_message.Message,), {
'DESCRIPTOR' : _USERTENANT,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.UserTenant)
})
_sym_db.RegisterMessage(UserTenant)
CreateUserRequest = _reflection.GeneratedProtocolMessageType('CreateUserRequest', (_message.Message,), {
'DESCRIPTOR' : _CREATEUSERREQUEST,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.CreateUserRequest)
})
_sym_db.RegisterMessage(CreateUserRequest)
CreateUserResponse = _reflection.GeneratedProtocolMessageType('CreateUserResponse', (_message.Message,), {
'DESCRIPTOR' : _CREATEUSERRESPONSE,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.CreateUserResponse)
})
_sym_db.RegisterMessage(CreateUserResponse)
GetUserRequest = _reflection.GeneratedProtocolMessageType('GetUserRequest', (_message.Message,), {
'DESCRIPTOR' : _GETUSERREQUEST,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.GetUserRequest)
})
_sym_db.RegisterMessage(GetUserRequest)
GetUserResponse = _reflection.GeneratedProtocolMessageType('GetUserResponse', (_message.Message,), {
'DESCRIPTOR' : _GETUSERRESPONSE,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.GetUserResponse)
})
_sym_db.RegisterMessage(GetUserResponse)
UpdateUserRequest = _reflection.GeneratedProtocolMessageType('UpdateUserRequest', (_message.Message,), {
'DESCRIPTOR' : _UPDATEUSERREQUEST,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.UpdateUserRequest)
})
_sym_db.RegisterMessage(UpdateUserRequest)
DeleteUserRequest = _reflection.GeneratedProtocolMessageType('DeleteUserRequest', (_message.Message,), {
'DESCRIPTOR' : _DELETEUSERREQUEST,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.DeleteUserRequest)
})
_sym_db.RegisterMessage(DeleteUserRequest)
ListUsersRequest = _reflection.GeneratedProtocolMessageType('ListUsersRequest', (_message.Message,), {
'DESCRIPTOR' : _LISTUSERSREQUEST,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.ListUsersRequest)
})
_sym_db.RegisterMessage(ListUsersRequest)
ListUsersResponse = _reflection.GeneratedProtocolMessageType('ListUsersResponse', (_message.Message,), {
'DESCRIPTOR' : _LISTUSERSRESPONSE,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.ListUsersResponse)
})
_sym_db.RegisterMessage(ListUsersResponse)
UpdateUserPasswordRequest = _reflection.GeneratedProtocolMessageType('UpdateUserPasswordRequest', (_message.Message,), {
'DESCRIPTOR' : _UPDATEUSERPASSWORDREQUEST,
'__module__' : 'chirpstack_api.api.user_pb2'
# @@protoc_insertion_point(class_scope:api.UpdateUserPasswordRequest)
})
_sym_db.RegisterMessage(UpdateUserPasswordRequest)
_USERSERVICE = DESCRIPTOR.services_by_name['UserService']
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\tUserProtoP\001Z*github.com/chirpstack/chirpstack/api/go/v4'
_USER._serialized_start=100
_USER._serialized_end=184
_USERLISTITEM._serialized_start=187
_USERLISTITEM._serialized_end=361
_USERTENANT._serialized_start=363
_USERTENANT._serialized_end=463
_CREATEUSERREQUEST._serialized_start=465
_CREATEUSERREQUEST._serialized_end=561
_CREATEUSERRESPONSE._serialized_start=563
_CREATEUSERRESPONSE._serialized_end=595
_GETUSERREQUEST._serialized_start=597
_GETUSERREQUEST._serialized_end=625
_GETUSERRESPONSE._serialized_start=628
_GETUSERRESPONSE._serialized_end=766
_UPDATEUSERREQUEST._serialized_start=768
_UPDATEUSERREQUEST._serialized_end=812
_DELETEUSERREQUEST._serialized_start=814
_DELETEUSERREQUEST._serialized_end=845
_LISTUSERSREQUEST._serialized_start=847
_LISTUSERSREQUEST._serialized_end=896
_LISTUSERSRESPONSE._serialized_start=898
_LISTUSERSRESPONSE._serialized_end=973
_UPDATEUSERPASSWORDREQUEST._serialized_start=975
_UPDATEUSERPASSWORDREQUEST._serialized_end=1037
_USERSERVICE._serialized_start=1040
_USERSERVICE._serialized_end=1419
# @@protoc_insertion_point(module_scope)

View File

@ -0,0 +1,241 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from chirpstack_api.api import user_pb2 as chirpstack__api_dot_api_dot_user__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class UserServiceStub(object):
"""UserService is the service providing API methods for managing users.
"""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.Create = channel.unary_unary(
'/api.UserService/Create',
request_serializer=chirpstack__api_dot_api_dot_user__pb2.CreateUserRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_user__pb2.CreateUserResponse.FromString,
)
self.Get = channel.unary_unary(
'/api.UserService/Get',
request_serializer=chirpstack__api_dot_api_dot_user__pb2.GetUserRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_user__pb2.GetUserResponse.FromString,
)
self.Update = channel.unary_unary(
'/api.UserService/Update',
request_serializer=chirpstack__api_dot_api_dot_user__pb2.UpdateUserRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.Delete = channel.unary_unary(
'/api.UserService/Delete',
request_serializer=chirpstack__api_dot_api_dot_user__pb2.DeleteUserRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.List = channel.unary_unary(
'/api.UserService/List',
request_serializer=chirpstack__api_dot_api_dot_user__pb2.ListUsersRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_user__pb2.ListUsersResponse.FromString,
)
self.UpdatePassword = channel.unary_unary(
'/api.UserService/UpdatePassword',
request_serializer=chirpstack__api_dot_api_dot_user__pb2.UpdateUserPasswordRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
class UserServiceServicer(object):
"""UserService is the service providing API methods for managing users.
"""
def Create(self, request, context):
"""Create a new user.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Get(self, request, context):
"""Get the user for the given ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Update(self, request, context):
"""Update the given user.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Delete(self, request, context):
"""Delete the user with the given ID.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def List(self, request, context):
"""Get the list of users.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def UpdatePassword(self, request, context):
"""Update the password for the given user.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_UserServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
'Create': grpc.unary_unary_rpc_method_handler(
servicer.Create,
request_deserializer=chirpstack__api_dot_api_dot_user__pb2.CreateUserRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_user__pb2.CreateUserResponse.SerializeToString,
),
'Get': grpc.unary_unary_rpc_method_handler(
servicer.Get,
request_deserializer=chirpstack__api_dot_api_dot_user__pb2.GetUserRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_user__pb2.GetUserResponse.SerializeToString,
),
'Update': grpc.unary_unary_rpc_method_handler(
servicer.Update,
request_deserializer=chirpstack__api_dot_api_dot_user__pb2.UpdateUserRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'Delete': grpc.unary_unary_rpc_method_handler(
servicer.Delete,
request_deserializer=chirpstack__api_dot_api_dot_user__pb2.DeleteUserRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'List': grpc.unary_unary_rpc_method_handler(
servicer.List,
request_deserializer=chirpstack__api_dot_api_dot_user__pb2.ListUsersRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_user__pb2.ListUsersResponse.SerializeToString,
),
'UpdatePassword': grpc.unary_unary_rpc_method_handler(
servicer.UpdatePassword,
request_deserializer=chirpstack__api_dot_api_dot_user__pb2.UpdateUserPasswordRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'api.UserService', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class UserService(object):
"""UserService is the service providing API methods for managing users.
"""
@staticmethod
def Create(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.UserService/Create',
chirpstack__api_dot_api_dot_user__pb2.CreateUserRequest.SerializeToString,
chirpstack__api_dot_api_dot_user__pb2.CreateUserResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Get(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.UserService/Get',
chirpstack__api_dot_api_dot_user__pb2.GetUserRequest.SerializeToString,
chirpstack__api_dot_api_dot_user__pb2.GetUserResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Update(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.UserService/Update',
chirpstack__api_dot_api_dot_user__pb2.UpdateUserRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Delete(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.UserService/Delete',
chirpstack__api_dot_api_dot_user__pb2.DeleteUserRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def List(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.UserService/List',
chirpstack__api_dot_api_dot_user__pb2.ListUsersRequest.SerializeToString,
chirpstack__api_dot_api_dot_user__pb2.ListUsersResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def UpdatePassword(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.UserService/UpdatePassword',
chirpstack__api_dot_api_dot_user__pb2.UpdateUserPasswordRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

View File

@ -0,0 +1,114 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: chirpstack-api/common/common.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"chirpstack-api/common/common.proto\x12\x06\x63ommon\"{\n\x08Location\x12\x10\n\x08latitude\x18\x01 \x01(\x01\x12\x11\n\tlongitude\x18\x02 \x01(\x01\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x01\x12&\n\x06source\x18\x04 \x01(\x0e\x32\x16.common.LocationSource\x12\x10\n\x08\x61\x63\x63uracy\x18\x05 \x01(\x02\"1\n\x0bKeyEnvelope\x12\x11\n\tkek_label\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x65s_key\x18\x02 \x01(\x0c*,\n\nModulation\x12\x08\n\x04LORA\x10\x00\x12\x07\n\x03\x46SK\x10\x01\x12\x0b\n\x07LR_FHSS\x10\x02*\xaa\x01\n\x06Region\x12\t\n\x05\x45U868\x10\x00\x12\t\n\x05US915\x10\x02\x12\t\n\x05\x43N779\x10\x03\x12\t\n\x05\x45U433\x10\x04\x12\t\n\x05\x41U915\x10\x05\x12\t\n\x05\x43N470\x10\x06\x12\t\n\x05\x41S923\x10\x07\x12\x0b\n\x07\x41S923_2\x10\x0c\x12\x0b\n\x07\x41S923_3\x10\r\x12\x0b\n\x07\x41S923_4\x10\x0e\x12\t\n\x05KR920\x10\x08\x12\t\n\x05IN865\x10\t\x12\t\n\x05RU864\x10\n\x12\x0b\n\x07ISM2400\x10\x0b*\xb3\x01\n\x05MType\x12\x10\n\x0cJOIN_REQUEST\x10\x00\x12\x0f\n\x0bJOIN_ACCEPT\x10\x01\x12\x17\n\x13UNCONFIRMED_DATA_UP\x10\x02\x12\x19\n\x15UNCONFIRMED_DATA_DOWN\x10\x03\x12\x15\n\x11\x43ONFIRMED_DATA_UP\x10\x04\x12\x17\n\x13\x43ONFIRMED_DATA_DOWN\x10\x05\x12\x12\n\x0eREJOIN_REQUEST\x10\x06\x12\x0f\n\x0bPROPRIETARY\x10\x07*~\n\nMacVersion\x12\x11\n\rLORAWAN_1_0_0\x10\x00\x12\x11\n\rLORAWAN_1_0_1\x10\x01\x12\x11\n\rLORAWAN_1_0_2\x10\x02\x12\x11\n\rLORAWAN_1_0_3\x10\x03\x12\x11\n\rLORAWAN_1_0_4\x10\x04\x12\x11\n\rLORAWAN_1_1_0\x10\x05*e\n\x11RegParamsRevision\x12\x05\n\x01\x41\x10\x00\x12\x05\n\x01\x42\x10\x01\x12\x0f\n\x0bRP002_1_0_0\x10\x02\x12\x0f\n\x0bRP002_1_0_1\x10\x03\x12\x0f\n\x0bRP002_1_0_2\x10\x04\x12\x0f\n\x0bRP002_1_0_3\x10\x05*\x8e\x01\n\x0eLocationSource\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03GPS\x10\x01\x12\n\n\x06\x43ONFIG\x10\x02\x12\x15\n\x11GEO_RESOLVER_TDOA\x10\x03\x12\x15\n\x11GEO_RESOLVER_RSSI\x10\x04\x12\x15\n\x11GEO_RESOLVER_GNSS\x10\x05\x12\x15\n\x11GEO_RESOLVER_WIFI\x10\x06\x42U\n\x11io.chirpstack.apiB\x0b\x43ommonProtoP\x01Z1github.com/chirpstack/chirpstack/api/go/v4/commonb\x06proto3')
_MODULATION = DESCRIPTOR.enum_types_by_name['Modulation']
Modulation = enum_type_wrapper.EnumTypeWrapper(_MODULATION)
_REGION = DESCRIPTOR.enum_types_by_name['Region']
Region = enum_type_wrapper.EnumTypeWrapper(_REGION)
_MTYPE = DESCRIPTOR.enum_types_by_name['MType']
MType = enum_type_wrapper.EnumTypeWrapper(_MTYPE)
_MACVERSION = DESCRIPTOR.enum_types_by_name['MacVersion']
MacVersion = enum_type_wrapper.EnumTypeWrapper(_MACVERSION)
_REGPARAMSREVISION = DESCRIPTOR.enum_types_by_name['RegParamsRevision']
RegParamsRevision = enum_type_wrapper.EnumTypeWrapper(_REGPARAMSREVISION)
_LOCATIONSOURCE = DESCRIPTOR.enum_types_by_name['LocationSource']
LocationSource = enum_type_wrapper.EnumTypeWrapper(_LOCATIONSOURCE)
LORA = 0
FSK = 1
LR_FHSS = 2
EU868 = 0
US915 = 2
CN779 = 3
EU433 = 4
AU915 = 5
CN470 = 6
AS923 = 7
AS923_2 = 12
AS923_3 = 13
AS923_4 = 14
KR920 = 8
IN865 = 9
RU864 = 10
ISM2400 = 11
JOIN_REQUEST = 0
JOIN_ACCEPT = 1
UNCONFIRMED_DATA_UP = 2
UNCONFIRMED_DATA_DOWN = 3
CONFIRMED_DATA_UP = 4
CONFIRMED_DATA_DOWN = 5
REJOIN_REQUEST = 6
PROPRIETARY = 7
LORAWAN_1_0_0 = 0
LORAWAN_1_0_1 = 1
LORAWAN_1_0_2 = 2
LORAWAN_1_0_3 = 3
LORAWAN_1_0_4 = 4
LORAWAN_1_1_0 = 5
A = 0
B = 1
RP002_1_0_0 = 2
RP002_1_0_1 = 3
RP002_1_0_2 = 4
RP002_1_0_3 = 5
UNKNOWN = 0
GPS = 1
CONFIG = 2
GEO_RESOLVER_TDOA = 3
GEO_RESOLVER_RSSI = 4
GEO_RESOLVER_GNSS = 5
GEO_RESOLVER_WIFI = 6
_LOCATION = DESCRIPTOR.message_types_by_name['Location']
_KEYENVELOPE = DESCRIPTOR.message_types_by_name['KeyEnvelope']
Location = _reflection.GeneratedProtocolMessageType('Location', (_message.Message,), {
'DESCRIPTOR' : _LOCATION,
'__module__' : 'chirpstack_api.common.common_pb2'
# @@protoc_insertion_point(class_scope:common.Location)
})
_sym_db.RegisterMessage(Location)
KeyEnvelope = _reflection.GeneratedProtocolMessageType('KeyEnvelope', (_message.Message,), {
'DESCRIPTOR' : _KEYENVELOPE,
'__module__' : 'chirpstack_api.common.common_pb2'
# @@protoc_insertion_point(class_scope:common.KeyEnvelope)
})
_sym_db.RegisterMessage(KeyEnvelope)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\013CommonProtoP\001Z1github.com/chirpstack/chirpstack/api/go/v4/common'
_MODULATION._serialized_start=222
_MODULATION._serialized_end=266
_REGION._serialized_start=269
_REGION._serialized_end=439
_MTYPE._serialized_start=442
_MTYPE._serialized_end=621
_MACVERSION._serialized_start=623
_MACVERSION._serialized_end=749
_REGPARAMSREVISION._serialized_start=751
_REGPARAMSREVISION._serialized_end=852
_LOCATIONSOURCE._serialized_start=855
_LOCATIONSOURCE._serialized_end=997
_LOCATION._serialized_start=46
_LOCATION._serialized_end=169
_KEYENVELOPE._serialized_start=171
_KEYENVELOPE._serialized_end=220
# @@protoc_insertion_point(module_scope)

View File

@ -0,0 +1,4 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,4 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

View File

@ -0,0 +1,166 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: chirpstack-api/integration/integration.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from chirpstack_api.common import common_pb2 as chirpstack__api_dot_common_dot_common__pb2
from chirpstack_api.gw import gw_pb2 as chirpstack__api_dot_gw_dot_gw__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n,chirpstack-api/integration/integration.proto\x12\x0bintegration\x1a\"chirpstack-api/common/common.proto\x1a\x1a\x63hirpstack-api/gw/gw.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xa2\x02\n\nDeviceInfo\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x13\n\x0btenant_name\x18\x02 \x01(\t\x12\x16\n\x0e\x61pplication_id\x18\x03 \x01(\t\x12\x18\n\x10\x61pplication_name\x18\x04 \x01(\t\x12\x19\n\x11\x64\x65vice_profile_id\x18\x05 \x01(\t\x12\x1b\n\x13\x64\x65vice_profile_name\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x65vice_name\x18\x07 \x01(\t\x12\x0f\n\x07\x64\x65v_eui\x18\x08 \x01(\t\x12/\n\x04tags\x18\t \x03(\x0b\x32!.integration.DeviceInfo.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xdc\x02\n\x0bUplinkEvent\x12\x18\n\x10\x64\x65\x64uplication_id\x18\x01 \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x0b\x64\x65vice_info\x18\x03 \x01(\x0b\x32\x17.integration.DeviceInfo\x12\x10\n\x08\x64\x65v_addr\x18\x04 \x01(\t\x12\x0b\n\x03\x61\x64r\x18\x05 \x01(\x08\x12\n\n\x02\x64r\x18\x06 \x01(\r\x12\x10\n\x08\x66_cnt_up\x18\x07 \x01(\r\x12\x0e\n\x06\x66_port\x18\x08 \x01(\r\x12\x11\n\tconfirmed\x18\t \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\n \x01(\x0c\x12\'\n\x06object\x18\x0b \x01(\x0b\x32\x17.google.protobuf.Struct\x12!\n\x07rx_info\x18\x0c \x03(\x0b\x32\x10.gw.UplinkRXInfo\x12!\n\x07tx_info\x18\r \x01(\x0b\x32\x10.gw.UplinkTXInfo\"\x8f\x01\n\tJoinEvent\x12\x18\n\x10\x64\x65\x64uplication_id\x18\x01 \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x0b\x64\x65vice_info\x18\x03 \x01(\x0b\x32\x17.integration.DeviceInfo\x12\x10\n\x08\x64\x65v_addr\x18\x04 \x01(\t\"\xbd\x01\n\x08\x41\x63kEvent\x12\x18\n\x10\x64\x65\x64uplication_id\x18\x01 \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x0b\x64\x65vice_info\x18\x03 \x01(\x0b\x32\x17.integration.DeviceInfo\x12\x15\n\rqueue_item_id\x18\x04 \x01(\t\x12\x14\n\x0c\x61\x63knowledged\x18\x05 \x01(\x08\x12\x12\n\nf_cnt_down\x18\x06 \x01(\r\"\xdd\x01\n\nTxAckEvent\x12\x13\n\x0b\x64ownlink_id\x18\x01 \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x0b\x64\x65vice_info\x18\x03 \x01(\x0b\x32\x17.integration.DeviceInfo\x12\x15\n\rqueue_item_id\x18\x04 \x01(\t\x12\x12\n\nf_cnt_down\x18\x05 \x01(\r\x12\x12\n\ngateway_id\x18\x06 \x01(\t\x12#\n\x07tx_info\x18\x07 \x01(\x0b\x32\x12.gw.DownlinkTXInfo\"\xc0\x02\n\x08LogEvent\x12\x18\n\x10\x64\x65\x64uplication_id\x18\x01 \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x0b\x64\x65vice_info\x18\x03 \x01(\x0b\x32\x17.integration.DeviceInfo\x12$\n\x05level\x18\x04 \x01(\x0e\x32\x15.integration.LogLevel\x12\"\n\x04\x63ode\x18\x05 \x01(\x0e\x32\x14.integration.LogCode\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x33\n\x07\x63ontext\x18\x07 \x03(\x0b\x32\".integration.LogEvent.ContextEntry\x1a.\n\x0c\x43ontextEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xe8\x01\n\x0bStatusEvent\x12\x18\n\x10\x64\x65\x64uplication_id\x18\x01 \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x0b\x64\x65vice_info\x18\x03 \x01(\x0b\x32\x17.integration.DeviceInfo\x12\x0e\n\x06margin\x18\x05 \x01(\x05\x12\x1d\n\x15\x65xternal_power_source\x18\x06 \x01(\x08\x12!\n\x19\x62\x61ttery_level_unavailable\x18\x07 \x01(\x08\x12\x15\n\rbattery_level\x18\x08 \x01(\x02\"\xa5\x01\n\rLocationEvent\x12\x18\n\x10\x64\x65\x64uplication_id\x18\x01 \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x0b\x64\x65vice_info\x18\x03 \x01(\x0b\x32\x17.integration.DeviceInfo\x12\"\n\x08location\x18\x04 \x01(\x0b\x32\x10.common.Location\"\xdb\x01\n\x10IntegrationEvent\x12\x18\n\x10\x64\x65\x64uplication_id\x18\x01 \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x0b\x64\x65vice_info\x18\x03 \x01(\x0b\x32\x17.integration.DeviceInfo\x12\x18\n\x10integration_name\x18\x04 \x01(\t\x12\x12\n\nevent_type\x18\x05 \x01(\t\x12\'\n\x06object\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct*,\n\x08LogLevel\x12\x08\n\x04INFO\x10\x00\x12\x0b\n\x07WARNING\x10\x01\x12\t\n\x05\x45RROR\x10\x02*\xc0\x01\n\x07LogCode\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x19\n\x15\x44OWNLINK_PAYLOAD_SIZE\x10\x01\x12\x10\n\x0cUPLINK_CODEC\x10\x02\x12\x12\n\x0e\x44OWNLINK_CODEC\x10\x03\x12\x08\n\x04OTAA\x10\x04\x12\x16\n\x12UPLINK_F_CNT_RESET\x10\x05\x12\x0e\n\nUPLINK_MIC\x10\x06\x12\x1f\n\x1bUPLINK_F_CNT_RETRANSMISSION\x10\x07\x12\x14\n\x10\x44OWNLINK_GATEWAY\x10\x08\x42k\n io.chirpstack.api.as.integrationB\x10IntegrationProtoP\x01Z3github.com/brocaar/chirpstack/api/go/v4/integrationb\x06proto3')
_LOGLEVEL = DESCRIPTOR.enum_types_by_name['LogLevel']
LogLevel = enum_type_wrapper.EnumTypeWrapper(_LOGLEVEL)
_LOGCODE = DESCRIPTOR.enum_types_by_name['LogCode']
LogCode = enum_type_wrapper.EnumTypeWrapper(_LOGCODE)
INFO = 0
WARNING = 1
ERROR = 2
UNKNOWN = 0
DOWNLINK_PAYLOAD_SIZE = 1
UPLINK_CODEC = 2
DOWNLINK_CODEC = 3
OTAA = 4
UPLINK_F_CNT_RESET = 5
UPLINK_MIC = 6
UPLINK_F_CNT_RETRANSMISSION = 7
DOWNLINK_GATEWAY = 8
_DEVICEINFO = DESCRIPTOR.message_types_by_name['DeviceInfo']
_DEVICEINFO_TAGSENTRY = _DEVICEINFO.nested_types_by_name['TagsEntry']
_UPLINKEVENT = DESCRIPTOR.message_types_by_name['UplinkEvent']
_JOINEVENT = DESCRIPTOR.message_types_by_name['JoinEvent']
_ACKEVENT = DESCRIPTOR.message_types_by_name['AckEvent']
_TXACKEVENT = DESCRIPTOR.message_types_by_name['TxAckEvent']
_LOGEVENT = DESCRIPTOR.message_types_by_name['LogEvent']
_LOGEVENT_CONTEXTENTRY = _LOGEVENT.nested_types_by_name['ContextEntry']
_STATUSEVENT = DESCRIPTOR.message_types_by_name['StatusEvent']
_LOCATIONEVENT = DESCRIPTOR.message_types_by_name['LocationEvent']
_INTEGRATIONEVENT = DESCRIPTOR.message_types_by_name['IntegrationEvent']
DeviceInfo = _reflection.GeneratedProtocolMessageType('DeviceInfo', (_message.Message,), {
'TagsEntry' : _reflection.GeneratedProtocolMessageType('TagsEntry', (_message.Message,), {
'DESCRIPTOR' : _DEVICEINFO_TAGSENTRY,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.DeviceInfo.TagsEntry)
})
,
'DESCRIPTOR' : _DEVICEINFO,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.DeviceInfo)
})
_sym_db.RegisterMessage(DeviceInfo)
_sym_db.RegisterMessage(DeviceInfo.TagsEntry)
UplinkEvent = _reflection.GeneratedProtocolMessageType('UplinkEvent', (_message.Message,), {
'DESCRIPTOR' : _UPLINKEVENT,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.UplinkEvent)
})
_sym_db.RegisterMessage(UplinkEvent)
JoinEvent = _reflection.GeneratedProtocolMessageType('JoinEvent', (_message.Message,), {
'DESCRIPTOR' : _JOINEVENT,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.JoinEvent)
})
_sym_db.RegisterMessage(JoinEvent)
AckEvent = _reflection.GeneratedProtocolMessageType('AckEvent', (_message.Message,), {
'DESCRIPTOR' : _ACKEVENT,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.AckEvent)
})
_sym_db.RegisterMessage(AckEvent)
TxAckEvent = _reflection.GeneratedProtocolMessageType('TxAckEvent', (_message.Message,), {
'DESCRIPTOR' : _TXACKEVENT,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.TxAckEvent)
})
_sym_db.RegisterMessage(TxAckEvent)
LogEvent = _reflection.GeneratedProtocolMessageType('LogEvent', (_message.Message,), {
'ContextEntry' : _reflection.GeneratedProtocolMessageType('ContextEntry', (_message.Message,), {
'DESCRIPTOR' : _LOGEVENT_CONTEXTENTRY,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.LogEvent.ContextEntry)
})
,
'DESCRIPTOR' : _LOGEVENT,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.LogEvent)
})
_sym_db.RegisterMessage(LogEvent)
_sym_db.RegisterMessage(LogEvent.ContextEntry)
StatusEvent = _reflection.GeneratedProtocolMessageType('StatusEvent', (_message.Message,), {
'DESCRIPTOR' : _STATUSEVENT,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.StatusEvent)
})
_sym_db.RegisterMessage(StatusEvent)
LocationEvent = _reflection.GeneratedProtocolMessageType('LocationEvent', (_message.Message,), {
'DESCRIPTOR' : _LOCATIONEVENT,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.LocationEvent)
})
_sym_db.RegisterMessage(LocationEvent)
IntegrationEvent = _reflection.GeneratedProtocolMessageType('IntegrationEvent', (_message.Message,), {
'DESCRIPTOR' : _INTEGRATIONEVENT,
'__module__' : 'chirpstack_api.integration.integration_pb2'
# @@protoc_insertion_point(class_scope:integration.IntegrationEvent)
})
_sym_db.RegisterMessage(IntegrationEvent)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n io.chirpstack.api.as.integrationB\020IntegrationProtoP\001Z3github.com/brocaar/chirpstack/api/go/v4/integration'
_DEVICEINFO_TAGSENTRY._options = None
_DEVICEINFO_TAGSENTRY._serialized_options = b'8\001'
_LOGEVENT_CONTEXTENTRY._options = None
_LOGEVENT_CONTEXTENTRY._serialized_options = b'8\001'
_LOGLEVEL._serialized_start=2342
_LOGLEVEL._serialized_end=2386
_LOGCODE._serialized_start=2389
_LOGCODE._serialized_end=2581
_DEVICEINFO._serialized_start=189
_DEVICEINFO._serialized_end=479
_DEVICEINFO_TAGSENTRY._serialized_start=436
_DEVICEINFO_TAGSENTRY._serialized_end=479
_UPLINKEVENT._serialized_start=482
_UPLINKEVENT._serialized_end=830
_JOINEVENT._serialized_start=833
_JOINEVENT._serialized_end=976
_ACKEVENT._serialized_start=979
_ACKEVENT._serialized_end=1168
_TXACKEVENT._serialized_start=1171
_TXACKEVENT._serialized_end=1392
_LOGEVENT._serialized_start=1395
_LOGEVENT._serialized_end=1715
_LOGEVENT_CONTEXTENTRY._serialized_start=1669
_LOGEVENT_CONTEXTENTRY._serialized_end=1715
_STATUSEVENT._serialized_start=1718
_STATUSEVENT._serialized_end=1950
_LOCATIONEVENT._serialized_start=1953
_LOCATIONEVENT._serialized_end=2118
_INTEGRATIONEVENT._serialized_start=2121
_INTEGRATIONEVENT._serialized_end=2340
# @@protoc_insertion_point(module_scope)

View File

@ -0,0 +1,4 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

View File

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: chirpstack-api/meta/meta.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from chirpstack_api.common import common_pb2 as chirpstack__api_dot_common_dot_common__pb2
from chirpstack_api.gw import gw_pb2 as chirpstack__api_dot_gw_dot_gw__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1e\x63hirpstack-api/meta/meta.proto\x12\x04meta\x1a\"chirpstack-api/common/common.proto\x1a\x1a\x63hirpstack-api/gw/gw.proto\"\xf0\x01\n\nUplinkMeta\x12\x0f\n\x07\x64\x65v_eui\x18\x01 \x01(\t\x12!\n\x07tx_info\x18\x02 \x01(\x0b\x32\x10.gw.UplinkTXInfo\x12!\n\x07rx_info\x18\x03 \x03(\x0b\x32\x10.gw.UplinkRXInfo\x12\x1e\n\x16phy_payload_byte_count\x18\x04 \x01(\r\x12\x1e\n\x16mac_command_byte_count\x18\x05 \x01(\r\x12&\n\x1e\x61pplication_payload_byte_count\x18\x06 \x01(\r\x12#\n\x0cmessage_type\x18\x07 \x01(\x0e\x32\r.common.MType\"\x81\x02\n\x0c\x44ownlinkMeta\x12\x0f\n\x07\x64\x65v_eui\x18\x01 \x01(\t\x12\x1a\n\x12multicast_group_id\x18\x02 \x01(\t\x12#\n\x07tx_info\x18\x03 \x01(\x0b\x32\x12.gw.DownlinkTXInfo\x12\x1e\n\x16phy_payload_byte_count\x18\x04 \x01(\r\x12\x1e\n\x16mac_command_byte_count\x18\x05 \x01(\r\x12&\n\x1e\x61pplication_payload_byte_count\x18\x06 \x01(\r\x12#\n\x0cmessage_type\x18\x07 \x01(\x0e\x32\r.common.MType\x12\x12\n\ngateway_id\x18\x08 \x01(\tBV\n\x16io.chirpstack.api.metaB\tMetaProtoP\x01Z/github.com/chirpstack/chirpstack-api/go/v4/metab\x06proto3')
_UPLINKMETA = DESCRIPTOR.message_types_by_name['UplinkMeta']
_DOWNLINKMETA = DESCRIPTOR.message_types_by_name['DownlinkMeta']
UplinkMeta = _reflection.GeneratedProtocolMessageType('UplinkMeta', (_message.Message,), {
'DESCRIPTOR' : _UPLINKMETA,
'__module__' : 'chirpstack_api.meta.meta_pb2'
# @@protoc_insertion_point(class_scope:meta.UplinkMeta)
})
_sym_db.RegisterMessage(UplinkMeta)
DownlinkMeta = _reflection.GeneratedProtocolMessageType('DownlinkMeta', (_message.Message,), {
'DESCRIPTOR' : _DOWNLINKMETA,
'__module__' : 'chirpstack_api.meta.meta_pb2'
# @@protoc_insertion_point(class_scope:meta.DownlinkMeta)
})
_sym_db.RegisterMessage(DownlinkMeta)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\026io.chirpstack.api.metaB\tMetaProtoP\001Z/github.com/chirpstack/chirpstack-api/go/v4/meta'
_UPLINKMETA._serialized_start=105
_UPLINKMETA._serialized_end=345
_DOWNLINKMETA._serialized_start=348
_DOWNLINKMETA._serialized_end=605
# @@protoc_insertion_point(module_scope)

View File

@ -0,0 +1,4 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

34
api/python/src/setup.py Normal file
View File

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
from setuptools import find_packages, setup
REQUIREMENTS = [
'grpcio',
'google-api-core'
]
CLASSIFIERS = [
'Intended Audience :: Developers',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3.7',
'Topic :: Communications',
'Topic :: Software Development',
'Topic :: Software Development :: Libraries',
]
setup(
name='chirpstack-api',
version = "4.0.0",
url='https://github.com/brocaar/chirpstack-api',
author='Orne Brocaar',
author_email='info@brocaar.com',
license='MIT',
description='Chirpstack Python API',
long_description=open('README.md').read(),
long_description_content_type='text/markdown',
packages=find_packages(),
include_package_data=True,
zip_safe=False,
install_requires=REQUIREMENTS,
classifiers=CLASSIFIERS,
)