From 038614b44d8070e1c64402b99a95bde330be6f45 Mon Sep 17 00:00:00 2001 From: Orne Brocaar Date: Mon, 18 Jul 2022 14:14:28 +0100 Subject: [PATCH] Update Python SDK. --- .gitignore | 3 + api/docker-compose.yml | 2 +- .../chirpstack-api/api/application.proto | 364 ++++++++++++-- .../proto/chirpstack-api/api/device.proto | 185 +++++-- .../chirpstack-api/api/device_profile.proto | 81 ++- .../api/device_profile_template.proto | 234 +++++++++ .../proto/chirpstack-api/api/frame_log.proto | 12 +- .../proto/chirpstack-api/api/gateway.proto | 115 +++-- .../proto/chirpstack-api/api/internal.proto | 2 +- .../chirpstack-api/api/multicast_group.proto | 68 ++- .../proto/chirpstack-api/api/tenant.proto | 67 ++- .../proto/chirpstack-api/api/user.proto | 42 +- .../proto/chirpstack-api/common/common.proto | 33 ++ api/python/proto/chirpstack-api/gw/gw.proto | 248 +++++++--- .../proto/chirpstack-api/gw/gw_new.proto | 202 -------- .../integration/integration.proto | 52 +- .../chirpstack-api/internal/internal.proto | 37 +- .../proto/chirpstack-api/meta/meta.proto | 8 +- api/python/src/chirpstack_api/__init__.py | 0 api/python/src/chirpstack_api/api/__init__.py | 20 + .../src/chirpstack_api/api/application_pb2.py | 464 ++++++++++++------ .../api/application_pb2_grpc.py | 136 +++++ .../src/chirpstack_api/api/device_pb2.py | 293 ++++++----- .../src/chirpstack_api/api/device_pb2_grpc.py | 64 ++- .../chirpstack_api/api/device_profile_pb2.py | 109 ++-- .../api/device_profile_template_pb2.py | 159 ++++++ .../api/device_profile_template_pb2_grpc.py | 207 ++++++++ .../src/chirpstack_api/api/frame_log_pb2.py | 4 +- .../src/chirpstack_api/api/gateway_pb2.py | 182 +++---- .../chirpstack_api/api/gateway_pb2_grpc.py | 28 +- .../src/chirpstack_api/api/internal_pb2.py | 4 +- .../chirpstack_api/api/multicast_group_pb2.py | 50 +- .../src/chirpstack_api/api/tenant_pb2.py | 105 ++-- api/python/src/chirpstack_api/api/user_pb2.py | 69 +-- .../src/chirpstack_api/common/__init__.py | 1 + .../src/chirpstack_api/common/common_pb2.py | 62 ++- api/python/src/chirpstack_api/gw/__init__.py | 1 + api/python/src/chirpstack_api/gw/gw_pb2.py | 290 ++++++----- .../chirpstack_api/integration/__init__.py | 1 + .../integration/integration_pb2.py | 54 +- .../src/chirpstack_api/meta/__init__.py | 1 + .../src/chirpstack_api/meta/meta_pb2.py | 4 +- 42 files changed, 2884 insertions(+), 1179 deletions(-) create mode 100644 api/python/proto/chirpstack-api/api/device_profile_template.proto delete mode 100644 api/python/proto/chirpstack-api/gw/gw_new.proto create mode 100644 api/python/src/chirpstack_api/__init__.py create mode 100644 api/python/src/chirpstack_api/api/__init__.py create mode 100644 api/python/src/chirpstack_api/api/device_profile_template_pb2.py create mode 100644 api/python/src/chirpstack_api/api/device_profile_template_pb2_grpc.py create mode 100644 api/python/src/chirpstack_api/common/__init__.py create mode 100644 api/python/src/chirpstack_api/gw/__init__.py create mode 100644 api/python/src/chirpstack_api/integration/__init__.py create mode 100644 api/python/src/chirpstack_api/meta/__init__.py diff --git a/.gitignore b/.gitignore index 5b38a1d0..aa4f8fb6 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,9 @@ # API /api/js/node_modules +/api/python/src/*.egg-info/ +/api/python/src/build/ +/api/python/src/dist/ # Bitbake recipes *.bb diff --git a/api/docker-compose.yml b/api/docker-compose.yml index 13fc3492..2de4c1df 100644 --- a/api/docker-compose.yml +++ b/api/docker-compose.yml @@ -32,7 +32,7 @@ services: build: context: . dockerfile: Dockerfile-python - command: bash -c "cd js && make all" + command: bash -c "cd python && make all" volumes: - ./:/chirpstack/api chirpstack-api-md: diff --git a/api/python/proto/chirpstack-api/api/application.proto b/api/python/proto/chirpstack-api/api/application.proto index 133c66fa..5b1ccfd8 100644 --- a/api/python/proto/chirpstack-api/api/application.proto +++ b/api/python/proto/chirpstack-api/api/application.proto @@ -2,144 +2,367 @@ syntax = "proto3"; package api; -option go_package = "github.com/chirpstack/chirpstack/api/go/v4"; +option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api"; option java_package = "io.chirpstack.api"; option java_multiple_files = true; option java_outer_classname = "ApplicationProto"; +import "google/api/annotations.proto"; 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) {} + rpc Create(CreateApplicationRequest) returns (CreateApplicationResponse) { + option(google.api.http) = { + post: "/api/applications" + body: "*" + }; + } // Get the application for the given ID. - rpc Get(GetApplicationRequest) returns (GetApplicationResponse) {} + rpc Get(GetApplicationRequest) returns (GetApplicationResponse) { + option(google.api.http) = { + get: "/api/applications/{id}" + }; + } // Update updates the given application. - rpc Update(UpdateApplicationRequest) returns (google.protobuf.Empty) {} + rpc Update(UpdateApplicationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{application.id}" + body: "*" + }; + } // Delete the application for the given ID. - rpc Delete(DeleteApplicationRequest) returns (google.protobuf.Empty) {} + rpc Delete(DeleteApplicationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{id}" + }; + } // Get the list of applications. - rpc List(ListApplicationsRequest) returns (ListApplicationsResponse) {} + rpc List(ListApplicationsRequest) returns (ListApplicationsResponse) { + option(google.api.http) = { + get: "/api/applications" + }; + } // List all configured integrations. - rpc ListIntegrations(ListIntegrationsRequest) returns (ListIntegrationsResponse) {} + rpc ListIntegrations(ListIntegrationsRequest) returns (ListIntegrationsResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations" + }; + } // Create HTTP integration. - rpc CreateHttpIntegration(CreateHttpIntegrationRequest) returns (google.protobuf.Empty) {} + rpc CreateHttpIntegration(CreateHttpIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/applications/{integration.application_id}/integrations/http" + body: "*" + }; + } // Get the configured HTTP integration. - rpc GetHttpIntegration(GetHttpIntegrationRequest) returns (GetHttpIntegrationResponse) {} + rpc GetHttpIntegration(GetHttpIntegrationRequest) returns (GetHttpIntegrationResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations/http" + }; + } // Update the HTTP integration. - rpc UpdateHttpIntegration(UpdateHttpIntegrationRequest) returns (google.protobuf.Empty) {} + rpc UpdateHttpIntegration(UpdateHttpIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{integration.application_id}/integrations/http" + body: "*" + }; + } // Delete the HTTP integration. - rpc DeleteHttpIntegration(DeleteHttpIntegrationRequest) returns (google.protobuf.Empty) {} + rpc DeleteHttpIntegration(DeleteHttpIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{application_id}/integrations/http" + }; + } // Create InfluxDb integration. - rpc CreateInfluxDbIntegration(CreateInfluxDbIntegrationRequest) returns (google.protobuf.Empty) {} + rpc CreateInfluxDbIntegration(CreateInfluxDbIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/applications/{integration.application_id}/integrations/influxdb" + body: "*" + }; + } // Get InfluxDb integration. - rpc GetInfluxDbIntegration(GetInfluxDbIntegrationRequest) returns (GetInfluxDbIntegrationResponse) {} + rpc GetInfluxDbIntegration(GetInfluxDbIntegrationRequest) returns (GetInfluxDbIntegrationResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations/influxdb" + }; + } // Update InfluxDb integration. - rpc UpdateInfluxDbIntegration(UpdateInfluxDbIntegrationRequest) returns (google.protobuf.Empty) {} + rpc UpdateInfluxDbIntegration(UpdateInfluxDbIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{integration.application_id}/integrations/influxdb" + body: "*" + }; + } // Delete InfluxDb integration. - rpc DeleteInfluxDbIntegration(DeleteInfluxDbIntegrationRequest) returns (google.protobuf.Empty) {} + rpc DeleteInfluxDbIntegration(DeleteInfluxDbIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{application_id}/integrations/influxdb" + }; + } // Create ThingsBoard integration. - rpc CreateThingsBoardIntegration(CreateThingsBoardIntegrationRequest) returns (google.protobuf.Empty) {} + rpc CreateThingsBoardIntegration(CreateThingsBoardIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/applications/{integration.application_id}/integrations/thingsboard" + body: "*" + }; + } // Get ThingsBoard integration. - rpc GetThingsBoardIntegration(GetThingsBoardIntegrationRequest) returns (GetThingsBoardIntegrationResponse) {} + rpc GetThingsBoardIntegration(GetThingsBoardIntegrationRequest) returns (GetThingsBoardIntegrationResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations/thingsboard" + }; + } // Update ThingsBoard integration. - rpc UpdateThingsBoardIntegration(UpdateThingsBoardIntegrationRequest) returns (google.protobuf.Empty) {} + rpc UpdateThingsBoardIntegration(UpdateThingsBoardIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{integration.application_id}/integrations/thingsboard" + body: "*" + }; + } // Delete ThingsBoard integration. - rpc DeleteThingsBoardIntegration(DeleteThingsBoardIntegrationRequest) returns (google.protobuf.Empty) {} + rpc DeleteThingsBoardIntegration(DeleteThingsBoardIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{application_id}/integrations/thingsboard" + }; + } // Create myDevices integration. - rpc CreateMyDevicesIntegration(CreateMyDevicesIntegrationRequest) returns (google.protobuf.Empty) {} + rpc CreateMyDevicesIntegration(CreateMyDevicesIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/applications/{integration.application_id}/integrations/mydevices" + body: "*" + }; + } // Get myDevices integration. - rpc GetMyDevicesIntegration(GetMyDevicesIntegrationRequest) returns (GetMyDevicesIntegrationResponse) {} + rpc GetMyDevicesIntegration(GetMyDevicesIntegrationRequest) returns (GetMyDevicesIntegrationResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations/mydevices" + }; + } // Update myDevices integration. - rpc UpdateMyDevicesIntegration(UpdateMyDevicesIntegrationRequest) returns (google.protobuf.Empty) {} + rpc UpdateMyDevicesIntegration(UpdateMyDevicesIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{integration.application_id}/integrations/mydevices" + body: "*" + }; + } // Delete myDevices integration. - rpc DeleteMyDevicesIntegration(DeleteMyDevicesIntegrationRequest) returns (google.protobuf.Empty) {} + rpc DeleteMyDevicesIntegration(DeleteMyDevicesIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{application_id}/integrations/mydevices" + }; + } // Create LoRaCloud integration. - rpc CreateLoraCloudIntegration(CreateLoraCloudIntegrationRequest) returns (google.protobuf.Empty) {} + rpc CreateLoraCloudIntegration(CreateLoraCloudIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/applications/{integration.application_id}/integrations/loracloud" + body: "*" + }; + } // Get LoRaCloud integration. - rpc GetLoraCloudIntegration(GetLoraCloudIntegrationRequest) returns (GetLoraCloudIntegrationResponse) {} + rpc GetLoraCloudIntegration(GetLoraCloudIntegrationRequest) returns (GetLoraCloudIntegrationResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations/loracloud" + }; + } // Update LoRaCloud integration. - rpc UpdateLoraCloudIntegration(UpdateLoraCloudIntegrationRequest) returns (google.protobuf.Empty) {} + rpc UpdateLoraCloudIntegration(UpdateLoraCloudIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{integration.application_id}/integrations/loracloud" + body: "*" + }; + } // Delete LoRaCloud integration. - rpc DeleteLoraCloudIntegration(DeleteLoraCloudIntegrationRequest) returns (google.protobuf.Empty) {} + rpc DeleteLoraCloudIntegration(DeleteLoraCloudIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{application_id}/integrations/loracloud" + }; + } // Create GCP Pub/Sub integration. - rpc CreateGcpPubSubIntegration(CreateGcpPubSubIntegrationRequest) returns (google.protobuf.Empty) {} + rpc CreateGcpPubSubIntegration(CreateGcpPubSubIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/applications/{integration.application_id}/integrations/gcp-pub-sub" + body: "*" + }; + } // Get GCP Pub/Sub integration. - rpc GetGcpPubSubIntegration(GetGcpPubSubIntegrationRequest) returns (GetGcpPubSubIntegrationResponse) {} + rpc GetGcpPubSubIntegration(GetGcpPubSubIntegrationRequest) returns (GetGcpPubSubIntegrationResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations/gcp-pub-sub" + }; + } // Update GCP Pub/Sub integration. - rpc UpdateGcpPubSubIntegration(UpdateGcpPubSubIntegrationRequest) returns (google.protobuf.Empty) {} + rpc UpdateGcpPubSubIntegration(UpdateGcpPubSubIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{integration.application_id}/integrations/gcp-pub-sub" + body: "*" + }; + } // Delete GCP Pub/Sub integration. - rpc DeleteGcpPubSubIntegration(DeleteGcpPubSubIntegrationRequest) returns (google.protobuf.Empty) {} + rpc DeleteGcpPubSubIntegration(DeleteGcpPubSubIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{application_id}/integrations/gcp-pub-sub" + }; + } // Create AWS SNS integration. - rpc CreateAwsSnsIntegration(CreateAwsSnsIntegrationRequest) returns (google.protobuf.Empty) {} + rpc CreateAwsSnsIntegration(CreateAwsSnsIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/applications/{integration.application_id}/integrations/aws-sns" + body: "*" + }; + } // Get AWS SNS integration. - rpc GetAwsSnsIntegration(GetAwsSnsIntegrationRequest) returns (GetAwsSnsIntegrationResponse) {} + rpc GetAwsSnsIntegration(GetAwsSnsIntegrationRequest) returns (GetAwsSnsIntegrationResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations/aws-sns" + }; + } // Update AWS SNS integration. - rpc UpdateAwsSnsIntegration(UpdateAwsSnsIntegrationRequest) returns (google.protobuf.Empty) {} + rpc UpdateAwsSnsIntegration(UpdateAwsSnsIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{integration.application_id}/integrations/aws-sns" + body: "*" + }; + } // Delete AWS SNS integration. - rpc DeleteAwsSnsIntegration(DeleteAwsSnsIntegrationRequest) returns (google.protobuf.Empty) {} + rpc DeleteAwsSnsIntegration(DeleteAwsSnsIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{application_id}/integrations/aws-sns" + }; + } // Create Azure Service-Bus integration. - rpc CreateAzureServiceBusIntegration(CreateAzureServiceBusIntegrationRequest) returns (google.protobuf.Empty) {} + rpc CreateAzureServiceBusIntegration(CreateAzureServiceBusIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/applications/{integration.application_id}/integrations/azure-service-bus" + body: "*" + }; + } // Get Azure Service-Bus integration. - rpc GetAzureServiceBusIntegration(GetAzureServiceBusIntegrationRequest) returns (GetAzureServiceBusIntegrationResponse) {} + rpc GetAzureServiceBusIntegration(GetAzureServiceBusIntegrationRequest) returns (GetAzureServiceBusIntegrationResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations/azure-service-bus" + }; + } // Update Azure Service-Bus integration. - rpc UpdateAzureServiceBusIntegration(UpdateAzureServiceBusIntegrationRequest) returns (google.protobuf.Empty) {} + rpc UpdateAzureServiceBusIntegration(UpdateAzureServiceBusIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{integration.application_id}/integrations/azure-service-bus" + body: "*" + }; + } // Delete Azure Service-Bus integration. - rpc DeleteAzureServiceBusIntegration(DeleteAzureServiceBusIntegrationRequest) returns (google.protobuf.Empty) {} + rpc DeleteAzureServiceBusIntegration(DeleteAzureServiceBusIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{application_id}/integrations/azure-service-bus" + }; + } // Create Pilot Things integration. - rpc CreatePilotThingsIntegration(CreatePilotThingsIntegrationRequest) returns (google.protobuf.Empty) {} + rpc CreatePilotThingsIntegration(CreatePilotThingsIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/applications/{integration.application_id}/integrations/pilot-things" + body: "*" + }; + } // Get Pilot Things integration. - rpc GetPilotThingsIntegration(GetPilotThingsIntegrationRequest) returns (GetPilotThingsIntegrationResponse) {} + rpc GetPilotThingsIntegration(GetPilotThingsIntegrationRequest) returns (GetPilotThingsIntegrationResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations/pilot-things" + }; + } // Update Pilot Things integration. - rpc UpdatePilotThingsIntegration(UpdatePilotThingsIntegrationRequest) returns (google.protobuf.Empty) {} + rpc UpdatePilotThingsIntegration(UpdatePilotThingsIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{integration.application_id}/integrations/pilot-things" + body: "*" + }; + } // Delete Pilot Things integration. - rpc DeletePilotThingsIntegration(DeletePilotThingsIntegrationRequest) returns (google.protobuf.Empty) {} + rpc DeletePilotThingsIntegration(DeletePilotThingsIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{application_id}/integrations/pilot-things" + }; + } + + // Create IFTTT integration. + rpc CreateIftttIntegration(CreateIftttIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/applications/{integration.application_id}/integrations/ifttt" + body: "*" + }; + } + + // Get IFTTT integration. + rpc GetIftttIntegration(GetIftttIntegrationRequest) returns (GetIftttIntegrationResponse) { + option(google.api.http) = { + get: "/api/applications/{application_id}/integrations/ifttt" + }; + } + + // Update IFTTT integration. + rpc UpdateIftttIntegration(UpdateIftttIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/applications/{integration.application_id}/integrations/ifttt" + body: "*" + }; + } + + // Delete IFTTT integration. + rpc DeleteIftttIntegration(DeleteIftttIntegrationRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/applications/{application_id}/integrations/ifttt" + }; + } // Generates application ID specific client-certificate. - rpc GenerateMqttIntegrationClientCertificate(GenerateMqttIntegrationClientCertificateRequest) returns (GenerateMqttIntegrationClientCertificateResponse) {} + rpc GenerateMqttIntegrationClientCertificate(GenerateMqttIntegrationClientCertificateRequest) returns (GenerateMqttIntegrationClientCertificateResponse) { + option(google.api.http) = { + post: "/api/applications/{application_id}/integrations/mqtt/certificate" + }; + } } enum Encoding { @@ -158,6 +381,7 @@ enum IntegrationKind { AZURE_SERVICE_BUS = 7; PILOT_THINGS = 8; MQTT_GLOBAL = 9; + IFTTT = 10; } message Application { @@ -216,6 +440,11 @@ message GetApplicationResponse { // Last update timestamp. google.protobuf.Timestamp updated_at = 3; + + // Measurement keys. + // This contains the measurement keys from all the device-profiles that + // are used by the devices under this application. + repeated string measurement_keys = 4; } message UpdateApplicationRequest { @@ -718,6 +947,53 @@ message DeletePilotThingsIntegrationRequest { string application_id = 1; } +message IftttIntegration { + // Application ID (UUID). + string application_id = 1; + + // Key. + // This key can be obtained from the IFTTT Webhooks documentation page. + string key = 2; + + // Values. + // Up to 2 values can be forwarded to IFTTT. These values must map to the + // decoded payload keys. For example: + // { + // "batteryLevel": 75.3, + // "buttons": [{"pressed": false}, {"pressed": true}] + // } + // You would specify the following fields: + // uplink_values = ["batteryLevel", "buttons_0_pressed"] + // + // Note: The first value is always used for the DevEUI. + repeated string uplink_values = 3; +} + +message CreateIftttIntegrationRequest { + // Integration object. + IftttIntegration integration = 1; +} + +message GetIftttIntegrationRequest { + // Application ID (UUID). + string application_id = 1; +} + +message GetIftttIntegrationResponse { + // Integration object. + IftttIntegration integration = 1; +} + +message UpdateIftttIntegrationRequest { + // Integration object to update. + IftttIntegration integration = 1; +} + +message DeleteIftttIntegrationRequest { + // Application ID (UUID). + string application_id = 1; +} + message GenerateMqttIntegrationClientCertificateRequest { // Application ID (UUID). string application_id = 1; diff --git a/api/python/proto/chirpstack-api/api/device.proto b/api/python/proto/chirpstack-api/api/device.proto index f6936cf9..3234ce2e 100644 --- a/api/python/proto/chirpstack-api/api/device.proto +++ b/api/python/proto/chirpstack-api/api/device.proto @@ -2,11 +2,13 @@ syntax = "proto3"; package api; -option go_package = "github.com/chirpstack/chirpstack/api/go/v4"; +option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api"; option java_package = "io.chirpstack.api"; option java_multiple_files = true; option java_outer_classname = "DeviceProto"; +import "chirpstack-api/common/common.proto"; +import "google/api/annotations.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/empty.proto"; @@ -14,58 +16,145 @@ 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) {} + rpc Create(CreateDeviceRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/devices" + body: "*" + }; + } // Get returns the device for the given DevEUI. - rpc Get(GetDeviceRequest) returns (GetDeviceResponse) {} + rpc Get(GetDeviceRequest) returns (GetDeviceResponse) { + option(google.api.http) = { + get: "/api/devices/{dev_eui}" + }; + } // Update the given device. - rpc Update(UpdateDeviceRequest) returns (google.protobuf.Empty) {} + rpc Update(UpdateDeviceRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/devices/{device.dev_eui}" + body: "*" + }; + } // Delete the device with the given DevEUI. - rpc Delete(DeleteDeviceRequest) returns (google.protobuf.Empty) {} + rpc Delete(DeleteDeviceRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/devices/{dev_eui}" + }; + } // Get the list of devices. - rpc List(ListDevicesRequest) returns (ListDevicesResponse) {} + rpc List(ListDevicesRequest) returns (ListDevicesResponse) { + option(google.api.http) = { + get: "/api/devices" + }; + } // Create the given device-keys. - rpc CreateKeys(CreateDeviceKeysRequest) returns (google.protobuf.Empty) {} + rpc CreateKeys(CreateDeviceKeysRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/devices/{device_keys.dev_eui}/keys" + body: "*" + }; + } // Get the device-keys for the given DevEUI. - rpc GetKeys(GetDeviceKeysRequest) returns (GetDeviceKeysResponse) {} + rpc GetKeys(GetDeviceKeysRequest) returns (GetDeviceKeysResponse) { + option(google.api.http) = { + get: "/api/devices/{dev_eui}/keys" + }; + } // Update the given device-keys. - rpc UpdateKeys(UpdateDeviceKeysRequest) returns (google.protobuf.Empty) {} + rpc UpdateKeys(UpdateDeviceKeysRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/devices/{device_keys.dev_eui}/keys" + body: "*" + }; + } // Delete the device-keys for the given DevEUI. - rpc DeleteKeys(DeleteDeviceKeysRequest) returns (google.protobuf.Empty) {} + rpc DeleteKeys(DeleteDeviceKeysRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/devices/{dev_eui}/keys" + }; + } // FlushDevNonces flushes the OTAA device nonces. - rpc FlushDevNonces(FlushDevNoncesRequest) returns (google.protobuf.Empty) {} + rpc FlushDevNonces(FlushDevNoncesRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/devices/{dev_eui}/dev-nonces" + }; + } // Activate (re)activates the device with the given parameters (for ABP or for importing OTAA activations). - rpc Activate(ActivateDeviceRequest) returns (google.protobuf.Empty) {} + rpc Activate(ActivateDeviceRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/devices/{device_activation.dev_eui}/activate" + body: "*" + }; + } // Deactivate de-activates the device. - rpc Deactivate(DeactivateDeviceRequest) returns (google.protobuf.Empty) {} + rpc Deactivate(DeactivateDeviceRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/devices/{dev_eui}/activation" + }; + } // GetActivation returns the current activation details of the device (OTAA or ABP). - rpc GetActivation(GetDeviceActivationRequest) returns (GetDeviceActivationResponse) {} + rpc GetActivation(GetDeviceActivationRequest) returns (GetDeviceActivationResponse) { + option(google.api.http) = { + get: "/api/devices/{dev_eui}/activation" + }; + } // GetRandomDevAddr returns a random DevAddr taking the NwkID prefix into account. - rpc GetRandomDevAddr(GetRandomDevAddrRequest) returns (GetRandomDevAddrResponse) {} + rpc GetRandomDevAddr(GetRandomDevAddrRequest) returns (GetRandomDevAddrResponse) { + option(google.api.http) = { + post: "/api/devices/{dev_eui}/get-random-dev-addr" + }; + } - // GetStats returns the device stats. - rpc GetStats(GetDeviceStatsRequest) returns (GetDeviceStatsResponse) {} + // GetMetrics returns the device metrics. + // Note that this requires a device-profile with codec and measurements configured. + rpc GetMetrics(GetDeviceMetricsRequest) returns (GetDeviceMetricsResponse) { + option(google.api.http) = { + get: "/api/devices/{dev_eui}/metrics" + }; + } + + // GetLinkMetrics returns the device link metrics. + // This includes uplinks, downlinks, RSSI, SNR, etc... + rpc GetLinkMetrics(GetDeviceLinkMetricsRequest) returns (GetDeviceLinkMetricsResponse) { + option(google.api.http) = { + get: "/api/devices/{dev_eui}/link-metrics" + }; + } // Enqueue adds the given item to the downlink queue. - rpc Enqueue(EnqueueDeviceQueueItemRequest) returns (EnqueueDeviceQueueItemResponse) {} + rpc Enqueue(EnqueueDeviceQueueItemRequest) returns (EnqueueDeviceQueueItemResponse) { + option(google.api.http) = { + post: "/api/devices/{queue_item.dev_eui}/queue" + body: "*" + }; + } // FlushQueue flushes the downlink device-queue. - rpc FlushQueue(FlushDeviceQueueRequest) returns (google.protobuf.Empty) {} + rpc FlushQueue(FlushDeviceQueueRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/devices/{dev_eui}/queue" + }; + } // GetQueue returns the downlink device-queue. - rpc GetQueue(GetDeviceQueueItemsRequest) returns (GetDeviceQueueItemsResponse) {} + rpc GetQueue(GetDeviceQueueItemsRequest) returns (GetDeviceQueueItemsResponse) { + option(google.api.http) = { + get: "/api/devices/{dev_eui}/queue" + }; + } } message Device { @@ -309,7 +398,7 @@ message GetRandomDevAddrResponse { string dev_addr = 1; } -message GetDeviceStatsRequest { +message GetDeviceMetricsRequest { // DevEUI (EUI64). string dev_eui = 1; @@ -318,33 +407,57 @@ message GetDeviceStatsRequest { // Interval end timestamp. google.protobuf.Timestamp end = 3; + + // Aggregation. + common.Aggregation aggregation = 4; } -message GetDeviceStatsResponse { - repeated DeviceStats result = 1; +message GetDeviceMetricsResponse { + map metrics = 1; + + map states = 2; } -message DeviceStats { - // Timestamp of the (aggregated) measurement. - google.protobuf.Timestamp time = 1; +message DeviceState { + // Name. + string name = 2; + // Value. + string value = 3; +} + +message GetDeviceLinkMetricsRequest { + // DevEUI (EUI64). + string dev_eui = 1; + + // Interval start timestamp. + google.protobuf.Timestamp start = 2; + + // Interval end timestamp. + google.protobuf.Timestamp end = 3; + + // Aggregation. + common.Aggregation aggregation = 4; +} + +message GetDeviceLinkMetricsResponse { // Packets received from the device. - uint32 rx_packets = 2; + common.Metric rx_packets = 1; - // Average RSSI (as reported by the gateway(s)). - float gw_rssi = 3; + // RSSI (as reported by the gateway(s)). + common.Metric gw_rssi = 2; - // Average SNR (as reported by the gateway(s)). - float gw_snr = 4; + // SNR (as reported by the gateway(s)). + common.Metric gw_snr = 3; // Packets received by frequency. - map rx_packets_per_frequency = 5; + common.Metric rx_packets_per_freq = 4; // Packets received by DR. - map rx_packets_per_dr = 6; + common.Metric rx_packets_per_dr = 5; - // Error count. - map errors = 7; + // Errors. + common.Metric errors = 6; } message DeviceQueueItem { @@ -379,7 +492,7 @@ message DeviceQueueItem { } message EnqueueDeviceQueueItemRequest { - DeviceQueueItem item = 1; + DeviceQueueItem queue_item = 1; } message EnqueueDeviceQueueItemResponse { diff --git a/api/python/proto/chirpstack-api/api/device_profile.proto b/api/python/proto/chirpstack-api/api/device_profile.proto index ca383689..5cfdc75d 100644 --- a/api/python/proto/chirpstack-api/api/device_profile.proto +++ b/api/python/proto/chirpstack-api/api/device_profile.proto @@ -2,11 +2,12 @@ syntax = "proto3"; package api; -option go_package = "github.com/chirpstack/chirpstack/api/go/v4"; +option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api"; option java_package = "io.chirpstack.api"; option java_multiple_files = true; option java_outer_classname = "DeviceProfileProto"; +import "google/api/annotations.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/empty.proto"; import "chirpstack-api/common/common.proto"; @@ -22,25 +23,68 @@ enum CodecRuntime { JS = 2; } +enum MeasurementKind { + // Unknown (in which case it is not tracked). + UNKNOWN = 0; + + // Incrementing counters that never decrease (these are not reset on each reading). + COUNTER = 1; + + // Counters that do get reset upon reading. + ABSOLUTE = 2; + + // E.g. a temperature value. + GAUGE = 3; + + // E.g. a firmware version, true / false value. + STRING = 4; +} + // DeviceProfileService is the service providing API methods for managing device-profiles. service DeviceProfileService { // Create the given device-profile. - rpc Create(CreateDeviceProfileRequest) returns (CreateDeviceProfileResponse) {} + rpc Create(CreateDeviceProfileRequest) returns (CreateDeviceProfileResponse) { + option(google.api.http) = { + post: "/api/device-profiles" + body: "*" + }; + } // Get the device-profile for the given ID. - rpc Get(GetDeviceProfileRequest) returns (GetDeviceProfileResponse) {} + rpc Get(GetDeviceProfileRequest) returns (GetDeviceProfileResponse) { + option(google.api.http) = { + get: "/api/device-profiles/{id}" + }; + } // Update the given device-profile. - rpc Update(UpdateDeviceProfileRequest) returns (google.protobuf.Empty) {} + rpc Update(UpdateDeviceProfileRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/device-profiles/{device_profile.id}" + body: "*" + }; + } // Delete the device-profile with the given ID. - rpc Delete(DeleteDeviceProfileRequest) returns (google.protobuf.Empty) {} + rpc Delete(DeleteDeviceProfileRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/device-profiles/{id}" + }; + } // List the available device-profiles. - rpc List(ListDeviceProfilesRequest) returns (ListDeviceProfilesResponse) {} + rpc List(ListDeviceProfilesRequest) returns (ListDeviceProfilesResponse) { + option(google.api.http) = { + get: "/api/device-profiles" + }; + } // List available ADR algorithms. - rpc ListAdrAlgorithms(google.protobuf.Empty) returns (ListDeviceProfileAdrAlgorithmsResponse) {} + rpc ListAdrAlgorithms(google.protobuf.Empty) returns (ListDeviceProfileAdrAlgorithmsResponse) { + option(google.api.http) = { + get: "/api/device-profiles/adr-algorithms" + }; + } } message DeviceProfile { @@ -54,6 +98,9 @@ message DeviceProfile { // Name. string name = 3; + // Description. + string description = 26; + // Region. common.Region region = 4; @@ -69,11 +116,11 @@ message DeviceProfile { // Payload codec runtime. CodecRuntime payload_codec_runtime = 8; - // Payload codec encoder config. - string payload_encoder_config = 9; + // Payload codec script. + string payload_codec_script = 9; - // Payload codec decoder config. - string payload_decoder_config = 10; + // Flush queue on device activation. + bool flush_queue_on_activate = 10; // Uplink interval (seconds). // This defines the expected uplink interval which the device uses for @@ -126,6 +173,18 @@ message DeviceProfile { // User defined tags. map tags = 25; + + // Measurements. + // If defined, ChirpStack will visualize these metrics in the web-interface. + map measurements = 27; +} + +message Measurement { + // Name (user defined). + string name = 2; + + // Kind. + MeasurementKind kind = 3; } message DeviceProfileListItem { diff --git a/api/python/proto/chirpstack-api/api/device_profile_template.proto b/api/python/proto/chirpstack-api/api/device_profile_template.proto new file mode 100644 index 00000000..56e6ab08 --- /dev/null +++ b/api/python/proto/chirpstack-api/api/device_profile_template.proto @@ -0,0 +1,234 @@ +syntax = "proto3"; + +package api; + +option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api"; +option java_package = "io.chirpstack.api"; +option java_multiple_files = true; +option java_outer_classname = "DeviceProfileTemplateProto"; + +import "google/api/annotations.proto"; +import "google/protobuf/timestamp.proto"; +import "google/protobuf/empty.proto"; +import "chirpstack-api/common/common.proto"; +import "chirpstack-api/api/device_profile.proto"; + +// DeviceProfileTemplateService is the service providing API methods for managing device-profile templates. +service DeviceProfileTemplateService { + // Create the given device-profile template. + rpc Create(CreateDeviceProfileTemplateRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/device-profile-templates" + body: "*" + }; + } + + // Get the device-profile template for the given ID. + rpc Get(GetDeviceProfileTemplateRequest) returns (GetDeviceProfileTemplateResponse) { + option(google.api.http) = { + get: "/api/device-profile-templates/{id}" + }; + } + + // Update the given device-profile template. + rpc Update(UpdateDeviceProfileTemplateRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/device-profile-templates/{device_profile_template.id}" + body: "*" + }; + } + + // Delete the device-profile template with the given ID. + rpc Delete(DeleteDeviceProfileTemplateRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/device-profile-templates/{id}" + }; + } + + // List the available device-profile templates. + rpc List(ListDeviceProfileTemplatesRequest) returns (ListDeviceProfileTemplatesResponse) { + option(google.api.http) = { + get: "/api/device-profile-templates" + }; + } +} + +message DeviceProfileTemplate { + // Device-profile template ID. + string id = 1; + + // Name. + string name = 2; + + // Description. + string description = 3; + + // Vendor. + string vendor = 4; + + // Firmware. + string firmware = 5; + + // Region. + common.Region region = 6; + + // LoRaWAN mac-version. + common.MacVersion mac_version = 7; + + // Regional parameters revision. + common.RegParamsRevision reg_params_revision = 8; + + // ADR algorithm ID. + string adr_algorithm_id = 9; + + // Payload codec runtime. + CodecRuntime payload_codec_runtime = 10; + + // Payload codec script. + string payload_codec_script = 11; + + // Flush queue on device activation. + bool flush_queue_on_activate = 12; + + // 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 = 13; + + // 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 = 14; + + // Supports OTAA. + bool supports_otaa = 15; + + // Supports Class B. + bool supports_class_b = 16; + + // Supports Class-C. + bool supports_class_c = 17; + + // 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 = 18; + + // Class-B ping-slot periodicity. + uint32 class_b_ping_slot_period = 19; + + // Class-B ping-slot DR. + uint32 class_b_ping_slot_dr = 20; + + // Class-B ping-slot freq (Hz). + uint32 class_b_ping_slot_freq = 21; + + // 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 = 22; + + // RX1 delay (for ABP). + uint32 abp_rx1_delay = 23; + + // RX1 DR offset (for ABP). + uint32 abp_rx1_dr_offset = 24; + + // RX2 DR (for ABP). + uint32 abp_rx2_dr = 25; + + // RX2 frequency (for ABP, Hz). + uint32 abp_rx2_freq = 26; + + // User defined tags. + map tags = 27; + + // Measurements. + // If defined, ChirpStack will visualize these metrics in the web-interface. + map measurements = 28; +} + +message DeviceProfileTemplateListItem { + // Device-profile template 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; + + // Vendor. + string vendor = 5; + + // Firmware. + string firmware = 6; + + // Region. + common.Region region = 7; + + // LoRaWAN mac-version. + common.MacVersion mac_version = 8; + + // Regional parameters revision. + common.RegParamsRevision reg_params_revision = 9; + + // Supports OTAA. + bool supports_otaa = 10; + + // Supports Class-B. + bool supports_class_b = 11; + + // Supports Class-C. + bool supports_class_c = 12; + +} + +message CreateDeviceProfileTemplateRequest { + // Object to create. + DeviceProfileTemplate device_profile_template = 1; +} + +message GetDeviceProfileTemplateRequest { + // ID. + string id = 1; +} + +message GetDeviceProfileTemplateResponse { + // Device-profile template object. + DeviceProfileTemplate device_profile_template = 1; + + // Created at timestamp. + google.protobuf.Timestamp created_at = 2; + + // Last update timestamp. + google.protobuf.Timestamp updated_at = 3; +} + +message UpdateDeviceProfileTemplateRequest { + // Object to update. + DeviceProfileTemplate device_profile_template = 1; +} + +message DeleteDeviceProfileTemplateRequest { + // ID. + string id = 1; +} + +message ListDeviceProfileTemplatesRequest { + // Max number of device-profile templates to return in the result-set. + uint32 limit = 1; + + // Offset in the result-set (for pagination). + uint32 offset = 2; +} + +message ListDeviceProfileTemplatesResponse { + // Total number of device-profile templates. + uint32 total_count = 1; + + // Result-set. + repeated DeviceProfileTemplateListItem result = 2; +} diff --git a/api/python/proto/chirpstack-api/api/frame_log.proto b/api/python/proto/chirpstack-api/api/frame_log.proto index ca98e802..41d281ba 100644 --- a/api/python/proto/chirpstack-api/api/frame_log.proto +++ b/api/python/proto/chirpstack-api/api/frame_log.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package api; -option go_package = "github.com/chirpstack/chirpstack/api/go/v4"; +option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api"; option java_package = "io.chirpstack.api"; option java_multiple_files = true; option java_outer_classname = "FrameLogProto"; @@ -16,10 +16,10 @@ message UplinkFrameLog { bytes phy_payload = 1; // TX meta-data. - gw.UplinkTXInfo tx_info = 2; + gw.UplinkTxInfo tx_info = 2; // RX meta-data. - repeated gw.UplinkRXInfo rx_info = 3; + repeated gw.UplinkRxInfo rx_info = 3; // Message type. common.MType m_type = 4; @@ -42,10 +42,10 @@ message DownlinkFrameLog { bytes phy_payload = 2; // TX meta-data. - gw.DownlinkTXInfo tx_info = 3; + gw.DownlinkTxInfo tx_info = 3; - // Downlink ID (UUID). - string downlink_id = 4; + // Downlink ID. + uint32 downlink_id = 4; // Gateway ID (EUI64). string gateway_id = 5; diff --git a/api/python/proto/chirpstack-api/api/gateway.proto b/api/python/proto/chirpstack-api/api/gateway.proto index ab1cf574..ba4d4120 100644 --- a/api/python/proto/chirpstack-api/api/gateway.proto +++ b/api/python/proto/chirpstack-api/api/gateway.proto @@ -2,37 +2,68 @@ syntax = "proto3"; package api; -option go_package = "github.com/chirpstack/chirpstack/api/go/v4"; +option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api"; option java_package = "io.chirpstack.api"; option java_multiple_files = true; option java_outer_classname = "GatewayProto"; +import "google/api/annotations.proto"; 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) {} + // Create creates the given gateway. + rpc Create(CreateGatewayRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/gateways" + body: "*" + }; + } - // Get returns the gateway for the given Gateway ID. - rpc Get(GetGatewayRequest) returns (GetGatewayResponse) {} + // Get returns the gateway for the given Gateway ID. + rpc Get(GetGatewayRequest) returns (GetGatewayResponse) { + option(google.api.http) = { + get: "/api/gateways/{gateway_id}" + }; + } - // Update updates the given gateway. - rpc Update(UpdateGatewayRequest) returns (google.protobuf.Empty) {} + // Update updates the given gateway. + rpc Update(UpdateGatewayRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/gateways/{gateway.gateway_id}" + body: "*" + }; + } - // Delete deletes the gateway matching the given Gateway ID. - rpc Delete(DeleteGatewayRequest) returns (google.protobuf.Empty) {} + // Delete deletes the gateway matching the given Gateway ID. + rpc Delete(DeleteGatewayRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/gateways/{gateway_id}" + }; + } - // Get the list of gateways. - rpc List(ListGatewaysRequest) returns (ListGatewaysResponse) {} + // Get the list of gateways. + rpc List(ListGatewaysRequest) returns (ListGatewaysResponse) { + option(google.api.http) = { + get: "/api/gateways" + }; + } - // Generate client-certificate for the gateway. - rpc GenerateClientCertificate(GenerateGatewayClientCertificateRequest) returns (GenerateGatewayClientCertificateResponse) {} + // Generate client-certificate for the gateway. + rpc GenerateClientCertificate(GenerateGatewayClientCertificateRequest) returns (GenerateGatewayClientCertificateResponse) { + option(google.api.http) = { + post: "/api/gateways/{gateway_id}/generate-certificate" + }; + } - // GetStats returns the gateway stats. - rpc GetStats(GetGatewayStatsRequest) returns (GetGatewayStatsResponse) {} + // GetMetrics returns the gateway metrics. + rpc GetMetrics(GetGatewayMetricsRequest) returns (GetGatewayMetricsResponse) { + option(google.api.http) = { + get: "/api/gateways/{gateway_id}/metrics" + }; + } } message Gateway { @@ -163,7 +194,7 @@ message GenerateGatewayClientCertificateResponse { google.protobuf.Timestamp expires_at = 4; } -message GetGatewayStatsRequest { +message GetGatewayMetricsRequest { // Gateway ID (EUI64). string gateway_id = 1; @@ -172,34 +203,30 @@ message GetGatewayStatsRequest { // Interval end timestamp. google.protobuf.Timestamp end = 3; + + // Aggregation. + common.Aggregation aggregation = 4; } -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 tx_packets_per_frequency = 4; - - // Rx packets per frequency. - map rx_packets_per_frequency = 5; - - // Tx packets per DR. - map tx_packets_per_dr = 6; - - // Rx packets per DR. - map rx_packets_per_dr = 7; - - // Tx packets per status. - map tx_packets_per_status = 8; +message GetGatewayMetricsResponse { + // RX packets. + common.Metric rx_packets = 1; + + // TX packets. + common.Metric tx_packets = 2; + + // TX packets / frequency. + common.Metric tx_packets_per_freq = 3; + + // RX packets / frequency. + common.Metric rx_packets_per_freq = 4; + + // TX packets / DR. + common.Metric tx_packets_per_dr = 5; + + // RX packets / DR. + common.Metric rx_packets_per_dr = 6; + + // TX packets per status. + common.Metric tx_packets_per_status = 7; } diff --git a/api/python/proto/chirpstack-api/api/internal.proto b/api/python/proto/chirpstack-api/api/internal.proto index 6ae2f710..961e1278 100644 --- a/api/python/proto/chirpstack-api/api/internal.proto +++ b/api/python/proto/chirpstack-api/api/internal.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package api; -option go_package = "github.com/chirpstack/chirpstack/api/go/v4"; +option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api"; option java_package = "io.chirpstack.api"; option java_multiple_files = true; option java_outer_classname = "InternalProto"; diff --git a/api/python/proto/chirpstack-api/api/multicast_group.proto b/api/python/proto/chirpstack-api/api/multicast_group.proto index 09b19f41..edec7187 100644 --- a/api/python/proto/chirpstack-api/api/multicast_group.proto +++ b/api/python/proto/chirpstack-api/api/multicast_group.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package api; -option go_package = "github.com/chirpstack/chirpstack/api/go/v4"; +option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api"; option java_package = "io.chirpstack.api"; option java_multiple_files = true; option java_outer_classname = "MulticastGroupProto"; @@ -16,34 +16,78 @@ 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) {} + rpc Create(CreateMulticastGroupRequest) returns (CreateMulticastGroupResponse) { + option(google.api.http) = { + post: "/api/multicast-groups" + body: "*" + }; + } // Get returns the multicast group for the given ID. - rpc Get(GetMulticastGroupRequest) returns (GetMulticastGroupResponse) {} + rpc Get(GetMulticastGroupRequest) returns (GetMulticastGroupResponse) { + option(google.api.http) = { + get: "/api/multicast-groups/{id}" + }; + } // Update the given multicast group. - rpc Update(UpdateMulticastGroupRequest) returns (google.protobuf.Empty) {} + rpc Update(UpdateMulticastGroupRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/multicast-groups/{multicast_group.id}" + body: "*" + }; + } // Delete the multicast-group with the given ID. - rpc Delete(DeleteMulticastGroupRequest) returns (google.protobuf.Empty) {} + rpc Delete(DeleteMulticastGroupRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/multicast-groups/{id}" + }; + } // List the available multicast groups. - rpc List(ListMulticastGroupsRequest) returns (ListMulticastGroupsResponse) {} + rpc List(ListMulticastGroupsRequest) returns (ListMulticastGroupsResponse) { + option(google.api.http) = { + get: "/api/multicast-groups" + }; + } // Add a device to the multicast group. - rpc AddDevice(AddDeviceToMulticastGroupRequest) returns (google.protobuf.Empty) {} + rpc AddDevice(AddDeviceToMulticastGroupRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/multicast-groups/{multicast_group_id}/devices" + body: "*" + }; + } // Remove a device from the multicast group. - rpc RemoveDevice(RemoveDeviceFromMulticastGroupRequest) returns (google.protobuf.Empty) {} + rpc RemoveDevice(RemoveDeviceFromMulticastGroupRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/multicast-groups/{multicast_group_id}/devices/{dev_eui}" + }; + } // Add the given item to the multcast group queue. - rpc Enqueue(EnqueueMulticastGroupQueueItemRequest) returns (EnqueueMulticastGroupQueueItemResponse) {} + rpc Enqueue(EnqueueMulticastGroupQueueItemRequest) returns (EnqueueMulticastGroupQueueItemResponse) { + option(google.api.http) = { + post: "/api/multcast-groups/{queue_item.multicast_group_id}/queue" + body: "*" + }; + } // Flush the queue for the given multicast group. - rpc FlushQueue(FlushMulticastGroupQueueRequest) returns (google.protobuf.Empty) {} + rpc FlushQueue(FlushMulticastGroupQueueRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/multicast-groups/{multicast_group_id}/queue" + }; + } // List the items in the multicast group queue. - rpc ListQueue(ListMulticastGroupQueueRequest) returns (ListMulticastGroupQueueResponse) {} + rpc ListQueue(ListMulticastGroupQueueRequest) returns (ListMulticastGroupQueueResponse) { + option(google.api.http) = { + get: "/api/multicast-groups/{multicast_group_id}/queue" + }; + } } enum MulticastGroupType { @@ -205,7 +249,7 @@ message MulticastGroupQueueItem { message EnqueueMulticastGroupQueueItemRequest { // Multicast queue-item to enqueue. - MulticastGroupQueueItem multicast_group_queue_item = 1; + MulticastGroupQueueItem queue_item = 1; } message EnqueueMulticastGroupQueueItemResponse { diff --git a/api/python/proto/chirpstack-api/api/tenant.proto b/api/python/proto/chirpstack-api/api/tenant.proto index 23b05b34..1bcfeb05 100644 --- a/api/python/proto/chirpstack-api/api/tenant.proto +++ b/api/python/proto/chirpstack-api/api/tenant.proto @@ -2,46 +2,91 @@ syntax = "proto3"; package api; -option go_package = "github.com/chirpstack/chirpstack/api/go/v4"; +option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api"; option java_package = "io.chirpstack.api"; option java_multiple_files = true; option java_outer_classname = "InternalProto"; +import "google/api/annotations.proto"; 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) {} + rpc Create(CreateTenantRequest) returns (CreateTenantResponse) { + option(google.api.http) = { + post: "/api/tenants" + body: "*" + }; + } // Get the tenant for the given ID. - rpc Get(GetTenantRequest) returns (GetTenantResponse) {} + rpc Get(GetTenantRequest) returns (GetTenantResponse) { + option(google.api.http) = { + get: "/api/tenants/{id}" + }; + } // Update the given tenant. - rpc Update(UpdateTenantRequest) returns (google.protobuf.Empty) {} + rpc Update(UpdateTenantRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/tenants/{tenant.id}" + body: "*" + }; + } // Delete the tenant with the given ID. - rpc Delete(DeleteTenantRequest) returns (google.protobuf.Empty) {} + rpc Delete(DeleteTenantRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/tenants/{id}" + }; + } // Get the list of tenants. - rpc List(ListTenantsRequest) returns (ListTenantsResponse) {} + rpc List(ListTenantsRequest) returns (ListTenantsResponse) { + option(google.api.http) = { + get: "/api/tenants" + }; + } // Add an user to the tenant. // Note: the user must already exist. - rpc AddUser(AddTenantUserRequest) returns (google.protobuf.Empty) {} + rpc AddUser(AddTenantUserRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/tenants/{tenant_user.tenant_id}/users" + body: "*" + }; + } // Get the the tenant user for the given tenant and user IDs. - rpc GetUser(GetTenantUserRequest) returns (GetTenantUserResponse) {} + rpc GetUser(GetTenantUserRequest) returns (GetTenantUserResponse) { + option(google.api.http) = { + get: "/api/tenants/{tenant_id}/users/{user_id}" + }; + } // Update the given tenant user. - rpc UpdateUser(UpdateTenantUserRequest) returns (google.protobuf.Empty) {} + rpc UpdateUser(UpdateTenantUserRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/tenants/{tenant_user.tenant_id}/users/{tenant_user.user_id}" + body: "*" + }; + } // Delete the given tenant user. - rpc DeleteUser(DeleteTenantUserRequest) returns (google.protobuf.Empty) {} + rpc DeleteUser(DeleteTenantUserRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/tenants/{tenant_id}/users/{user_id}" + }; + } // Get the list of tenant users. - rpc ListUsers(ListTenantUsersRequest) returns (ListTenantUsersResponse) {} + rpc ListUsers(ListTenantUsersRequest) returns (ListTenantUsersResponse) { + option(google.api.http) = { + get: "/api/tenants/{tenant_id}/users" + }; + } } message Tenant { diff --git a/api/python/proto/chirpstack-api/api/user.proto b/api/python/proto/chirpstack-api/api/user.proto index cc9838fa..efc347a4 100644 --- a/api/python/proto/chirpstack-api/api/user.proto +++ b/api/python/proto/chirpstack-api/api/user.proto @@ -2,11 +2,12 @@ syntax = "proto3"; package api; -option go_package = "github.com/chirpstack/chirpstack/api/go/v4"; +option go_package = "github.com/chirpstack/chirpstack/api/go/v4/api"; option java_package = "io.chirpstack.api"; option java_multiple_files = true; option java_outer_classname = "UserProto"; +import "google/api/annotations.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/empty.proto"; @@ -14,22 +15,49 @@ 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) {} + rpc Create(CreateUserRequest) returns (CreateUserResponse) { + option(google.api.http) = { + post: "/api/users" + body: "*" + }; + } // Get the user for the given ID. - rpc Get(GetUserRequest) returns (GetUserResponse) {} + rpc Get(GetUserRequest) returns (GetUserResponse) { + option(google.api.http) = { + get: "/api/users/{id}" + }; + } // Update the given user. - rpc Update(UpdateUserRequest) returns (google.protobuf.Empty) {} + rpc Update(UpdateUserRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + put: "/api/users/{user.id}" + body: "*" + }; + } // Delete the user with the given ID. - rpc Delete(DeleteUserRequest) returns (google.protobuf.Empty) {} + rpc Delete(DeleteUserRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + delete: "/api/users/{id}" + }; + } // Get the list of users. - rpc List(ListUsersRequest) returns (ListUsersResponse) {} + rpc List(ListUsersRequest) returns (ListUsersResponse) { + option(google.api.http) = { + get: "/api/users" + }; + } // Update the password for the given user. - rpc UpdatePassword(UpdateUserPasswordRequest) returns (google.protobuf.Empty) {} + rpc UpdatePassword(UpdateUserPasswordRequest) returns (google.protobuf.Empty) { + option(google.api.http) = { + post: "/api/users/{user_id}/password" + body: "*" + }; + } } message User { diff --git a/api/python/proto/chirpstack-api/common/common.proto b/api/python/proto/chirpstack-api/common/common.proto index d5d6caaf..791bd235 100644 --- a/api/python/proto/chirpstack-api/common/common.proto +++ b/api/python/proto/chirpstack-api/common/common.proto @@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api"; option java_multiple_files = true; option java_outer_classname = "CommonProto"; +import "google/protobuf/timestamp.proto"; + enum Modulation { // LoRa LORA = 0; @@ -129,6 +131,17 @@ enum LocationSource { GEO_RESOLVER_WIFI = 6; } +enum Aggregation { + // Hour. + HOUR = 0; + + // Day. + DAY = 1; + + // Month. + MONTH = 2; +} + message Location { // Latitude. double latitude = 1; @@ -153,3 +166,23 @@ message KeyEnvelope { // AES key (when the kek_label is set, this value must first be decrypted). bytes aes_key = 2; } + +message Metric { + // Name. + string name = 1; + + // Timestamps. + repeated google.protobuf.Timestamp timestamps = 2; + + // Datasets. + repeated MetricDataset datasets = 3; +} + +message MetricDataset { + // Label. + string label = 1; + + // Data. + // Each value index corresponds with the same timestamp index of the Metric. + repeated float data = 2; +} diff --git a/api/python/proto/chirpstack-api/gw/gw.proto b/api/python/proto/chirpstack-api/gw/gw.proto index ffc00494..e0a0e971 100644 --- a/api/python/proto/chirpstack-api/gw/gw.proto +++ b/api/python/proto/chirpstack-api/gw/gw.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package gw; -option go_package = "github.com/chirpstack/chirpstack-api/go/v4/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"; @@ -10,8 +10,17 @@ 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; +} + enum DownlinkTiming { // Send the downlink immediately. IMMEDIATELY = 0; @@ -23,7 +32,6 @@ enum DownlinkTiming { GPS_EPOCH = 2; } - enum FineTimestampType { // No fine-timestamp available. NONE = 0; @@ -84,17 +92,17 @@ enum TxAckStatus { message Modulation { oneof parameters { // LoRa modulation information. - LoRaModulationInfo lora = 3 [json_name = "loRa"]; + LoraModulationInfo lora = 3; // FSK modulation information. - FSKModulationInfo fsk = 4; + FskModulationInfo fsk = 4; // LR-FHSS modulation information. - LRFHSSModulationInfo lr_fhss = 5 [json_name = "lrFHSS"]; + LrFhssModulationInfo lr_fhss = 5; } } -message UplinkTXInfo { +message UplinkTxInfoLegacy { // Frequency (Hz). uint32 frequency = 1; @@ -103,17 +111,25 @@ message UplinkTXInfo { oneof modulation_info { // LoRa modulation information. - LoRaModulationInfo lora_modulation_info = 3 [json_name = "loRaModulationInfo"]; + LoraModulationInfo lora_modulation_info = 3; // FSK modulation information. - FSKModulationInfo fsk_modulation_info = 4; + FskModulationInfo fsk_modulation_info = 4; // LR-FHSS modulation information. - LRFHSSModulationInfo lr_fhss_modulation_info = 5 [json_name = "lrFHSSModulationInfo"]; + LrFhssModulationInfo lr_fhss_modulation_info = 5; } } -message LoRaModulationInfo { +message UplinkTxInfo { + // Frequency (Hz). + uint32 frequency = 1; + + // Modulation. + Modulation modulation = 2; +} + +message LoraModulationInfo { // Bandwidth. uint32 bandwidth = 1; @@ -121,13 +137,16 @@ message LoRaModulationInfo { uint32 spreading_factor = 2; // Code-rate. - string code_rate = 3; + string code_rate_legacy = 3; + + // Code-rate. + CodeRate code_rate = 5; // Polarization inversion. bool polarization_inversion = 4; } -message FSKModulationInfo { +message FskModulationInfo { // Frequency deviation. uint32 frequency_deviation = 1; @@ -135,7 +154,7 @@ message FSKModulationInfo { uint32 datarate = 2; } -message LRFHSSModulationInfo { +message LrFhssModulationInfo { // Operating channel width (OCW) in Hz. uint32 operating_channel_width = 1; @@ -151,10 +170,10 @@ message EncryptedFineTimestamp { uint32 aes_key_index = 1; // Encrypted 'main' fine-timestamp (ns precision part of the timestamp). - bytes encrypted_ns = 2 [json_name = "encryptedNS"]; + bytes encrypted_ns = 2; // FPGA ID. - bytes fpga_id = 3 [json_name = "fpgaID"]; + bytes fpga_id = 3; } message PlainFineTimestamp { @@ -164,7 +183,7 @@ message PlainFineTimestamp { message GatewayStats { // Gateway ID. - bytes gateway_id = 1 [json_name = "gatewayID"]; + bytes gateway_id = 1; // Gateway IP. string ip = 9; @@ -183,7 +202,7 @@ message GatewayStats { uint32 rx_packets_received = 5; // Number of radio packets received with valid PHY CRC. - uint32 rx_packets_received_ok = 6 [json_name = "rxPacketsReceivedOK"]; + uint32 rx_packets_received_ok = 6; // Number of downlink packets received for transmission. uint32 tx_packets_received = 7; @@ -196,7 +215,7 @@ message GatewayStats { // Stats ID (UUID). // Unique identifier for the gateway stats. - bytes stats_id = 11 [json_name = "statsID"]; + bytes stats_id = 11; // Tx packets per frequency. map tx_packets_per_frequency = 12; @@ -222,21 +241,21 @@ message PerModulationCount { uint32 count = 2; } -message UplinkRXInfo { +message UplinkRxInfoLegacy { // Gateway ID. - bytes gateway_id = 1 [json_name = "gatewayID"]; + bytes gateway_id = 1; // 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"]; + google.protobuf.Duration time_since_gps_epoch = 3; // RSSI. int32 rssi = 5; // LoRa SNR. - double lora_snr = 6 [json_name = "loRaSNR"]; + double lora_snr = 6; // Channel. uint32 channel = 7; @@ -270,19 +289,60 @@ message UplinkRXInfo { // 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"]; + bytes uplink_id = 16; // CRC status. - CRCStatus crc_status = 17 [json_name = "crcStatus"]; + CRCStatus crc_status = 17; // Optional meta-data map. map metadata = 18; } -message DownlinkTXInfo { +message UplinkRxInfo { + // Gateway ID. + string gateway_id = 1; + + // Uplink ID. + uint32 uplink_id = 2; + + // RX time (only set when the gateway has a GPS module). + 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 metadata = 12; +} + +message DownlinkTxInfoLegacy { // Gateway ID. // Deprecated: replaced by gateway_id in DownlinkFrame. - bytes gateway_id = 1 [json_name = "gatewayID"]; + bytes gateway_id = 1; // TX frequency (in Hz). uint32 frequency = 5; @@ -295,10 +355,10 @@ message DownlinkTXInfo { oneof modulation_info { // LoRa modulation information. - LoRaModulationInfo lora_modulation_info = 8 [json_name = "loRaModulationInfo"]; + LoraModulationInfo lora_modulation_info = 8; // FSK modulation information. - FSKModulationInfo fsk_modulation_info = 9; + FskModulationInfo fsk_modulation_info = 9; } // The board identifier for emitting the frame. @@ -326,6 +386,43 @@ message DownlinkTXInfo { bytes context = 16; } +message DownlinkTxInfo { + // TX frequency (in Hz). + uint32 frequency = 1; + + // TX power (in 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; + + // Timing. + Timing timing = 6; + + // Gateway specific context. + // In case of a Class-A downlink, this contains a copy of the uplink context. + bytes context = 7; +} + +message Timing { + oneof parameters { + // Immediately timing information. + ImmediatelyTimingInfo immediately = 1; + + // Context based delay timing information. + DelayTimingInfo delay = 2; + + // GPS Epoch timing information. + GPSEpochTimingInfo gps_epoch = 3; + } +} + message ImmediatelyTimingInfo { // Not implemented yet. } @@ -339,18 +436,24 @@ message DelayTimingInfo { message GPSEpochTimingInfo { // Duration since GPS Epoch. - google.protobuf.Duration time_since_gps_epoch = 1 [json_name = "timeSinceGPSEpoch"]; + google.protobuf.Duration time_since_gps_epoch = 1; } message UplinkFrame { // PHYPayload. bytes phy_payload = 1; - // TX meta-data. - UplinkTXInfo tx_info = 2; + // TX meta-data (deprecated). + UplinkTxInfoLegacy tx_info_legacy = 2; - // RX meta-data. - UplinkRXInfo rx_info = 3; + // RX meta-data (deprecated). + UplinkRxInfoLegacy rx_info_legacy = 3; + + // Tx meta-data. + UplinkTxInfo tx_info = 4; + + // Rx meta-data. + UplinkRxInfo rx_info = 5; } message UplinkFrameSet { @@ -358,27 +461,19 @@ message UplinkFrameSet { bytes phy_payload = 1; // TX meta-data. - UplinkTXInfo tx_info = 2; + UplinkTxInfo tx_info = 2; // RX meta-data set. - repeated UplinkRXInfo rx_info = 3; + 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. + uint32 downlink_id = 3; // Downlink ID (UUID). - bytes downlink_id = 4 [json_name = "downlinkID"]; + // Deprecated: use downlink_id. + bytes downlink_id_legacy = 4; // Downlink frame items. // This makes it possible to send multiple downlink opportunities to the @@ -388,47 +483,52 @@ message DownlinkFrame { repeated DownlinkFrameItem items = 5; // Gateway ID. - bytes gateway_id = 6 [json_name = "gatewayID"]; + // Deprecated: use gateway_id + bytes gateway_id_legacy = 6; + + // Gateway ID. + string gateway_id = 7; } message DownlinkFrameItem { // PHYPayload. bytes phy_payload = 1; - // TX meta-data. - DownlinkTXInfo tx_info = 2; + // TX meta-data (deprecated). + DownlinkTxInfoLegacy tx_info_legacy = 2; + + // Tx meta-data. + DownlinkTxInfo tx_info = 3; } -message DownlinkTXAck { +message DownlinkTxAck { + // Gateway ID (deprecated). + bytes gateway_id_legacy = 1; + // Gateway ID. - bytes gateway_id = 1 [json_name = "gatewayID"]; + string gateway_id = 6; - // Token (uint16 value). - // Deprecated: replaced by downlink_id. - uint32 token = 2; + // Downlink ID. + uint32 downlink_id = 2; - // Error. - // Deprecated: replaced by items. - string error = 3; - - // Downlink ID (UUID). - bytes downlink_id = 4 [json_name = "downlinkID"]; + // Downlink ID (deprecated). + bytes downlink_id_legacy = 4; // 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; + repeated DownlinkTxAckItem items = 5; } -message DownlinkTXAckItem { +message DownlinkTxAckItem { // The Ack status of this item. TxAckStatus status = 1; } message GatewayConfiguration { // Gateway ID. - bytes gateway_id = 1 [json_name = "gatewayID"]; + bytes gateway_id = 1; // Configuration version. string version = 2; @@ -449,7 +549,7 @@ message ChannelConfiguration { oneof modulation_config { // LoRa modulation config. - LoRaModulationConfig lora_modulation_config = 3 [json_name = "loRaModulationConfig"]; + LoRaModulationConfig lora_modulation_config = 3; // FSK modulation config. FSKModulationConfig fsk_modulation_config = 4; @@ -480,7 +580,7 @@ message FSKModulationConfig { message GatewayCommandExecRequest { // Gateway ID. - bytes gateway_id = 1 [json_name = "gatewayID"]; + bytes gateway_id = 1; // Command to execute. // This command must be pre-configured in the LoRa Gateway Bridge configuration. @@ -489,7 +589,7 @@ message GatewayCommandExecRequest { // Execution request ID (UUID). // The same token will be returned when the execution of the command has // completed. - bytes ExecId = 3 [json_name = "execID"]; + bytes ExecId = 3; // Standard input. bytes stdin = 4; @@ -500,10 +600,10 @@ message GatewayCommandExecRequest { message GatewayCommandExecResponse { // Gateway ID. - bytes gateway_id = 1 [json_name = "gatewayID"]; + bytes gateway_id = 1; // Execution request ID (UUID). - bytes exec_id = 2 [json_name = "execID"]; + bytes exec_id = 2; // Standard output. bytes stdout = 3; @@ -520,10 +620,10 @@ message GatewayCommandExecResponse { // integrated with the ChirpStack Gateway Bridge. message RawPacketForwarderEvent { // Gateway ID. - bytes gateway_id = 1 [json_name = "gatewayID"]; + bytes gateway_id = 1; // Raw ID (UUID). - bytes raw_id = 2 [json_name = "rawID"]; + bytes raw_id = 2; // Payload contains the raw payload. bytes payload = 3; @@ -534,10 +634,10 @@ message RawPacketForwarderEvent { // integrated with the ChirpStack Gateway Bridge. message RawPacketForwarderCommand { // Gateway ID. - bytes gateway_id = 1 [json_name = "gatewayID"]; + bytes gateway_id = 1; // Raw ID (UUID). - bytes raw_id = 2 [json_name = "rawID"]; + bytes raw_id = 2; // Payload contains the raw payload. bytes payload = 3; @@ -546,7 +646,7 @@ message RawPacketForwarderCommand { // ConnState contains the connection state of a gateway. message ConnState { // Gateway ID. - bytes gateway_id = 1 [json_name = "gatewayID"]; + bytes gateway_id = 1; enum State { OFFLINE = 0; diff --git a/api/python/proto/chirpstack-api/gw/gw_new.proto b/api/python/proto/chirpstack-api/gw/gw_new.proto deleted file mode 100644 index 008956a9..00000000 --- a/api/python/proto/chirpstack-api/gw/gw_new.proto +++ /dev/null @@ -1,202 +0,0 @@ -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; -} diff --git a/api/python/proto/chirpstack-api/integration/integration.proto b/api/python/proto/chirpstack-api/integration/integration.proto index bb9050ea..d5bf0f22 100644 --- a/api/python/proto/chirpstack-api/integration/integration.proto +++ b/api/python/proto/chirpstack-api/integration/integration.proto @@ -104,7 +104,7 @@ message UplinkEvent { uint32 dr = 6; // Frame counter. - uint32 f_cnt_up = 7; + uint32 f_cnt = 7; // Frame port. uint32 f_port = 8; @@ -119,10 +119,10 @@ message UplinkEvent { google.protobuf.Struct object = 11; // Receiving gateway RX info. - repeated gw.UplinkRXInfo rx_info = 12; + repeated gw.UplinkRxInfo rx_info = 12; // TX info. - gw.UplinkTXInfo tx_info = 13; + gw.UplinkTxInfo tx_info = 13; } // JoinEvent is the message sent when a device joined the network. @@ -167,8 +167,8 @@ message AckEvent { // 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; + // Downlink ID. + uint32 downlink_id = 1; // Timestamp. google.protobuf.Timestamp time = 2; @@ -186,31 +186,28 @@ message TxAckEvent { string gateway_id = 6; // TX info. - gw.DownlinkTXInfo tx_info = 7; + 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; + google.protobuf.Timestamp time = 1; // Device info. - DeviceInfo device_info = 3; + DeviceInfo device_info = 2; // Log level. - LogLevel level = 4; + LogLevel level = 3; // Log code. - LogCode code = 5; + LogCode code = 4; // Description message. - string description = 6; + string description = 5; // Context map. - map context = 7; + map context = 6; } // StatusEvent is the message sent when a device-status mac-command was sent @@ -276,3 +273,28 @@ message IntegrationEvent { // Struct containing the event object. google.protobuf.Struct object = 6; } + +// DownlinkCommand is the command to enqueue a downlink payload for the given +// device. +message DownlinkCommand { + // ID (UUID). + // If left blank, a random UUID will be generated. + 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; +} diff --git a/api/python/proto/chirpstack-api/internal/internal.proto b/api/python/proto/chirpstack-api/internal/internal.proto index 2df5d016..72aa5485 100644 --- a/api/python/proto/chirpstack-api/internal/internal.proto +++ b/api/python/proto/chirpstack-api/internal/internal.proto @@ -199,8 +199,8 @@ message DeviceGatewayRxInfoItem { } message DownlinkFrame { - // Downlink ID (UUID). - bytes downlink_id = 1; + // Downlink ID. + uint32 downlink_id = 1; // DevEUI. bytes dev_eui = 2; @@ -231,5 +231,36 @@ message LoraCloudGeolocBuffer { message LoraCloudGeolocBufferUplink { // RxInfo set for a single uplink. - repeated gw.UplinkRXInfo rx_info = 1; + repeated gw.UplinkRxInfo rx_info = 1; +} + +message PassiveRoamingDeviceSession { + // Session ID (UUID). + // Unfortunately we can not use the DevEUI as unique identifier + // as the PRStartAns DevEUI field is optional. + bytes session_id = 1; + + // NetID of the hNS. + bytes net_id = 2; + + // DevAddr of the device. + bytes dev_addr = 3; + + // DevEUI of the device (optional). + bytes dev_eui = 4; + + // LoRaWAN 1.1. + bool lorawan_1_1 = 5; + + // LoRaWAN 1.0 NwkSKey / LoRaWAN 1.1 FNwkSIntKey. + bytes f_nwk_s_int_key = 6; + + // Lifetime. + google.protobuf.Timestamp lifetime = 7; + + // Uplink frame-counter. + uint32 f_cnt_up = 8; + + // Validate MIC. + bool validate_mic = 9; } diff --git a/api/python/proto/chirpstack-api/meta/meta.proto b/api/python/proto/chirpstack-api/meta/meta.proto index 9f21932f..4422b2bc 100644 --- a/api/python/proto/chirpstack-api/meta/meta.proto +++ b/api/python/proto/chirpstack-api/meta/meta.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package meta; -option go_package = "github.com/chirpstack/chirpstack-api/go/v4/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"; @@ -16,10 +16,10 @@ message UplinkMeta { string dev_eui = 1; // TX meta-data. - gw.UplinkTXInfo tx_info = 2; + gw.UplinkTxInfo tx_info = 2; // RX meta-data. - repeated gw.UplinkRXInfo rx_info = 3; + repeated gw.UplinkRxInfo rx_info = 3; // PHYPayload byte count. uint32 phy_payload_byte_count = 4; @@ -42,7 +42,7 @@ message DownlinkMeta { string multicast_group_id = 2; // TX meta-data. - gw.DownlinkTXInfo tx_info = 3; + gw.DownlinkTxInfo tx_info = 3; // PHYPayload byte count. uint32 phy_payload_byte_count = 4; diff --git a/api/python/src/chirpstack_api/__init__.py b/api/python/src/chirpstack_api/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/api/python/src/chirpstack_api/api/__init__.py b/api/python/src/chirpstack_api/api/__init__.py new file mode 100644 index 00000000..92c59ce1 --- /dev/null +++ b/api/python/src/chirpstack_api/api/__init__.py @@ -0,0 +1,20 @@ +from .application_pb2 import * +from .application_pb2_grpc import * +from .device_pb2 import * +from .device_pb2_grpc import * +from .device_profile_pb2 import * +from .device_profile_pb2_grpc import * +from .device_profile_template_pb2 import * +from .device_profile_template_pb2_grpc import * +from .frame_log_pb2 import * +from .frame_log_pb2_grpc import * +from .gateway_pb2 import * +from .gateway_pb2_grpc import * +from .internal_pb2 import * +from .internal_pb2_grpc import * +from .multicast_group_pb2 import * +from .multicast_group_pb2_grpc import * +from .tenant_pb2 import * +from .tenant_pb2_grpc import * +from .user_pb2 import * +from .user_pb2_grpc import * diff --git a/api/python/src/chirpstack_api/api/application_pb2.py b/api/python/src/chirpstack_api/api/application_pb2.py index f858997b..da5e34e7 100644 --- a/api/python/src/chirpstack_api/api/application_pb2.py +++ b/api/python/src/chirpstack_api/api/application_pb2.py @@ -13,11 +13,12 @@ from google.protobuf import symbol_database as _symbol_database _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 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$chirpstack-api/api/application.proto\x12\x03\x61pi\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"O\n\x0b\x41pplication\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\x11\n\ttenant_id\x18\x04 \x01(\t\"\xa4\x01\n\x13\x41pplicationListItem\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\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\"A\n\x18\x43reateApplicationRequest\x12%\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32\x10.api.Application\"\'\n\x19\x43reateApplicationResponse\x12\n\n\x02id\x18\x01 \x01(\t\"#\n\x15GetApplicationRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x9f\x01\n\x16GetApplicationResponse\x12%\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32\x10.api.Application\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\"A\n\x18UpdateApplicationRequest\x12%\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32\x10.api.Application\"&\n\x18\x44\x65leteApplicationRequest\x12\n\n\x02id\x18\x01 \x01(\t\"[\n\x17ListApplicationsRequest\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\"Y\n\x18ListApplicationsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12(\n\x06result\x18\x02 \x03(\x0b\x32\x18.api.ApplicationListItem\"1\n\x17ListIntegrationsRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"9\n\x13IntegrationListItem\x12\"\n\x04kind\x18\x01 \x01(\x0e\x32\x14.api.IntegrationKind\"Y\n\x18ListIntegrationsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12(\n\x06result\x18\x02 \x03(\x0b\x32\x18.api.IntegrationListItem\"\xca\x01\n\x0fHttpIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x32\n\x07headers\x18\x02 \x03(\x0b\x32!.api.HttpIntegration.HeadersEntry\x12\x1f\n\x08\x65ncoding\x18\x03 \x01(\x0e\x32\r.api.Encoding\x12\x1a\n\x12\x65vent_endpoint_url\x18\x04 \x01(\t\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"I\n\x1c\x43reateHttpIntegrationRequest\x12)\n\x0bintegration\x18\x01 \x01(\x0b\x32\x14.api.HttpIntegration\"3\n\x19GetHttpIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"G\n\x1aGetHttpIntegrationResponse\x12)\n\x0bintegration\x18\x01 \x01(\x0b\x32\x14.api.HttpIntegration\"I\n\x1cUpdateHttpIntegrationRequest\x12)\n\x0bintegration\x18\x01 \x01(\x0b\x32\x14.api.HttpIntegration\"6\n\x1c\x44\x65leteHttpIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x95\x02\n\x13InfluxDbIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\x12\n\n\x02\x64\x62\x18\x03 \x01(\t\x12\x10\n\x08username\x18\x04 \x01(\t\x12\x10\n\x08password\x18\x05 \x01(\t\x12\x1d\n\x15retention_policy_name\x18\x06 \x01(\t\x12)\n\tprecision\x18\x07 \x01(\x0e\x32\x16.api.InfluxDbPrecision\x12%\n\x07version\x18\x08 \x01(\x0e\x32\x14.api.InfluxDbVersion\x12\r\n\x05token\x18\t \x01(\t\x12\x14\n\x0corganization\x18\n \x01(\t\x12\x0e\n\x06\x62ucket\x18\x0b \x01(\t\"Q\n CreateInfluxDbIntegrationRequest\x12-\n\x0bintegration\x18\x01 \x01(\x0b\x32\x18.api.InfluxDbIntegration\"7\n\x1dGetInfluxDbIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"O\n\x1eGetInfluxDbIntegrationResponse\x12-\n\x0bintegration\x18\x01 \x01(\x0b\x32\x18.api.InfluxDbIntegration\"Q\n UpdateInfluxDbIntegrationRequest\x12-\n\x0bintegration\x18\x01 \x01(\x0b\x32\x18.api.InfluxDbIntegration\":\n DeleteInfluxDbIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"@\n\x16ThingsBoardIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x0e\n\x06server\x18\x02 \x01(\t\"W\n#CreateThingsBoardIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.ThingsBoardIntegration\":\n GetThingsBoardIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"U\n!GetThingsBoardIntegrationResponse\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.ThingsBoardIntegration\"W\n#UpdateThingsBoardIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.ThingsBoardIntegration\"=\n#DeleteThingsBoardIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"@\n\x14MyDevicesIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\"S\n!CreateMyDevicesIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.MyDevicesIntegration\"8\n\x1eGetMyDevicesIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"Q\n\x1fGetMyDevicesIntegrationResponse\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.MyDevicesIntegration\"S\n!UpdateMyDevicesIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.MyDevicesIntegration\";\n!DeleteMyDevicesIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"z\n\x14LoraCloudIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12J\n\x1amodem_geolocation_services\x18\x02 \x01(\x0b\x32&.api.LoraCloudModemGeolocationServices\"\xc0\x03\n!LoraCloudModemGeolocationServices\x12\r\n\x05token\x18\x01 \x01(\t\x12\x15\n\rmodem_enabled\x18\x02 \x01(\x08\x12\x12\n\nmodem_port\x18\x03 \x01(\r\x12\x11\n\tgnss_port\x18\x04 \x01(\r\x12\x18\n\x10gnss_use_rx_time\x18\x05 \x01(\x08\x12\x11\n\tparse_tlv\x18\x06 \x01(\x08\x12\x1e\n\x16geolocation_buffer_ttl\x18\x07 \x01(\r\x12#\n\x1bgeolocation_min_buffer_size\x18\x08 \x01(\r\x12\x18\n\x10geolocation_tdoa\x18\t \x01(\x08\x12\x18\n\x10geolocation_rssi\x18\n \x01(\x08\x12\x18\n\x10geolocation_gnss\x18\x0b \x01(\x08\x12&\n\x1egeolocation_gnss_payload_field\x18\x0c \x01(\t\x12$\n\x1cgeolocation_gnss_use_rx_time\x18\r \x01(\x08\x12\x18\n\x10geolocation_wifi\x18\x0e \x01(\x08\x12&\n\x1egeolocation_wifi_payload_field\x18\x0f \x01(\t\"S\n!CreateLoraCloudIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.LoraCloudIntegration\"8\n\x1eGetLoraCloudIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"Q\n\x1fGetLoraCloudIntegrationResponse\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.LoraCloudIntegration\"S\n!UpdateLoraCloudIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.LoraCloudIntegration\";\n!DeleteLoraCloudIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x91\x01\n\x14GcpPubSubIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x1f\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\r.api.Encoding\x12\x18\n\x10\x63redentials_file\x18\x03 \x01(\t\x12\x12\n\nproject_id\x18\x04 \x01(\t\x12\x12\n\ntopic_name\x18\x05 \x01(\t\"S\n!CreateGcpPubSubIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.GcpPubSubIntegration\"8\n\x1eGetGcpPubSubIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"Q\n\x1fGetGcpPubSubIntegrationResponse\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.GcpPubSubIntegration\"S\n!UpdateGcpPubSubIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.GcpPubSubIntegration\";\n!DeleteGcpPubSubIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\xa1\x01\n\x11\x41wsSnsIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x1f\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\r.api.Encoding\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x15\n\raccess_key_id\x18\x04 \x01(\t\x12\x19\n\x11secret_access_key\x18\x05 \x01(\t\x12\x11\n\ttopic_arn\x18\x06 \x01(\t\"M\n\x1e\x43reateAwsSnsIntegrationRequest\x12+\n\x0bintegration\x18\x01 \x01(\x0b\x32\x16.api.AwsSnsIntegration\"5\n\x1bGetAwsSnsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"K\n\x1cGetAwsSnsIntegrationResponse\x12+\n\x0bintegration\x18\x01 \x01(\x0b\x32\x16.api.AwsSnsIntegration\"M\n\x1eUpdateAwsSnsIntegrationRequest\x12+\n\x0bintegration\x18\x01 \x01(\x0b\x32\x16.api.AwsSnsIntegration\"8\n\x1e\x44\x65leteAwsSnsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x86\x01\n\x1a\x41zureServiceBusIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x1f\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\r.api.Encoding\x12\x19\n\x11\x63onnection_string\x18\x03 \x01(\t\x12\x14\n\x0cpublish_name\x18\x04 \x01(\t\"_\n\'CreateAzureServiceBusIntegrationRequest\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\">\n$GetAzureServiceBusIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"]\n%GetAzureServiceBusIntegrationResponse\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\"_\n\'UpdateAzureServiceBusIntegrationRequest\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\"A\n\'DeleteAzureServiceBusIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"O\n\x16PilotThingsIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x0e\n\x06server\x18\x02 \x01(\t\x12\r\n\x05token\x18\x03 \x01(\t\"W\n#CreatePilotThingsIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\":\n GetPilotThingsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"U\n!GetPilotThingsIntegrationResponse\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\"W\n#UpdatePilotThingsIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\"=\n#DeletePilotThingsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"I\n/GenerateMqttIntegrationClientCertificateRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x96\x01\n0GenerateMqttIntegrationClientCertificateResponse\x12\x10\n\x08tls_cert\x18\x01 \x01(\t\x12\x0f\n\x07tls_key\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61_cert\x18\x03 \x01(\t\x12.\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp*\"\n\x08\x45ncoding\x12\x08\n\x04JSON\x10\x00\x12\x0c\n\x08PROTOBUF\x10\x01*\xb4\x01\n\x0fIntegrationKind\x12\x08\n\x04HTTP\x10\x00\x12\r\n\tINFLUX_DB\x10\x01\x12\x10\n\x0cTHINGS_BOARD\x10\x02\x12\x0e\n\nMY_DEVICES\x10\x03\x12\x0e\n\nLORA_CLOUD\x10\x04\x12\x0f\n\x0bGCP_PUB_SUB\x10\x05\x12\x0b\n\x07\x41WS_SNS\x10\x06\x12\x15\n\x11\x41ZURE_SERVICE_BUS\x10\x07\x12\x10\n\x0cPILOT_THINGS\x10\x08\x12\x0f\n\x0bMQTT_GLOBAL\x10\t*?\n\x11InfluxDbPrecision\x12\x06\n\x02NS\x10\x00\x12\x05\n\x01U\x10\x01\x12\x06\n\x02MS\x10\x02\x12\x05\n\x01S\x10\x03\x12\x05\n\x01M\x10\x04\x12\x05\n\x01H\x10\x05*1\n\x0fInfluxDbVersion\x12\x0e\n\nINFLUXDB_1\x10\x00\x12\x0e\n\nINFLUXDB_2\x10\x01\x32\xae \n\x12\x41pplicationService\x12I\n\x06\x43reate\x12\x1d.api.CreateApplicationRequest\x1a\x1e.api.CreateApplicationResponse\"\x00\x12@\n\x03Get\x12\x1a.api.GetApplicationRequest\x1a\x1b.api.GetApplicationResponse\"\x00\x12\x41\n\x06Update\x12\x1d.api.UpdateApplicationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x41\n\x06\x44\x65lete\x12\x1d.api.DeleteApplicationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x45\n\x04List\x12\x1c.api.ListApplicationsRequest\x1a\x1d.api.ListApplicationsResponse\"\x00\x12Q\n\x10ListIntegrations\x12\x1c.api.ListIntegrationsRequest\x1a\x1d.api.ListIntegrationsResponse\"\x00\x12T\n\x15\x43reateHttpIntegration\x12!.api.CreateHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12W\n\x12GetHttpIntegration\x12\x1e.api.GetHttpIntegrationRequest\x1a\x1f.api.GetHttpIntegrationResponse\"\x00\x12T\n\x15UpdateHttpIntegration\x12!.api.UpdateHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12T\n\x15\x44\x65leteHttpIntegration\x12!.api.DeleteHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\\\n\x19\x43reateInfluxDbIntegration\x12%.api.CreateInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x63\n\x16GetInfluxDbIntegration\x12\".api.GetInfluxDbIntegrationRequest\x1a#.api.GetInfluxDbIntegrationResponse\"\x00\x12\\\n\x19UpdateInfluxDbIntegration\x12%.api.UpdateInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\\\n\x19\x44\x65leteInfluxDbIntegration\x12%.api.DeleteInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x62\n\x1c\x43reateThingsBoardIntegration\x12(.api.CreateThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12l\n\x19GetThingsBoardIntegration\x12%.api.GetThingsBoardIntegrationRequest\x1a&.api.GetThingsBoardIntegrationResponse\"\x00\x12\x62\n\x1cUpdateThingsBoardIntegration\x12(.api.UpdateThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x62\n\x1c\x44\x65leteThingsBoardIntegration\x12(.api.DeleteThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12^\n\x1a\x43reateMyDevicesIntegration\x12&.api.CreateMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x17GetMyDevicesIntegration\x12#.api.GetMyDevicesIntegrationRequest\x1a$.api.GetMyDevicesIntegrationResponse\"\x00\x12^\n\x1aUpdateMyDevicesIntegration\x12&.api.UpdateMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12^\n\x1a\x44\x65leteMyDevicesIntegration\x12&.api.DeleteMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12^\n\x1a\x43reateLoraCloudIntegration\x12&.api.CreateLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x17GetLoraCloudIntegration\x12#.api.GetLoraCloudIntegrationRequest\x1a$.api.GetLoraCloudIntegrationResponse\"\x00\x12^\n\x1aUpdateLoraCloudIntegration\x12&.api.UpdateLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12^\n\x1a\x44\x65leteLoraCloudIntegration\x12&.api.DeleteLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12^\n\x1a\x43reateGcpPubSubIntegration\x12&.api.CreateGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x17GetGcpPubSubIntegration\x12#.api.GetGcpPubSubIntegrationRequest\x1a$.api.GetGcpPubSubIntegrationResponse\"\x00\x12^\n\x1aUpdateGcpPubSubIntegration\x12&.api.UpdateGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12^\n\x1a\x44\x65leteGcpPubSubIntegration\x12&.api.DeleteGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12X\n\x17\x43reateAwsSnsIntegration\x12#.api.CreateAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12]\n\x14GetAwsSnsIntegration\x12 .api.GetAwsSnsIntegrationRequest\x1a!.api.GetAwsSnsIntegrationResponse\"\x00\x12X\n\x17UpdateAwsSnsIntegration\x12#.api.UpdateAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12X\n\x17\x44\x65leteAwsSnsIntegration\x12#.api.DeleteAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n CreateAzureServiceBusIntegration\x12,.api.CreateAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12x\n\x1dGetAzureServiceBusIntegration\x12).api.GetAzureServiceBusIntegrationRequest\x1a*.api.GetAzureServiceBusIntegrationResponse\"\x00\x12j\n UpdateAzureServiceBusIntegration\x12,.api.UpdateAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n DeleteAzureServiceBusIntegration\x12,.api.DeleteAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x62\n\x1c\x43reatePilotThingsIntegration\x12(.api.CreatePilotThingsIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12l\n\x19GetPilotThingsIntegration\x12%.api.GetPilotThingsIntegrationRequest\x1a&.api.GetPilotThingsIntegrationResponse\"\x00\x12\x62\n\x1cUpdatePilotThingsIntegration\x12(.api.UpdatePilotThingsIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x62\n\x1c\x44\x65letePilotThingsIntegration\x12(.api.DeletePilotThingsIntegrationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x99\x01\n(GenerateMqttIntegrationClientCertificate\x12\x34.api.GenerateMqttIntegrationClientCertificateRequest\x1a\x35.api.GenerateMqttIntegrationClientCertificateResponse\"\x00\x42S\n\x11io.chirpstack.apiB\x10\x41pplicationProtoP\x01Z*github.com/chirpstack/chirpstack/api/go/v4b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$chirpstack-api/api/application.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"O\n\x0b\x41pplication\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\x11\n\ttenant_id\x18\x04 \x01(\t\"\xa4\x01\n\x13\x41pplicationListItem\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\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\"A\n\x18\x43reateApplicationRequest\x12%\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32\x10.api.Application\"\'\n\x19\x43reateApplicationResponse\x12\n\n\x02id\x18\x01 \x01(\t\"#\n\x15GetApplicationRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\xb9\x01\n\x16GetApplicationResponse\x12%\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32\x10.api.Application\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\x18\n\x10measurement_keys\x18\x04 \x03(\t\"A\n\x18UpdateApplicationRequest\x12%\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32\x10.api.Application\"&\n\x18\x44\x65leteApplicationRequest\x12\n\n\x02id\x18\x01 \x01(\t\"[\n\x17ListApplicationsRequest\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\"Y\n\x18ListApplicationsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12(\n\x06result\x18\x02 \x03(\x0b\x32\x18.api.ApplicationListItem\"1\n\x17ListIntegrationsRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"9\n\x13IntegrationListItem\x12\"\n\x04kind\x18\x01 \x01(\x0e\x32\x14.api.IntegrationKind\"Y\n\x18ListIntegrationsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12(\n\x06result\x18\x02 \x03(\x0b\x32\x18.api.IntegrationListItem\"\xca\x01\n\x0fHttpIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x32\n\x07headers\x18\x02 \x03(\x0b\x32!.api.HttpIntegration.HeadersEntry\x12\x1f\n\x08\x65ncoding\x18\x03 \x01(\x0e\x32\r.api.Encoding\x12\x1a\n\x12\x65vent_endpoint_url\x18\x04 \x01(\t\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"I\n\x1c\x43reateHttpIntegrationRequest\x12)\n\x0bintegration\x18\x01 \x01(\x0b\x32\x14.api.HttpIntegration\"3\n\x19GetHttpIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"G\n\x1aGetHttpIntegrationResponse\x12)\n\x0bintegration\x18\x01 \x01(\x0b\x32\x14.api.HttpIntegration\"I\n\x1cUpdateHttpIntegrationRequest\x12)\n\x0bintegration\x18\x01 \x01(\x0b\x32\x14.api.HttpIntegration\"6\n\x1c\x44\x65leteHttpIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x95\x02\n\x13InfluxDbIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\x12\n\n\x02\x64\x62\x18\x03 \x01(\t\x12\x10\n\x08username\x18\x04 \x01(\t\x12\x10\n\x08password\x18\x05 \x01(\t\x12\x1d\n\x15retention_policy_name\x18\x06 \x01(\t\x12)\n\tprecision\x18\x07 \x01(\x0e\x32\x16.api.InfluxDbPrecision\x12%\n\x07version\x18\x08 \x01(\x0e\x32\x14.api.InfluxDbVersion\x12\r\n\x05token\x18\t \x01(\t\x12\x14\n\x0corganization\x18\n \x01(\t\x12\x0e\n\x06\x62ucket\x18\x0b \x01(\t\"Q\n CreateInfluxDbIntegrationRequest\x12-\n\x0bintegration\x18\x01 \x01(\x0b\x32\x18.api.InfluxDbIntegration\"7\n\x1dGetInfluxDbIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"O\n\x1eGetInfluxDbIntegrationResponse\x12-\n\x0bintegration\x18\x01 \x01(\x0b\x32\x18.api.InfluxDbIntegration\"Q\n UpdateInfluxDbIntegrationRequest\x12-\n\x0bintegration\x18\x01 \x01(\x0b\x32\x18.api.InfluxDbIntegration\":\n DeleteInfluxDbIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"@\n\x16ThingsBoardIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x0e\n\x06server\x18\x02 \x01(\t\"W\n#CreateThingsBoardIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.ThingsBoardIntegration\":\n GetThingsBoardIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"U\n!GetThingsBoardIntegrationResponse\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.ThingsBoardIntegration\"W\n#UpdateThingsBoardIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.ThingsBoardIntegration\"=\n#DeleteThingsBoardIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"@\n\x14MyDevicesIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\"S\n!CreateMyDevicesIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.MyDevicesIntegration\"8\n\x1eGetMyDevicesIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"Q\n\x1fGetMyDevicesIntegrationResponse\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.MyDevicesIntegration\"S\n!UpdateMyDevicesIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.MyDevicesIntegration\";\n!DeleteMyDevicesIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"z\n\x14LoraCloudIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12J\n\x1amodem_geolocation_services\x18\x02 \x01(\x0b\x32&.api.LoraCloudModemGeolocationServices\"\xc0\x03\n!LoraCloudModemGeolocationServices\x12\r\n\x05token\x18\x01 \x01(\t\x12\x15\n\rmodem_enabled\x18\x02 \x01(\x08\x12\x12\n\nmodem_port\x18\x03 \x01(\r\x12\x11\n\tgnss_port\x18\x04 \x01(\r\x12\x18\n\x10gnss_use_rx_time\x18\x05 \x01(\x08\x12\x11\n\tparse_tlv\x18\x06 \x01(\x08\x12\x1e\n\x16geolocation_buffer_ttl\x18\x07 \x01(\r\x12#\n\x1bgeolocation_min_buffer_size\x18\x08 \x01(\r\x12\x18\n\x10geolocation_tdoa\x18\t \x01(\x08\x12\x18\n\x10geolocation_rssi\x18\n \x01(\x08\x12\x18\n\x10geolocation_gnss\x18\x0b \x01(\x08\x12&\n\x1egeolocation_gnss_payload_field\x18\x0c \x01(\t\x12$\n\x1cgeolocation_gnss_use_rx_time\x18\r \x01(\x08\x12\x18\n\x10geolocation_wifi\x18\x0e \x01(\x08\x12&\n\x1egeolocation_wifi_payload_field\x18\x0f \x01(\t\"S\n!CreateLoraCloudIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.LoraCloudIntegration\"8\n\x1eGetLoraCloudIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"Q\n\x1fGetLoraCloudIntegrationResponse\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.LoraCloudIntegration\"S\n!UpdateLoraCloudIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.LoraCloudIntegration\";\n!DeleteLoraCloudIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x91\x01\n\x14GcpPubSubIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x1f\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\r.api.Encoding\x12\x18\n\x10\x63redentials_file\x18\x03 \x01(\t\x12\x12\n\nproject_id\x18\x04 \x01(\t\x12\x12\n\ntopic_name\x18\x05 \x01(\t\"S\n!CreateGcpPubSubIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.GcpPubSubIntegration\"8\n\x1eGetGcpPubSubIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"Q\n\x1fGetGcpPubSubIntegrationResponse\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.GcpPubSubIntegration\"S\n!UpdateGcpPubSubIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.GcpPubSubIntegration\";\n!DeleteGcpPubSubIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\xa1\x01\n\x11\x41wsSnsIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x1f\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\r.api.Encoding\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x15\n\raccess_key_id\x18\x04 \x01(\t\x12\x19\n\x11secret_access_key\x18\x05 \x01(\t\x12\x11\n\ttopic_arn\x18\x06 \x01(\t\"M\n\x1e\x43reateAwsSnsIntegrationRequest\x12+\n\x0bintegration\x18\x01 \x01(\x0b\x32\x16.api.AwsSnsIntegration\"5\n\x1bGetAwsSnsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"K\n\x1cGetAwsSnsIntegrationResponse\x12+\n\x0bintegration\x18\x01 \x01(\x0b\x32\x16.api.AwsSnsIntegration\"M\n\x1eUpdateAwsSnsIntegrationRequest\x12+\n\x0bintegration\x18\x01 \x01(\x0b\x32\x16.api.AwsSnsIntegration\"8\n\x1e\x44\x65leteAwsSnsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x86\x01\n\x1a\x41zureServiceBusIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x1f\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\r.api.Encoding\x12\x19\n\x11\x63onnection_string\x18\x03 \x01(\t\x12\x14\n\x0cpublish_name\x18\x04 \x01(\t\"_\n\'CreateAzureServiceBusIntegrationRequest\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\">\n$GetAzureServiceBusIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"]\n%GetAzureServiceBusIntegrationResponse\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\"_\n\'UpdateAzureServiceBusIntegrationRequest\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\"A\n\'DeleteAzureServiceBusIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"O\n\x16PilotThingsIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x0e\n\x06server\x18\x02 \x01(\t\x12\r\n\x05token\x18\x03 \x01(\t\"W\n#CreatePilotThingsIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\":\n GetPilotThingsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"U\n!GetPilotThingsIntegrationResponse\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\"W\n#UpdatePilotThingsIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\"=\n#DeletePilotThingsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"N\n\x10IftttIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x15\n\ruplink_values\x18\x03 \x03(\t\"K\n\x1d\x43reateIftttIntegrationRequest\x12*\n\x0bintegration\x18\x01 \x01(\x0b\x32\x15.api.IftttIntegration\"4\n\x1aGetIftttIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"I\n\x1bGetIftttIntegrationResponse\x12*\n\x0bintegration\x18\x01 \x01(\x0b\x32\x15.api.IftttIntegration\"K\n\x1dUpdateIftttIntegrationRequest\x12*\n\x0bintegration\x18\x01 \x01(\x0b\x32\x15.api.IftttIntegration\"7\n\x1d\x44\x65leteIftttIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"I\n/GenerateMqttIntegrationClientCertificateRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x96\x01\n0GenerateMqttIntegrationClientCertificateResponse\x12\x10\n\x08tls_cert\x18\x01 \x01(\t\x12\x0f\n\x07tls_key\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61_cert\x18\x03 \x01(\t\x12.\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp*\"\n\x08\x45ncoding\x12\x08\n\x04JSON\x10\x00\x12\x0c\n\x08PROTOBUF\x10\x01*\xbf\x01\n\x0fIntegrationKind\x12\x08\n\x04HTTP\x10\x00\x12\r\n\tINFLUX_DB\x10\x01\x12\x10\n\x0cTHINGS_BOARD\x10\x02\x12\x0e\n\nMY_DEVICES\x10\x03\x12\x0e\n\nLORA_CLOUD\x10\x04\x12\x0f\n\x0bGCP_PUB_SUB\x10\x05\x12\x0b\n\x07\x41WS_SNS\x10\x06\x12\x15\n\x11\x41ZURE_SERVICE_BUS\x10\x07\x12\x10\n\x0cPILOT_THINGS\x10\x08\x12\x0f\n\x0bMQTT_GLOBAL\x10\t\x12\t\n\x05IFTTT\x10\n*?\n\x11InfluxDbPrecision\x12\x06\n\x02NS\x10\x00\x12\x05\n\x01U\x10\x01\x12\x06\n\x02MS\x10\x02\x12\x05\n\x01S\x10\x03\x12\x05\n\x01M\x10\x04\x12\x05\n\x01H\x10\x05*1\n\x0fInfluxDbVersion\x12\x0e\n\nINFLUXDB_1\x10\x00\x12\x0e\n\nINFLUXDB_2\x10\x01\x32\xb8<\n\x12\x41pplicationService\x12\x65\n\x06\x43reate\x12\x1d.api.CreateApplicationRequest\x1a\x1e.api.CreateApplicationResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/api/applications:\x01*\x12^\n\x03Get\x12\x1a.api.GetApplicationRequest\x1a\x1b.api.GetApplicationResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/api/applications/{id}\x12n\n\x06Update\x12\x1d.api.UpdateApplicationRequest\x1a\x16.google.protobuf.Empty\"-\x82\xd3\xe4\x93\x02\'\x1a\"/api/applications/{application.id}:\x01*\x12_\n\x06\x44\x65lete\x12\x1d.api.DeleteApplicationRequest\x1a\x16.google.protobuf.Empty\"\x1e\x82\xd3\xe4\x93\x02\x18*\x16/api/applications/{id}\x12^\n\x04List\x12\x1c.api.ListApplicationsRequest\x1a\x1d.api.ListApplicationsResponse\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/applications\x12\x88\x01\n\x10ListIntegrations\x12\x1c.api.ListIntegrationsRequest\x1a\x1d.api.ListIntegrationsResponse\"7\x82\xd3\xe4\x93\x02\x31\x12//api/applications/{application_id}/integrations\x12\x9f\x01\n\x15\x43reateHttpIntegration\x12!.api.CreateHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"K\x82\xd3\xe4\x93\x02\x45\"@/api/applications/{integration.application_id}/integrations/http:\x01*\x12\x93\x01\n\x12GetHttpIntegration\x12\x1e.api.GetHttpIntegrationRequest\x1a\x1f.api.GetHttpIntegrationResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/api/applications/{application_id}/integrations/http\x12\x9f\x01\n\x15UpdateHttpIntegration\x12!.api.UpdateHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"K\x82\xd3\xe4\x93\x02\x45\x1a@/api/applications/{integration.application_id}/integrations/http:\x01*\x12\x90\x01\n\x15\x44\x65leteHttpIntegration\x12!.api.DeleteHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"<\x82\xd3\xe4\x93\x02\x36*4/api/applications/{application_id}/integrations/http\x12\xab\x01\n\x19\x43reateInfluxDbIntegration\x12%.api.CreateInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"O\x82\xd3\xe4\x93\x02I\"D/api/applications/{integration.application_id}/integrations/influxdb:\x01*\x12\xa3\x01\n\x16GetInfluxDbIntegration\x12\".api.GetInfluxDbIntegrationRequest\x1a#.api.GetInfluxDbIntegrationResponse\"@\x82\xd3\xe4\x93\x02:\x12\x38/api/applications/{application_id}/integrations/influxdb\x12\xab\x01\n\x19UpdateInfluxDbIntegration\x12%.api.UpdateInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"O\x82\xd3\xe4\x93\x02I\x1a\x44/api/applications/{integration.application_id}/integrations/influxdb:\x01*\x12\x9c\x01\n\x19\x44\x65leteInfluxDbIntegration\x12%.api.DeleteInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"@\x82\xd3\xe4\x93\x02:*8/api/applications/{application_id}/integrations/influxdb\x12\xb4\x01\n\x1c\x43reateThingsBoardIntegration\x12(.api.CreateThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\"G/api/applications/{integration.application_id}/integrations/thingsboard:\x01*\x12\xaf\x01\n\x19GetThingsBoardIntegration\x12%.api.GetThingsBoardIntegrationRequest\x1a&.api.GetThingsBoardIntegrationResponse\"C\x82\xd3\xe4\x93\x02=\x12;/api/applications/{application_id}/integrations/thingsboard\x12\xb4\x01\n\x1cUpdateThingsBoardIntegration\x12(.api.UpdateThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\x1aG/api/applications/{integration.application_id}/integrations/thingsboard:\x01*\x12\xa5\x01\n\x1c\x44\x65leteThingsBoardIntegration\x12(.api.DeleteThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"C\x82\xd3\xe4\x93\x02=*;/api/applications/{application_id}/integrations/thingsboard\x12\xae\x01\n\x1a\x43reateMyDevicesIntegration\x12&.api.CreateMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\"E/api/applications/{integration.application_id}/integrations/mydevices:\x01*\x12\xa7\x01\n\x17GetMyDevicesIntegration\x12#.api.GetMyDevicesIntegrationRequest\x1a$.api.GetMyDevicesIntegrationResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/applications/{application_id}/integrations/mydevices\x12\xae\x01\n\x1aUpdateMyDevicesIntegration\x12&.api.UpdateMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\x1a\x45/api/applications/{integration.application_id}/integrations/mydevices:\x01*\x12\x9f\x01\n\x1a\x44\x65leteMyDevicesIntegration\x12&.api.DeleteMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"A\x82\xd3\xe4\x93\x02;*9/api/applications/{application_id}/integrations/mydevices\x12\xae\x01\n\x1a\x43reateLoraCloudIntegration\x12&.api.CreateLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\"E/api/applications/{integration.application_id}/integrations/loracloud:\x01*\x12\xa7\x01\n\x17GetLoraCloudIntegration\x12#.api.GetLoraCloudIntegrationRequest\x1a$.api.GetLoraCloudIntegrationResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/applications/{application_id}/integrations/loracloud\x12\xae\x01\n\x1aUpdateLoraCloudIntegration\x12&.api.UpdateLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\x1a\x45/api/applications/{integration.application_id}/integrations/loracloud:\x01*\x12\x9f\x01\n\x1a\x44\x65leteLoraCloudIntegration\x12&.api.DeleteLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"A\x82\xd3\xe4\x93\x02;*9/api/applications/{application_id}/integrations/loracloud\x12\xb0\x01\n\x1a\x43reateGcpPubSubIntegration\x12&.api.CreateGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\"G/api/applications/{integration.application_id}/integrations/gcp-pub-sub:\x01*\x12\xa9\x01\n\x17GetGcpPubSubIntegration\x12#.api.GetGcpPubSubIntegrationRequest\x1a$.api.GetGcpPubSubIntegrationResponse\"C\x82\xd3\xe4\x93\x02=\x12;/api/applications/{application_id}/integrations/gcp-pub-sub\x12\xb0\x01\n\x1aUpdateGcpPubSubIntegration\x12&.api.UpdateGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\x1aG/api/applications/{integration.application_id}/integrations/gcp-pub-sub:\x01*\x12\xa1\x01\n\x1a\x44\x65leteGcpPubSubIntegration\x12&.api.DeleteGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"C\x82\xd3\xe4\x93\x02=*;/api/applications/{application_id}/integrations/gcp-pub-sub\x12\xa6\x01\n\x17\x43reateAwsSnsIntegration\x12#.api.CreateAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"N\x82\xd3\xe4\x93\x02H\"C/api/applications/{integration.application_id}/integrations/aws-sns:\x01*\x12\x9c\x01\n\x14GetAwsSnsIntegration\x12 .api.GetAwsSnsIntegrationRequest\x1a!.api.GetAwsSnsIntegrationResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/api/applications/{application_id}/integrations/aws-sns\x12\xa6\x01\n\x17UpdateAwsSnsIntegration\x12#.api.UpdateAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"N\x82\xd3\xe4\x93\x02H\x1a\x43/api/applications/{integration.application_id}/integrations/aws-sns:\x01*\x12\x97\x01\n\x17\x44\x65leteAwsSnsIntegration\x12#.api.DeleteAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"?\x82\xd3\xe4\x93\x02\x39*7/api/applications/{application_id}/integrations/aws-sns\x12\xc2\x01\n CreateAzureServiceBusIntegration\x12,.api.CreateAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"X\x82\xd3\xe4\x93\x02R\"M/api/applications/{integration.application_id}/integrations/azure-service-bus:\x01*\x12\xc1\x01\n\x1dGetAzureServiceBusIntegration\x12).api.GetAzureServiceBusIntegrationRequest\x1a*.api.GetAzureServiceBusIntegrationResponse\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/api/applications/{application_id}/integrations/azure-service-bus\x12\xc2\x01\n UpdateAzureServiceBusIntegration\x12,.api.UpdateAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"X\x82\xd3\xe4\x93\x02R\x1aM/api/applications/{integration.application_id}/integrations/azure-service-bus:\x01*\x12\xb3\x01\n DeleteAzureServiceBusIntegration\x12,.api.DeleteAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"I\x82\xd3\xe4\x93\x02\x43*A/api/applications/{application_id}/integrations/azure-service-bus\x12\xb5\x01\n\x1c\x43reatePilotThingsIntegration\x12(.api.CreatePilotThingsIntegrationRequest\x1a\x16.google.protobuf.Empty\"S\x82\xd3\xe4\x93\x02M\"H/api/applications/{integration.application_id}/integrations/pilot-things:\x01*\x12\xb0\x01\n\x19GetPilotThingsIntegration\x12%.api.GetPilotThingsIntegrationRequest\x1a&.api.GetPilotThingsIntegrationResponse\"D\x82\xd3\xe4\x93\x02>\x12*\022*\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.common.Metric:\x02\x38\x01\x1a?\n\x0bStatesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1f\n\x05value\x18\x02 \x01(\x0b\x32\x10.api.DeviceState:\x02\x38\x01\"*\n\x0b\x44\x65viceState\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"\xac\x01\n\x1bGetDeviceLinkMetricsRequest\x12\x0f\n\x07\x64\x65v_eui\x18\x01 \x01(\t\x12)\n\x05start\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\x0b\x61ggregation\x18\x04 \x01(\x0e\x32\x13.common.Aggregation\"\xfb\x01\n\x1cGetDeviceLinkMetricsResponse\x12\"\n\nrx_packets\x18\x01 \x01(\x0b\x32\x0e.common.Metric\x12\x1f\n\x07gw_rssi\x18\x02 \x01(\x0b\x32\x0e.common.Metric\x12\x1e\n\x06gw_snr\x18\x03 \x01(\x0b\x32\x0e.common.Metric\x12+\n\x13rx_packets_per_freq\x18\x04 \x01(\x0b\x32\x0e.common.Metric\x12)\n\x11rx_packets_per_dr\x18\x05 \x01(\x0b\x32\x0e.common.Metric\x12\x1e\n\x06\x65rrors\x18\x06 \x01(\x0b\x32\x0e.common.Metric\"\xb0\x01\n\x0f\x44\x65viceQueueItem\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0f\n\x07\x64\x65v_eui\x18\x02 \x01(\t\x12\x11\n\tconfirmed\x18\x03 \x01(\x08\x12\x0e\n\x06\x66_port\x18\x04 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\x12\'\n\x06object\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x12\n\nis_pending\x18\x07 \x01(\x08\x12\x12\n\nf_cnt_down\x18\x08 \x01(\r\"I\n\x1d\x45nqueueDeviceQueueItemRequest\x12(\n\nqueue_item\x18\x01 \x01(\x0b\x32\x14.api.DeviceQueueItem\",\n\x1e\x45nqueueDeviceQueueItemResponse\x12\n\n\x02id\x18\x01 \x01(\t\"*\n\x17\x46lushDeviceQueueRequest\x12\x0f\n\x07\x64\x65v_eui\x18\x01 \x01(\t\"A\n\x1aGetDeviceQueueItemsRequest\x12\x0f\n\x07\x64\x65v_eui\x18\x01 \x01(\t\x12\x12\n\ncount_only\x18\x02 \x01(\x08\"X\n\x1bGetDeviceQueueItemsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12$\n\x06result\x18\x02 \x03(\x0b\x32\x14.api.DeviceQueueItem\"(\n\x15\x46lushDevNoncesRequest\x12\x0f\n\x07\x64\x65v_eui\x18\x01 \x01(\t2\xd0\x10\n\rDeviceService\x12S\n\x06\x43reate\x12\x18.api.CreateDeviceRequest\x1a\x16.google.protobuf.Empty\"\x17\x82\xd3\xe4\x93\x02\x11\"\x0c/api/devices:\x01*\x12T\n\x03Get\x12\x15.api.GetDeviceRequest\x1a\x16.api.GetDeviceResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/api/devices/{dev_eui}\x12\x64\n\x06Update\x12\x18.api.UpdateDeviceRequest\x1a\x16.google.protobuf.Empty\"(\x82\xd3\xe4\x93\x02\"\x1a\x1d/api/devices/{device.dev_eui}:\x01*\x12Z\n\x06\x44\x65lete\x12\x18.api.DeleteDeviceRequest\x1a\x16.google.protobuf.Empty\"\x1e\x82\xd3\xe4\x93\x02\x18*\x16/api/devices/{dev_eui}\x12O\n\x04List\x12\x17.api.ListDevicesRequest\x1a\x18.api.ListDevicesResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\x0c/api/devices\x12v\n\nCreateKeys\x12\x1c.api.CreateDeviceKeysRequest\x1a\x16.google.protobuf.Empty\"2\x82\xd3\xe4\x93\x02,\"\'/api/devices/{device_keys.dev_eui}/keys:\x01*\x12\x65\n\x07GetKeys\x12\x19.api.GetDeviceKeysRequest\x1a\x1a.api.GetDeviceKeysResponse\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/devices/{dev_eui}/keys\x12v\n\nUpdateKeys\x12\x1c.api.UpdateDeviceKeysRequest\x1a\x16.google.protobuf.Empty\"2\x82\xd3\xe4\x93\x02,\x1a\'/api/devices/{device_keys.dev_eui}/keys:\x01*\x12g\n\nDeleteKeys\x12\x1c.api.DeleteDeviceKeysRequest\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d*\x1b/api/devices/{dev_eui}/keys\x12o\n\x0e\x46lushDevNonces\x12\x1a.api.FlushDevNoncesRequest\x1a\x16.google.protobuf.Empty\")\x82\xd3\xe4\x93\x02#*!/api/devices/{dev_eui}/dev-nonces\x12|\n\x08\x41\x63tivate\x12\x1a.api.ActivateDeviceRequest\x1a\x16.google.protobuf.Empty\"<\x82\xd3\xe4\x93\x02\x36\"1/api/devices/{device_activation.dev_eui}/activate:\x01*\x12m\n\nDeactivate\x12\x1c.api.DeactivateDeviceRequest\x1a\x16.google.protobuf.Empty\")\x82\xd3\xe4\x93\x02#*!/api/devices/{dev_eui}/activation\x12}\n\rGetActivation\x12\x1f.api.GetDeviceActivationRequest\x1a .api.GetDeviceActivationResponse\")\x82\xd3\xe4\x93\x02#\x12!/api/devices/{dev_eui}/activation\x12\x83\x01\n\x10GetRandomDevAddr\x12\x1c.api.GetRandomDevAddrRequest\x1a\x1d.api.GetRandomDevAddrResponse\"2\x82\xd3\xe4\x93\x02,\"*/api/devices/{dev_eui}/get-random-dev-addr\x12q\n\nGetMetrics\x12\x1c.api.GetDeviceMetricsRequest\x1a\x1d.api.GetDeviceMetricsResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/devices/{dev_eui}/metrics\x12\x82\x01\n\x0eGetLinkMetrics\x12 .api.GetDeviceLinkMetricsRequest\x1a!.api.GetDeviceLinkMetricsResponse\"+\x82\xd3\xe4\x93\x02%\x12#/api/devices/{dev_eui}/link-metrics\x12\x86\x01\n\x07\x45nqueue\x12\".api.EnqueueDeviceQueueItemRequest\x1a#.api.EnqueueDeviceQueueItemResponse\"2\x82\xd3\xe4\x93\x02,\"\'/api/devices/{queue_item.dev_eui}/queue:\x01*\x12h\n\nFlushQueue\x12\x1c.api.FlushDeviceQueueRequest\x1a\x16.google.protobuf.Empty\"$\x82\xd3\xe4\x93\x02\x1e*\x1c/api/devices/{dev_eui}/queue\x12s\n\x08GetQueue\x12\x1f.api.GetDeviceQueueItemsRequest\x1a .api.GetDeviceQueueItemsResponse\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/devices/{dev_eui}/queueBR\n\x11io.chirpstack.apiB\x0b\x44\x65viceProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/apib\x06proto3') @@ -46,12 +48,13 @@ _GETDEVICEACTIVATIONREQUEST = DESCRIPTOR.message_types_by_name['GetDeviceActivat _GETDEVICEACTIVATIONRESPONSE = DESCRIPTOR.message_types_by_name['GetDeviceActivationResponse'] _GETRANDOMDEVADDRREQUEST = DESCRIPTOR.message_types_by_name['GetRandomDevAddrRequest'] _GETRANDOMDEVADDRRESPONSE = DESCRIPTOR.message_types_by_name['GetRandomDevAddrResponse'] -_GETDEVICESTATSREQUEST = DESCRIPTOR.message_types_by_name['GetDeviceStatsRequest'] -_GETDEVICESTATSRESPONSE = DESCRIPTOR.message_types_by_name['GetDeviceStatsResponse'] -_DEVICESTATS = DESCRIPTOR.message_types_by_name['DeviceStats'] -_DEVICESTATS_RXPACKETSPERFREQUENCYENTRY = _DEVICESTATS.nested_types_by_name['RxPacketsPerFrequencyEntry'] -_DEVICESTATS_RXPACKETSPERDRENTRY = _DEVICESTATS.nested_types_by_name['RxPacketsPerDrEntry'] -_DEVICESTATS_ERRORSENTRY = _DEVICESTATS.nested_types_by_name['ErrorsEntry'] +_GETDEVICEMETRICSREQUEST = DESCRIPTOR.message_types_by_name['GetDeviceMetricsRequest'] +_GETDEVICEMETRICSRESPONSE = DESCRIPTOR.message_types_by_name['GetDeviceMetricsResponse'] +_GETDEVICEMETRICSRESPONSE_METRICSENTRY = _GETDEVICEMETRICSRESPONSE.nested_types_by_name['MetricsEntry'] +_GETDEVICEMETRICSRESPONSE_STATESENTRY = _GETDEVICEMETRICSRESPONSE.nested_types_by_name['StatesEntry'] +_DEVICESTATE = DESCRIPTOR.message_types_by_name['DeviceState'] +_GETDEVICELINKMETRICSREQUEST = DESCRIPTOR.message_types_by_name['GetDeviceLinkMetricsRequest'] +_GETDEVICELINKMETRICSRESPONSE = DESCRIPTOR.message_types_by_name['GetDeviceLinkMetricsResponse'] _DEVICEQUEUEITEM = DESCRIPTOR.message_types_by_name['DeviceQueueItem'] _ENQUEUEDEVICEQUEUEITEMREQUEST = DESCRIPTOR.message_types_by_name['EnqueueDeviceQueueItemRequest'] _ENQUEUEDEVICEQUEUEITEMRESPONSE = DESCRIPTOR.message_types_by_name['EnqueueDeviceQueueItemResponse'] @@ -236,50 +239,56 @@ GetRandomDevAddrResponse = _reflection.GeneratedProtocolMessageType('GetRandomDe }) _sym_db.RegisterMessage(GetRandomDevAddrResponse) -GetDeviceStatsRequest = _reflection.GeneratedProtocolMessageType('GetDeviceStatsRequest', (_message.Message,), { - 'DESCRIPTOR' : _GETDEVICESTATSREQUEST, +GetDeviceMetricsRequest = _reflection.GeneratedProtocolMessageType('GetDeviceMetricsRequest', (_message.Message,), { + 'DESCRIPTOR' : _GETDEVICEMETRICSREQUEST, '__module__' : 'chirpstack_api.api.device_pb2' - # @@protoc_insertion_point(class_scope:api.GetDeviceStatsRequest) + # @@protoc_insertion_point(class_scope:api.GetDeviceMetricsRequest) }) -_sym_db.RegisterMessage(GetDeviceStatsRequest) +_sym_db.RegisterMessage(GetDeviceMetricsRequest) -GetDeviceStatsResponse = _reflection.GeneratedProtocolMessageType('GetDeviceStatsResponse', (_message.Message,), { - 'DESCRIPTOR' : _GETDEVICESTATSRESPONSE, - '__module__' : 'chirpstack_api.api.device_pb2' - # @@protoc_insertion_point(class_scope:api.GetDeviceStatsResponse) - }) -_sym_db.RegisterMessage(GetDeviceStatsResponse) +GetDeviceMetricsResponse = _reflection.GeneratedProtocolMessageType('GetDeviceMetricsResponse', (_message.Message,), { -DeviceStats = _reflection.GeneratedProtocolMessageType('DeviceStats', (_message.Message,), { - - 'RxPacketsPerFrequencyEntry' : _reflection.GeneratedProtocolMessageType('RxPacketsPerFrequencyEntry', (_message.Message,), { - 'DESCRIPTOR' : _DEVICESTATS_RXPACKETSPERFREQUENCYENTRY, + 'MetricsEntry' : _reflection.GeneratedProtocolMessageType('MetricsEntry', (_message.Message,), { + 'DESCRIPTOR' : _GETDEVICEMETRICSRESPONSE_METRICSENTRY, '__module__' : 'chirpstack_api.api.device_pb2' - # @@protoc_insertion_point(class_scope:api.DeviceStats.RxPacketsPerFrequencyEntry) + # @@protoc_insertion_point(class_scope:api.GetDeviceMetricsResponse.MetricsEntry) }) , - 'RxPacketsPerDrEntry' : _reflection.GeneratedProtocolMessageType('RxPacketsPerDrEntry', (_message.Message,), { - 'DESCRIPTOR' : _DEVICESTATS_RXPACKETSPERDRENTRY, + 'StatesEntry' : _reflection.GeneratedProtocolMessageType('StatesEntry', (_message.Message,), { + 'DESCRIPTOR' : _GETDEVICEMETRICSRESPONSE_STATESENTRY, '__module__' : 'chirpstack_api.api.device_pb2' - # @@protoc_insertion_point(class_scope:api.DeviceStats.RxPacketsPerDrEntry) + # @@protoc_insertion_point(class_scope:api.GetDeviceMetricsResponse.StatesEntry) }) , - - 'ErrorsEntry' : _reflection.GeneratedProtocolMessageType('ErrorsEntry', (_message.Message,), { - 'DESCRIPTOR' : _DEVICESTATS_ERRORSENTRY, - '__module__' : 'chirpstack_api.api.device_pb2' - # @@protoc_insertion_point(class_scope:api.DeviceStats.ErrorsEntry) - }) - , - 'DESCRIPTOR' : _DEVICESTATS, + 'DESCRIPTOR' : _GETDEVICEMETRICSRESPONSE, '__module__' : 'chirpstack_api.api.device_pb2' - # @@protoc_insertion_point(class_scope:api.DeviceStats) + # @@protoc_insertion_point(class_scope:api.GetDeviceMetricsResponse) }) -_sym_db.RegisterMessage(DeviceStats) -_sym_db.RegisterMessage(DeviceStats.RxPacketsPerFrequencyEntry) -_sym_db.RegisterMessage(DeviceStats.RxPacketsPerDrEntry) -_sym_db.RegisterMessage(DeviceStats.ErrorsEntry) +_sym_db.RegisterMessage(GetDeviceMetricsResponse) +_sym_db.RegisterMessage(GetDeviceMetricsResponse.MetricsEntry) +_sym_db.RegisterMessage(GetDeviceMetricsResponse.StatesEntry) + +DeviceState = _reflection.GeneratedProtocolMessageType('DeviceState', (_message.Message,), { + 'DESCRIPTOR' : _DEVICESTATE, + '__module__' : 'chirpstack_api.api.device_pb2' + # @@protoc_insertion_point(class_scope:api.DeviceState) + }) +_sym_db.RegisterMessage(DeviceState) + +GetDeviceLinkMetricsRequest = _reflection.GeneratedProtocolMessageType('GetDeviceLinkMetricsRequest', (_message.Message,), { + 'DESCRIPTOR' : _GETDEVICELINKMETRICSREQUEST, + '__module__' : 'chirpstack_api.api.device_pb2' + # @@protoc_insertion_point(class_scope:api.GetDeviceLinkMetricsRequest) + }) +_sym_db.RegisterMessage(GetDeviceLinkMetricsRequest) + +GetDeviceLinkMetricsResponse = _reflection.GeneratedProtocolMessageType('GetDeviceLinkMetricsResponse', (_message.Message,), { + 'DESCRIPTOR' : _GETDEVICELINKMETRICSRESPONSE, + '__module__' : 'chirpstack_api.api.device_pb2' + # @@protoc_insertion_point(class_scope:api.GetDeviceLinkMetricsResponse) + }) +_sym_db.RegisterMessage(GetDeviceLinkMetricsResponse) DeviceQueueItem = _reflection.GeneratedProtocolMessageType('DeviceQueueItem', (_message.Message,), { 'DESCRIPTOR' : _DEVICEQUEUEITEM, @@ -334,93 +343,131 @@ _DEVICESERVICE = DESCRIPTOR.services_by_name['DeviceService'] if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\013DeviceProtoP\001Z*github.com/chirpstack/chirpstack/api/go/v4' + DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\013DeviceProtoP\001Z.github.com/chirpstack/chirpstack/api/go/v4/api' _DEVICE_VARIABLESENTRY._options = None _DEVICE_VARIABLESENTRY._serialized_options = b'8\001' _DEVICE_TAGSENTRY._options = None _DEVICE_TAGSENTRY._serialized_options = b'8\001' - _DEVICESTATS_RXPACKETSPERFREQUENCYENTRY._options = None - _DEVICESTATS_RXPACKETSPERFREQUENCYENTRY._serialized_options = b'8\001' - _DEVICESTATS_RXPACKETSPERDRENTRY._options = None - _DEVICESTATS_RXPACKETSPERDRENTRY._serialized_options = b'8\001' - _DEVICESTATS_ERRORSENTRY._options = None - _DEVICESTATS_ERRORSENTRY._serialized_options = b'8\001' - _DEVICE._serialized_start=133 - _DEVICE._serialized_end=469 - _DEVICE_VARIABLESENTRY._serialized_start=376 - _DEVICE_VARIABLESENTRY._serialized_end=424 - _DEVICE_TAGSENTRY._serialized_start=426 - _DEVICE_TAGSENTRY._serialized_end=469 - _DEVICESTATUS._serialized_start=471 - _DEVICESTATUS._serialized_end=555 - _DEVICELISTITEM._serialized_start=558 - _DEVICELISTITEM._serialized_end=870 - _DEVICEKEYS._serialized_start=872 - _DEVICEKEYS._serialized_end=935 - _CREATEDEVICEREQUEST._serialized_start=937 - _CREATEDEVICEREQUEST._serialized_end=987 - _GETDEVICEREQUEST._serialized_start=989 - _GETDEVICEREQUEST._serialized_end=1024 - _GETDEVICERESPONSE._serialized_start=1027 - _GETDEVICERESPONSE._serialized_end=1263 - _UPDATEDEVICEREQUEST._serialized_start=1265 - _UPDATEDEVICEREQUEST._serialized_end=1315 - _DELETEDEVICEREQUEST._serialized_start=1317 - _DELETEDEVICEREQUEST._serialized_end=1355 - _LISTDEVICESREQUEST._serialized_start=1357 - _LISTDEVICESREQUEST._serialized_end=1476 - _LISTDEVICESRESPONSE._serialized_start=1478 - _LISTDEVICESRESPONSE._serialized_end=1557 - _CREATEDEVICEKEYSREQUEST._serialized_start=1559 - _CREATEDEVICEKEYSREQUEST._serialized_end=1622 - _GETDEVICEKEYSREQUEST._serialized_start=1624 - _GETDEVICEKEYSREQUEST._serialized_end=1663 - _GETDEVICEKEYSRESPONSE._serialized_start=1666 - _GETDEVICEKEYSRESPONSE._serialized_end=1823 - _UPDATEDEVICEKEYSREQUEST._serialized_start=1825 - _UPDATEDEVICEKEYSREQUEST._serialized_end=1888 - _DELETEDEVICEKEYSREQUEST._serialized_start=1890 - _DELETEDEVICEKEYSREQUEST._serialized_end=1932 - _DEVICEACTIVATION._serialized_start=1935 - _DEVICEACTIVATION._serialized_end=2142 - _ACTIVATEDEVICEREQUEST._serialized_start=2144 - _ACTIVATEDEVICEREQUEST._serialized_end=2217 - _DEACTIVATEDEVICEREQUEST._serialized_start=2219 - _DEACTIVATEDEVICEREQUEST._serialized_end=2261 - _GETDEVICEACTIVATIONREQUEST._serialized_start=2263 - _GETDEVICEACTIVATIONREQUEST._serialized_end=2308 - _GETDEVICEACTIVATIONRESPONSE._serialized_start=2310 - _GETDEVICEACTIVATIONRESPONSE._serialized_end=2389 - _GETRANDOMDEVADDRREQUEST._serialized_start=2391 - _GETRANDOMDEVADDRREQUEST._serialized_end=2433 - _GETRANDOMDEVADDRRESPONSE._serialized_start=2435 - _GETRANDOMDEVADDRRESPONSE._serialized_end=2479 - _GETDEVICESTATSREQUEST._serialized_start=2481 - _GETDEVICESTATSREQUEST._serialized_end=2605 - _GETDEVICESTATSRESPONSE._serialized_start=2607 - _GETDEVICESTATSRESPONSE._serialized_end=2665 - _DEVICESTATS._serialized_start=2668 - _DEVICESTATS._serialized_end=3130 - _DEVICESTATS_RXPACKETSPERFREQUENCYENTRY._serialized_start=2968 - _DEVICESTATS_RXPACKETSPERFREQUENCYENTRY._serialized_end=3028 - _DEVICESTATS_RXPACKETSPERDRENTRY._serialized_start=3030 - _DEVICESTATS_RXPACKETSPERDRENTRY._serialized_end=3083 - _DEVICESTATS_ERRORSENTRY._serialized_start=3085 - _DEVICESTATS_ERRORSENTRY._serialized_end=3130 - _DEVICEQUEUEITEM._serialized_start=3133 - _DEVICEQUEUEITEM._serialized_end=3309 - _ENQUEUEDEVICEQUEUEITEMREQUEST._serialized_start=3311 - _ENQUEUEDEVICEQUEUEITEMREQUEST._serialized_end=3378 - _ENQUEUEDEVICEQUEUEITEMRESPONSE._serialized_start=3380 - _ENQUEUEDEVICEQUEUEITEMRESPONSE._serialized_end=3424 - _FLUSHDEVICEQUEUEREQUEST._serialized_start=3426 - _FLUSHDEVICEQUEUEREQUEST._serialized_end=3468 - _GETDEVICEQUEUEITEMSREQUEST._serialized_start=3470 - _GETDEVICEQUEUEITEMSREQUEST._serialized_end=3535 - _GETDEVICEQUEUEITEMSRESPONSE._serialized_start=3537 - _GETDEVICEQUEUEITEMSRESPONSE._serialized_end=3625 - _FLUSHDEVNONCESREQUEST._serialized_start=3627 - _FLUSHDEVNONCESREQUEST._serialized_end=3667 - _DEVICESERVICE._serialized_start=3670 - _DEVICESERVICE._serialized_end=4951 + _GETDEVICEMETRICSRESPONSE_METRICSENTRY._options = None + _GETDEVICEMETRICSRESPONSE_METRICSENTRY._serialized_options = b'8\001' + _GETDEVICEMETRICSRESPONSE_STATESENTRY._options = None + _GETDEVICEMETRICSRESPONSE_STATESENTRY._serialized_options = b'8\001' + _DEVICESERVICE.methods_by_name['Create']._options = None + _DEVICESERVICE.methods_by_name['Create']._serialized_options = b'\202\323\344\223\002\021\"\014/api/devices:\001*' + _DEVICESERVICE.methods_by_name['Get']._options = None + _DEVICESERVICE.methods_by_name['Get']._serialized_options = b'\202\323\344\223\002\030\022\026/api/devices/{dev_eui}' + _DEVICESERVICE.methods_by_name['Update']._options = None + _DEVICESERVICE.methods_by_name['Update']._serialized_options = b'\202\323\344\223\002\"\032\035/api/devices/{device.dev_eui}:\001*' + _DEVICESERVICE.methods_by_name['Delete']._options = None + _DEVICESERVICE.methods_by_name['Delete']._serialized_options = b'\202\323\344\223\002\030*\026/api/devices/{dev_eui}' + _DEVICESERVICE.methods_by_name['List']._options = None + _DEVICESERVICE.methods_by_name['List']._serialized_options = b'\202\323\344\223\002\016\022\014/api/devices' + _DEVICESERVICE.methods_by_name['CreateKeys']._options = None + _DEVICESERVICE.methods_by_name['CreateKeys']._serialized_options = b'\202\323\344\223\002,\"\'/api/devices/{device_keys.dev_eui}/keys:\001*' + _DEVICESERVICE.methods_by_name['GetKeys']._options = None + _DEVICESERVICE.methods_by_name['GetKeys']._serialized_options = b'\202\323\344\223\002\035\022\033/api/devices/{dev_eui}/keys' + _DEVICESERVICE.methods_by_name['UpdateKeys']._options = None + _DEVICESERVICE.methods_by_name['UpdateKeys']._serialized_options = b'\202\323\344\223\002,\032\'/api/devices/{device_keys.dev_eui}/keys:\001*' + _DEVICESERVICE.methods_by_name['DeleteKeys']._options = None + _DEVICESERVICE.methods_by_name['DeleteKeys']._serialized_options = b'\202\323\344\223\002\035*\033/api/devices/{dev_eui}/keys' + _DEVICESERVICE.methods_by_name['FlushDevNonces']._options = None + _DEVICESERVICE.methods_by_name['FlushDevNonces']._serialized_options = b'\202\323\344\223\002#*!/api/devices/{dev_eui}/dev-nonces' + _DEVICESERVICE.methods_by_name['Activate']._options = None + _DEVICESERVICE.methods_by_name['Activate']._serialized_options = b'\202\323\344\223\0026\"1/api/devices/{device_activation.dev_eui}/activate:\001*' + _DEVICESERVICE.methods_by_name['Deactivate']._options = None + _DEVICESERVICE.methods_by_name['Deactivate']._serialized_options = b'\202\323\344\223\002#*!/api/devices/{dev_eui}/activation' + _DEVICESERVICE.methods_by_name['GetActivation']._options = None + _DEVICESERVICE.methods_by_name['GetActivation']._serialized_options = b'\202\323\344\223\002#\022!/api/devices/{dev_eui}/activation' + _DEVICESERVICE.methods_by_name['GetRandomDevAddr']._options = None + _DEVICESERVICE.methods_by_name['GetRandomDevAddr']._serialized_options = b'\202\323\344\223\002,\"*/api/devices/{dev_eui}/get-random-dev-addr' + _DEVICESERVICE.methods_by_name['GetMetrics']._options = None + _DEVICESERVICE.methods_by_name['GetMetrics']._serialized_options = b'\202\323\344\223\002 \022\036/api/devices/{dev_eui}/metrics' + _DEVICESERVICE.methods_by_name['GetLinkMetrics']._options = None + _DEVICESERVICE.methods_by_name['GetLinkMetrics']._serialized_options = b'\202\323\344\223\002%\022#/api/devices/{dev_eui}/link-metrics' + _DEVICESERVICE.methods_by_name['Enqueue']._options = None + _DEVICESERVICE.methods_by_name['Enqueue']._serialized_options = b'\202\323\344\223\002,\"\'/api/devices/{queue_item.dev_eui}/queue:\001*' + _DEVICESERVICE.methods_by_name['FlushQueue']._options = None + _DEVICESERVICE.methods_by_name['FlushQueue']._serialized_options = b'\202\323\344\223\002\036*\034/api/devices/{dev_eui}/queue' + _DEVICESERVICE.methods_by_name['GetQueue']._options = None + _DEVICESERVICE.methods_by_name['GetQueue']._serialized_options = b'\202\323\344\223\002\036\022\034/api/devices/{dev_eui}/queue' + _DEVICE._serialized_start=199 + _DEVICE._serialized_end=535 + _DEVICE_VARIABLESENTRY._serialized_start=442 + _DEVICE_VARIABLESENTRY._serialized_end=490 + _DEVICE_TAGSENTRY._serialized_start=492 + _DEVICE_TAGSENTRY._serialized_end=535 + _DEVICESTATUS._serialized_start=537 + _DEVICESTATUS._serialized_end=621 + _DEVICELISTITEM._serialized_start=624 + _DEVICELISTITEM._serialized_end=936 + _DEVICEKEYS._serialized_start=938 + _DEVICEKEYS._serialized_end=1001 + _CREATEDEVICEREQUEST._serialized_start=1003 + _CREATEDEVICEREQUEST._serialized_end=1053 + _GETDEVICEREQUEST._serialized_start=1055 + _GETDEVICEREQUEST._serialized_end=1090 + _GETDEVICERESPONSE._serialized_start=1093 + _GETDEVICERESPONSE._serialized_end=1329 + _UPDATEDEVICEREQUEST._serialized_start=1331 + _UPDATEDEVICEREQUEST._serialized_end=1381 + _DELETEDEVICEREQUEST._serialized_start=1383 + _DELETEDEVICEREQUEST._serialized_end=1421 + _LISTDEVICESREQUEST._serialized_start=1423 + _LISTDEVICESREQUEST._serialized_end=1542 + _LISTDEVICESRESPONSE._serialized_start=1544 + _LISTDEVICESRESPONSE._serialized_end=1623 + _CREATEDEVICEKEYSREQUEST._serialized_start=1625 + _CREATEDEVICEKEYSREQUEST._serialized_end=1688 + _GETDEVICEKEYSREQUEST._serialized_start=1690 + _GETDEVICEKEYSREQUEST._serialized_end=1729 + _GETDEVICEKEYSRESPONSE._serialized_start=1732 + _GETDEVICEKEYSRESPONSE._serialized_end=1889 + _UPDATEDEVICEKEYSREQUEST._serialized_start=1891 + _UPDATEDEVICEKEYSREQUEST._serialized_end=1954 + _DELETEDEVICEKEYSREQUEST._serialized_start=1956 + _DELETEDEVICEKEYSREQUEST._serialized_end=1998 + _DEVICEACTIVATION._serialized_start=2001 + _DEVICEACTIVATION._serialized_end=2208 + _ACTIVATEDEVICEREQUEST._serialized_start=2210 + _ACTIVATEDEVICEREQUEST._serialized_end=2283 + _DEACTIVATEDEVICEREQUEST._serialized_start=2285 + _DEACTIVATEDEVICEREQUEST._serialized_end=2327 + _GETDEVICEACTIVATIONREQUEST._serialized_start=2329 + _GETDEVICEACTIVATIONREQUEST._serialized_end=2374 + _GETDEVICEACTIVATIONRESPONSE._serialized_start=2376 + _GETDEVICEACTIVATIONRESPONSE._serialized_end=2455 + _GETRANDOMDEVADDRREQUEST._serialized_start=2457 + _GETRANDOMDEVADDRREQUEST._serialized_end=2499 + _GETRANDOMDEVADDRRESPONSE._serialized_start=2501 + _GETRANDOMDEVADDRRESPONSE._serialized_end=2545 + _GETDEVICEMETRICSREQUEST._serialized_start=2548 + _GETDEVICEMETRICSREQUEST._serialized_end=2716 + _GETDEVICEMETRICSRESPONSE._serialized_start=2719 + _GETDEVICEMETRICSRESPONSE._serialized_end=2994 + _GETDEVICEMETRICSRESPONSE_METRICSENTRY._serialized_start=2867 + _GETDEVICEMETRICSRESPONSE_METRICSENTRY._serialized_end=2929 + _GETDEVICEMETRICSRESPONSE_STATESENTRY._serialized_start=2931 + _GETDEVICEMETRICSRESPONSE_STATESENTRY._serialized_end=2994 + _DEVICESTATE._serialized_start=2996 + _DEVICESTATE._serialized_end=3038 + _GETDEVICELINKMETRICSREQUEST._serialized_start=3041 + _GETDEVICELINKMETRICSREQUEST._serialized_end=3213 + _GETDEVICELINKMETRICSRESPONSE._serialized_start=3216 + _GETDEVICELINKMETRICSRESPONSE._serialized_end=3467 + _DEVICEQUEUEITEM._serialized_start=3470 + _DEVICEQUEUEITEM._serialized_end=3646 + _ENQUEUEDEVICEQUEUEITEMREQUEST._serialized_start=3648 + _ENQUEUEDEVICEQUEUEITEMREQUEST._serialized_end=3721 + _ENQUEUEDEVICEQUEUEITEMRESPONSE._serialized_start=3723 + _ENQUEUEDEVICEQUEUEITEMRESPONSE._serialized_end=3767 + _FLUSHDEVICEQUEUEREQUEST._serialized_start=3769 + _FLUSHDEVICEQUEUEREQUEST._serialized_end=3811 + _GETDEVICEQUEUEITEMSREQUEST._serialized_start=3813 + _GETDEVICEQUEUEITEMSREQUEST._serialized_end=3878 + _GETDEVICEQUEUEITEMSRESPONSE._serialized_start=3880 + _GETDEVICEQUEUEITEMSRESPONSE._serialized_end=3968 + _FLUSHDEVNONCESREQUEST._serialized_start=3970 + _FLUSHDEVNONCESREQUEST._serialized_end=4010 + _DEVICESERVICE._serialized_start=4013 + _DEVICESERVICE._serialized_end=6141 # @@protoc_insertion_point(module_scope) diff --git a/api/python/src/chirpstack_api/api/device_pb2_grpc.py b/api/python/src/chirpstack_api/api/device_pb2_grpc.py index df1de581..d0379659 100644 --- a/api/python/src/chirpstack_api/api/device_pb2_grpc.py +++ b/api/python/src/chirpstack_api/api/device_pb2_grpc.py @@ -86,10 +86,15 @@ class DeviceServiceStub(object): 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.GetMetrics = channel.unary_unary( + '/api.DeviceService/GetMetrics', + request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceMetricsRequest.SerializeToString, + response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceMetricsResponse.FromString, + ) + self.GetLinkMetrics = channel.unary_unary( + '/api.DeviceService/GetLinkMetrics', + request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceLinkMetricsRequest.SerializeToString, + response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceLinkMetricsResponse.FromString, ) self.Enqueue = channel.unary_unary( '/api.DeviceService/Enqueue', @@ -210,8 +215,17 @@ class DeviceServiceServicer(object): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def GetStats(self, request, context): - """GetStats returns the device stats. + def GetMetrics(self, request, context): + """GetMetrics returns the device metrics. + Note that this requires a device-profile with codec and measurements configured. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetLinkMetrics(self, request, context): + """GetLinkMetrics returns the device link metrics. + This includes uplinks, downlinks, RSSI, SNR, etc... """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -311,10 +325,15 @@ def add_DeviceServiceServicer_to_server(servicer, server): 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, + 'GetMetrics': grpc.unary_unary_rpc_method_handler( + servicer.GetMetrics, + request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceMetricsRequest.FromString, + response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceMetricsResponse.SerializeToString, + ), + 'GetLinkMetrics': grpc.unary_unary_rpc_method_handler( + servicer.GetLinkMetrics, + request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceLinkMetricsRequest.FromString, + response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceLinkMetricsResponse.SerializeToString, ), 'Enqueue': grpc.unary_unary_rpc_method_handler( servicer.Enqueue, @@ -581,7 +600,7 @@ class DeviceService(object): insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def GetStats(request, + def GetMetrics(request, target, options=(), channel_credentials=None, @@ -591,9 +610,26 @@ class DeviceService(object): 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, + return grpc.experimental.unary_unary(request, target, '/api.DeviceService/GetMetrics', + chirpstack__api_dot_api_dot_device__pb2.GetDeviceMetricsRequest.SerializeToString, + chirpstack__api_dot_api_dot_device__pb2.GetDeviceMetricsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetLinkMetrics(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/GetLinkMetrics', + chirpstack__api_dot_api_dot_device__pb2.GetDeviceLinkMetricsRequest.SerializeToString, + chirpstack__api_dot_api_dot_device__pb2.GetDeviceLinkMetricsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/api/python/src/chirpstack_api/api/device_profile_pb2.py b/api/python/src/chirpstack_api/api/device_profile_pb2.py index ec2a0b2c..c289ccff 100644 --- a/api/python/src/chirpstack_api/api/device_profile_pb2.py +++ b/api/python/src/chirpstack_api/api/device_profile_pb2.py @@ -13,22 +13,32 @@ from google.protobuf import symbol_database as _symbol_database _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/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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'chirpstack-api/api/device_profile.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\"\xaf\x07\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\x13\n\x0b\x64\x65scription\x18\x1a \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\x1c\n\x14payload_codec_script\x18\t \x01(\t\x12\x1f\n\x17\x66lush_queue_on_activate\x18\n \x01(\x08\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\x12:\n\x0cmeasurements\x18\x1b \x03(\x0b\x32$.api.DeviceProfile.MeasurementsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x45\n\x11MeasurementsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1f\n\x05value\x18\x02 \x01(\x0b\x32\x10.api.Measurement:\x02\x38\x01\"?\n\x0bMeasurement\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\"\n\x04kind\x18\x03 \x01(\x0e\x32\x14.api.MeasurementKind\"\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*P\n\x0fMeasurementKind\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07\x43OUNTER\x10\x01\x12\x0c\n\x08\x41\x42SOLUTE\x10\x02\x12\t\n\x05GAUGE\x10\x03\x12\n\n\x06STRING\x10\x04\x32\xb8\x05\n\x14\x44\x65viceProfileService\x12l\n\x06\x43reate\x12\x1f.api.CreateDeviceProfileRequest\x1a .api.CreateDeviceProfileResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\"\x14/api/device-profiles:\x01*\x12\x65\n\x03Get\x12\x1c.api.GetDeviceProfileRequest\x1a\x1d.api.GetDeviceProfileResponse\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/device-profiles/{id}\x12v\n\x06Update\x12\x1f.api.UpdateDeviceProfileRequest\x1a\x16.google.protobuf.Empty\"3\x82\xd3\xe4\x93\x02-\x1a(/api/device-profiles/{device_profile.id}:\x01*\x12\x64\n\x06\x44\x65lete\x12\x1f.api.DeleteDeviceProfileRequest\x1a\x16.google.protobuf.Empty\"!\x82\xd3\xe4\x93\x02\x1b*\x19/api/device-profiles/{id}\x12\x65\n\x04List\x12\x1e.api.ListDeviceProfilesRequest\x1a\x1f.api.ListDeviceProfilesResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/api/device-profiles\x12\x85\x01\n\x11ListAdrAlgorithms\x12\x16.google.protobuf.Empty\x1a+.api.ListDeviceProfileAdrAlgorithmsResponse\"+\x82\xd3\xe4\x93\x02%\x12#/api/device-profiles/adr-algorithmsBY\n\x11io.chirpstack.apiB\x12\x44\x65viceProfileProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/apib\x06proto3') _CODECRUNTIME = DESCRIPTOR.enum_types_by_name['CodecRuntime'] CodecRuntime = enum_type_wrapper.EnumTypeWrapper(_CODECRUNTIME) +_MEASUREMENTKIND = DESCRIPTOR.enum_types_by_name['MeasurementKind'] +MeasurementKind = enum_type_wrapper.EnumTypeWrapper(_MEASUREMENTKIND) NONE = 0 CAYENNE_LPP = 1 JS = 2 +UNKNOWN = 0 +COUNTER = 1 +ABSOLUTE = 2 +GAUGE = 3 +STRING = 4 _DEVICEPROFILE = DESCRIPTOR.message_types_by_name['DeviceProfile'] _DEVICEPROFILE_TAGSENTRY = _DEVICEPROFILE.nested_types_by_name['TagsEntry'] +_DEVICEPROFILE_MEASUREMENTSENTRY = _DEVICEPROFILE.nested_types_by_name['MeasurementsEntry'] +_MEASUREMENT = DESCRIPTOR.message_types_by_name['Measurement'] _DEVICEPROFILELISTITEM = DESCRIPTOR.message_types_by_name['DeviceProfileListItem'] _CREATEDEVICEPROFILEREQUEST = DESCRIPTOR.message_types_by_name['CreateDeviceProfileRequest'] _CREATEDEVICEPROFILERESPONSE = DESCRIPTOR.message_types_by_name['CreateDeviceProfileResponse'] @@ -48,12 +58,27 @@ DeviceProfile = _reflection.GeneratedProtocolMessageType('DeviceProfile', (_mess # @@protoc_insertion_point(class_scope:api.DeviceProfile.TagsEntry) }) , + + 'MeasurementsEntry' : _reflection.GeneratedProtocolMessageType('MeasurementsEntry', (_message.Message,), { + 'DESCRIPTOR' : _DEVICEPROFILE_MEASUREMENTSENTRY, + '__module__' : 'chirpstack_api.api.device_profile_pb2' + # @@protoc_insertion_point(class_scope:api.DeviceProfile.MeasurementsEntry) + }) + , '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) +_sym_db.RegisterMessage(DeviceProfile.MeasurementsEntry) + +Measurement = _reflection.GeneratedProtocolMessageType('Measurement', (_message.Message,), { + 'DESCRIPTOR' : _MEASUREMENT, + '__module__' : 'chirpstack_api.api.device_profile_pb2' + # @@protoc_insertion_point(class_scope:api.Measurement) + }) +_sym_db.RegisterMessage(Measurement) DeviceProfileListItem = _reflection.GeneratedProtocolMessageType('DeviceProfileListItem', (_message.Message,), { 'DESCRIPTOR' : _DEVICEPROFILELISTITEM, @@ -136,37 +161,57 @@ _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' + DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\022DeviceProfileProtoP\001Z.github.com/chirpstack/chirpstack/api/go/v4/api' _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 + _DEVICEPROFILE_MEASUREMENTSENTRY._options = None + _DEVICEPROFILE_MEASUREMENTSENTRY._serialized_options = b'8\001' + _DEVICEPROFILESERVICE.methods_by_name['Create']._options = None + _DEVICEPROFILESERVICE.methods_by_name['Create']._serialized_options = b'\202\323\344\223\002\031\"\024/api/device-profiles:\001*' + _DEVICEPROFILESERVICE.methods_by_name['Get']._options = None + _DEVICEPROFILESERVICE.methods_by_name['Get']._serialized_options = b'\202\323\344\223\002\033\022\031/api/device-profiles/{id}' + _DEVICEPROFILESERVICE.methods_by_name['Update']._options = None + _DEVICEPROFILESERVICE.methods_by_name['Update']._serialized_options = b'\202\323\344\223\002-\032(/api/device-profiles/{device_profile.id}:\001*' + _DEVICEPROFILESERVICE.methods_by_name['Delete']._options = None + _DEVICEPROFILESERVICE.methods_by_name['Delete']._serialized_options = b'\202\323\344\223\002\033*\031/api/device-profiles/{id}' + _DEVICEPROFILESERVICE.methods_by_name['List']._options = None + _DEVICEPROFILESERVICE.methods_by_name['List']._serialized_options = b'\202\323\344\223\002\026\022\024/api/device-profiles' + _DEVICEPROFILESERVICE.methods_by_name['ListAdrAlgorithms']._options = None + _DEVICEPROFILESERVICE.methods_by_name['ListAdrAlgorithms']._serialized_options = b'\202\323\344\223\002%\022#/api/device-profiles/adr-algorithms' + _CODECRUNTIME._serialized_start=2326 + _CODECRUNTIME._serialized_end=2375 + _MEASUREMENTKIND._serialized_start=2377 + _MEASUREMENTKIND._serialized_end=2457 + _DEVICEPROFILE._serialized_start=177 + _DEVICEPROFILE._serialized_end=1120 + _DEVICEPROFILE_TAGSENTRY._serialized_start=1006 + _DEVICEPROFILE_TAGSENTRY._serialized_end=1049 + _DEVICEPROFILE_MEASUREMENTSENTRY._serialized_start=1051 + _DEVICEPROFILE_MEASUREMENTSENTRY._serialized_end=1120 + _MEASUREMENT._serialized_start=1122 + _MEASUREMENT._serialized_end=1185 + _DEVICEPROFILELISTITEM._serialized_start=1188 + _DEVICEPROFILELISTITEM._serialized_end=1537 + _CREATEDEVICEPROFILEREQUEST._serialized_start=1539 + _CREATEDEVICEPROFILEREQUEST._serialized_end=1611 + _CREATEDEVICEPROFILERESPONSE._serialized_start=1613 + _CREATEDEVICEPROFILERESPONSE._serialized_end=1654 + _GETDEVICEPROFILEREQUEST._serialized_start=1656 + _GETDEVICEPROFILEREQUEST._serialized_end=1693 + _GETDEVICEPROFILERESPONSE._serialized_start=1696 + _GETDEVICEPROFILERESPONSE._serialized_end=1862 + _UPDATEDEVICEPROFILEREQUEST._serialized_start=1864 + _UPDATEDEVICEPROFILEREQUEST._serialized_end=1936 + _DELETEDEVICEPROFILEREQUEST._serialized_start=1938 + _DELETEDEVICEPROFILEREQUEST._serialized_end=1978 + _LISTDEVICEPROFILESREQUEST._serialized_start=1980 + _LISTDEVICEPROFILESREQUEST._serialized_end=2073 + _LISTDEVICEPROFILESRESPONSE._serialized_start=2075 + _LISTDEVICEPROFILESRESPONSE._serialized_end=2168 + _LISTDEVICEPROFILEADRALGORITHMSRESPONSE._serialized_start=2170 + _LISTDEVICEPROFILEADRALGORITHMSRESPONSE._serialized_end=2274 + _ADRALGORITHMLISTITEM._serialized_start=2276 + _ADRALGORITHMLISTITEM._serialized_end=2324 + _DEVICEPROFILESERVICE._serialized_start=2460 + _DEVICEPROFILESERVICE._serialized_end=3156 # @@protoc_insertion_point(module_scope) diff --git a/api/python/src/chirpstack_api/api/device_profile_template_pb2.py b/api/python/src/chirpstack_api/api/device_profile_template_pb2.py new file mode 100644 index 00000000..16684e6a --- /dev/null +++ b/api/python/src/chirpstack_api/api/device_profile_template_pb2.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: chirpstack-api/api/device_profile_template.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.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 +from chirpstack_api.api import device_profile_pb2 as chirpstack__api_dot_api_dot_device__profile__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n0chirpstack-api/api/device_profile_template.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\x1a\'chirpstack-api/api/device_profile.proto\"\xd6\x07\n\x15\x44\x65viceProfileTemplate\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\x0e\n\x06vendor\x18\x04 \x01(\t\x12\x10\n\x08\x66irmware\x18\x05 \x01(\t\x12\x1e\n\x06region\x18\x06 \x01(\x0e\x32\x0e.common.Region\x12\'\n\x0bmac_version\x18\x07 \x01(\x0e\x32\x12.common.MacVersion\x12\x36\n\x13reg_params_revision\x18\x08 \x01(\x0e\x32\x19.common.RegParamsRevision\x12\x18\n\x10\x61\x64r_algorithm_id\x18\t \x01(\t\x12\x30\n\x15payload_codec_runtime\x18\n \x01(\x0e\x32\x11.api.CodecRuntime\x12\x1c\n\x14payload_codec_script\x18\x0b \x01(\t\x12\x1f\n\x17\x66lush_queue_on_activate\x18\x0c \x01(\x08\x12\x17\n\x0fuplink_interval\x18\r \x01(\r\x12\"\n\x1a\x64\x65vice_status_req_interval\x18\x0e \x01(\r\x12\x15\n\rsupports_otaa\x18\x0f \x01(\x08\x12\x18\n\x10supports_class_b\x18\x10 \x01(\x08\x12\x18\n\x10supports_class_c\x18\x11 \x01(\x08\x12\x17\n\x0f\x63lass_b_timeout\x18\x12 \x01(\r\x12 \n\x18\x63lass_b_ping_slot_period\x18\x13 \x01(\r\x12\x1c\n\x14\x63lass_b_ping_slot_dr\x18\x14 \x01(\r\x12\x1e\n\x16\x63lass_b_ping_slot_freq\x18\x15 \x01(\r\x12\x17\n\x0f\x63lass_c_timeout\x18\x16 \x01(\r\x12\x15\n\rabp_rx1_delay\x18\x17 \x01(\r\x12\x19\n\x11\x61\x62p_rx1_dr_offset\x18\x18 \x01(\r\x12\x12\n\nabp_rx2_dr\x18\x19 \x01(\r\x12\x14\n\x0c\x61\x62p_rx2_freq\x18\x1a \x01(\r\x12\x32\n\x04tags\x18\x1b \x03(\x0b\x32$.api.DeviceProfileTemplate.TagsEntry\x12\x42\n\x0cmeasurements\x18\x1c \x03(\x0b\x32,.api.DeviceProfileTemplate.MeasurementsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x45\n\x11MeasurementsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1f\n\x05value\x18\x02 \x01(\x0b\x32\x10.api.Measurement:\x02\x38\x01\"\x87\x03\n\x1d\x44\x65viceProfileTemplateListItem\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\x0e\n\x06vendor\x18\x05 \x01(\t\x12\x10\n\x08\x66irmware\x18\x06 \x01(\t\x12\x1e\n\x06region\x18\x07 \x01(\x0e\x32\x0e.common.Region\x12\'\n\x0bmac_version\x18\x08 \x01(\x0e\x32\x12.common.MacVersion\x12\x36\n\x13reg_params_revision\x18\t \x01(\x0e\x32\x19.common.RegParamsRevision\x12\x15\n\rsupports_otaa\x18\n \x01(\x08\x12\x18\n\x10supports_class_b\x18\x0b \x01(\x08\x12\x18\n\x10supports_class_c\x18\x0c \x01(\x08\"a\n\"CreateDeviceProfileTemplateRequest\x12;\n\x17\x64\x65vice_profile_template\x18\x01 \x01(\x0b\x32\x1a.api.DeviceProfileTemplate\"-\n\x1fGetDeviceProfileTemplateRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\xbf\x01\n GetDeviceProfileTemplateResponse\x12;\n\x17\x64\x65vice_profile_template\x18\x01 \x01(\x0b\x32\x1a.api.DeviceProfileTemplate\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\"a\n\"UpdateDeviceProfileTemplateRequest\x12;\n\x17\x64\x65vice_profile_template\x18\x01 \x01(\x0b\x32\x1a.api.DeviceProfileTemplate\"0\n\"DeleteDeviceProfileTemplateRequest\x12\n\n\x02id\x18\x01 \x01(\t\"B\n!ListDeviceProfileTemplatesRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\r\"m\n\"ListDeviceProfileTemplatesResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12\x32\n\x06result\x18\x02 \x03(\x0b\x32\".api.DeviceProfileTemplateListItem2\x9d\x05\n\x1c\x44\x65viceProfileTemplateService\x12s\n\x06\x43reate\x12\'.api.CreateDeviceProfileTemplateRequest\x1a\x16.google.protobuf.Empty\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/device-profile-templates:\x01*\x12~\n\x03Get\x12$.api.GetDeviceProfileTemplateRequest\x1a%.api.GetDeviceProfileTemplateResponse\"*\x82\xd3\xe4\x93\x02$\x12\"/api/device-profile-templates/{id}\x12\x90\x01\n\x06Update\x12\'.api.UpdateDeviceProfileTemplateRequest\x1a\x16.google.protobuf.Empty\"E\x82\xd3\xe4\x93\x02?\x1a:/api/device-profile-templates/{device_profile_template.id}:\x01*\x12u\n\x06\x44\x65lete\x12\'.api.DeleteDeviceProfileTemplateRequest\x1a\x16.google.protobuf.Empty\"*\x82\xd3\xe4\x93\x02$*\"/api/device-profile-templates/{id}\x12~\n\x04List\x12&.api.ListDeviceProfileTemplatesRequest\x1a\'.api.ListDeviceProfileTemplatesResponse\"%\x82\xd3\xe4\x93\x02\x1f\x12\x1d/api/device-profile-templatesBa\n\x11io.chirpstack.apiB\x1a\x44\x65viceProfileTemplateProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/apib\x06proto3') + + + +_DEVICEPROFILETEMPLATE = DESCRIPTOR.message_types_by_name['DeviceProfileTemplate'] +_DEVICEPROFILETEMPLATE_TAGSENTRY = _DEVICEPROFILETEMPLATE.nested_types_by_name['TagsEntry'] +_DEVICEPROFILETEMPLATE_MEASUREMENTSENTRY = _DEVICEPROFILETEMPLATE.nested_types_by_name['MeasurementsEntry'] +_DEVICEPROFILETEMPLATELISTITEM = DESCRIPTOR.message_types_by_name['DeviceProfileTemplateListItem'] +_CREATEDEVICEPROFILETEMPLATEREQUEST = DESCRIPTOR.message_types_by_name['CreateDeviceProfileTemplateRequest'] +_GETDEVICEPROFILETEMPLATEREQUEST = DESCRIPTOR.message_types_by_name['GetDeviceProfileTemplateRequest'] +_GETDEVICEPROFILETEMPLATERESPONSE = DESCRIPTOR.message_types_by_name['GetDeviceProfileTemplateResponse'] +_UPDATEDEVICEPROFILETEMPLATEREQUEST = DESCRIPTOR.message_types_by_name['UpdateDeviceProfileTemplateRequest'] +_DELETEDEVICEPROFILETEMPLATEREQUEST = DESCRIPTOR.message_types_by_name['DeleteDeviceProfileTemplateRequest'] +_LISTDEVICEPROFILETEMPLATESREQUEST = DESCRIPTOR.message_types_by_name['ListDeviceProfileTemplatesRequest'] +_LISTDEVICEPROFILETEMPLATESRESPONSE = DESCRIPTOR.message_types_by_name['ListDeviceProfileTemplatesResponse'] +DeviceProfileTemplate = _reflection.GeneratedProtocolMessageType('DeviceProfileTemplate', (_message.Message,), { + + 'TagsEntry' : _reflection.GeneratedProtocolMessageType('TagsEntry', (_message.Message,), { + 'DESCRIPTOR' : _DEVICEPROFILETEMPLATE_TAGSENTRY, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.DeviceProfileTemplate.TagsEntry) + }) + , + + 'MeasurementsEntry' : _reflection.GeneratedProtocolMessageType('MeasurementsEntry', (_message.Message,), { + 'DESCRIPTOR' : _DEVICEPROFILETEMPLATE_MEASUREMENTSENTRY, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.DeviceProfileTemplate.MeasurementsEntry) + }) + , + 'DESCRIPTOR' : _DEVICEPROFILETEMPLATE, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.DeviceProfileTemplate) + }) +_sym_db.RegisterMessage(DeviceProfileTemplate) +_sym_db.RegisterMessage(DeviceProfileTemplate.TagsEntry) +_sym_db.RegisterMessage(DeviceProfileTemplate.MeasurementsEntry) + +DeviceProfileTemplateListItem = _reflection.GeneratedProtocolMessageType('DeviceProfileTemplateListItem', (_message.Message,), { + 'DESCRIPTOR' : _DEVICEPROFILETEMPLATELISTITEM, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.DeviceProfileTemplateListItem) + }) +_sym_db.RegisterMessage(DeviceProfileTemplateListItem) + +CreateDeviceProfileTemplateRequest = _reflection.GeneratedProtocolMessageType('CreateDeviceProfileTemplateRequest', (_message.Message,), { + 'DESCRIPTOR' : _CREATEDEVICEPROFILETEMPLATEREQUEST, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.CreateDeviceProfileTemplateRequest) + }) +_sym_db.RegisterMessage(CreateDeviceProfileTemplateRequest) + +GetDeviceProfileTemplateRequest = _reflection.GeneratedProtocolMessageType('GetDeviceProfileTemplateRequest', (_message.Message,), { + 'DESCRIPTOR' : _GETDEVICEPROFILETEMPLATEREQUEST, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.GetDeviceProfileTemplateRequest) + }) +_sym_db.RegisterMessage(GetDeviceProfileTemplateRequest) + +GetDeviceProfileTemplateResponse = _reflection.GeneratedProtocolMessageType('GetDeviceProfileTemplateResponse', (_message.Message,), { + 'DESCRIPTOR' : _GETDEVICEPROFILETEMPLATERESPONSE, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.GetDeviceProfileTemplateResponse) + }) +_sym_db.RegisterMessage(GetDeviceProfileTemplateResponse) + +UpdateDeviceProfileTemplateRequest = _reflection.GeneratedProtocolMessageType('UpdateDeviceProfileTemplateRequest', (_message.Message,), { + 'DESCRIPTOR' : _UPDATEDEVICEPROFILETEMPLATEREQUEST, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.UpdateDeviceProfileTemplateRequest) + }) +_sym_db.RegisterMessage(UpdateDeviceProfileTemplateRequest) + +DeleteDeviceProfileTemplateRequest = _reflection.GeneratedProtocolMessageType('DeleteDeviceProfileTemplateRequest', (_message.Message,), { + 'DESCRIPTOR' : _DELETEDEVICEPROFILETEMPLATEREQUEST, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.DeleteDeviceProfileTemplateRequest) + }) +_sym_db.RegisterMessage(DeleteDeviceProfileTemplateRequest) + +ListDeviceProfileTemplatesRequest = _reflection.GeneratedProtocolMessageType('ListDeviceProfileTemplatesRequest', (_message.Message,), { + 'DESCRIPTOR' : _LISTDEVICEPROFILETEMPLATESREQUEST, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.ListDeviceProfileTemplatesRequest) + }) +_sym_db.RegisterMessage(ListDeviceProfileTemplatesRequest) + +ListDeviceProfileTemplatesResponse = _reflection.GeneratedProtocolMessageType('ListDeviceProfileTemplatesResponse', (_message.Message,), { + 'DESCRIPTOR' : _LISTDEVICEPROFILETEMPLATESRESPONSE, + '__module__' : 'chirpstack_api.api.device_profile_template_pb2' + # @@protoc_insertion_point(class_scope:api.ListDeviceProfileTemplatesResponse) + }) +_sym_db.RegisterMessage(ListDeviceProfileTemplatesResponse) + +_DEVICEPROFILETEMPLATESERVICE = DESCRIPTOR.services_by_name['DeviceProfileTemplateService'] +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\032DeviceProfileTemplateProtoP\001Z.github.com/chirpstack/chirpstack/api/go/v4/api' + _DEVICEPROFILETEMPLATE_TAGSENTRY._options = None + _DEVICEPROFILETEMPLATE_TAGSENTRY._serialized_options = b'8\001' + _DEVICEPROFILETEMPLATE_MEASUREMENTSENTRY._options = None + _DEVICEPROFILETEMPLATE_MEASUREMENTSENTRY._serialized_options = b'8\001' + _DEVICEPROFILETEMPLATESERVICE.methods_by_name['Create']._options = None + _DEVICEPROFILETEMPLATESERVICE.methods_by_name['Create']._serialized_options = b'\202\323\344\223\002\"\"\035/api/device-profile-templates:\001*' + _DEVICEPROFILETEMPLATESERVICE.methods_by_name['Get']._options = None + _DEVICEPROFILETEMPLATESERVICE.methods_by_name['Get']._serialized_options = b'\202\323\344\223\002$\022\"/api/device-profile-templates/{id}' + _DEVICEPROFILETEMPLATESERVICE.methods_by_name['Update']._options = None + _DEVICEPROFILETEMPLATESERVICE.methods_by_name['Update']._serialized_options = b'\202\323\344\223\002?\032:/api/device-profile-templates/{device_profile_template.id}:\001*' + _DEVICEPROFILETEMPLATESERVICE.methods_by_name['Delete']._options = None + _DEVICEPROFILETEMPLATESERVICE.methods_by_name['Delete']._serialized_options = b'\202\323\344\223\002$*\"/api/device-profile-templates/{id}' + _DEVICEPROFILETEMPLATESERVICE.methods_by_name['List']._options = None + _DEVICEPROFILETEMPLATESERVICE.methods_by_name['List']._serialized_options = b'\202\323\344\223\002\037\022\035/api/device-profile-templates' + _DEVICEPROFILETEMPLATE._serialized_start=227 + _DEVICEPROFILETEMPLATE._serialized_end=1209 + _DEVICEPROFILETEMPLATE_TAGSENTRY._serialized_start=1095 + _DEVICEPROFILETEMPLATE_TAGSENTRY._serialized_end=1138 + _DEVICEPROFILETEMPLATE_MEASUREMENTSENTRY._serialized_start=1140 + _DEVICEPROFILETEMPLATE_MEASUREMENTSENTRY._serialized_end=1209 + _DEVICEPROFILETEMPLATELISTITEM._serialized_start=1212 + _DEVICEPROFILETEMPLATELISTITEM._serialized_end=1603 + _CREATEDEVICEPROFILETEMPLATEREQUEST._serialized_start=1605 + _CREATEDEVICEPROFILETEMPLATEREQUEST._serialized_end=1702 + _GETDEVICEPROFILETEMPLATEREQUEST._serialized_start=1704 + _GETDEVICEPROFILETEMPLATEREQUEST._serialized_end=1749 + _GETDEVICEPROFILETEMPLATERESPONSE._serialized_start=1752 + _GETDEVICEPROFILETEMPLATERESPONSE._serialized_end=1943 + _UPDATEDEVICEPROFILETEMPLATEREQUEST._serialized_start=1945 + _UPDATEDEVICEPROFILETEMPLATEREQUEST._serialized_end=2042 + _DELETEDEVICEPROFILETEMPLATEREQUEST._serialized_start=2044 + _DELETEDEVICEPROFILETEMPLATEREQUEST._serialized_end=2092 + _LISTDEVICEPROFILETEMPLATESREQUEST._serialized_start=2094 + _LISTDEVICEPROFILETEMPLATESREQUEST._serialized_end=2160 + _LISTDEVICEPROFILETEMPLATESRESPONSE._serialized_start=2162 + _LISTDEVICEPROFILETEMPLATESRESPONSE._serialized_end=2271 + _DEVICEPROFILETEMPLATESERVICE._serialized_start=2274 + _DEVICEPROFILETEMPLATESERVICE._serialized_end=2943 +# @@protoc_insertion_point(module_scope) diff --git a/api/python/src/chirpstack_api/api/device_profile_template_pb2_grpc.py b/api/python/src/chirpstack_api/api/device_profile_template_pb2_grpc.py new file mode 100644 index 00000000..ceaeef1e --- /dev/null +++ b/api/python/src/chirpstack_api/api/device_profile_template_pb2_grpc.py @@ -0,0 +1,207 @@ +# 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_template_pb2 as chirpstack__api_dot_api_dot_device__profile__template__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +class DeviceProfileTemplateServiceStub(object): + """DeviceProfileTemplateService is the service providing API methods for managing device-profile templates. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.Create = channel.unary_unary( + '/api.DeviceProfileTemplateService/Create', + request_serializer=chirpstack__api_dot_api_dot_device__profile__template__pb2.CreateDeviceProfileTemplateRequest.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + self.Get = channel.unary_unary( + '/api.DeviceProfileTemplateService/Get', + request_serializer=chirpstack__api_dot_api_dot_device__profile__template__pb2.GetDeviceProfileTemplateRequest.SerializeToString, + response_deserializer=chirpstack__api_dot_api_dot_device__profile__template__pb2.GetDeviceProfileTemplateResponse.FromString, + ) + self.Update = channel.unary_unary( + '/api.DeviceProfileTemplateService/Update', + request_serializer=chirpstack__api_dot_api_dot_device__profile__template__pb2.UpdateDeviceProfileTemplateRequest.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + self.Delete = channel.unary_unary( + '/api.DeviceProfileTemplateService/Delete', + request_serializer=chirpstack__api_dot_api_dot_device__profile__template__pb2.DeleteDeviceProfileTemplateRequest.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + self.List = channel.unary_unary( + '/api.DeviceProfileTemplateService/List', + request_serializer=chirpstack__api_dot_api_dot_device__profile__template__pb2.ListDeviceProfileTemplatesRequest.SerializeToString, + response_deserializer=chirpstack__api_dot_api_dot_device__profile__template__pb2.ListDeviceProfileTemplatesResponse.FromString, + ) + + +class DeviceProfileTemplateServiceServicer(object): + """DeviceProfileTemplateService is the service providing API methods for managing device-profile templates. + """ + + def Create(self, request, context): + """Create the given device-profile template. + """ + 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 template 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 template. + """ + 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 template 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-profile templates. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_DeviceProfileTemplateServiceServicer_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__template__pb2.CreateDeviceProfileTemplateRequest.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__profile__template__pb2.GetDeviceProfileTemplateRequest.FromString, + response_serializer=chirpstack__api_dot_api_dot_device__profile__template__pb2.GetDeviceProfileTemplateResponse.SerializeToString, + ), + 'Update': grpc.unary_unary_rpc_method_handler( + servicer.Update, + request_deserializer=chirpstack__api_dot_api_dot_device__profile__template__pb2.UpdateDeviceProfileTemplateRequest.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__template__pb2.DeleteDeviceProfileTemplateRequest.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__template__pb2.ListDeviceProfileTemplatesRequest.FromString, + response_serializer=chirpstack__api_dot_api_dot_device__profile__template__pb2.ListDeviceProfileTemplatesResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'api.DeviceProfileTemplateService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class DeviceProfileTemplateService(object): + """DeviceProfileTemplateService is the service providing API methods for managing device-profile templates. + """ + + @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.DeviceProfileTemplateService/Create', + chirpstack__api_dot_api_dot_device__profile__template__pb2.CreateDeviceProfileTemplateRequest.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.DeviceProfileTemplateService/Get', + chirpstack__api_dot_api_dot_device__profile__template__pb2.GetDeviceProfileTemplateRequest.SerializeToString, + chirpstack__api_dot_api_dot_device__profile__template__pb2.GetDeviceProfileTemplateResponse.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.DeviceProfileTemplateService/Update', + chirpstack__api_dot_api_dot_device__profile__template__pb2.UpdateDeviceProfileTemplateRequest.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.DeviceProfileTemplateService/Delete', + chirpstack__api_dot_api_dot_device__profile__template__pb2.DeleteDeviceProfileTemplateRequest.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.DeviceProfileTemplateService/List', + chirpstack__api_dot_api_dot_device__profile__template__pb2.ListDeviceProfileTemplatesRequest.SerializeToString, + chirpstack__api_dot_api_dot_device__profile__template__pb2.ListDeviceProfileTemplatesResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/api/python/src/chirpstack_api/api/frame_log_pb2.py b/api/python/src/chirpstack_api/api/frame_log_pb2.py index 3b91d2df..5828a454 100644 --- a/api/python/src/chirpstack_api/api/frame_log_pb2.py +++ b/api/python/src/chirpstack_api/api/frame_log_pb2.py @@ -17,7 +17,7 @@ from chirpstack_api.common import common_pb2 as chirpstack__api_dot_common_dot_c 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') +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(\r\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(\tBT\n\x11io.chirpstack.apiB\rFrameLogProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/apib\x06proto3') @@ -40,7 +40,7 @@ _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' + DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\rFrameLogProtoP\001Z.github.com/chirpstack/chirpstack/api/go/v4/api' _UPLINKFRAMELOG._serialized_start=141 _UPLINKFRAMELOG._serialized_end=356 _DOWNLINKFRAMELOG._serialized_start=359 diff --git a/api/python/src/chirpstack_api/api/gateway_pb2.py b/api/python/src/chirpstack_api/api/gateway_pb2.py index 9d4fe815..cd3ba4a9 100644 --- a/api/python/src/chirpstack_api/api/gateway_pb2.py +++ b/api/python/src/chirpstack_api/api/gateway_pb2.py @@ -12,12 +12,13 @@ from google.protobuf import symbol_database as _symbol_database _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/gateway.proto\x12\x03\x61pi\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\"chirpstack-api/common/common.proto\"\xaf\x02\n\x07Gateway\x12\x12\n\ngateway_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\"\n\x08location\x18\x04 \x01(\x0b\x32\x10.common.Location\x12\x11\n\ttenant_id\x18\x05 \x01(\t\x12$\n\x04tags\x18\x06 \x03(\x0b\x32\x16.api.Gateway.TagsEntry\x12\x30\n\nproperties\x18\x07 \x03(\x0b\x32\x1c.api.Gateway.PropertiesEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xfe\x02\n\x0fGatewayListItem\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\ngateway_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\"\n\x08location\x18\x05 \x01(\x0b\x32\x10.common.Location\x12\x38\n\nproperties\x18\x06 \x03(\x0b\x32$.api.GatewayListItem.PropertiesEntry\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0clast_seen_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"5\n\x14\x43reateGatewayRequest\x12\x1d\n\x07gateway\x18\x01 \x01(\x0b\x32\x0c.api.Gateway\"\'\n\x11GetGatewayRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\t\"\xc5\x01\n\x12GetGatewayResponse\x12\x1d\n\x07gateway\x18\x01 \x01(\x0b\x32\x0c.api.Gateway\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\x30\n\x0clast_seen_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"5\n\x14UpdateGatewayRequest\x12\x1d\n\x07gateway\x18\x01 \x01(\x0b\x32\x0c.api.Gateway\"*\n\x14\x44\x65leteGatewayRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\t\"W\n\x13ListGatewaysRequest\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\"Q\n\x14ListGatewaysResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12$\n\x06result\x18\x02 \x03(\x0b\x32\x14.api.GatewayListItem\"=\n\'GenerateGatewayClientCertificateRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\t\"\x8e\x01\n(GenerateGatewayClientCertificateResponse\x12\x10\n\x08tls_cert\x18\x01 \x01(\t\x12\x0f\n\x07tls_key\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61_cert\x18\x03 \x01(\t\x12.\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x80\x01\n\x16GetGatewayStatsRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\t\x12)\n\x05start\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"<\n\x17GetGatewayStatsResponse\x12!\n\x06result\x18\x01 \x03(\x0b\x32\x11.api.GatewayStats\"\xf3\x05\n\x0cGatewayStats\x12(\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\nrx_packets\x18\x02 \x01(\r\x12\x12\n\ntx_packets\x18\x03 \x01(\r\x12N\n\x18tx_packets_per_frequency\x18\x04 \x03(\x0b\x32,.api.GatewayStats.TxPacketsPerFrequencyEntry\x12N\n\x18rx_packets_per_frequency\x18\x05 \x03(\x0b\x32,.api.GatewayStats.RxPacketsPerFrequencyEntry\x12@\n\x11tx_packets_per_dr\x18\x06 \x03(\x0b\x32%.api.GatewayStats.TxPacketsPerDrEntry\x12@\n\x11rx_packets_per_dr\x18\x07 \x03(\x0b\x32%.api.GatewayStats.RxPacketsPerDrEntry\x12H\n\x15tx_packets_per_status\x18\x08 \x03(\x0b\x32).api.GatewayStats.TxPacketsPerStatusEntry\x1a<\n\x1aTxPacketsPerFrequencyEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a<\n\x1aRxPacketsPerFrequencyEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a\x35\n\x13TxPacketsPerDrEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a\x35\n\x13RxPacketsPerDrEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a\x39\n\x17TxPacketsPerStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x32\x8b\x04\n\x0eGatewayService\x12=\n\x06\x43reate\x12\x19.api.CreateGatewayRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x38\n\x03Get\x12\x16.api.GetGatewayRequest\x1a\x17.api.GetGatewayResponse\"\x00\x12=\n\x06Update\x12\x19.api.UpdateGatewayRequest\x1a\x16.google.protobuf.Empty\"\x00\x12=\n\x06\x44\x65lete\x12\x19.api.DeleteGatewayRequest\x1a\x16.google.protobuf.Empty\"\x00\x12=\n\x04List\x12\x18.api.ListGatewaysRequest\x1a\x19.api.ListGatewaysResponse\"\x00\x12z\n\x19GenerateClientCertificate\x12,.api.GenerateGatewayClientCertificateRequest\x1a-.api.GenerateGatewayClientCertificateResponse\"\x00\x12G\n\x08GetStats\x12\x1b.api.GetGatewayStatsRequest\x1a\x1c.api.GetGatewayStatsResponse\"\x00\x42O\n\x11io.chirpstack.apiB\x0cGatewayProtoP\x01Z*github.com/chirpstack/chirpstack/api/go/v4b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n chirpstack-api/api/gateway.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\"\xaf\x02\n\x07Gateway\x12\x12\n\ngateway_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\"\n\x08location\x18\x04 \x01(\x0b\x32\x10.common.Location\x12\x11\n\ttenant_id\x18\x05 \x01(\t\x12$\n\x04tags\x18\x06 \x03(\x0b\x32\x16.api.Gateway.TagsEntry\x12\x30\n\nproperties\x18\x07 \x03(\x0b\x32\x1c.api.Gateway.PropertiesEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xfe\x02\n\x0fGatewayListItem\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\ngateway_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\"\n\x08location\x18\x05 \x01(\x0b\x32\x10.common.Location\x12\x38\n\nproperties\x18\x06 \x03(\x0b\x32$.api.GatewayListItem.PropertiesEntry\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0clast_seen_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"5\n\x14\x43reateGatewayRequest\x12\x1d\n\x07gateway\x18\x01 \x01(\x0b\x32\x0c.api.Gateway\"\'\n\x11GetGatewayRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\t\"\xc5\x01\n\x12GetGatewayResponse\x12\x1d\n\x07gateway\x18\x01 \x01(\x0b\x32\x0c.api.Gateway\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\x30\n\x0clast_seen_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"5\n\x14UpdateGatewayRequest\x12\x1d\n\x07gateway\x18\x01 \x01(\x0b\x32\x0c.api.Gateway\"*\n\x14\x44\x65leteGatewayRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\t\"W\n\x13ListGatewaysRequest\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\"Q\n\x14ListGatewaysResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12$\n\x06result\x18\x02 \x03(\x0b\x32\x14.api.GatewayListItem\"=\n\'GenerateGatewayClientCertificateRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\t\"\x8e\x01\n(GenerateGatewayClientCertificateResponse\x12\x10\n\x08tls_cert\x18\x01 \x01(\t\x12\x0f\n\x07tls_key\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61_cert\x18\x03 \x01(\t\x12.\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xac\x01\n\x18GetGatewayMetricsRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\t\x12)\n\x05start\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\x0b\x61ggregation\x18\x04 \x01(\x0e\x32\x13.common.Aggregation\"\xc2\x02\n\x19GetGatewayMetricsResponse\x12\"\n\nrx_packets\x18\x01 \x01(\x0b\x32\x0e.common.Metric\x12\"\n\ntx_packets\x18\x02 \x01(\x0b\x32\x0e.common.Metric\x12+\n\x13tx_packets_per_freq\x18\x03 \x01(\x0b\x32\x0e.common.Metric\x12+\n\x13rx_packets_per_freq\x18\x04 \x01(\x0b\x32\x0e.common.Metric\x12)\n\x11tx_packets_per_dr\x18\x05 \x01(\x0b\x32\x0e.common.Metric\x12)\n\x11rx_packets_per_dr\x18\x06 \x01(\x0b\x32\x0e.common.Metric\x12-\n\x15tx_packets_per_status\x18\x07 \x01(\x0b\x32\x0e.common.Metric2\x91\x06\n\x0eGatewayService\x12U\n\x06\x43reate\x12\x19.api.CreateGatewayRequest\x1a\x16.google.protobuf.Empty\"\x18\x82\xd3\xe4\x93\x02\x12\"\r/api/gateways:\x01*\x12Z\n\x03Get\x12\x16.api.GetGatewayRequest\x1a\x17.api.GetGatewayResponse\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/gateways/{gateway_id}\x12j\n\x06Update\x12\x19.api.UpdateGatewayRequest\x1a\x16.google.protobuf.Empty\"-\x82\xd3\xe4\x93\x02\'\x1a\"/api/gateways/{gateway.gateway_id}:\x01*\x12_\n\x06\x44\x65lete\x12\x19.api.DeleteGatewayRequest\x1a\x16.google.protobuf.Empty\"\"\x82\xd3\xe4\x93\x02\x1c*\x1a/api/gateways/{gateway_id}\x12R\n\x04List\x12\x18.api.ListGatewaysRequest\x1a\x19.api.ListGatewaysResponse\"\x15\x82\xd3\xe4\x93\x02\x0f\x12\r/api/gateways\x12\xb1\x01\n\x19GenerateClientCertificate\x12,.api.GenerateGatewayClientCertificateRequest\x1a-.api.GenerateGatewayClientCertificateResponse\"7\x82\xd3\xe4\x93\x02\x31\"//api/gateways/{gateway_id}/generate-certificate\x12w\n\nGetMetrics\x12\x1d.api.GetGatewayMetricsRequest\x1a\x1e.api.GetGatewayMetricsResponse\"*\x82\xd3\xe4\x93\x02$\x12\"/api/gateways/{gateway_id}/metricsBS\n\x11io.chirpstack.apiB\x0cGatewayProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/apib\x06proto3') @@ -35,14 +36,8 @@ _LISTGATEWAYSREQUEST = DESCRIPTOR.message_types_by_name['ListGatewaysRequest'] _LISTGATEWAYSRESPONSE = DESCRIPTOR.message_types_by_name['ListGatewaysResponse'] _GENERATEGATEWAYCLIENTCERTIFICATEREQUEST = DESCRIPTOR.message_types_by_name['GenerateGatewayClientCertificateRequest'] _GENERATEGATEWAYCLIENTCERTIFICATERESPONSE = DESCRIPTOR.message_types_by_name['GenerateGatewayClientCertificateResponse'] -_GETGATEWAYSTATSREQUEST = DESCRIPTOR.message_types_by_name['GetGatewayStatsRequest'] -_GETGATEWAYSTATSRESPONSE = DESCRIPTOR.message_types_by_name['GetGatewayStatsResponse'] -_GATEWAYSTATS = DESCRIPTOR.message_types_by_name['GatewayStats'] -_GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY = _GATEWAYSTATS.nested_types_by_name['TxPacketsPerFrequencyEntry'] -_GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY = _GATEWAYSTATS.nested_types_by_name['RxPacketsPerFrequencyEntry'] -_GATEWAYSTATS_TXPACKETSPERDRENTRY = _GATEWAYSTATS.nested_types_by_name['TxPacketsPerDrEntry'] -_GATEWAYSTATS_RXPACKETSPERDRENTRY = _GATEWAYSTATS.nested_types_by_name['RxPacketsPerDrEntry'] -_GATEWAYSTATS_TXPACKETSPERSTATUSENTRY = _GATEWAYSTATS.nested_types_by_name['TxPacketsPerStatusEntry'] +_GETGATEWAYMETRICSREQUEST = DESCRIPTOR.message_types_by_name['GetGatewayMetricsRequest'] +_GETGATEWAYMETRICSRESPONSE = DESCRIPTOR.message_types_by_name['GetGatewayMetricsResponse'] Gateway = _reflection.GeneratedProtocolMessageType('Gateway', (_message.Message,), { 'TagsEntry' : _reflection.GeneratedProtocolMessageType('TagsEntry', (_message.Message,), { @@ -144,132 +139,77 @@ GenerateGatewayClientCertificateResponse = _reflection.GeneratedProtocolMessageT }) _sym_db.RegisterMessage(GenerateGatewayClientCertificateResponse) -GetGatewayStatsRequest = _reflection.GeneratedProtocolMessageType('GetGatewayStatsRequest', (_message.Message,), { - 'DESCRIPTOR' : _GETGATEWAYSTATSREQUEST, +GetGatewayMetricsRequest = _reflection.GeneratedProtocolMessageType('GetGatewayMetricsRequest', (_message.Message,), { + 'DESCRIPTOR' : _GETGATEWAYMETRICSREQUEST, '__module__' : 'chirpstack_api.api.gateway_pb2' - # @@protoc_insertion_point(class_scope:api.GetGatewayStatsRequest) + # @@protoc_insertion_point(class_scope:api.GetGatewayMetricsRequest) }) -_sym_db.RegisterMessage(GetGatewayStatsRequest) +_sym_db.RegisterMessage(GetGatewayMetricsRequest) -GetGatewayStatsResponse = _reflection.GeneratedProtocolMessageType('GetGatewayStatsResponse', (_message.Message,), { - 'DESCRIPTOR' : _GETGATEWAYSTATSRESPONSE, +GetGatewayMetricsResponse = _reflection.GeneratedProtocolMessageType('GetGatewayMetricsResponse', (_message.Message,), { + 'DESCRIPTOR' : _GETGATEWAYMETRICSRESPONSE, '__module__' : 'chirpstack_api.api.gateway_pb2' - # @@protoc_insertion_point(class_scope:api.GetGatewayStatsResponse) + # @@protoc_insertion_point(class_scope:api.GetGatewayMetricsResponse) }) -_sym_db.RegisterMessage(GetGatewayStatsResponse) - -GatewayStats = _reflection.GeneratedProtocolMessageType('GatewayStats', (_message.Message,), { - - 'TxPacketsPerFrequencyEntry' : _reflection.GeneratedProtocolMessageType('TxPacketsPerFrequencyEntry', (_message.Message,), { - 'DESCRIPTOR' : _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY, - '__module__' : 'chirpstack_api.api.gateway_pb2' - # @@protoc_insertion_point(class_scope:api.GatewayStats.TxPacketsPerFrequencyEntry) - }) - , - - 'RxPacketsPerFrequencyEntry' : _reflection.GeneratedProtocolMessageType('RxPacketsPerFrequencyEntry', (_message.Message,), { - 'DESCRIPTOR' : _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY, - '__module__' : 'chirpstack_api.api.gateway_pb2' - # @@protoc_insertion_point(class_scope:api.GatewayStats.RxPacketsPerFrequencyEntry) - }) - , - - 'TxPacketsPerDrEntry' : _reflection.GeneratedProtocolMessageType('TxPacketsPerDrEntry', (_message.Message,), { - 'DESCRIPTOR' : _GATEWAYSTATS_TXPACKETSPERDRENTRY, - '__module__' : 'chirpstack_api.api.gateway_pb2' - # @@protoc_insertion_point(class_scope:api.GatewayStats.TxPacketsPerDrEntry) - }) - , - - 'RxPacketsPerDrEntry' : _reflection.GeneratedProtocolMessageType('RxPacketsPerDrEntry', (_message.Message,), { - 'DESCRIPTOR' : _GATEWAYSTATS_RXPACKETSPERDRENTRY, - '__module__' : 'chirpstack_api.api.gateway_pb2' - # @@protoc_insertion_point(class_scope:api.GatewayStats.RxPacketsPerDrEntry) - }) - , - - 'TxPacketsPerStatusEntry' : _reflection.GeneratedProtocolMessageType('TxPacketsPerStatusEntry', (_message.Message,), { - 'DESCRIPTOR' : _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY, - '__module__' : 'chirpstack_api.api.gateway_pb2' - # @@protoc_insertion_point(class_scope:api.GatewayStats.TxPacketsPerStatusEntry) - }) - , - 'DESCRIPTOR' : _GATEWAYSTATS, - '__module__' : 'chirpstack_api.api.gateway_pb2' - # @@protoc_insertion_point(class_scope:api.GatewayStats) - }) -_sym_db.RegisterMessage(GatewayStats) -_sym_db.RegisterMessage(GatewayStats.TxPacketsPerFrequencyEntry) -_sym_db.RegisterMessage(GatewayStats.RxPacketsPerFrequencyEntry) -_sym_db.RegisterMessage(GatewayStats.TxPacketsPerDrEntry) -_sym_db.RegisterMessage(GatewayStats.RxPacketsPerDrEntry) -_sym_db.RegisterMessage(GatewayStats.TxPacketsPerStatusEntry) +_sym_db.RegisterMessage(GetGatewayMetricsResponse) _GATEWAYSERVICE = DESCRIPTOR.services_by_name['GatewayService'] if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\014GatewayProtoP\001Z*github.com/chirpstack/chirpstack/api/go/v4' + DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\014GatewayProtoP\001Z.github.com/chirpstack/chirpstack/api/go/v4/api' _GATEWAY_TAGSENTRY._options = None _GATEWAY_TAGSENTRY._serialized_options = b'8\001' _GATEWAY_PROPERTIESENTRY._options = None _GATEWAY_PROPERTIESENTRY._serialized_options = b'8\001' _GATEWAYLISTITEM_PROPERTIESENTRY._options = None _GATEWAYLISTITEM_PROPERTIESENTRY._serialized_options = b'8\001' - _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY._options = None - _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY._serialized_options = b'8\001' - _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY._options = None - _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY._serialized_options = b'8\001' - _GATEWAYSTATS_TXPACKETSPERDRENTRY._options = None - _GATEWAYSTATS_TXPACKETSPERDRENTRY._serialized_options = b'8\001' - _GATEWAYSTATS_RXPACKETSPERDRENTRY._options = None - _GATEWAYSTATS_RXPACKETSPERDRENTRY._serialized_options = b'8\001' - _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY._options = None - _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY._serialized_options = b'8\001' - _GATEWAY._serialized_start=140 - _GATEWAY._serialized_end=443 - _GATEWAY_TAGSENTRY._serialized_start=349 - _GATEWAY_TAGSENTRY._serialized_end=392 - _GATEWAY_PROPERTIESENTRY._serialized_start=394 - _GATEWAY_PROPERTIESENTRY._serialized_end=443 - _GATEWAYLISTITEM._serialized_start=446 - _GATEWAYLISTITEM._serialized_end=828 - _GATEWAYLISTITEM_PROPERTIESENTRY._serialized_start=394 - _GATEWAYLISTITEM_PROPERTIESENTRY._serialized_end=443 - _CREATEGATEWAYREQUEST._serialized_start=830 - _CREATEGATEWAYREQUEST._serialized_end=883 - _GETGATEWAYREQUEST._serialized_start=885 - _GETGATEWAYREQUEST._serialized_end=924 - _GETGATEWAYRESPONSE._serialized_start=927 - _GETGATEWAYRESPONSE._serialized_end=1124 - _UPDATEGATEWAYREQUEST._serialized_start=1126 - _UPDATEGATEWAYREQUEST._serialized_end=1179 - _DELETEGATEWAYREQUEST._serialized_start=1181 - _DELETEGATEWAYREQUEST._serialized_end=1223 - _LISTGATEWAYSREQUEST._serialized_start=1225 - _LISTGATEWAYSREQUEST._serialized_end=1312 - _LISTGATEWAYSRESPONSE._serialized_start=1314 - _LISTGATEWAYSRESPONSE._serialized_end=1395 - _GENERATEGATEWAYCLIENTCERTIFICATEREQUEST._serialized_start=1397 - _GENERATEGATEWAYCLIENTCERTIFICATEREQUEST._serialized_end=1458 - _GENERATEGATEWAYCLIENTCERTIFICATERESPONSE._serialized_start=1461 - _GENERATEGATEWAYCLIENTCERTIFICATERESPONSE._serialized_end=1603 - _GETGATEWAYSTATSREQUEST._serialized_start=1606 - _GETGATEWAYSTATSREQUEST._serialized_end=1734 - _GETGATEWAYSTATSRESPONSE._serialized_start=1736 - _GETGATEWAYSTATSRESPONSE._serialized_end=1796 - _GATEWAYSTATS._serialized_start=1799 - _GATEWAYSTATS._serialized_end=2554 - _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY._serialized_start=2263 - _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY._serialized_end=2323 - _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY._serialized_start=2325 - _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY._serialized_end=2385 - _GATEWAYSTATS_TXPACKETSPERDRENTRY._serialized_start=2387 - _GATEWAYSTATS_TXPACKETSPERDRENTRY._serialized_end=2440 - _GATEWAYSTATS_RXPACKETSPERDRENTRY._serialized_start=2442 - _GATEWAYSTATS_RXPACKETSPERDRENTRY._serialized_end=2495 - _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY._serialized_start=2497 - _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY._serialized_end=2554 - _GATEWAYSERVICE._serialized_start=2557 - _GATEWAYSERVICE._serialized_end=3080 + _GATEWAYSERVICE.methods_by_name['Create']._options = None + _GATEWAYSERVICE.methods_by_name['Create']._serialized_options = b'\202\323\344\223\002\022\"\r/api/gateways:\001*' + _GATEWAYSERVICE.methods_by_name['Get']._options = None + _GATEWAYSERVICE.methods_by_name['Get']._serialized_options = b'\202\323\344\223\002\034\022\032/api/gateways/{gateway_id}' + _GATEWAYSERVICE.methods_by_name['Update']._options = None + _GATEWAYSERVICE.methods_by_name['Update']._serialized_options = b'\202\323\344\223\002\'\032\"/api/gateways/{gateway.gateway_id}:\001*' + _GATEWAYSERVICE.methods_by_name['Delete']._options = None + _GATEWAYSERVICE.methods_by_name['Delete']._serialized_options = b'\202\323\344\223\002\034*\032/api/gateways/{gateway_id}' + _GATEWAYSERVICE.methods_by_name['List']._options = None + _GATEWAYSERVICE.methods_by_name['List']._serialized_options = b'\202\323\344\223\002\017\022\r/api/gateways' + _GATEWAYSERVICE.methods_by_name['GenerateClientCertificate']._options = None + _GATEWAYSERVICE.methods_by_name['GenerateClientCertificate']._serialized_options = b'\202\323\344\223\0021\"//api/gateways/{gateway_id}/generate-certificate' + _GATEWAYSERVICE.methods_by_name['GetMetrics']._options = None + _GATEWAYSERVICE.methods_by_name['GetMetrics']._serialized_options = b'\202\323\344\223\002$\022\"/api/gateways/{gateway_id}/metrics' + _GATEWAY._serialized_start=170 + _GATEWAY._serialized_end=473 + _GATEWAY_TAGSENTRY._serialized_start=379 + _GATEWAY_TAGSENTRY._serialized_end=422 + _GATEWAY_PROPERTIESENTRY._serialized_start=424 + _GATEWAY_PROPERTIESENTRY._serialized_end=473 + _GATEWAYLISTITEM._serialized_start=476 + _GATEWAYLISTITEM._serialized_end=858 + _GATEWAYLISTITEM_PROPERTIESENTRY._serialized_start=424 + _GATEWAYLISTITEM_PROPERTIESENTRY._serialized_end=473 + _CREATEGATEWAYREQUEST._serialized_start=860 + _CREATEGATEWAYREQUEST._serialized_end=913 + _GETGATEWAYREQUEST._serialized_start=915 + _GETGATEWAYREQUEST._serialized_end=954 + _GETGATEWAYRESPONSE._serialized_start=957 + _GETGATEWAYRESPONSE._serialized_end=1154 + _UPDATEGATEWAYREQUEST._serialized_start=1156 + _UPDATEGATEWAYREQUEST._serialized_end=1209 + _DELETEGATEWAYREQUEST._serialized_start=1211 + _DELETEGATEWAYREQUEST._serialized_end=1253 + _LISTGATEWAYSREQUEST._serialized_start=1255 + _LISTGATEWAYSREQUEST._serialized_end=1342 + _LISTGATEWAYSRESPONSE._serialized_start=1344 + _LISTGATEWAYSRESPONSE._serialized_end=1425 + _GENERATEGATEWAYCLIENTCERTIFICATEREQUEST._serialized_start=1427 + _GENERATEGATEWAYCLIENTCERTIFICATEREQUEST._serialized_end=1488 + _GENERATEGATEWAYCLIENTCERTIFICATERESPONSE._serialized_start=1491 + _GENERATEGATEWAYCLIENTCERTIFICATERESPONSE._serialized_end=1633 + _GETGATEWAYMETRICSREQUEST._serialized_start=1636 + _GETGATEWAYMETRICSREQUEST._serialized_end=1808 + _GETGATEWAYMETRICSRESPONSE._serialized_start=1811 + _GETGATEWAYMETRICSRESPONSE._serialized_end=2133 + _GATEWAYSERVICE._serialized_start=2136 + _GATEWAYSERVICE._serialized_end=2921 # @@protoc_insertion_point(module_scope) diff --git a/api/python/src/chirpstack_api/api/gateway_pb2_grpc.py b/api/python/src/chirpstack_api/api/gateway_pb2_grpc.py index 009e7c8b..8332a7f6 100644 --- a/api/python/src/chirpstack_api/api/gateway_pb2_grpc.py +++ b/api/python/src/chirpstack_api/api/gateway_pb2_grpc.py @@ -46,10 +46,10 @@ class GatewayServiceStub(object): 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, + self.GetMetrics = channel.unary_unary( + '/api.GatewayService/GetMetrics', + request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsRequest.SerializeToString, + response_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsResponse.FromString, ) @@ -99,8 +99,8 @@ class GatewayServiceServicer(object): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def GetStats(self, request, context): - """GetStats returns the gateway stats. + def GetMetrics(self, request, context): + """GetMetrics returns the gateway metrics. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -139,10 +139,10 @@ def add_GatewayServiceServicer_to_server(servicer, server): 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, + 'GetMetrics': grpc.unary_unary_rpc_method_handler( + servicer.GetMetrics, + request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsRequest.FromString, + response_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsResponse.SerializeToString, ), } generic_handler = grpc.method_handlers_generic_handler( @@ -258,7 +258,7 @@ class GatewayService(object): insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def GetStats(request, + def GetMetrics(request, target, options=(), channel_credentials=None, @@ -268,8 +268,8 @@ class GatewayService(object): 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, + return grpc.experimental.unary_unary(request, target, '/api.GatewayService/GetMetrics', + chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsRequest.SerializeToString, + chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/api/python/src/chirpstack_api/api/internal_pb2.py b/api/python/src/chirpstack_api/api/internal_pb2.py index f6d5d9de..6c70b23e 100644 --- a/api/python/src/chirpstack_api/api/internal_pb2.py +++ b/api/python/src/chirpstack_api/api/internal_pb2.py @@ -17,7 +17,7 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 from chirpstack_api.api import user_pb2 as chirpstack__api_dot_api_dot_user__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!chirpstack-api/api/internal.proto\x12\x03\x61pi\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1d\x63hirpstack-api/api/user.proto\"G\n\x06\x41piKey\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08is_admin\x18\x03 \x01(\x08\x12\x11\n\ttenant_id\x18\x04 \x01(\t\"3\n\x13\x43reateApiKeyRequest\x12\x1c\n\x07\x61pi_key\x18\x01 \x01(\x0b\x32\x0b.api.ApiKey\"1\n\x14\x43reateApiKeyResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05token\x18\x02 \x01(\t\"!\n\x13\x44\x65leteApiKeyRequest\x12\n\n\x02id\x18\x01 \x01(\t\"X\n\x12ListApiKeysRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\r\x12\x10\n\x08is_admin\x18\x03 \x01(\x08\x12\x11\n\ttenant_id\x18\x04 \x01(\t\"G\n\x13ListApiKeysResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12\x1b\n\x06result\x18\x02 \x03(\x0b\x32\x0b.api.ApiKey\"\xc8\x01\n\x0eUserTenantLink\x12.\n\ncreated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\ttenant_id\x18\x03 \x01(\t\x12\x10\n\x08is_admin\x18\x04 \x01(\x08\x12\x17\n\x0fis_device_admin\x18\x05 \x01(\x08\x12\x18\n\x10is_gateway_admin\x18\x06 \x01(\x08\"/\n\x0cLoginRequest\x12\r\n\x05\x65mail\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"\x1c\n\rLoginResponse\x12\x0b\n\x03jwt\x18\x01 \x01(\t\"P\n\x0fProfileResponse\x12\x17\n\x04user\x18\x01 \x01(\x0b\x32\t.api.User\x12$\n\x07tenants\x18\x03 \x03(\x0b\x32\x13.api.UserTenantLink\"D\n\x13GlobalSearchRequest\x12\x0e\n\x06search\x18\x01 \x01(\t\x12\r\n\x05limit\x18\x02 \x01(\x03\x12\x0e\n\x06offset\x18\x03 \x01(\x03\"?\n\x14GlobalSearchResponse\x12\'\n\x06result\x18\x01 \x03(\x0b\x32\x17.api.GlobalSearchResult\"\xe2\x01\n\x12GlobalSearchResult\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\r\n\x05score\x18\x02 \x01(\x02\x12\x11\n\ttenant_id\x18\x03 \x01(\t\x12\x13\n\x0btenant_name\x18\x04 \x01(\t\x12\x16\n\x0e\x61pplication_id\x18\x05 \x01(\t\x12\x18\n\x10\x61pplication_name\x18\x06 \x01(\t\x12\x16\n\x0e\x64\x65vice_dev_eui\x18\x07 \x01(\t\x12\x13\n\x0b\x64\x65vice_name\x18\x08 \x01(\t\x12\x12\n\ngateway_id\x18\t \x01(\t\x12\x14\n\x0cgateway_name\x18\n \x01(\t\">\n\x10SettingsResponse\x12*\n\x0eopenid_connect\x18\x01 \x01(\x0b\x32\x12.api.OpenIdConnect\"q\n\rOpenIdConnect\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1b\n\tlogin_url\x18\x02 \x01(\tR\x08loginURL\x12\x13\n\x0blogin_label\x18\x03 \x01(\t\x12\x1d\n\nlogout_url\x18\x04 \x01(\tR\tlogoutURL\"8\n\x19OpenIdConnectLoginRequest\x12\x0c\n\x04\x63ode\x18\x01 \x01(\t\x12\r\n\x05state\x18\x02 \x01(\t\"+\n\x1aOpenIdConnectLoginResponse\x12\r\n\x05token\x18\x01 \x01(\t\"-\n\x18GetDevicesSummaryRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\"\xd2\x01\n\x19GetDevicesSummaryResponse\x12\x14\n\x0c\x61\x63tive_count\x18\x01 \x01(\r\x12\x16\n\x0einactive_count\x18\x02 \x01(\r\x12=\n\x08\x64r_count\x18\x03 \x03(\x0b\x32+.api.GetDevicesSummaryResponse.DrCountEntry\x12\x18\n\x10never_seen_count\x18\x04 \x01(\r\x1a.\n\x0c\x44rCountEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\".\n\x19GetGatewaysSummaryRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\"d\n\x1aGetGatewaysSummaryResponse\x12\x14\n\x0c\x61\x63tive_count\x18\x01 \x01(\r\x12\x16\n\x0einactive_count\x18\x02 \x01(\r\x12\x18\n\x10never_seen_count\x18\x03 \x01(\r\"\xc7\x01\n\x07LogItem\x12\n\n\x02id\x18\x01 \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0c\n\x04\x62ody\x18\x04 \x01(\t\x12\x30\n\nproperties\x18\x05 \x03(\x0b\x32\x1c.api.LogItem.PropertiesEntry\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"0\n\x1aStreamGatewayFramesRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\t\",\n\x19StreamDeviceFramesRequest\x12\x0f\n\x07\x64\x65v_eui\x18\x01 \x01(\t\",\n\x19StreamDeviceEventsRequest\x12\x0f\n\x07\x64\x65v_eui\x18\x01 \x01(\t2\xb3\x07\n\x0fInternalService\x12\x30\n\x05Login\x12\x11.api.LoginRequest\x1a\x12.api.LoginResponse\"\x00\x12\x39\n\x07Profile\x12\x16.google.protobuf.Empty\x1a\x14.api.ProfileResponse\"\x00\x12\x45\n\x0cGlobalSearch\x12\x18.api.GlobalSearchRequest\x1a\x19.api.GlobalSearchResponse\"\x00\x12\x45\n\x0c\x43reateApiKey\x12\x18.api.CreateApiKeyRequest\x1a\x19.api.CreateApiKeyResponse\"\x00\x12\x42\n\x0c\x44\x65leteApiKey\x12\x18.api.DeleteApiKeyRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x42\n\x0bListApiKeys\x12\x17.api.ListApiKeysRequest\x1a\x18.api.ListApiKeysResponse\"\x00\x12;\n\x08Settings\x12\x16.google.protobuf.Empty\x1a\x15.api.SettingsResponse\"\x00\x12W\n\x12OpenIdConnectLogin\x12\x1e.api.OpenIdConnectLoginRequest\x1a\x1f.api.OpenIdConnectLoginResponse\"\x00\x12T\n\x11GetDevicesSummary\x12\x1d.api.GetDevicesSummaryRequest\x1a\x1e.api.GetDevicesSummaryResponse\"\x00\x12W\n\x12GetGatewaysSummary\x12\x1e.api.GetGatewaysSummaryRequest\x1a\x1f.api.GetGatewaysSummaryResponse\"\x00\x12H\n\x13StreamGatewayFrames\x12\x1f.api.StreamGatewayFramesRequest\x1a\x0c.api.LogItem\"\x00\x30\x01\x12\x46\n\x12StreamDeviceFrames\x12\x1e.api.StreamDeviceFramesRequest\x1a\x0c.api.LogItem\"\x00\x30\x01\x12\x46\n\x12StreamDeviceEvents\x12\x1e.api.StreamDeviceEventsRequest\x1a\x0c.api.LogItem\"\x00\x30\x01\x42P\n\x11io.chirpstack.apiB\rInternalProtoP\x01Z*github.com/chirpstack/chirpstack/api/go/v4b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!chirpstack-api/api/internal.proto\x12\x03\x61pi\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1d\x63hirpstack-api/api/user.proto\"G\n\x06\x41piKey\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08is_admin\x18\x03 \x01(\x08\x12\x11\n\ttenant_id\x18\x04 \x01(\t\"3\n\x13\x43reateApiKeyRequest\x12\x1c\n\x07\x61pi_key\x18\x01 \x01(\x0b\x32\x0b.api.ApiKey\"1\n\x14\x43reateApiKeyResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05token\x18\x02 \x01(\t\"!\n\x13\x44\x65leteApiKeyRequest\x12\n\n\x02id\x18\x01 \x01(\t\"X\n\x12ListApiKeysRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\r\x12\x10\n\x08is_admin\x18\x03 \x01(\x08\x12\x11\n\ttenant_id\x18\x04 \x01(\t\"G\n\x13ListApiKeysResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12\x1b\n\x06result\x18\x02 \x03(\x0b\x32\x0b.api.ApiKey\"\xc8\x01\n\x0eUserTenantLink\x12.\n\ncreated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\ttenant_id\x18\x03 \x01(\t\x12\x10\n\x08is_admin\x18\x04 \x01(\x08\x12\x17\n\x0fis_device_admin\x18\x05 \x01(\x08\x12\x18\n\x10is_gateway_admin\x18\x06 \x01(\x08\"/\n\x0cLoginRequest\x12\r\n\x05\x65mail\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"\x1c\n\rLoginResponse\x12\x0b\n\x03jwt\x18\x01 \x01(\t\"P\n\x0fProfileResponse\x12\x17\n\x04user\x18\x01 \x01(\x0b\x32\t.api.User\x12$\n\x07tenants\x18\x03 \x03(\x0b\x32\x13.api.UserTenantLink\"D\n\x13GlobalSearchRequest\x12\x0e\n\x06search\x18\x01 \x01(\t\x12\r\n\x05limit\x18\x02 \x01(\x03\x12\x0e\n\x06offset\x18\x03 \x01(\x03\"?\n\x14GlobalSearchResponse\x12\'\n\x06result\x18\x01 \x03(\x0b\x32\x17.api.GlobalSearchResult\"\xe2\x01\n\x12GlobalSearchResult\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\r\n\x05score\x18\x02 \x01(\x02\x12\x11\n\ttenant_id\x18\x03 \x01(\t\x12\x13\n\x0btenant_name\x18\x04 \x01(\t\x12\x16\n\x0e\x61pplication_id\x18\x05 \x01(\t\x12\x18\n\x10\x61pplication_name\x18\x06 \x01(\t\x12\x16\n\x0e\x64\x65vice_dev_eui\x18\x07 \x01(\t\x12\x13\n\x0b\x64\x65vice_name\x18\x08 \x01(\t\x12\x12\n\ngateway_id\x18\t \x01(\t\x12\x14\n\x0cgateway_name\x18\n \x01(\t\">\n\x10SettingsResponse\x12*\n\x0eopenid_connect\x18\x01 \x01(\x0b\x32\x12.api.OpenIdConnect\"q\n\rOpenIdConnect\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1b\n\tlogin_url\x18\x02 \x01(\tR\x08loginURL\x12\x13\n\x0blogin_label\x18\x03 \x01(\t\x12\x1d\n\nlogout_url\x18\x04 \x01(\tR\tlogoutURL\"8\n\x19OpenIdConnectLoginRequest\x12\x0c\n\x04\x63ode\x18\x01 \x01(\t\x12\r\n\x05state\x18\x02 \x01(\t\"+\n\x1aOpenIdConnectLoginResponse\x12\r\n\x05token\x18\x01 \x01(\t\"-\n\x18GetDevicesSummaryRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\"\xd2\x01\n\x19GetDevicesSummaryResponse\x12\x14\n\x0c\x61\x63tive_count\x18\x01 \x01(\r\x12\x16\n\x0einactive_count\x18\x02 \x01(\r\x12=\n\x08\x64r_count\x18\x03 \x03(\x0b\x32+.api.GetDevicesSummaryResponse.DrCountEntry\x12\x18\n\x10never_seen_count\x18\x04 \x01(\r\x1a.\n\x0c\x44rCountEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\".\n\x19GetGatewaysSummaryRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\"d\n\x1aGetGatewaysSummaryResponse\x12\x14\n\x0c\x61\x63tive_count\x18\x01 \x01(\r\x12\x16\n\x0einactive_count\x18\x02 \x01(\r\x12\x18\n\x10never_seen_count\x18\x03 \x01(\r\"\xc7\x01\n\x07LogItem\x12\n\n\x02id\x18\x01 \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0c\n\x04\x62ody\x18\x04 \x01(\t\x12\x30\n\nproperties\x18\x05 \x03(\x0b\x32\x1c.api.LogItem.PropertiesEntry\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"0\n\x1aStreamGatewayFramesRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\t\",\n\x19StreamDeviceFramesRequest\x12\x0f\n\x07\x64\x65v_eui\x18\x01 \x01(\t\",\n\x19StreamDeviceEventsRequest\x12\x0f\n\x07\x64\x65v_eui\x18\x01 \x01(\t2\xb3\x07\n\x0fInternalService\x12\x30\n\x05Login\x12\x11.api.LoginRequest\x1a\x12.api.LoginResponse\"\x00\x12\x39\n\x07Profile\x12\x16.google.protobuf.Empty\x1a\x14.api.ProfileResponse\"\x00\x12\x45\n\x0cGlobalSearch\x12\x18.api.GlobalSearchRequest\x1a\x19.api.GlobalSearchResponse\"\x00\x12\x45\n\x0c\x43reateApiKey\x12\x18.api.CreateApiKeyRequest\x1a\x19.api.CreateApiKeyResponse\"\x00\x12\x42\n\x0c\x44\x65leteApiKey\x12\x18.api.DeleteApiKeyRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x42\n\x0bListApiKeys\x12\x17.api.ListApiKeysRequest\x1a\x18.api.ListApiKeysResponse\"\x00\x12;\n\x08Settings\x12\x16.google.protobuf.Empty\x1a\x15.api.SettingsResponse\"\x00\x12W\n\x12OpenIdConnectLogin\x12\x1e.api.OpenIdConnectLoginRequest\x1a\x1f.api.OpenIdConnectLoginResponse\"\x00\x12T\n\x11GetDevicesSummary\x12\x1d.api.GetDevicesSummaryRequest\x1a\x1e.api.GetDevicesSummaryResponse\"\x00\x12W\n\x12GetGatewaysSummary\x12\x1e.api.GetGatewaysSummaryRequest\x1a\x1f.api.GetGatewaysSummaryResponse\"\x00\x12H\n\x13StreamGatewayFrames\x12\x1f.api.StreamGatewayFramesRequest\x1a\x0c.api.LogItem\"\x00\x30\x01\x12\x46\n\x12StreamDeviceFrames\x12\x1e.api.StreamDeviceFramesRequest\x1a\x0c.api.LogItem\"\x00\x30\x01\x12\x46\n\x12StreamDeviceEvents\x12\x1e.api.StreamDeviceEventsRequest\x1a\x0c.api.LogItem\"\x00\x30\x01\x42T\n\x11io.chirpstack.apiB\rInternalProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/apib\x06proto3') @@ -243,7 +243,7 @@ _INTERNALSERVICE = DESCRIPTOR.services_by_name['InternalService'] 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' + DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\rInternalProtoP\001Z.github.com/chirpstack/chirpstack/api/go/v4/api' _GETDEVICESSUMMARYRESPONSE_DRCOUNTENTRY._options = None _GETDEVICESSUMMARYRESPONSE_DRCOUNTENTRY._serialized_options = b'8\001' _LOGITEM_PROPERTIESENTRY._options = None diff --git a/api/python/src/chirpstack_api/api/multicast_group_pb2.py b/api/python/src/chirpstack_api/api/multicast_group_pb2.py index 5b7fd58d..1df4bff2 100644 --- a/api/python/src/chirpstack_api/api/multicast_group_pb2.py +++ b/api/python/src/chirpstack_api/api/multicast_group_pb2.py @@ -19,7 +19,7 @@ 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') +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\"Y\n%EnqueueMulticastGroupQueueItemRequest\x12\x30\n\nqueue_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\xac\n\n\x15MulticastGroupService\x12o\n\x06\x43reate\x12 .api.CreateMulticastGroupRequest\x1a!.api.CreateMulticastGroupResponse\" \x82\xd3\xe4\x93\x02\x1a\"\x15/api/multicast-groups:\x01*\x12h\n\x03Get\x12\x1d.api.GetMulticastGroupRequest\x1a\x1e.api.GetMulticastGroupResponse\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/multicast-groups/{id}\x12y\n\x06Update\x12 .api.UpdateMulticastGroupRequest\x1a\x16.google.protobuf.Empty\"5\x82\xd3\xe4\x93\x02/\x1a*/api/multicast-groups/{multicast_group.id}:\x01*\x12\x66\n\x06\x44\x65lete\x12 .api.DeleteMulticastGroupRequest\x1a\x16.google.protobuf.Empty\"\"\x82\xd3\xe4\x93\x02\x1c*\x1a/api/multicast-groups/{id}\x12h\n\x04List\x12\x1f.api.ListMulticastGroupsRequest\x1a .api.ListMulticastGroupsResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/api/multicast-groups\x12\x89\x01\n\tAddDevice\x12%.api.AddDeviceToMulticastGroupRequest\x1a\x16.google.protobuf.Empty\"=\x82\xd3\xe4\x93\x02\x37\"2/api/multicast-groups/{multicast_group_id}/devices:\x01*\x12\x98\x01\n\x0cRemoveDevice\x12*.api.RemoveDeviceFromMulticastGroupRequest\x1a\x16.google.protobuf.Empty\"D\x82\xd3\xe4\x93\x02>**\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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x63hirpstack-api/api/tenant.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\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\xa2\x08\n\rTenantService\x12V\n\x06\x43reate\x12\x18.api.CreateTenantRequest\x1a\x19.api.CreateTenantResponse\"\x17\x82\xd3\xe4\x93\x02\x11\"\x0c/api/tenants:\x01*\x12O\n\x03Get\x12\x15.api.GetTenantRequest\x1a\x16.api.GetTenantResponse\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/tenants/{id}\x12_\n\x06Update\x12\x18.api.UpdateTenantRequest\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d\x1a\x18/api/tenants/{tenant.id}:\x01*\x12U\n\x06\x44\x65lete\x12\x18.api.DeleteTenantRequest\x1a\x16.google.protobuf.Empty\"\x19\x82\xd3\xe4\x93\x02\x13*\x11/api/tenants/{id}\x12O\n\x04List\x12\x17.api.ListTenantsRequest\x1a\x18.api.ListTenantsResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\x0c/api/tenants\x12s\n\x07\x41\x64\x64User\x12\x19.api.AddTenantUserRequest\x1a\x16.google.protobuf.Empty\"5\x82\xd3\xe4\x93\x02/\"*/api/tenants/{tenant_user.tenant_id}/users:\x01*\x12r\n\x07GetUser\x12\x19.api.GetTenantUserRequest\x1a\x1a.api.GetTenantUserResponse\"0\x82\xd3\xe4\x93\x02*\x12(/api/tenants/{tenant_id}/users/{user_id}\x12\x8f\x01\n\nUpdateUser\x12\x1c.api.UpdateTenantUserRequest\x1a\x16.google.protobuf.Empty\"K\x82\xd3\xe4\x93\x02\x45\x1a@/api/tenants/{tenant_user.tenant_id}/users/{tenant_user.user_id}:\x01*\x12t\n\nDeleteUser\x12\x1c.api.DeleteTenantUserRequest\x1a\x16.google.protobuf.Empty\"0\x82\xd3\xe4\x93\x02**(/api/tenants/{tenant_id}/users/{user_id}\x12n\n\tListUsers\x12\x1b.api.ListTenantUsersRequest\x1a\x1c.api.ListTenantUsersResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/tenants/{tenant_id}/usersBT\n\x11io.chirpstack.apiB\rInternalProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/apib\x06proto3') @@ -176,45 +177,65 @@ _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 + DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\rInternalProtoP\001Z.github.com/chirpstack/chirpstack/api/go/v4/api' + _TENANTSERVICE.methods_by_name['Create']._options = None + _TENANTSERVICE.methods_by_name['Create']._serialized_options = b'\202\323\344\223\002\021\"\014/api/tenants:\001*' + _TENANTSERVICE.methods_by_name['Get']._options = None + _TENANTSERVICE.methods_by_name['Get']._serialized_options = b'\202\323\344\223\002\023\022\021/api/tenants/{id}' + _TENANTSERVICE.methods_by_name['Update']._options = None + _TENANTSERVICE.methods_by_name['Update']._serialized_options = b'\202\323\344\223\002\035\032\030/api/tenants/{tenant.id}:\001*' + _TENANTSERVICE.methods_by_name['Delete']._options = None + _TENANTSERVICE.methods_by_name['Delete']._serialized_options = b'\202\323\344\223\002\023*\021/api/tenants/{id}' + _TENANTSERVICE.methods_by_name['List']._options = None + _TENANTSERVICE.methods_by_name['List']._serialized_options = b'\202\323\344\223\002\016\022\014/api/tenants' + _TENANTSERVICE.methods_by_name['AddUser']._options = None + _TENANTSERVICE.methods_by_name['AddUser']._serialized_options = b'\202\323\344\223\002/\"*/api/tenants/{tenant_user.tenant_id}/users:\001*' + _TENANTSERVICE.methods_by_name['GetUser']._options = None + _TENANTSERVICE.methods_by_name['GetUser']._serialized_options = b'\202\323\344\223\002*\022(/api/tenants/{tenant_id}/users/{user_id}' + _TENANTSERVICE.methods_by_name['UpdateUser']._options = None + _TENANTSERVICE.methods_by_name['UpdateUser']._serialized_options = b'\202\323\344\223\002E\032@/api/tenants/{tenant_user.tenant_id}/users/{tenant_user.user_id}:\001*' + _TENANTSERVICE.methods_by_name['DeleteUser']._options = None + _TENANTSERVICE.methods_by_name['DeleteUser']._serialized_options = b'\202\323\344\223\002**(/api/tenants/{tenant_id}/users/{user_id}' + _TENANTSERVICE.methods_by_name['ListUsers']._options = None + _TENANTSERVICE.methods_by_name['ListUsers']._serialized_options = b'\202\323\344\223\002 \022\036/api/tenants/{tenant_id}/users' + _TENANT._serialized_start=133 + _TENANT._serialized_end=294 + _TENANTLISTITEM._serialized_start=297 + _TENANTLISTITEM._serialized_end=541 + _CREATETENANTREQUEST._serialized_start=543 + _CREATETENANTREQUEST._serialized_end=593 + _CREATETENANTRESPONSE._serialized_start=595 + _CREATETENANTRESPONSE._serialized_end=629 + _GETTENANTREQUEST._serialized_start=631 + _GETTENANTREQUEST._serialized_end=661 + _GETTENANTRESPONSE._serialized_start=664 + _GETTENANTRESPONSE._serialized_end=808 + _UPDATETENANTREQUEST._serialized_start=810 + _UPDATETENANTREQUEST._serialized_end=860 + _DELETETENANTREQUEST._serialized_start=862 + _DELETETENANTREQUEST._serialized_end=895 + _LISTTENANTSREQUEST._serialized_start=897 + _LISTTENANTSREQUEST._serialized_end=964 + _LISTTENANTSRESPONSE._serialized_start=966 + _LISTTENANTSRESPONSE._serialized_end=1045 + _TENANTUSER._serialized_start=1048 + _TENANTUSER._serialized_end=1180 + _TENANTUSERLISTITEM._serialized_start=1183 + _TENANTUSERLISTITEM._serialized_end=1419 + _ADDTENANTUSERREQUEST._serialized_start=1421 + _ADDTENANTUSERREQUEST._serialized_end=1481 + _GETTENANTUSERREQUEST._serialized_start=1483 + _GETTENANTUSERREQUEST._serialized_end=1541 + _GETTENANTUSERRESPONSE._serialized_start=1544 + _GETTENANTUSERRESPONSE._serialized_end=1701 + _UPDATETENANTUSERREQUEST._serialized_start=1703 + _UPDATETENANTUSERREQUEST._serialized_end=1766 + _DELETETENANTUSERREQUEST._serialized_start=1768 + _DELETETENANTUSERREQUEST._serialized_end=1829 + _LISTTENANTUSERSREQUEST._serialized_start=1831 + _LISTTENANTUSERSREQUEST._serialized_end=1905 + _LISTTENANTUSERSRESPONSE._serialized_start=1907 + _LISTTENANTUSERSRESPONSE._serialized_end=1994 + _TENANTSERVICE._serialized_start=1997 + _TENANTSERVICE._serialized_end=3055 # @@protoc_insertion_point(module_scope) diff --git a/api/python/src/chirpstack_api/api/user_pb2.py b/api/python/src/chirpstack_api/api/user_pb2.py index acd8dd21..4c5b0230 100644 --- a/api/python/src/chirpstack_api/api/user_pb2.py +++ b/api/python/src/chirpstack_api/api/user_pb2.py @@ -12,11 +12,12 @@ from google.protobuf import symbol_database as _symbol_database _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 -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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x63hirpstack-api/api/user.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\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\x97\x04\n\x0bUserService\x12P\n\x06\x43reate\x12\x16.api.CreateUserRequest\x1a\x17.api.CreateUserResponse\"\x15\x82\xd3\xe4\x93\x02\x0f\"\n/api/users:\x01*\x12I\n\x03Get\x12\x13.api.GetUserRequest\x1a\x14.api.GetUserResponse\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/users/{id}\x12Y\n\x06Update\x12\x16.api.UpdateUserRequest\x1a\x16.google.protobuf.Empty\"\x1f\x82\xd3\xe4\x93\x02\x19\x1a\x14/api/users/{user.id}:\x01*\x12Q\n\x06\x44\x65lete\x12\x16.api.DeleteUserRequest\x1a\x16.google.protobuf.Empty\"\x17\x82\xd3\xe4\x93\x02\x11*\x0f/api/users/{id}\x12I\n\x04List\x12\x15.api.ListUsersRequest\x1a\x16.api.ListUsersResponse\"\x12\x82\xd3\xe4\x93\x02\x0c\x12\n/api/users\x12r\n\x0eUpdatePassword\x12\x1e.api.UpdateUserPasswordRequest\x1a\x16.google.protobuf.Empty\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/users/{user_id}/password:\x01*BP\n\x11io.chirpstack.apiB\tUserProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/apib\x06proto3') @@ -120,31 +121,43 @@ _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 + DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\tUserProtoP\001Z.github.com/chirpstack/chirpstack/api/go/v4/api' + _USERSERVICE.methods_by_name['Create']._options = None + _USERSERVICE.methods_by_name['Create']._serialized_options = b'\202\323\344\223\002\017\"\n/api/users:\001*' + _USERSERVICE.methods_by_name['Get']._options = None + _USERSERVICE.methods_by_name['Get']._serialized_options = b'\202\323\344\223\002\021\022\017/api/users/{id}' + _USERSERVICE.methods_by_name['Update']._options = None + _USERSERVICE.methods_by_name['Update']._serialized_options = b'\202\323\344\223\002\031\032\024/api/users/{user.id}:\001*' + _USERSERVICE.methods_by_name['Delete']._options = None + _USERSERVICE.methods_by_name['Delete']._serialized_options = b'\202\323\344\223\002\021*\017/api/users/{id}' + _USERSERVICE.methods_by_name['List']._options = None + _USERSERVICE.methods_by_name['List']._serialized_options = b'\202\323\344\223\002\014\022\n/api/users' + _USERSERVICE.methods_by_name['UpdatePassword']._options = None + _USERSERVICE.methods_by_name['UpdatePassword']._serialized_options = b'\202\323\344\223\002\"\"\035/api/users/{user_id}/password:\001*' + _USER._serialized_start=130 + _USER._serialized_end=214 + _USERLISTITEM._serialized_start=217 + _USERLISTITEM._serialized_end=391 + _USERTENANT._serialized_start=393 + _USERTENANT._serialized_end=493 + _CREATEUSERREQUEST._serialized_start=495 + _CREATEUSERREQUEST._serialized_end=591 + _CREATEUSERRESPONSE._serialized_start=593 + _CREATEUSERRESPONSE._serialized_end=625 + _GETUSERREQUEST._serialized_start=627 + _GETUSERREQUEST._serialized_end=655 + _GETUSERRESPONSE._serialized_start=658 + _GETUSERRESPONSE._serialized_end=796 + _UPDATEUSERREQUEST._serialized_start=798 + _UPDATEUSERREQUEST._serialized_end=842 + _DELETEUSERREQUEST._serialized_start=844 + _DELETEUSERREQUEST._serialized_end=875 + _LISTUSERSREQUEST._serialized_start=877 + _LISTUSERSREQUEST._serialized_end=926 + _LISTUSERSRESPONSE._serialized_start=928 + _LISTUSERSRESPONSE._serialized_end=1003 + _UPDATEUSERPASSWORDREQUEST._serialized_start=1005 + _UPDATEUSERPASSWORDREQUEST._serialized_end=1067 + _USERSERVICE._serialized_start=1070 + _USERSERVICE._serialized_end=1605 # @@protoc_insertion_point(module_scope) diff --git a/api/python/src/chirpstack_api/common/__init__.py b/api/python/src/chirpstack_api/common/__init__.py new file mode 100644 index 00000000..d833fb12 --- /dev/null +++ b/api/python/src/chirpstack_api/common/__init__.py @@ -0,0 +1 @@ +from .common_pb2 import * diff --git a/api/python/src/chirpstack_api/common/common_pb2.py b/api/python/src/chirpstack_api/common/common_pb2.py index 450fcbf1..59ca7da4 100644 --- a/api/python/src/chirpstack_api/common/common_pb2.py +++ b/api/python/src/chirpstack_api/common/common_pb2.py @@ -13,9 +13,10 @@ from google.protobuf import symbol_database as _symbol_database _sym_db = _symbol_database.Default() +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"chirpstack-api/common/common.proto\x12\x06\x63ommon\x1a\x1fgoogle/protobuf/timestamp.proto\"{\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\"o\n\x06Metric\x12\x0c\n\x04name\x18\x01 \x01(\t\x12.\n\ntimestamps\x18\x02 \x03(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x08\x64\x61tasets\x18\x03 \x03(\x0b\x32\x15.common.MetricDataset\",\n\rMetricDataset\x12\r\n\x05label\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x03(\x02*,\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*+\n\x0b\x41ggregation\x12\x08\n\x04HOUR\x10\x00\x12\x07\n\x03\x44\x41Y\x10\x01\x12\t\n\x05MONTH\x10\x02\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) @@ -29,6 +30,8 @@ _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) +_AGGREGATION = DESCRIPTOR.enum_types_by_name['Aggregation'] +Aggregation = enum_type_wrapper.EnumTypeWrapper(_AGGREGATION) LORA = 0 FSK = 1 LR_FHSS = 2 @@ -73,10 +76,15 @@ GEO_RESOLVER_TDOA = 3 GEO_RESOLVER_RSSI = 4 GEO_RESOLVER_GNSS = 5 GEO_RESOLVER_WIFI = 6 +HOUR = 0 +DAY = 1 +MONTH = 2 _LOCATION = DESCRIPTOR.message_types_by_name['Location'] _KEYENVELOPE = DESCRIPTOR.message_types_by_name['KeyEnvelope'] +_METRIC = DESCRIPTOR.message_types_by_name['Metric'] +_METRICDATASET = DESCRIPTOR.message_types_by_name['MetricDataset'] Location = _reflection.GeneratedProtocolMessageType('Location', (_message.Message,), { 'DESCRIPTOR' : _LOCATION, '__module__' : 'chirpstack_api.common.common_pb2' @@ -91,24 +99,44 @@ KeyEnvelope = _reflection.GeneratedProtocolMessageType('KeyEnvelope', (_message. }) _sym_db.RegisterMessage(KeyEnvelope) +Metric = _reflection.GeneratedProtocolMessageType('Metric', (_message.Message,), { + 'DESCRIPTOR' : _METRIC, + '__module__' : 'chirpstack_api.common.common_pb2' + # @@protoc_insertion_point(class_scope:common.Metric) + }) +_sym_db.RegisterMessage(Metric) + +MetricDataset = _reflection.GeneratedProtocolMessageType('MetricDataset', (_message.Message,), { + 'DESCRIPTOR' : _METRICDATASET, + '__module__' : 'chirpstack_api.common.common_pb2' + # @@protoc_insertion_point(class_scope:common.MetricDataset) + }) +_sym_db.RegisterMessage(MetricDataset) + 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 + _MODULATION._serialized_start=414 + _MODULATION._serialized_end=458 + _REGION._serialized_start=461 + _REGION._serialized_end=631 + _MTYPE._serialized_start=634 + _MTYPE._serialized_end=813 + _MACVERSION._serialized_start=815 + _MACVERSION._serialized_end=941 + _REGPARAMSREVISION._serialized_start=943 + _REGPARAMSREVISION._serialized_end=1044 + _LOCATIONSOURCE._serialized_start=1047 + _LOCATIONSOURCE._serialized_end=1189 + _AGGREGATION._serialized_start=1191 + _AGGREGATION._serialized_end=1234 + _LOCATION._serialized_start=79 + _LOCATION._serialized_end=202 + _KEYENVELOPE._serialized_start=204 + _KEYENVELOPE._serialized_end=253 + _METRIC._serialized_start=255 + _METRIC._serialized_end=366 + _METRICDATASET._serialized_start=368 + _METRICDATASET._serialized_end=412 # @@protoc_insertion_point(module_scope) diff --git a/api/python/src/chirpstack_api/gw/__init__.py b/api/python/src/chirpstack_api/gw/__init__.py new file mode 100644 index 00000000..ee102d0c --- /dev/null +++ b/api/python/src/chirpstack_api/gw/__init__.py @@ -0,0 +1 @@ +from .gw_pb2 import * diff --git a/api/python/src/chirpstack_api/gw/gw_pb2.py b/api/python/src/chirpstack_api/gw/gw_pb2.py index 892bb227..a6fbf519 100644 --- a/api/python/src/chirpstack_api/gw/gw_pb2.py +++ b/api/python/src/chirpstack_api/gw/gw_pb2.py @@ -16,10 +16,13 @@ _sym_db = _symbol_database.Default() from chirpstack_api.common import common_pb2 as chirpstack__api_dot_common_dot_common__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x63hirpstack-api/gw/gw.proto\x12\x02gw\x1a\"chirpstack-api/common/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\"\xa3\x01\n\nModulation\x12,\n\x04lora\x18\x03 \x01(\x0b\x32\x16.gw.LoRaModulationInfoH\x00R\x04loRa\x12$\n\x03\x66sk\x18\x04 \x01(\x0b\x32\x15.gw.FSKModulationInfoH\x00\x12\x33\n\x07lr_fhss\x18\x05 \x01(\x0b\x32\x18.gw.LRFHSSModulationInfoH\x00R\x06lrFHSSB\x0c\n\nparameters\"\xb1\x02\n\x0cUplinkTXInfo\x12\x11\n\tfrequency\x18\x01 \x01(\r\x12&\n\nmodulation\x18\x02 \x01(\x0e\x32\x12.common.Modulation\x12J\n\x14lora_modulation_info\x18\x03 \x01(\x0b\x32\x16.gw.LoRaModulationInfoH\x00R\x12loRaModulationInfo\x12\x34\n\x13\x66sk_modulation_info\x18\x04 \x01(\x0b\x32\x15.gw.FSKModulationInfoH\x00\x12Q\n\x17lr_fhss_modulation_info\x18\x05 \x01(\x0b\x32\x18.gw.LRFHSSModulationInfoH\x00R\x14lrFHSSModulationInfoB\x11\n\x0fmodulation_info\"t\n\x12LoRaModulationInfo\x12\x11\n\tbandwidth\x18\x01 \x01(\r\x12\x18\n\x10spreading_factor\x18\x02 \x01(\r\x12\x11\n\tcode_rate\x18\x03 \x01(\t\x12\x1e\n\x16polarization_inversion\x18\x04 \x01(\x08\"B\n\x11\x46SKModulationInfo\x12\x1b\n\x13\x66requency_deviation\x18\x01 \x01(\r\x12\x10\n\x08\x64\x61tarate\x18\x02 \x01(\r\"^\n\x14LRFHSSModulationInfo\x12\x1f\n\x17operating_channel_width\x18\x01 \x01(\r\x12\x11\n\tcode_rate\x18\x02 \x01(\t\x12\x12\n\ngrid_steps\x18\x03 \x01(\r\"k\n\x16\x45ncryptedFineTimestamp\x12\x15\n\raes_key_index\x18\x01 \x01(\r\x12!\n\x0c\x65ncrypted_ns\x18\x02 \x01(\x0cR\x0b\x65ncryptedNS\x12\x17\n\x07\x66pga_id\x18\x03 \x01(\x0cR\x06\x66pgaID\">\n\x12PlainFineTimestamp\x12(\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xbd\x07\n\x0cGatewayStats\x12\x1d\n\ngateway_id\x18\x01 \x01(\x0cR\tgatewayID\x12\n\n\x02ip\x18\t \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\"\n\x08location\x18\x03 \x01(\x0b\x32\x10.common.Location\x12\x16\n\x0e\x63onfig_version\x18\x04 \x01(\t\x12\x1b\n\x13rx_packets_received\x18\x05 \x01(\r\x12\x33\n\x16rx_packets_received_ok\x18\x06 \x01(\rR\x13rxPacketsReceivedOK\x12\x1b\n\x13tx_packets_received\x18\x07 \x01(\r\x12\x1a\n\x12tx_packets_emitted\x18\x08 \x01(\r\x12\x31\n\tmeta_data\x18\n \x03(\x0b\x32\x1e.gw.GatewayStats.MetaDataEntry\x12\x19\n\x08stats_id\x18\x0b \x01(\x0cR\x07statsID\x12M\n\x18tx_packets_per_frequency\x18\x0c \x03(\x0b\x32+.gw.GatewayStats.TxPacketsPerFrequencyEntry\x12M\n\x18rx_packets_per_frequency\x18\r \x03(\x0b\x32+.gw.GatewayStats.RxPacketsPerFrequencyEntry\x12\x39\n\x19tx_packets_per_modulation\x18\x0e \x03(\x0b\x32\x16.gw.PerModulationCount\x12\x39\n\x19rx_packets_per_modulation\x18\x0f \x03(\x0b\x32\x16.gw.PerModulationCount\x12G\n\x15tx_packets_per_status\x18\x10 \x03(\x0b\x32(.gw.GatewayStats.TxPacketsPerStatusEntry\x1a/\n\rMetaDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a<\n\x1aTxPacketsPerFrequencyEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a<\n\x1aRxPacketsPerFrequencyEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a\x39\n\x17TxPacketsPerStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"G\n\x12PerModulationCount\x12\"\n\nmodulation\x18\x01 \x01(\x0b\x32\x0e.gw.Modulation\x12\r\n\x05\x63ount\x18\x02 \x01(\r\"\xb0\x05\n\x0cUplinkRXInfo\x12\x1d\n\ngateway_id\x18\x01 \x01(\x0cR\tgatewayID\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12J\n\x14time_since_gps_epoch\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationR\x11timeSinceGPSEpoch\x12\x0c\n\x04rssi\x18\x05 \x01(\x05\x12\x19\n\x08lora_snr\x18\x06 \x01(\x01R\x07loRaSNR\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08rf_chain\x18\x08 \x01(\r\x12\r\n\x05\x62oard\x18\t \x01(\r\x12\x0f\n\x07\x61ntenna\x18\n \x01(\r\x12\"\n\x08location\x18\x0b \x01(\x0b\x32\x10.common.Location\x12\x32\n\x13\x66ine_timestamp_type\x18\x0c \x01(\x0e\x32\x15.gw.FineTimestampType\x12>\n\x18\x65ncrypted_fine_timestamp\x18\r \x01(\x0b\x32\x1a.gw.EncryptedFineTimestampH\x00\x12\x36\n\x14plain_fine_timestamp\x18\x0e \x01(\x0b\x32\x16.gw.PlainFineTimestampH\x00\x12\x0f\n\x07\x63ontext\x18\x0f \x01(\x0c\x12\x1b\n\tuplink_id\x18\x10 \x01(\x0cR\x08uplinkID\x12,\n\ncrc_status\x18\x11 \x01(\x0e\x32\r.gw.CRCStatusR\tcrcStatus\x12\x30\n\x08metadata\x18\x12 \x03(\x0b\x32\x1e.gw.UplinkRXInfo.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x10\n\x0e\x66ine_timestamp\"\x9b\x04\n\x0e\x44ownlinkTXInfo\x12\x1d\n\ngateway_id\x18\x01 \x01(\x0cR\tgatewayID\x12\x11\n\tfrequency\x18\x05 \x01(\r\x12\r\n\x05power\x18\x06 \x01(\x05\x12&\n\nmodulation\x18\x07 \x01(\x0e\x32\x12.common.Modulation\x12J\n\x14lora_modulation_info\x18\x08 \x01(\x0b\x32\x16.gw.LoRaModulationInfoH\x00R\x12loRaModulationInfo\x12\x34\n\x13\x66sk_modulation_info\x18\t \x01(\x0b\x32\x15.gw.FSKModulationInfoH\x00\x12\r\n\x05\x62oard\x18\n \x01(\r\x12\x0f\n\x07\x61ntenna\x18\x0b \x01(\r\x12\"\n\x06timing\x18\x0c \x01(\x0e\x32\x12.gw.DownlinkTiming\x12<\n\x17immediately_timing_info\x18\r \x01(\x0b\x32\x19.gw.ImmediatelyTimingInfoH\x01\x12\x30\n\x11\x64\x65lay_timing_info\x18\x0e \x01(\x0b\x32\x13.gw.DelayTimingInfoH\x01\x12\x37\n\x15gps_epoch_timing_info\x18\x0f \x01(\x0b\x32\x16.gw.GPSEpochTimingInfoH\x01\x12\x0f\n\x07\x63ontext\x18\x10 \x01(\x0c\x42\x11\n\x0fmodulation_infoB\r\n\x0btiming_info\"\x17\n\x15ImmediatelyTimingInfo\";\n\x0f\x44\x65layTimingInfo\x12(\n\x05\x64\x65lay\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"`\n\x12GPSEpochTimingInfo\x12J\n\x14time_since_gps_epoch\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x11timeSinceGPSEpoch\"h\n\x0bUplinkFrame\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 \x01(\x0b\x32\x10.gw.UplinkRXInfo\"k\n\x0eUplinkFrameSet\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\"\xbe\x01\n\rDownlinkFrame\x12\x13\n\x0bphy_payload\x18\x01 \x01(\x0c\x12#\n\x07tx_info\x18\x02 \x01(\x0b\x32\x12.gw.DownlinkTXInfo\x12\r\n\x05token\x18\x03 \x01(\r\x12\x1f\n\x0b\x64ownlink_id\x18\x04 \x01(\x0cR\ndownlinkID\x12$\n\x05items\x18\x05 \x03(\x0b\x32\x15.gw.DownlinkFrameItem\x12\x1d\n\ngateway_id\x18\x06 \x01(\x0cR\tgatewayID\"M\n\x11\x44ownlinkFrameItem\x12\x13\n\x0bphy_payload\x18\x01 \x01(\x0c\x12#\n\x07tx_info\x18\x02 \x01(\x0b\x32\x12.gw.DownlinkTXInfo\"\x93\x01\n\rDownlinkTXAck\x12\x1d\n\ngateway_id\x18\x01 \x01(\x0cR\tgatewayID\x12\r\n\x05token\x18\x02 \x01(\r\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12\x1f\n\x0b\x64ownlink_id\x18\x04 \x01(\x0cR\ndownlinkID\x12$\n\x05items\x18\x05 \x03(\x0b\x32\x15.gw.DownlinkTXAckItem\"4\n\x11\x44ownlinkTXAckItem\x12\x1f\n\x06status\x18\x01 \x01(\x0e\x32\x0f.gw.TxAckStatus\"\xa5\x01\n\x14GatewayConfiguration\x12\x1d\n\ngateway_id\x18\x01 \x01(\x0cR\tgatewayID\x12\x0f\n\x07version\x18\x02 \x01(\t\x12*\n\x08\x63hannels\x18\x03 \x03(\x0b\x32\x18.gw.ChannelConfiguration\x12\x31\n\x0estats_interval\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x96\x02\n\x14\x43hannelConfiguration\x12\x11\n\tfrequency\x18\x01 \x01(\r\x12&\n\nmodulation\x18\x02 \x01(\x0e\x32\x12.common.Modulation\x12P\n\x16lora_modulation_config\x18\x03 \x01(\x0b\x32\x18.gw.LoRaModulationConfigH\x00R\x14loRaModulationConfig\x12\x38\n\x15\x66sk_modulation_config\x18\x04 \x01(\x0b\x32\x17.gw.FSKModulationConfigH\x00\x12\r\n\x05\x62oard\x18\x05 \x01(\r\x12\x13\n\x0b\x64\x65modulator\x18\x06 \x01(\rB\x13\n\x11modulation_config\"D\n\x14LoRaModulationConfig\x12\x11\n\tbandwidth\x18\x01 \x01(\r\x12\x19\n\x11spreading_factors\x18\x02 \x03(\r\"9\n\x13\x46SKModulationConfig\x12\x11\n\tbandwidth\x18\x01 \x01(\r\x12\x0f\n\x07\x62itrate\x18\x02 \x01(\r\"\xeb\x01\n\x19GatewayCommandExecRequest\x12\x1d\n\ngateway_id\x18\x01 \x01(\x0cR\tgatewayID\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\t\x12\x16\n\x06\x45xecId\x18\x03 \x01(\x0cR\x06\x65xecID\x12\r\n\x05stdin\x18\x04 \x01(\x0c\x12\x43\n\x0b\x65nvironment\x18\x05 \x03(\x0b\x32..gw.GatewayCommandExecRequest.EnvironmentEntry\x1a\x32\n\x10\x45nvironmentEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x83\x01\n\x1aGatewayCommandExecResponse\x12\x1d\n\ngateway_id\x18\x01 \x01(\x0cR\tgatewayID\x12\x17\n\x07\x65xec_id\x18\x02 \x01(\x0cR\x06\x65xecID\x12\x0e\n\x06stdout\x18\x03 \x01(\x0c\x12\x0e\n\x06stderr\x18\x04 \x01(\x0c\x12\r\n\x05\x65rror\x18\x05 \x01(\t\"`\n\x17RawPacketForwarderEvent\x12\x1d\n\ngateway_id\x18\x01 \x01(\x0cR\tgatewayID\x12\x15\n\x06raw_id\x18\x02 \x01(\x0cR\x05rawID\x12\x0f\n\x07payload\x18\x03 \x01(\x0c\"b\n\x19RawPacketForwarderCommand\x12\x1d\n\ngateway_id\x18\x01 \x01(\x0cR\tgatewayID\x12\x15\n\x06raw_id\x18\x02 \x01(\x0cR\x05rawID\x12\x0f\n\x07payload\x18\x03 \x01(\x0c\"p\n\tConnState\x12\x1d\n\ngateway_id\x18\x01 \x01(\x0cR\tgatewayID\x12\"\n\x05state\x18\x02 \x01(\x0e\x32\x13.gw.ConnState.State\" \n\x05State\x12\x0b\n\x07OFFLINE\x10\x00\x12\n\n\x06ONLINE\x10\x01*;\n\x0e\x44ownlinkTiming\x12\x0f\n\x0bIMMEDIATELY\x10\x00\x12\t\n\x05\x44\x45LAY\x10\x01\x12\r\n\tGPS_EPOCH\x10\x02*7\n\x11\x46ineTimestampType\x12\x08\n\x04NONE\x10\x00\x12\r\n\tENCRYPTED\x10\x01\x12\t\n\x05PLAIN\x10\x02*0\n\tCRCStatus\x12\n\n\x06NO_CRC\x10\x00\x12\x0b\n\x07\x42\x41\x44_CRC\x10\x01\x12\n\n\x06\x43RC_OK\x10\x02*\xbc\x01\n\x0bTxAckStatus\x12\x0b\n\x07IGNORED\x10\x00\x12\x06\n\x02OK\x10\x01\x12\x0c\n\x08TOO_LATE\x10\x02\x12\r\n\tTOO_EARLY\x10\x03\x12\x14\n\x10\x43OLLISION_PACKET\x10\x04\x12\x14\n\x10\x43OLLISION_BEACON\x10\x05\x12\x0b\n\x07TX_FREQ\x10\x06\x12\x0c\n\x08TX_POWER\x10\x07\x12\x10\n\x0cGPS_UNLOCKED\x10\x08\x12\x0e\n\nQUEUE_FULL\x10\t\x12\x12\n\x0eINTERNAL_ERROR\x10\nBU\n\x14io.chirpstack.api.gwB\x0cGatewayProtoP\x01Z-github.com/chirpstack/chirpstack-api/go/v4/gwb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x63hirpstack-api/gw/gw.proto\x12\x02gw\x1a\"chirpstack-api/common/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\"\x95\x01\n\nModulation\x12&\n\x04lora\x18\x03 \x01(\x0b\x32\x16.gw.LoraModulationInfoH\x00\x12$\n\x03\x66sk\x18\x04 \x01(\x0b\x32\x15.gw.FskModulationInfoH\x00\x12+\n\x07lr_fhss\x18\x05 \x01(\x0b\x32\x18.gw.LrFhssModulationInfoH\x00\x42\x0c\n\nparameters\"\x8d\x02\n\x12UplinkTxInfoLegacy\x12\x11\n\tfrequency\x18\x01 \x01(\r\x12&\n\nmodulation\x18\x02 \x01(\x0e\x32\x12.common.Modulation\x12\x36\n\x14lora_modulation_info\x18\x03 \x01(\x0b\x32\x16.gw.LoraModulationInfoH\x00\x12\x34\n\x13\x66sk_modulation_info\x18\x04 \x01(\x0b\x32\x15.gw.FskModulationInfoH\x00\x12;\n\x17lr_fhss_modulation_info\x18\x05 \x01(\x0b\x32\x18.gw.LrFhssModulationInfoH\x00\x42\x11\n\x0fmodulation_info\"E\n\x0cUplinkTxInfo\x12\x11\n\tfrequency\x18\x01 \x01(\r\x12\"\n\nmodulation\x18\x02 \x01(\x0b\x32\x0e.gw.Modulation\"\x9c\x01\n\x12LoraModulationInfo\x12\x11\n\tbandwidth\x18\x01 \x01(\r\x12\x18\n\x10spreading_factor\x18\x02 \x01(\r\x12\x18\n\x10\x63ode_rate_legacy\x18\x03 \x01(\t\x12\x1f\n\tcode_rate\x18\x05 \x01(\x0e\x32\x0c.gw.CodeRate\x12\x1e\n\x16polarization_inversion\x18\x04 \x01(\x08\"B\n\x11\x46skModulationInfo\x12\x1b\n\x13\x66requency_deviation\x18\x01 \x01(\r\x12\x10\n\x08\x64\x61tarate\x18\x02 \x01(\r\"^\n\x14LrFhssModulationInfo\x12\x1f\n\x17operating_channel_width\x18\x01 \x01(\r\x12\x11\n\tcode_rate\x18\x02 \x01(\t\x12\x12\n\ngrid_steps\x18\x03 \x01(\r\"V\n\x16\x45ncryptedFineTimestamp\x12\x15\n\raes_key_index\x18\x01 \x01(\r\x12\x14\n\x0c\x65ncrypted_ns\x18\x02 \x01(\x0c\x12\x0f\n\x07\x66pga_id\x18\x03 \x01(\x0c\">\n\x12PlainFineTimestamp\x12(\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x94\x07\n\x0cGatewayStats\x12\x12\n\ngateway_id\x18\x01 \x01(\x0c\x12\n\n\x02ip\x18\t \x01(\t\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\"\n\x08location\x18\x03 \x01(\x0b\x32\x10.common.Location\x12\x16\n\x0e\x63onfig_version\x18\x04 \x01(\t\x12\x1b\n\x13rx_packets_received\x18\x05 \x01(\r\x12\x1e\n\x16rx_packets_received_ok\x18\x06 \x01(\r\x12\x1b\n\x13tx_packets_received\x18\x07 \x01(\r\x12\x1a\n\x12tx_packets_emitted\x18\x08 \x01(\r\x12\x31\n\tmeta_data\x18\n \x03(\x0b\x32\x1e.gw.GatewayStats.MetaDataEntry\x12\x10\n\x08stats_id\x18\x0b \x01(\x0c\x12M\n\x18tx_packets_per_frequency\x18\x0c \x03(\x0b\x32+.gw.GatewayStats.TxPacketsPerFrequencyEntry\x12M\n\x18rx_packets_per_frequency\x18\r \x03(\x0b\x32+.gw.GatewayStats.RxPacketsPerFrequencyEntry\x12\x39\n\x19tx_packets_per_modulation\x18\x0e \x03(\x0b\x32\x16.gw.PerModulationCount\x12\x39\n\x19rx_packets_per_modulation\x18\x0f \x03(\x0b\x32\x16.gw.PerModulationCount\x12G\n\x15tx_packets_per_status\x18\x10 \x03(\x0b\x32(.gw.GatewayStats.TxPacketsPerStatusEntry\x1a/\n\rMetaDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a<\n\x1aTxPacketsPerFrequencyEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a<\n\x1aRxPacketsPerFrequencyEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a\x39\n\x17TxPacketsPerStatusEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"G\n\x12PerModulationCount\x12\"\n\nmodulation\x18\x01 \x01(\x0b\x32\x0e.gw.Modulation\x12\r\n\x05\x63ount\x18\x02 \x01(\r\"\x80\x05\n\x12UplinkRxInfoLegacy\x12\x12\n\ngateway_id\x18\x01 \x01(\x0c\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x37\n\x14time_since_gps_epoch\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04rssi\x18\x05 \x01(\x05\x12\x10\n\x08lora_snr\x18\x06 \x01(\x01\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08rf_chain\x18\x08 \x01(\r\x12\r\n\x05\x62oard\x18\t \x01(\r\x12\x0f\n\x07\x61ntenna\x18\n \x01(\r\x12\"\n\x08location\x18\x0b \x01(\x0b\x32\x10.common.Location\x12\x32\n\x13\x66ine_timestamp_type\x18\x0c \x01(\x0e\x32\x15.gw.FineTimestampType\x12>\n\x18\x65ncrypted_fine_timestamp\x18\r \x01(\x0b\x32\x1a.gw.EncryptedFineTimestampH\x00\x12\x36\n\x14plain_fine_timestamp\x18\x0e \x01(\x0b\x32\x16.gw.PlainFineTimestampH\x00\x12\x0f\n\x07\x63ontext\x18\x0f \x01(\x0c\x12\x11\n\tuplink_id\x18\x10 \x01(\x0c\x12!\n\ncrc_status\x18\x11 \x01(\x0e\x32\r.gw.CRCStatus\x12\x36\n\x08metadata\x18\x12 \x03(\x0b\x32$.gw.UplinkRxInfoLegacy.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x10\n\x0e\x66ine_timestamp\"\xf1\x02\n\x0cUplinkRxInfo\x12\x12\n\ngateway_id\x18\x01 \x01(\t\x12\x11\n\tuplink_id\x18\x02 \x01(\r\x12(\n\x04time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x37\n\x14time_since_gps_epoch\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19\x66ine_time_since_gps_epoch\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04rssi\x18\x06 \x01(\x05\x12\x0b\n\x03snr\x18\x07 \x01(\x02\x12\r\n\x05\x62oard\x18\x08 \x01(\r\x12\x0f\n\x07\x61ntenna\x18\t \x01(\r\x12\"\n\x08location\x18\n \x01(\x0b\x32\x10.common.Location\x12\x0f\n\x07\x63ontext\x18\x0b \x01(\x0c\x12)\n\x08metadata\x18\x0c \x01(\x0b\x32\x17.google.protobuf.Struct\"\x82\x04\n\x14\x44ownlinkTxInfoLegacy\x12\x12\n\ngateway_id\x18\x01 \x01(\x0c\x12\x11\n\tfrequency\x18\x05 \x01(\r\x12\r\n\x05power\x18\x06 \x01(\x05\x12&\n\nmodulation\x18\x07 \x01(\x0e\x32\x12.common.Modulation\x12\x36\n\x14lora_modulation_info\x18\x08 \x01(\x0b\x32\x16.gw.LoraModulationInfoH\x00\x12\x34\n\x13\x66sk_modulation_info\x18\t \x01(\x0b\x32\x15.gw.FskModulationInfoH\x00\x12\r\n\x05\x62oard\x18\n \x01(\r\x12\x0f\n\x07\x61ntenna\x18\x0b \x01(\r\x12\"\n\x06timing\x18\x0c \x01(\x0e\x32\x12.gw.DownlinkTiming\x12<\n\x17immediately_timing_info\x18\r \x01(\x0b\x32\x19.gw.ImmediatelyTimingInfoH\x01\x12\x30\n\x11\x64\x65lay_timing_info\x18\x0e \x01(\x0b\x32\x13.gw.DelayTimingInfoH\x01\x12\x37\n\x15gps_epoch_timing_info\x18\x0f \x01(\x0b\x32\x16.gw.GPSEpochTimingInfoH\x01\x12\x0f\n\x07\x63ontext\x18\x10 \x01(\x0c\x42\x11\n\x0fmodulation_infoB\r\n\x0btiming_info\"\xa3\x01\n\x0e\x44ownlinkTxInfo\x12\x11\n\tfrequency\x18\x01 \x01(\r\x12\r\n\x05power\x18\x02 \x01(\x05\x12\"\n\nmodulation\x18\x03 \x01(\x0b\x32\x0e.gw.Modulation\x12\r\n\x05\x62oard\x18\x04 \x01(\r\x12\x0f\n\x07\x61ntenna\x18\x05 \x01(\r\x12\x1a\n\x06timing\x18\x06 \x01(\x0b\x32\n.gw.Timing\x12\x0f\n\x07\x63ontext\x18\x07 \x01(\x0c\"\x9b\x01\n\x06Timing\x12\x30\n\x0bimmediately\x18\x01 \x01(\x0b\x32\x19.gw.ImmediatelyTimingInfoH\x00\x12$\n\x05\x64\x65lay\x18\x02 \x01(\x0b\x32\x13.gw.DelayTimingInfoH\x00\x12+\n\tgps_epoch\x18\x03 \x01(\x0b\x32\x16.gw.GPSEpochTimingInfoH\x00\x42\x0c\n\nparameters\"\x17\n\x15ImmediatelyTimingInfo\";\n\x0f\x44\x65layTimingInfo\x12(\n\x05\x64\x65lay\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"M\n\x12GPSEpochTimingInfo\x12\x37\n\x14time_since_gps_epoch\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xc8\x01\n\x0bUplinkFrame\x12\x13\n\x0bphy_payload\x18\x01 \x01(\x0c\x12.\n\x0etx_info_legacy\x18\x02 \x01(\x0b\x32\x16.gw.UplinkTxInfoLegacy\x12.\n\x0erx_info_legacy\x18\x03 \x01(\x0b\x32\x16.gw.UplinkRxInfoLegacy\x12!\n\x07tx_info\x18\x04 \x01(\x0b\x32\x10.gw.UplinkTxInfo\x12!\n\x07rx_info\x18\x05 \x01(\x0b\x32\x10.gw.UplinkRxInfo\"k\n\x0eUplinkFrameSet\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\"\x95\x01\n\rDownlinkFrame\x12\x13\n\x0b\x64ownlink_id\x18\x03 \x01(\r\x12\x1a\n\x12\x64ownlink_id_legacy\x18\x04 \x01(\x0c\x12$\n\x05items\x18\x05 \x03(\x0b\x32\x15.gw.DownlinkFrameItem\x12\x19\n\x11gateway_id_legacy\x18\x06 \x01(\x0c\x12\x12\n\ngateway_id\x18\x07 \x01(\t\"\x7f\n\x11\x44ownlinkFrameItem\x12\x13\n\x0bphy_payload\x18\x01 \x01(\x0c\x12\x30\n\x0etx_info_legacy\x18\x02 \x01(\x0b\x32\x18.gw.DownlinkTxInfoLegacy\x12#\n\x07tx_info\x18\x03 \x01(\x0b\x32\x12.gw.DownlinkTxInfo\"\x95\x01\n\rDownlinkTxAck\x12\x19\n\x11gateway_id_legacy\x18\x01 \x01(\x0c\x12\x12\n\ngateway_id\x18\x06 \x01(\t\x12\x13\n\x0b\x64ownlink_id\x18\x02 \x01(\r\x12\x1a\n\x12\x64ownlink_id_legacy\x18\x04 \x01(\x0c\x12$\n\x05items\x18\x05 \x03(\x0b\x32\x15.gw.DownlinkTxAckItem\"4\n\x11\x44ownlinkTxAckItem\x12\x1f\n\x06status\x18\x01 \x01(\x0e\x32\x0f.gw.TxAckStatus\"\x9a\x01\n\x14GatewayConfiguration\x12\x12\n\ngateway_id\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\t\x12*\n\x08\x63hannels\x18\x03 \x03(\x0b\x32\x18.gw.ChannelConfiguration\x12\x31\n\x0estats_interval\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x80\x02\n\x14\x43hannelConfiguration\x12\x11\n\tfrequency\x18\x01 \x01(\r\x12&\n\nmodulation\x18\x02 \x01(\x0e\x32\x12.common.Modulation\x12:\n\x16lora_modulation_config\x18\x03 \x01(\x0b\x32\x18.gw.LoRaModulationConfigH\x00\x12\x38\n\x15\x66sk_modulation_config\x18\x04 \x01(\x0b\x32\x17.gw.FSKModulationConfigH\x00\x12\r\n\x05\x62oard\x18\x05 \x01(\r\x12\x13\n\x0b\x64\x65modulator\x18\x06 \x01(\rB\x13\n\x11modulation_config\"D\n\x14LoRaModulationConfig\x12\x11\n\tbandwidth\x18\x01 \x01(\r\x12\x19\n\x11spreading_factors\x18\x02 \x03(\r\"9\n\x13\x46SKModulationConfig\x12\x11\n\tbandwidth\x18\x01 \x01(\r\x12\x0f\n\x07\x62itrate\x18\x02 \x01(\r\"\xd8\x01\n\x19GatewayCommandExecRequest\x12\x12\n\ngateway_id\x18\x01 \x01(\x0c\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\t\x12\x0e\n\x06\x45xecId\x18\x03 \x01(\x0c\x12\r\n\x05stdin\x18\x04 \x01(\x0c\x12\x43\n\x0b\x65nvironment\x18\x05 \x03(\x0b\x32..gw.GatewayCommandExecRequest.EnvironmentEntry\x1a\x32\n\x10\x45nvironmentEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"p\n\x1aGatewayCommandExecResponse\x12\x12\n\ngateway_id\x18\x01 \x01(\x0c\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\x0c\x12\x0e\n\x06stdout\x18\x03 \x01(\x0c\x12\x0e\n\x06stderr\x18\x04 \x01(\x0c\x12\r\n\x05\x65rror\x18\x05 \x01(\t\"N\n\x17RawPacketForwarderEvent\x12\x12\n\ngateway_id\x18\x01 \x01(\x0c\x12\x0e\n\x06raw_id\x18\x02 \x01(\x0c\x12\x0f\n\x07payload\x18\x03 \x01(\x0c\"P\n\x19RawPacketForwarderCommand\x12\x12\n\ngateway_id\x18\x01 \x01(\x0c\x12\x0e\n\x06raw_id\x18\x02 \x01(\x0c\x12\x0f\n\x07payload\x18\x03 \x01(\x0c\"e\n\tConnState\x12\x12\n\ngateway_id\x18\x01 \x01(\x0c\x12\"\n\x05state\x18\x02 \x01(\x0e\x32\x13.gw.ConnState.State\" \n\x05State\x12\x0b\n\x07OFFLINE\x10\x00\x12\n\n\x06ONLINE\x10\x01*L\n\x08\x43odeRate\x12\x10\n\x0c\x43R_UNDEFINED\x10\x00\x12\n\n\x06\x43R_4_5\x10\x01\x12\n\n\x06\x43R_4_6\x10\x02\x12\n\n\x06\x43R_4_7\x10\x03\x12\n\n\x06\x43R_4_8\x10\x04*;\n\x0e\x44ownlinkTiming\x12\x0f\n\x0bIMMEDIATELY\x10\x00\x12\t\n\x05\x44\x45LAY\x10\x01\x12\r\n\tGPS_EPOCH\x10\x02*7\n\x11\x46ineTimestampType\x12\x08\n\x04NONE\x10\x00\x12\r\n\tENCRYPTED\x10\x01\x12\t\n\x05PLAIN\x10\x02*0\n\tCRCStatus\x12\n\n\x06NO_CRC\x10\x00\x12\x0b\n\x07\x42\x41\x44_CRC\x10\x01\x12\n\n\x06\x43RC_OK\x10\x02*\xbc\x01\n\x0bTxAckStatus\x12\x0b\n\x07IGNORED\x10\x00\x12\x06\n\x02OK\x10\x01\x12\x0c\n\x08TOO_LATE\x10\x02\x12\r\n\tTOO_EARLY\x10\x03\x12\x14\n\x10\x43OLLISION_PACKET\x10\x04\x12\x14\n\x10\x43OLLISION_BEACON\x10\x05\x12\x0b\n\x07TX_FREQ\x10\x06\x12\x0c\n\x08TX_POWER\x10\x07\x12\x10\n\x0cGPS_UNLOCKED\x10\x08\x12\x0e\n\nQUEUE_FULL\x10\t\x12\x12\n\x0eINTERNAL_ERROR\x10\nBU\n\x14io.chirpstack.api.gwB\x0cGatewayProtoP\x01Z-github.com/chirpstack/chirpstack/api/go/v4/gwb\x06proto3') +_CODERATE = DESCRIPTOR.enum_types_by_name['CodeRate'] +CodeRate = enum_type_wrapper.EnumTypeWrapper(_CODERATE) _DOWNLINKTIMING = DESCRIPTOR.enum_types_by_name['DownlinkTiming'] DownlinkTiming = enum_type_wrapper.EnumTypeWrapper(_DOWNLINKTIMING) _FINETIMESTAMPTYPE = DESCRIPTOR.enum_types_by_name['FineTimestampType'] @@ -28,6 +31,11 @@ _CRCSTATUS = DESCRIPTOR.enum_types_by_name['CRCStatus'] CRCStatus = enum_type_wrapper.EnumTypeWrapper(_CRCSTATUS) _TXACKSTATUS = DESCRIPTOR.enum_types_by_name['TxAckStatus'] TxAckStatus = enum_type_wrapper.EnumTypeWrapper(_TXACKSTATUS) +CR_UNDEFINED = 0 +CR_4_5 = 1 +CR_4_6 = 2 +CR_4_7 = 3 +CR_4_8 = 4 IMMEDIATELY = 0 DELAY = 1 GPS_EPOCH = 2 @@ -51,10 +59,11 @@ INTERNAL_ERROR = 10 _MODULATION = DESCRIPTOR.message_types_by_name['Modulation'] -_UPLINKTXINFO = DESCRIPTOR.message_types_by_name['UplinkTXInfo'] -_LORAMODULATIONINFO = DESCRIPTOR.message_types_by_name['LoRaModulationInfo'] -_FSKMODULATIONINFO = DESCRIPTOR.message_types_by_name['FSKModulationInfo'] -_LRFHSSMODULATIONINFO = DESCRIPTOR.message_types_by_name['LRFHSSModulationInfo'] +_UPLINKTXINFOLEGACY = DESCRIPTOR.message_types_by_name['UplinkTxInfoLegacy'] +_UPLINKTXINFO = DESCRIPTOR.message_types_by_name['UplinkTxInfo'] +_LORAMODULATIONINFO = DESCRIPTOR.message_types_by_name['LoraModulationInfo'] +_FSKMODULATIONINFO = DESCRIPTOR.message_types_by_name['FskModulationInfo'] +_LRFHSSMODULATIONINFO = DESCRIPTOR.message_types_by_name['LrFhssModulationInfo'] _ENCRYPTEDFINETIMESTAMP = DESCRIPTOR.message_types_by_name['EncryptedFineTimestamp'] _PLAINFINETIMESTAMP = DESCRIPTOR.message_types_by_name['PlainFineTimestamp'] _GATEWAYSTATS = DESCRIPTOR.message_types_by_name['GatewayStats'] @@ -63,9 +72,12 @@ _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY = _GATEWAYSTATS.nested_types_by_name['T _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY = _GATEWAYSTATS.nested_types_by_name['RxPacketsPerFrequencyEntry'] _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY = _GATEWAYSTATS.nested_types_by_name['TxPacketsPerStatusEntry'] _PERMODULATIONCOUNT = DESCRIPTOR.message_types_by_name['PerModulationCount'] -_UPLINKRXINFO = DESCRIPTOR.message_types_by_name['UplinkRXInfo'] -_UPLINKRXINFO_METADATAENTRY = _UPLINKRXINFO.nested_types_by_name['MetadataEntry'] -_DOWNLINKTXINFO = DESCRIPTOR.message_types_by_name['DownlinkTXInfo'] +_UPLINKRXINFOLEGACY = DESCRIPTOR.message_types_by_name['UplinkRxInfoLegacy'] +_UPLINKRXINFOLEGACY_METADATAENTRY = _UPLINKRXINFOLEGACY.nested_types_by_name['MetadataEntry'] +_UPLINKRXINFO = DESCRIPTOR.message_types_by_name['UplinkRxInfo'] +_DOWNLINKTXINFOLEGACY = DESCRIPTOR.message_types_by_name['DownlinkTxInfoLegacy'] +_DOWNLINKTXINFO = DESCRIPTOR.message_types_by_name['DownlinkTxInfo'] +_TIMING = DESCRIPTOR.message_types_by_name['Timing'] _IMMEDIATELYTIMINGINFO = DESCRIPTOR.message_types_by_name['ImmediatelyTimingInfo'] _DELAYTIMINGINFO = DESCRIPTOR.message_types_by_name['DelayTimingInfo'] _GPSEPOCHTIMINGINFO = DESCRIPTOR.message_types_by_name['GPSEpochTimingInfo'] @@ -73,8 +85,8 @@ _UPLINKFRAME = DESCRIPTOR.message_types_by_name['UplinkFrame'] _UPLINKFRAMESET = DESCRIPTOR.message_types_by_name['UplinkFrameSet'] _DOWNLINKFRAME = DESCRIPTOR.message_types_by_name['DownlinkFrame'] _DOWNLINKFRAMEITEM = DESCRIPTOR.message_types_by_name['DownlinkFrameItem'] -_DOWNLINKTXACK = DESCRIPTOR.message_types_by_name['DownlinkTXAck'] -_DOWNLINKTXACKITEM = DESCRIPTOR.message_types_by_name['DownlinkTXAckItem'] +_DOWNLINKTXACK = DESCRIPTOR.message_types_by_name['DownlinkTxAck'] +_DOWNLINKTXACKITEM = DESCRIPTOR.message_types_by_name['DownlinkTxAckItem'] _GATEWAYCONFIGURATION = DESCRIPTOR.message_types_by_name['GatewayConfiguration'] _CHANNELCONFIGURATION = DESCRIPTOR.message_types_by_name['ChannelConfiguration'] _LORAMODULATIONCONFIG = DESCRIPTOR.message_types_by_name['LoRaModulationConfig'] @@ -93,33 +105,40 @@ Modulation = _reflection.GeneratedProtocolMessageType('Modulation', (_message.Me }) _sym_db.RegisterMessage(Modulation) -UplinkTXInfo = _reflection.GeneratedProtocolMessageType('UplinkTXInfo', (_message.Message,), { +UplinkTxInfoLegacy = _reflection.GeneratedProtocolMessageType('UplinkTxInfoLegacy', (_message.Message,), { + 'DESCRIPTOR' : _UPLINKTXINFOLEGACY, + '__module__' : 'chirpstack_api.gw.gw_pb2' + # @@protoc_insertion_point(class_scope:gw.UplinkTxInfoLegacy) + }) +_sym_db.RegisterMessage(UplinkTxInfoLegacy) + +UplinkTxInfo = _reflection.GeneratedProtocolMessageType('UplinkTxInfo', (_message.Message,), { 'DESCRIPTOR' : _UPLINKTXINFO, '__module__' : 'chirpstack_api.gw.gw_pb2' - # @@protoc_insertion_point(class_scope:gw.UplinkTXInfo) + # @@protoc_insertion_point(class_scope:gw.UplinkTxInfo) }) -_sym_db.RegisterMessage(UplinkTXInfo) +_sym_db.RegisterMessage(UplinkTxInfo) -LoRaModulationInfo = _reflection.GeneratedProtocolMessageType('LoRaModulationInfo', (_message.Message,), { +LoraModulationInfo = _reflection.GeneratedProtocolMessageType('LoraModulationInfo', (_message.Message,), { 'DESCRIPTOR' : _LORAMODULATIONINFO, '__module__' : 'chirpstack_api.gw.gw_pb2' - # @@protoc_insertion_point(class_scope:gw.LoRaModulationInfo) + # @@protoc_insertion_point(class_scope:gw.LoraModulationInfo) }) -_sym_db.RegisterMessage(LoRaModulationInfo) +_sym_db.RegisterMessage(LoraModulationInfo) -FSKModulationInfo = _reflection.GeneratedProtocolMessageType('FSKModulationInfo', (_message.Message,), { +FskModulationInfo = _reflection.GeneratedProtocolMessageType('FskModulationInfo', (_message.Message,), { 'DESCRIPTOR' : _FSKMODULATIONINFO, '__module__' : 'chirpstack_api.gw.gw_pb2' - # @@protoc_insertion_point(class_scope:gw.FSKModulationInfo) + # @@protoc_insertion_point(class_scope:gw.FskModulationInfo) }) -_sym_db.RegisterMessage(FSKModulationInfo) +_sym_db.RegisterMessage(FskModulationInfo) -LRFHSSModulationInfo = _reflection.GeneratedProtocolMessageType('LRFHSSModulationInfo', (_message.Message,), { +LrFhssModulationInfo = _reflection.GeneratedProtocolMessageType('LrFhssModulationInfo', (_message.Message,), { 'DESCRIPTOR' : _LRFHSSMODULATIONINFO, '__module__' : 'chirpstack_api.gw.gw_pb2' - # @@protoc_insertion_point(class_scope:gw.LRFHSSModulationInfo) + # @@protoc_insertion_point(class_scope:gw.LrFhssModulationInfo) }) -_sym_db.RegisterMessage(LRFHSSModulationInfo) +_sym_db.RegisterMessage(LrFhssModulationInfo) EncryptedFineTimestamp = _reflection.GeneratedProtocolMessageType('EncryptedFineTimestamp', (_message.Message,), { 'DESCRIPTOR' : _ENCRYPTEDFINETIMESTAMP, @@ -181,27 +200,48 @@ PerModulationCount = _reflection.GeneratedProtocolMessageType('PerModulationCoun }) _sym_db.RegisterMessage(PerModulationCount) -UplinkRXInfo = _reflection.GeneratedProtocolMessageType('UplinkRXInfo', (_message.Message,), { +UplinkRxInfoLegacy = _reflection.GeneratedProtocolMessageType('UplinkRxInfoLegacy', (_message.Message,), { 'MetadataEntry' : _reflection.GeneratedProtocolMessageType('MetadataEntry', (_message.Message,), { - 'DESCRIPTOR' : _UPLINKRXINFO_METADATAENTRY, + 'DESCRIPTOR' : _UPLINKRXINFOLEGACY_METADATAENTRY, '__module__' : 'chirpstack_api.gw.gw_pb2' - # @@protoc_insertion_point(class_scope:gw.UplinkRXInfo.MetadataEntry) + # @@protoc_insertion_point(class_scope:gw.UplinkRxInfoLegacy.MetadataEntry) }) , + 'DESCRIPTOR' : _UPLINKRXINFOLEGACY, + '__module__' : 'chirpstack_api.gw.gw_pb2' + # @@protoc_insertion_point(class_scope:gw.UplinkRxInfoLegacy) + }) +_sym_db.RegisterMessage(UplinkRxInfoLegacy) +_sym_db.RegisterMessage(UplinkRxInfoLegacy.MetadataEntry) + +UplinkRxInfo = _reflection.GeneratedProtocolMessageType('UplinkRxInfo', (_message.Message,), { 'DESCRIPTOR' : _UPLINKRXINFO, '__module__' : 'chirpstack_api.gw.gw_pb2' - # @@protoc_insertion_point(class_scope:gw.UplinkRXInfo) + # @@protoc_insertion_point(class_scope:gw.UplinkRxInfo) }) -_sym_db.RegisterMessage(UplinkRXInfo) -_sym_db.RegisterMessage(UplinkRXInfo.MetadataEntry) +_sym_db.RegisterMessage(UplinkRxInfo) -DownlinkTXInfo = _reflection.GeneratedProtocolMessageType('DownlinkTXInfo', (_message.Message,), { +DownlinkTxInfoLegacy = _reflection.GeneratedProtocolMessageType('DownlinkTxInfoLegacy', (_message.Message,), { + 'DESCRIPTOR' : _DOWNLINKTXINFOLEGACY, + '__module__' : 'chirpstack_api.gw.gw_pb2' + # @@protoc_insertion_point(class_scope:gw.DownlinkTxInfoLegacy) + }) +_sym_db.RegisterMessage(DownlinkTxInfoLegacy) + +DownlinkTxInfo = _reflection.GeneratedProtocolMessageType('DownlinkTxInfo', (_message.Message,), { 'DESCRIPTOR' : _DOWNLINKTXINFO, '__module__' : 'chirpstack_api.gw.gw_pb2' - # @@protoc_insertion_point(class_scope:gw.DownlinkTXInfo) + # @@protoc_insertion_point(class_scope:gw.DownlinkTxInfo) }) -_sym_db.RegisterMessage(DownlinkTXInfo) +_sym_db.RegisterMessage(DownlinkTxInfo) + +Timing = _reflection.GeneratedProtocolMessageType('Timing', (_message.Message,), { + 'DESCRIPTOR' : _TIMING, + '__module__' : 'chirpstack_api.gw.gw_pb2' + # @@protoc_insertion_point(class_scope:gw.Timing) + }) +_sym_db.RegisterMessage(Timing) ImmediatelyTimingInfo = _reflection.GeneratedProtocolMessageType('ImmediatelyTimingInfo', (_message.Message,), { 'DESCRIPTOR' : _IMMEDIATELYTIMINGINFO, @@ -252,19 +292,19 @@ DownlinkFrameItem = _reflection.GeneratedProtocolMessageType('DownlinkFrameItem' }) _sym_db.RegisterMessage(DownlinkFrameItem) -DownlinkTXAck = _reflection.GeneratedProtocolMessageType('DownlinkTXAck', (_message.Message,), { +DownlinkTxAck = _reflection.GeneratedProtocolMessageType('DownlinkTxAck', (_message.Message,), { 'DESCRIPTOR' : _DOWNLINKTXACK, '__module__' : 'chirpstack_api.gw.gw_pb2' - # @@protoc_insertion_point(class_scope:gw.DownlinkTXAck) + # @@protoc_insertion_point(class_scope:gw.DownlinkTxAck) }) -_sym_db.RegisterMessage(DownlinkTXAck) +_sym_db.RegisterMessage(DownlinkTxAck) -DownlinkTXAckItem = _reflection.GeneratedProtocolMessageType('DownlinkTXAckItem', (_message.Message,), { +DownlinkTxAckItem = _reflection.GeneratedProtocolMessageType('DownlinkTxAckItem', (_message.Message,), { 'DESCRIPTOR' : _DOWNLINKTXACKITEM, '__module__' : 'chirpstack_api.gw.gw_pb2' - # @@protoc_insertion_point(class_scope:gw.DownlinkTXAckItem) + # @@protoc_insertion_point(class_scope:gw.DownlinkTxAckItem) }) -_sym_db.RegisterMessage(DownlinkTXAckItem) +_sym_db.RegisterMessage(DownlinkTxAckItem) GatewayConfiguration = _reflection.GeneratedProtocolMessageType('GatewayConfiguration', (_message.Message,), { 'DESCRIPTOR' : _GATEWAYCONFIGURATION, @@ -340,7 +380,7 @@ _sym_db.RegisterMessage(ConnState) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\024io.chirpstack.api.gwB\014GatewayProtoP\001Z-github.com/chirpstack/chirpstack-api/go/v4/gw' + DESCRIPTOR._serialized_options = b'\n\024io.chirpstack.api.gwB\014GatewayProtoP\001Z-github.com/chirpstack/chirpstack/api/go/v4/gw' _GATEWAYSTATS_METADATAENTRY._options = None _GATEWAYSTATS_METADATAENTRY._serialized_options = b'8\001' _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY._options = None @@ -349,88 +389,98 @@ if _descriptor._USE_C_DESCRIPTORS == False: _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY._serialized_options = b'8\001' _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY._options = None _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY._serialized_options = b'8\001' - _UPLINKRXINFO_METADATAENTRY._options = None - _UPLINKRXINFO_METADATAENTRY._serialized_options = b'8\001' + _UPLINKRXINFOLEGACY_METADATAENTRY._options = None + _UPLINKRXINFOLEGACY_METADATAENTRY._serialized_options = b'8\001' _GATEWAYCOMMANDEXECREQUEST_ENVIRONMENTENTRY._options = None _GATEWAYCOMMANDEXECREQUEST_ENVIRONMENTENTRY._serialized_options = b'8\001' - _DOWNLINKTIMING._serialized_start=5467 - _DOWNLINKTIMING._serialized_end=5526 - _FINETIMESTAMPTYPE._serialized_start=5528 - _FINETIMESTAMPTYPE._serialized_end=5583 - _CRCSTATUS._serialized_start=5585 - _CRCSTATUS._serialized_end=5633 - _TXACKSTATUS._serialized_start=5636 - _TXACKSTATUS._serialized_end=5824 - _MODULATION._serialized_start=136 - _MODULATION._serialized_end=299 - _UPLINKTXINFO._serialized_start=302 - _UPLINKTXINFO._serialized_end=607 - _LORAMODULATIONINFO._serialized_start=609 - _LORAMODULATIONINFO._serialized_end=725 - _FSKMODULATIONINFO._serialized_start=727 - _FSKMODULATIONINFO._serialized_end=793 - _LRFHSSMODULATIONINFO._serialized_start=795 - _LRFHSSMODULATIONINFO._serialized_end=889 - _ENCRYPTEDFINETIMESTAMP._serialized_start=891 - _ENCRYPTEDFINETIMESTAMP._serialized_end=998 - _PLAINFINETIMESTAMP._serialized_start=1000 - _PLAINFINETIMESTAMP._serialized_end=1062 - _GATEWAYSTATS._serialized_start=1065 - _GATEWAYSTATS._serialized_end=2022 - _GATEWAYSTATS_METADATAENTRY._serialized_start=1792 - _GATEWAYSTATS_METADATAENTRY._serialized_end=1839 - _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY._serialized_start=1841 - _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY._serialized_end=1901 - _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY._serialized_start=1903 - _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY._serialized_end=1963 - _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY._serialized_start=1965 - _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY._serialized_end=2022 - _PERMODULATIONCOUNT._serialized_start=2024 - _PERMODULATIONCOUNT._serialized_end=2095 - _UPLINKRXINFO._serialized_start=2098 - _UPLINKRXINFO._serialized_end=2786 - _UPLINKRXINFO_METADATAENTRY._serialized_start=2721 - _UPLINKRXINFO_METADATAENTRY._serialized_end=2768 - _DOWNLINKTXINFO._serialized_start=2789 - _DOWNLINKTXINFO._serialized_end=3328 - _IMMEDIATELYTIMINGINFO._serialized_start=3330 - _IMMEDIATELYTIMINGINFO._serialized_end=3353 - _DELAYTIMINGINFO._serialized_start=3355 - _DELAYTIMINGINFO._serialized_end=3414 - _GPSEPOCHTIMINGINFO._serialized_start=3416 - _GPSEPOCHTIMINGINFO._serialized_end=3512 - _UPLINKFRAME._serialized_start=3514 - _UPLINKFRAME._serialized_end=3618 - _UPLINKFRAMESET._serialized_start=3620 - _UPLINKFRAMESET._serialized_end=3727 - _DOWNLINKFRAME._serialized_start=3730 - _DOWNLINKFRAME._serialized_end=3920 - _DOWNLINKFRAMEITEM._serialized_start=3922 - _DOWNLINKFRAMEITEM._serialized_end=3999 - _DOWNLINKTXACK._serialized_start=4002 - _DOWNLINKTXACK._serialized_end=4149 - _DOWNLINKTXACKITEM._serialized_start=4151 - _DOWNLINKTXACKITEM._serialized_end=4203 - _GATEWAYCONFIGURATION._serialized_start=4206 - _GATEWAYCONFIGURATION._serialized_end=4371 - _CHANNELCONFIGURATION._serialized_start=4374 - _CHANNELCONFIGURATION._serialized_end=4652 - _LORAMODULATIONCONFIG._serialized_start=4654 - _LORAMODULATIONCONFIG._serialized_end=4722 - _FSKMODULATIONCONFIG._serialized_start=4724 - _FSKMODULATIONCONFIG._serialized_end=4781 - _GATEWAYCOMMANDEXECREQUEST._serialized_start=4784 - _GATEWAYCOMMANDEXECREQUEST._serialized_end=5019 - _GATEWAYCOMMANDEXECREQUEST_ENVIRONMENTENTRY._serialized_start=4969 - _GATEWAYCOMMANDEXECREQUEST_ENVIRONMENTENTRY._serialized_end=5019 - _GATEWAYCOMMANDEXECRESPONSE._serialized_start=5022 - _GATEWAYCOMMANDEXECRESPONSE._serialized_end=5153 - _RAWPACKETFORWARDEREVENT._serialized_start=5155 - _RAWPACKETFORWARDEREVENT._serialized_end=5251 - _RAWPACKETFORWARDERCOMMAND._serialized_start=5253 - _RAWPACKETFORWARDERCOMMAND._serialized_end=5351 - _CONNSTATE._serialized_start=5353 - _CONNSTATE._serialized_end=5465 - _CONNSTATE_STATE._serialized_start=5433 - _CONNSTATE_STATE._serialized_end=5465 + _CODERATE._serialized_start=6090 + _CODERATE._serialized_end=6166 + _DOWNLINKTIMING._serialized_start=6168 + _DOWNLINKTIMING._serialized_end=6227 + _FINETIMESTAMPTYPE._serialized_start=6229 + _FINETIMESTAMPTYPE._serialized_end=6284 + _CRCSTATUS._serialized_start=6286 + _CRCSTATUS._serialized_end=6334 + _TXACKSTATUS._serialized_start=6337 + _TXACKSTATUS._serialized_end=6525 + _MODULATION._serialized_start=166 + _MODULATION._serialized_end=315 + _UPLINKTXINFOLEGACY._serialized_start=318 + _UPLINKTXINFOLEGACY._serialized_end=587 + _UPLINKTXINFO._serialized_start=589 + _UPLINKTXINFO._serialized_end=658 + _LORAMODULATIONINFO._serialized_start=661 + _LORAMODULATIONINFO._serialized_end=817 + _FSKMODULATIONINFO._serialized_start=819 + _FSKMODULATIONINFO._serialized_end=885 + _LRFHSSMODULATIONINFO._serialized_start=887 + _LRFHSSMODULATIONINFO._serialized_end=981 + _ENCRYPTEDFINETIMESTAMP._serialized_start=983 + _ENCRYPTEDFINETIMESTAMP._serialized_end=1069 + _PLAINFINETIMESTAMP._serialized_start=1071 + _PLAINFINETIMESTAMP._serialized_end=1133 + _GATEWAYSTATS._serialized_start=1136 + _GATEWAYSTATS._serialized_end=2052 + _GATEWAYSTATS_METADATAENTRY._serialized_start=1822 + _GATEWAYSTATS_METADATAENTRY._serialized_end=1869 + _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY._serialized_start=1871 + _GATEWAYSTATS_TXPACKETSPERFREQUENCYENTRY._serialized_end=1931 + _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY._serialized_start=1933 + _GATEWAYSTATS_RXPACKETSPERFREQUENCYENTRY._serialized_end=1993 + _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY._serialized_start=1995 + _GATEWAYSTATS_TXPACKETSPERSTATUSENTRY._serialized_end=2052 + _PERMODULATIONCOUNT._serialized_start=2054 + _PERMODULATIONCOUNT._serialized_end=2125 + _UPLINKRXINFOLEGACY._serialized_start=2128 + _UPLINKRXINFOLEGACY._serialized_end=2768 + _UPLINKRXINFOLEGACY_METADATAENTRY._serialized_start=2703 + _UPLINKRXINFOLEGACY_METADATAENTRY._serialized_end=2750 + _UPLINKRXINFO._serialized_start=2771 + _UPLINKRXINFO._serialized_end=3140 + _DOWNLINKTXINFOLEGACY._serialized_start=3143 + _DOWNLINKTXINFOLEGACY._serialized_end=3657 + _DOWNLINKTXINFO._serialized_start=3660 + _DOWNLINKTXINFO._serialized_end=3823 + _TIMING._serialized_start=3826 + _TIMING._serialized_end=3981 + _IMMEDIATELYTIMINGINFO._serialized_start=3983 + _IMMEDIATELYTIMINGINFO._serialized_end=4006 + _DELAYTIMINGINFO._serialized_start=4008 + _DELAYTIMINGINFO._serialized_end=4067 + _GPSEPOCHTIMINGINFO._serialized_start=4069 + _GPSEPOCHTIMINGINFO._serialized_end=4146 + _UPLINKFRAME._serialized_start=4149 + _UPLINKFRAME._serialized_end=4349 + _UPLINKFRAMESET._serialized_start=4351 + _UPLINKFRAMESET._serialized_end=4458 + _DOWNLINKFRAME._serialized_start=4461 + _DOWNLINKFRAME._serialized_end=4610 + _DOWNLINKFRAMEITEM._serialized_start=4612 + _DOWNLINKFRAMEITEM._serialized_end=4739 + _DOWNLINKTXACK._serialized_start=4742 + _DOWNLINKTXACK._serialized_end=4891 + _DOWNLINKTXACKITEM._serialized_start=4893 + _DOWNLINKTXACKITEM._serialized_end=4945 + _GATEWAYCONFIGURATION._serialized_start=4948 + _GATEWAYCONFIGURATION._serialized_end=5102 + _CHANNELCONFIGURATION._serialized_start=5105 + _CHANNELCONFIGURATION._serialized_end=5361 + _LORAMODULATIONCONFIG._serialized_start=5363 + _LORAMODULATIONCONFIG._serialized_end=5431 + _FSKMODULATIONCONFIG._serialized_start=5433 + _FSKMODULATIONCONFIG._serialized_end=5490 + _GATEWAYCOMMANDEXECREQUEST._serialized_start=5493 + _GATEWAYCOMMANDEXECREQUEST._serialized_end=5709 + _GATEWAYCOMMANDEXECREQUEST_ENVIRONMENTENTRY._serialized_start=5659 + _GATEWAYCOMMANDEXECREQUEST_ENVIRONMENTENTRY._serialized_end=5709 + _GATEWAYCOMMANDEXECRESPONSE._serialized_start=5711 + _GATEWAYCOMMANDEXECRESPONSE._serialized_end=5823 + _RAWPACKETFORWARDEREVENT._serialized_start=5825 + _RAWPACKETFORWARDEREVENT._serialized_end=5903 + _RAWPACKETFORWARDERCOMMAND._serialized_start=5905 + _RAWPACKETFORWARDERCOMMAND._serialized_end=5985 + _CONNSTATE._serialized_start=5987 + _CONNSTATE._serialized_end=6088 + _CONNSTATE_STATE._serialized_start=6056 + _CONNSTATE_STATE._serialized_end=6088 # @@protoc_insertion_point(module_scope) diff --git a/api/python/src/chirpstack_api/integration/__init__.py b/api/python/src/chirpstack_api/integration/__init__.py new file mode 100644 index 00000000..3f70e441 --- /dev/null +++ b/api/python/src/chirpstack_api/integration/__init__.py @@ -0,0 +1 @@ +from .integration_pb2 import * diff --git a/api/python/src/chirpstack_api/integration/integration_pb2.py b/api/python/src/chirpstack_api/integration/integration_pb2.py index 17a59e8d..745561bf 100644 --- a/api/python/src/chirpstack_api/integration/integration_pb2.py +++ b/api/python/src/chirpstack_api/integration/integration_pb2.py @@ -19,7 +19,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__ 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') +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\"\xd9\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\r\n\x05\x66_cnt\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(\r\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\"\xa6\x02\n\x08LogEvent\x12(\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x0b\x64\x65vice_info\x18\x02 \x01(\x0b\x32\x17.integration.DeviceInfo\x12$\n\x05level\x18\x03 \x01(\x0e\x32\x15.integration.LogLevel\x12\"\n\x04\x63ode\x18\x04 \x01(\x0e\x32\x14.integration.LogCode\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\x33\n\x07\x63ontext\x18\x06 \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\"\x88\x01\n\x0f\x44ownlinkCommand\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0f\n\x07\x64\x65v_eui\x18\x02 \x01(\t\x12\x11\n\tconfirmed\x18\x03 \x01(\x08\x12\x0e\n\x06\x66_port\x18\x04 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\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) @@ -50,6 +50,7 @@ _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'] +_DOWNLINKCOMMAND = DESCRIPTOR.message_types_by_name['DownlinkCommand'] DeviceInfo = _reflection.GeneratedProtocolMessageType('DeviceInfo', (_message.Message,), { 'TagsEntry' : _reflection.GeneratedProtocolMessageType('TagsEntry', (_message.Message,), { @@ -129,6 +130,13 @@ IntegrationEvent = _reflection.GeneratedProtocolMessageType('IntegrationEvent', }) _sym_db.RegisterMessage(IntegrationEvent) +DownlinkCommand = _reflection.GeneratedProtocolMessageType('DownlinkCommand', (_message.Message,), { + 'DESCRIPTOR' : _DOWNLINKCOMMAND, + '__module__' : 'chirpstack_api.integration.integration_pb2' + # @@protoc_insertion_point(class_scope:integration.DownlinkCommand) + }) +_sym_db.RegisterMessage(DownlinkCommand) + if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None @@ -137,30 +145,32 @@ if _descriptor._USE_C_DESCRIPTORS == False: _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 + _LOGLEVEL._serialized_start=2452 + _LOGLEVEL._serialized_end=2496 + _LOGCODE._serialized_start=2499 + _LOGCODE._serialized_end=2691 _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 + _UPLINKEVENT._serialized_end=827 + _JOINEVENT._serialized_start=830 + _JOINEVENT._serialized_end=973 + _ACKEVENT._serialized_start=976 + _ACKEVENT._serialized_end=1165 + _TXACKEVENT._serialized_start=1168 + _TXACKEVENT._serialized_end=1389 + _LOGEVENT._serialized_start=1392 + _LOGEVENT._serialized_end=1686 + _LOGEVENT_CONTEXTENTRY._serialized_start=1640 + _LOGEVENT_CONTEXTENTRY._serialized_end=1686 + _STATUSEVENT._serialized_start=1689 + _STATUSEVENT._serialized_end=1921 + _LOCATIONEVENT._serialized_start=1924 + _LOCATIONEVENT._serialized_end=2089 + _INTEGRATIONEVENT._serialized_start=2092 + _INTEGRATIONEVENT._serialized_end=2311 + _DOWNLINKCOMMAND._serialized_start=2314 + _DOWNLINKCOMMAND._serialized_end=2450 # @@protoc_insertion_point(module_scope) diff --git a/api/python/src/chirpstack_api/meta/__init__.py b/api/python/src/chirpstack_api/meta/__init__.py new file mode 100644 index 00000000..7723bf02 --- /dev/null +++ b/api/python/src/chirpstack_api/meta/__init__.py @@ -0,0 +1 @@ +from .meta_pb2 import * diff --git a/api/python/src/chirpstack_api/meta/meta_pb2.py b/api/python/src/chirpstack_api/meta/meta_pb2.py index 576f73b0..1f9ee10f 100644 --- a/api/python/src/chirpstack_api/meta/meta_pb2.py +++ b/api/python/src/chirpstack_api/meta/meta_pb2.py @@ -16,7 +16,7 @@ from chirpstack_api.common import common_pb2 as chirpstack__api_dot_common_dot_c 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') +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') @@ -39,7 +39,7 @@ _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' + 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