Update Python SDK.

This commit is contained in:
Orne Brocaar 2022-07-18 14:14:28 +01:00
parent 626af4fadc
commit 038614b44d
42 changed files with 2884 additions and 1179 deletions

3
.gitignore vendored
View File

@ -25,6 +25,9 @@
# API # API
/api/js/node_modules /api/js/node_modules
/api/python/src/*.egg-info/
/api/python/src/build/
/api/python/src/dist/
# Bitbake recipes # Bitbake recipes
*.bb *.bb

View File

@ -32,7 +32,7 @@ services:
build: build:
context: . context: .
dockerfile: Dockerfile-python dockerfile: Dockerfile-python
command: bash -c "cd js && make all" command: bash -c "cd python && make all"
volumes: volumes:
- ./:/chirpstack/api - ./:/chirpstack/api
chirpstack-api-md: chirpstack-api-md:

View File

@ -2,144 +2,367 @@ syntax = "proto3";
package api; 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_package = "io.chirpstack.api";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "ApplicationProto"; option java_outer_classname = "ApplicationProto";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto"; import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto"; import "google/protobuf/empty.proto";
// ApplicationService is the service providing API methods for managing applications. // ApplicationService is the service providing API methods for managing applications.
service ApplicationService { service ApplicationService {
// Create creates the given application. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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 { enum Encoding {
@ -158,6 +381,7 @@ enum IntegrationKind {
AZURE_SERVICE_BUS = 7; AZURE_SERVICE_BUS = 7;
PILOT_THINGS = 8; PILOT_THINGS = 8;
MQTT_GLOBAL = 9; MQTT_GLOBAL = 9;
IFTTT = 10;
} }
message Application { message Application {
@ -216,6 +440,11 @@ message GetApplicationResponse {
// Last update timestamp. // Last update timestamp.
google.protobuf.Timestamp updated_at = 3; 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 { message UpdateApplicationRequest {
@ -718,6 +947,53 @@ message DeletePilotThingsIntegrationRequest {
string application_id = 1; 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 { message GenerateMqttIntegrationClientCertificateRequest {
// Application ID (UUID). // Application ID (UUID).
string application_id = 1; string application_id = 1;

View File

@ -2,11 +2,13 @@ syntax = "proto3";
package api; 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_package = "io.chirpstack.api";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "DeviceProto"; option java_outer_classname = "DeviceProto";
import "chirpstack-api/common/common.proto";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto"; import "google/protobuf/timestamp.proto";
import "google/protobuf/struct.proto"; import "google/protobuf/struct.proto";
import "google/protobuf/empty.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. // DeviceService is the service providing API methods for managing devices.
service DeviceService { service DeviceService {
// Create the given device. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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). // 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. // 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). // 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. // 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. // GetMetrics returns the device metrics.
rpc GetStats(GetDeviceStatsRequest) returns (GetDeviceStatsResponse) {} // 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. // 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. // 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. // 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 { message Device {
@ -309,7 +398,7 @@ message GetRandomDevAddrResponse {
string dev_addr = 1; string dev_addr = 1;
} }
message GetDeviceStatsRequest { message GetDeviceMetricsRequest {
// DevEUI (EUI64). // DevEUI (EUI64).
string dev_eui = 1; string dev_eui = 1;
@ -318,33 +407,57 @@ message GetDeviceStatsRequest {
// Interval end timestamp. // Interval end timestamp.
google.protobuf.Timestamp end = 3; google.protobuf.Timestamp end = 3;
// Aggregation.
common.Aggregation aggregation = 4;
} }
message GetDeviceStatsResponse { message GetDeviceMetricsResponse {
repeated DeviceStats result = 1; map<string, common.Metric> metrics = 1;
map<string, DeviceState> states = 2;
} }
message DeviceStats { message DeviceState {
// Timestamp of the (aggregated) measurement. // Name.
google.protobuf.Timestamp time = 1; 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. // Packets received from the device.
uint32 rx_packets = 2; common.Metric rx_packets = 1;
// Average RSSI (as reported by the gateway(s)). // RSSI (as reported by the gateway(s)).
float gw_rssi = 3; common.Metric gw_rssi = 2;
// Average SNR (as reported by the gateway(s)). // SNR (as reported by the gateway(s)).
float gw_snr = 4; common.Metric gw_snr = 3;
// Packets received by frequency. // Packets received by frequency.
map<uint32, uint32> rx_packets_per_frequency = 5; common.Metric rx_packets_per_freq = 4;
// Packets received by DR. // Packets received by DR.
map<uint32, uint32> rx_packets_per_dr = 6; common.Metric rx_packets_per_dr = 5;
// Error count. // Errors.
map<string, uint32> errors = 7; common.Metric errors = 6;
} }
message DeviceQueueItem { message DeviceQueueItem {
@ -379,7 +492,7 @@ message DeviceQueueItem {
} }
message EnqueueDeviceQueueItemRequest { message EnqueueDeviceQueueItemRequest {
DeviceQueueItem item = 1; DeviceQueueItem queue_item = 1;
} }
message EnqueueDeviceQueueItemResponse { message EnqueueDeviceQueueItemResponse {

View File

@ -2,11 +2,12 @@ syntax = "proto3";
package api; 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_package = "io.chirpstack.api";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "DeviceProfileProto"; option java_outer_classname = "DeviceProfileProto";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto"; import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto"; import "google/protobuf/empty.proto";
import "chirpstack-api/common/common.proto"; import "chirpstack-api/common/common.proto";
@ -22,25 +23,68 @@ enum CodecRuntime {
JS = 2; 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. // DeviceProfileService is the service providing API methods for managing device-profiles.
service DeviceProfileService { service DeviceProfileService {
// Create the given device-profile. // 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. // 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. // 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. // 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. // 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. // 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 { message DeviceProfile {
@ -54,6 +98,9 @@ message DeviceProfile {
// Name. // Name.
string name = 3; string name = 3;
// Description.
string description = 26;
// Region. // Region.
common.Region region = 4; common.Region region = 4;
@ -69,11 +116,11 @@ message DeviceProfile {
// Payload codec runtime. // Payload codec runtime.
CodecRuntime payload_codec_runtime = 8; CodecRuntime payload_codec_runtime = 8;
// Payload codec encoder config. // Payload codec script.
string payload_encoder_config = 9; string payload_codec_script = 9;
// Payload codec decoder config. // Flush queue on device activation.
string payload_decoder_config = 10; bool flush_queue_on_activate = 10;
// Uplink interval (seconds). // Uplink interval (seconds).
// This defines the expected uplink interval which the device uses for // This defines the expected uplink interval which the device uses for
@ -126,6 +173,18 @@ message DeviceProfile {
// User defined tags. // User defined tags.
map<string, string> tags = 25; map<string, string> tags = 25;
// Measurements.
// If defined, ChirpStack will visualize these metrics in the web-interface.
map<string, Measurement> measurements = 27;
}
message Measurement {
// Name (user defined).
string name = 2;
// Kind.
MeasurementKind kind = 3;
} }
message DeviceProfileListItem { message DeviceProfileListItem {

View File

@ -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<string, string> tags = 27;
// Measurements.
// If defined, ChirpStack will visualize these metrics in the web-interface.
map<string, Measurement> 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;
}

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api; 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_package = "io.chirpstack.api";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "FrameLogProto"; option java_outer_classname = "FrameLogProto";
@ -16,10 +16,10 @@ message UplinkFrameLog {
bytes phy_payload = 1; bytes phy_payload = 1;
// TX meta-data. // TX meta-data.
gw.UplinkTXInfo tx_info = 2; gw.UplinkTxInfo tx_info = 2;
// RX meta-data. // RX meta-data.
repeated gw.UplinkRXInfo rx_info = 3; repeated gw.UplinkRxInfo rx_info = 3;
// Message type. // Message type.
common.MType m_type = 4; common.MType m_type = 4;
@ -42,10 +42,10 @@ message DownlinkFrameLog {
bytes phy_payload = 2; bytes phy_payload = 2;
// TX meta-data. // TX meta-data.
gw.DownlinkTXInfo tx_info = 3; gw.DownlinkTxInfo tx_info = 3;
// Downlink ID (UUID). // Downlink ID.
string downlink_id = 4; uint32 downlink_id = 4;
// Gateway ID (EUI64). // Gateway ID (EUI64).
string gateway_id = 5; string gateway_id = 5;

View File

@ -2,11 +2,12 @@ syntax = "proto3";
package api; 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_package = "io.chirpstack.api";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "GatewayProto"; option java_outer_classname = "GatewayProto";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto"; import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto"; import "google/protobuf/empty.proto";
import "chirpstack-api/common/common.proto"; import "chirpstack-api/common/common.proto";
@ -14,25 +15,55 @@ import "chirpstack-api/common/common.proto";
// GatewayService is the service providing API methods for managing gateways. // GatewayService is the service providing API methods for managing gateways.
service GatewayService { service GatewayService {
// Create creates the given gateway. // Create creates the given gateway.
rpc Create(CreateGatewayRequest) returns (google.protobuf.Empty) {} rpc Create(CreateGatewayRequest) returns (google.protobuf.Empty) {
option(google.api.http) = {
post: "/api/gateways"
body: "*"
};
}
// Get returns the gateway for the given Gateway ID. // Get returns the gateway for the given Gateway ID.
rpc Get(GetGatewayRequest) returns (GetGatewayResponse) {} rpc Get(GetGatewayRequest) returns (GetGatewayResponse) {
option(google.api.http) = {
get: "/api/gateways/{gateway_id}"
};
}
// Update updates the given gateway. // Update updates the given gateway.
rpc Update(UpdateGatewayRequest) returns (google.protobuf.Empty) {} 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. // Delete deletes the gateway matching the given Gateway ID.
rpc Delete(DeleteGatewayRequest) returns (google.protobuf.Empty) {} rpc Delete(DeleteGatewayRequest) returns (google.protobuf.Empty) {
option(google.api.http) = {
delete: "/api/gateways/{gateway_id}"
};
}
// Get the list of gateways. // Get the list of gateways.
rpc List(ListGatewaysRequest) returns (ListGatewaysResponse) {} rpc List(ListGatewaysRequest) returns (ListGatewaysResponse) {
option(google.api.http) = {
get: "/api/gateways"
};
}
// Generate client-certificate for the gateway. // Generate client-certificate for the gateway.
rpc GenerateClientCertificate(GenerateGatewayClientCertificateRequest) returns (GenerateGatewayClientCertificateResponse) {} rpc GenerateClientCertificate(GenerateGatewayClientCertificateRequest) returns (GenerateGatewayClientCertificateResponse) {
option(google.api.http) = {
post: "/api/gateways/{gateway_id}/generate-certificate"
};
}
// GetStats returns the gateway stats. // GetMetrics returns the gateway metrics.
rpc GetStats(GetGatewayStatsRequest) returns (GetGatewayStatsResponse) {} rpc GetMetrics(GetGatewayMetricsRequest) returns (GetGatewayMetricsResponse) {
option(google.api.http) = {
get: "/api/gateways/{gateway_id}/metrics"
};
}
} }
message Gateway { message Gateway {
@ -163,7 +194,7 @@ message GenerateGatewayClientCertificateResponse {
google.protobuf.Timestamp expires_at = 4; google.protobuf.Timestamp expires_at = 4;
} }
message GetGatewayStatsRequest { message GetGatewayMetricsRequest {
// Gateway ID (EUI64). // Gateway ID (EUI64).
string gateway_id = 1; string gateway_id = 1;
@ -172,34 +203,30 @@ message GetGatewayStatsRequest {
// Interval end timestamp. // Interval end timestamp.
google.protobuf.Timestamp end = 3; google.protobuf.Timestamp end = 3;
// Aggregation.
common.Aggregation aggregation = 4;
} }
message GetGatewayStatsResponse { message GetGatewayMetricsResponse {
repeated GatewayStats result = 1; // RX packets.
} common.Metric rx_packets = 1;
message GatewayStats { // TX packets.
// Timestamp of the (aggregated) measurement. common.Metric tx_packets = 2;
google.protobuf.Timestamp time = 1;
// TX packets / frequency.
// Packets received. common.Metric tx_packets_per_freq = 3;
uint32 rx_packets = 2;
// RX packets / frequency.
// Packets emitted. common.Metric rx_packets_per_freq = 4;
uint32 tx_packets = 3;
// TX packets / DR.
// Tx packets per frequency. common.Metric tx_packets_per_dr = 5;
map<uint32, uint32> tx_packets_per_frequency = 4;
// RX packets / DR.
// Rx packets per frequency. common.Metric rx_packets_per_dr = 6;
map<uint32, uint32> rx_packets_per_frequency = 5;
// TX packets per status.
// Tx packets per DR. common.Metric tx_packets_per_status = 7;
map<uint32, uint32> tx_packets_per_dr = 6;
// Rx packets per DR.
map<uint32, uint32> rx_packets_per_dr = 7;
// Tx packets per status.
map<string, uint32> tx_packets_per_status = 8;
} }

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api; 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_package = "io.chirpstack.api";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "InternalProto"; option java_outer_classname = "InternalProto";

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package api; 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_package = "io.chirpstack.api";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "MulticastGroupProto"; option java_outer_classname = "MulticastGroupProto";
@ -16,34 +16,78 @@ import "chirpstack-api/common/common.proto";
// MulticastGroupService is the service managing multicast-groups. // MulticastGroupService is the service managing multicast-groups.
service MulticastGroupService { service MulticastGroupService {
// Create the given multicast group. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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. // 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 { enum MulticastGroupType {
@ -205,7 +249,7 @@ message MulticastGroupQueueItem {
message EnqueueMulticastGroupQueueItemRequest { message EnqueueMulticastGroupQueueItemRequest {
// Multicast queue-item to enqueue. // Multicast queue-item to enqueue.
MulticastGroupQueueItem multicast_group_queue_item = 1; MulticastGroupQueueItem queue_item = 1;
} }
message EnqueueMulticastGroupQueueItemResponse { message EnqueueMulticastGroupQueueItemResponse {

View File

@ -2,46 +2,91 @@ syntax = "proto3";
package api; 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_package = "io.chirpstack.api";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "InternalProto"; option java_outer_classname = "InternalProto";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto"; import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto"; import "google/protobuf/empty.proto";
// TenantService is the service providing API methods for managing tenants. // TenantService is the service providing API methods for managing tenants.
service TenantService { service TenantService {
// Create a new tenant. // 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. // 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. // 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. // 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. // 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. // Add an user to the tenant.
// Note: the user must already exist. // 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. // 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. // 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. // 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. // 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 { message Tenant {

View File

@ -2,11 +2,12 @@ syntax = "proto3";
package api; 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_package = "io.chirpstack.api";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "UserProto"; option java_outer_classname = "UserProto";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto"; import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.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. // UserService is the service providing API methods for managing users.
service UserService { service UserService {
// Create a new user. // 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. // 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. // 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. // 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. // 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. // 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 { message User {

View File

@ -7,6 +7,8 @@ option java_package = "io.chirpstack.api";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "CommonProto"; option java_outer_classname = "CommonProto";
import "google/protobuf/timestamp.proto";
enum Modulation { enum Modulation {
// LoRa // LoRa
LORA = 0; LORA = 0;
@ -129,6 +131,17 @@ enum LocationSource {
GEO_RESOLVER_WIFI = 6; GEO_RESOLVER_WIFI = 6;
} }
enum Aggregation {
// Hour.
HOUR = 0;
// Day.
DAY = 1;
// Month.
MONTH = 2;
}
message Location { message Location {
// Latitude. // Latitude.
double latitude = 1; double latitude = 1;
@ -153,3 +166,23 @@ message KeyEnvelope {
// AES key (when the kek_label is set, this value must first be decrypted). // AES key (when the kek_label is set, this value must first be decrypted).
bytes aes_key = 2; 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;
}

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package gw; 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_package = "io.chirpstack.api.gw";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "GatewayProto"; option java_outer_classname = "GatewayProto";
@ -10,8 +10,17 @@ option java_outer_classname = "GatewayProto";
import "chirpstack-api/common/common.proto"; import "chirpstack-api/common/common.proto";
import "google/protobuf/timestamp.proto"; import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.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 { enum DownlinkTiming {
// Send the downlink immediately. // Send the downlink immediately.
IMMEDIATELY = 0; IMMEDIATELY = 0;
@ -23,7 +32,6 @@ enum DownlinkTiming {
GPS_EPOCH = 2; GPS_EPOCH = 2;
} }
enum FineTimestampType { enum FineTimestampType {
// No fine-timestamp available. // No fine-timestamp available.
NONE = 0; NONE = 0;
@ -84,17 +92,17 @@ enum TxAckStatus {
message Modulation { message Modulation {
oneof parameters { oneof parameters {
// LoRa modulation information. // LoRa modulation information.
LoRaModulationInfo lora = 3 [json_name = "loRa"]; LoraModulationInfo lora = 3;
// FSK modulation information. // FSK modulation information.
FSKModulationInfo fsk = 4; FskModulationInfo fsk = 4;
// LR-FHSS modulation information. // LR-FHSS modulation information.
LRFHSSModulationInfo lr_fhss = 5 [json_name = "lrFHSS"]; LrFhssModulationInfo lr_fhss = 5;
} }
} }
message UplinkTXInfo { message UplinkTxInfoLegacy {
// Frequency (Hz). // Frequency (Hz).
uint32 frequency = 1; uint32 frequency = 1;
@ -103,17 +111,25 @@ message UplinkTXInfo {
oneof modulation_info { oneof modulation_info {
// LoRa modulation information. // LoRa modulation information.
LoRaModulationInfo lora_modulation_info = 3 [json_name = "loRaModulationInfo"]; LoraModulationInfo lora_modulation_info = 3;
// FSK modulation information. // FSK modulation information.
FSKModulationInfo fsk_modulation_info = 4; FskModulationInfo fsk_modulation_info = 4;
// LR-FHSS modulation information. // 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. // Bandwidth.
uint32 bandwidth = 1; uint32 bandwidth = 1;
@ -121,13 +137,16 @@ message LoRaModulationInfo {
uint32 spreading_factor = 2; uint32 spreading_factor = 2;
// Code-rate. // Code-rate.
string code_rate = 3; string code_rate_legacy = 3;
// Code-rate.
CodeRate code_rate = 5;
// Polarization inversion. // Polarization inversion.
bool polarization_inversion = 4; bool polarization_inversion = 4;
} }
message FSKModulationInfo { message FskModulationInfo {
// Frequency deviation. // Frequency deviation.
uint32 frequency_deviation = 1; uint32 frequency_deviation = 1;
@ -135,7 +154,7 @@ message FSKModulationInfo {
uint32 datarate = 2; uint32 datarate = 2;
} }
message LRFHSSModulationInfo { message LrFhssModulationInfo {
// Operating channel width (OCW) in Hz. // Operating channel width (OCW) in Hz.
uint32 operating_channel_width = 1; uint32 operating_channel_width = 1;
@ -151,10 +170,10 @@ message EncryptedFineTimestamp {
uint32 aes_key_index = 1; uint32 aes_key_index = 1;
// Encrypted 'main' fine-timestamp (ns precision part of the timestamp). // Encrypted 'main' fine-timestamp (ns precision part of the timestamp).
bytes encrypted_ns = 2 [json_name = "encryptedNS"]; bytes encrypted_ns = 2;
// FPGA ID. // FPGA ID.
bytes fpga_id = 3 [json_name = "fpgaID"]; bytes fpga_id = 3;
} }
message PlainFineTimestamp { message PlainFineTimestamp {
@ -164,7 +183,7 @@ message PlainFineTimestamp {
message GatewayStats { message GatewayStats {
// Gateway ID. // Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"]; bytes gateway_id = 1;
// Gateway IP. // Gateway IP.
string ip = 9; string ip = 9;
@ -183,7 +202,7 @@ message GatewayStats {
uint32 rx_packets_received = 5; uint32 rx_packets_received = 5;
// Number of radio packets received with valid PHY CRC. // 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. // Number of downlink packets received for transmission.
uint32 tx_packets_received = 7; uint32 tx_packets_received = 7;
@ -196,7 +215,7 @@ message GatewayStats {
// Stats ID (UUID). // Stats ID (UUID).
// Unique identifier for the gateway stats. // Unique identifier for the gateway stats.
bytes stats_id = 11 [json_name = "statsID"]; bytes stats_id = 11;
// Tx packets per frequency. // Tx packets per frequency.
map<uint32, uint32> tx_packets_per_frequency = 12; map<uint32, uint32> tx_packets_per_frequency = 12;
@ -222,21 +241,21 @@ message PerModulationCount {
uint32 count = 2; uint32 count = 2;
} }
message UplinkRXInfo { message UplinkRxInfoLegacy {
// Gateway ID. // Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"]; bytes gateway_id = 1;
// RX time (only set when the gateway has a GPS module). // RX time (only set when the gateway has a GPS module).
google.protobuf.Timestamp time = 2; google.protobuf.Timestamp time = 2;
// RX time since GPS epoch (only set when the gateway has a GPS module). // 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. // RSSI.
int32 rssi = 5; int32 rssi = 5;
// LoRa SNR. // LoRa SNR.
double lora_snr = 6 [json_name = "loRaSNR"]; double lora_snr = 6;
// Channel. // Channel.
uint32 channel = 7; uint32 channel = 7;
@ -270,19 +289,60 @@ message UplinkRXInfo {
// Uplink ID (UUID bytes). // Uplink ID (UUID bytes).
// Unique and random ID which can be used to correlate the uplink across multiple logs. // 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. // CRC status.
CRCStatus crc_status = 17 [json_name = "crcStatus"]; CRCStatus crc_status = 17;
// Optional meta-data map. // Optional meta-data map.
map<string, string> metadata = 18; map<string, string> 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. // Gateway ID.
// Deprecated: replaced by gateway_id in DownlinkFrame. // Deprecated: replaced by gateway_id in DownlinkFrame.
bytes gateway_id = 1 [json_name = "gatewayID"]; bytes gateway_id = 1;
// TX frequency (in Hz). // TX frequency (in Hz).
uint32 frequency = 5; uint32 frequency = 5;
@ -295,10 +355,10 @@ message DownlinkTXInfo {
oneof modulation_info { oneof modulation_info {
// LoRa modulation information. // LoRa modulation information.
LoRaModulationInfo lora_modulation_info = 8 [json_name = "loRaModulationInfo"]; LoraModulationInfo lora_modulation_info = 8;
// FSK modulation information. // FSK modulation information.
FSKModulationInfo fsk_modulation_info = 9; FskModulationInfo fsk_modulation_info = 9;
} }
// The board identifier for emitting the frame. // The board identifier for emitting the frame.
@ -326,6 +386,43 @@ message DownlinkTXInfo {
bytes context = 16; 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 { message ImmediatelyTimingInfo {
// Not implemented yet. // Not implemented yet.
} }
@ -339,18 +436,24 @@ message DelayTimingInfo {
message GPSEpochTimingInfo { message GPSEpochTimingInfo {
// Duration since GPS Epoch. // 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 { message UplinkFrame {
// PHYPayload. // PHYPayload.
bytes phy_payload = 1; bytes phy_payload = 1;
// TX meta-data. // TX meta-data (deprecated).
UplinkTXInfo tx_info = 2; UplinkTxInfoLegacy tx_info_legacy = 2;
// RX meta-data. // RX meta-data (deprecated).
UplinkRXInfo rx_info = 3; UplinkRxInfoLegacy rx_info_legacy = 3;
// Tx meta-data.
UplinkTxInfo tx_info = 4;
// Rx meta-data.
UplinkRxInfo rx_info = 5;
} }
message UplinkFrameSet { message UplinkFrameSet {
@ -358,27 +461,19 @@ message UplinkFrameSet {
bytes phy_payload = 1; bytes phy_payload = 1;
// TX meta-data. // TX meta-data.
UplinkTXInfo tx_info = 2; UplinkTxInfo tx_info = 2;
// RX meta-data set. // RX meta-data set.
repeated UplinkRXInfo rx_info = 3; repeated UplinkRxInfo rx_info = 3;
} }
message DownlinkFrame { message DownlinkFrame {
// PHYPayload. // Downlink ID.
// Deprecated: replaced by items. uint32 downlink_id = 3;
bytes phy_payload = 1;
// TX meta-data.
// Deprecated: replaced by items.
DownlinkTXInfo tx_info = 2;
// Token (uint16 value).
// Deprecated: replaced by downlink_id.
uint32 token = 3;
// Downlink ID (UUID). // Downlink ID (UUID).
bytes downlink_id = 4 [json_name = "downlinkID"]; // Deprecated: use downlink_id.
bytes downlink_id_legacy = 4;
// Downlink frame items. // Downlink frame items.
// This makes it possible to send multiple downlink opportunities to the // This makes it possible to send multiple downlink opportunities to the
@ -388,47 +483,52 @@ message DownlinkFrame {
repeated DownlinkFrameItem items = 5; repeated DownlinkFrameItem items = 5;
// Gateway ID. // 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 { message DownlinkFrameItem {
// PHYPayload. // PHYPayload.
bytes phy_payload = 1; bytes phy_payload = 1;
// TX meta-data. // TX meta-data (deprecated).
DownlinkTXInfo tx_info = 2; 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. // Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"]; string gateway_id = 6;
// Token (uint16 value). // Downlink ID.
// Deprecated: replaced by downlink_id. uint32 downlink_id = 2;
uint32 token = 2;
// Error. // Downlink ID (deprecated).
// Deprecated: replaced by items. bytes downlink_id_legacy = 4;
string error = 3;
// Downlink ID (UUID).
bytes downlink_id = 4 [json_name = "downlinkID"];
// Downlink frame items. // Downlink frame items.
// This list has the same length as the request and indicates which // 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). // downlink frame has been emitted of the requested list (or why it failed).
// Note that at most one item has a positive acknowledgement. // 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. // The Ack status of this item.
TxAckStatus status = 1; TxAckStatus status = 1;
} }
message GatewayConfiguration { message GatewayConfiguration {
// Gateway ID. // Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"]; bytes gateway_id = 1;
// Configuration version. // Configuration version.
string version = 2; string version = 2;
@ -449,7 +549,7 @@ message ChannelConfiguration {
oneof modulation_config { oneof modulation_config {
// LoRa modulation config. // LoRa modulation config.
LoRaModulationConfig lora_modulation_config = 3 [json_name = "loRaModulationConfig"]; LoRaModulationConfig lora_modulation_config = 3;
// FSK modulation config. // FSK modulation config.
FSKModulationConfig fsk_modulation_config = 4; FSKModulationConfig fsk_modulation_config = 4;
@ -480,7 +580,7 @@ message FSKModulationConfig {
message GatewayCommandExecRequest { message GatewayCommandExecRequest {
// Gateway ID. // Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"]; bytes gateway_id = 1;
// Command to execute. // Command to execute.
// This command must be pre-configured in the LoRa Gateway Bridge configuration. // This command must be pre-configured in the LoRa Gateway Bridge configuration.
@ -489,7 +589,7 @@ message GatewayCommandExecRequest {
// Execution request ID (UUID). // Execution request ID (UUID).
// The same token will be returned when the execution of the command has // The same token will be returned when the execution of the command has
// completed. // completed.
bytes ExecId = 3 [json_name = "execID"]; bytes ExecId = 3;
// Standard input. // Standard input.
bytes stdin = 4; bytes stdin = 4;
@ -500,10 +600,10 @@ message GatewayCommandExecRequest {
message GatewayCommandExecResponse { message GatewayCommandExecResponse {
// Gateway ID. // Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"]; bytes gateway_id = 1;
// Execution request ID (UUID). // Execution request ID (UUID).
bytes exec_id = 2 [json_name = "execID"]; bytes exec_id = 2;
// Standard output. // Standard output.
bytes stdout = 3; bytes stdout = 3;
@ -520,10 +620,10 @@ message GatewayCommandExecResponse {
// integrated with the ChirpStack Gateway Bridge. // integrated with the ChirpStack Gateway Bridge.
message RawPacketForwarderEvent { message RawPacketForwarderEvent {
// Gateway ID. // Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"]; bytes gateway_id = 1;
// Raw ID (UUID). // Raw ID (UUID).
bytes raw_id = 2 [json_name = "rawID"]; bytes raw_id = 2;
// Payload contains the raw payload. // Payload contains the raw payload.
bytes payload = 3; bytes payload = 3;
@ -534,10 +634,10 @@ message RawPacketForwarderEvent {
// integrated with the ChirpStack Gateway Bridge. // integrated with the ChirpStack Gateway Bridge.
message RawPacketForwarderCommand { message RawPacketForwarderCommand {
// Gateway ID. // Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"]; bytes gateway_id = 1;
// Raw ID (UUID). // Raw ID (UUID).
bytes raw_id = 2 [json_name = "rawID"]; bytes raw_id = 2;
// Payload contains the raw payload. // Payload contains the raw payload.
bytes payload = 3; bytes payload = 3;
@ -546,7 +646,7 @@ message RawPacketForwarderCommand {
// ConnState contains the connection state of a gateway. // ConnState contains the connection state of a gateway.
message ConnState { message ConnState {
// Gateway ID. // Gateway ID.
bytes gateway_id = 1 [json_name = "gatewayID"]; bytes gateway_id = 1;
enum State { enum State {
OFFLINE = 0; OFFLINE = 0;

View File

@ -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;
}

View File

@ -104,7 +104,7 @@ message UplinkEvent {
uint32 dr = 6; uint32 dr = 6;
// Frame counter. // Frame counter.
uint32 f_cnt_up = 7; uint32 f_cnt = 7;
// Frame port. // Frame port.
uint32 f_port = 8; uint32 f_port = 8;
@ -119,10 +119,10 @@ message UplinkEvent {
google.protobuf.Struct object = 11; google.protobuf.Struct object = 11;
// Receiving gateway RX info. // Receiving gateway RX info.
repeated gw.UplinkRXInfo rx_info = 12; repeated gw.UplinkRxInfo rx_info = 12;
// TX info. // TX info.
gw.UplinkTXInfo tx_info = 13; gw.UplinkTxInfo tx_info = 13;
} }
// JoinEvent is the message sent when a device joined the network. // 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 // for transmission. As a downlink can be scheduled in the future, this event
// does not confirm that the message has already been transmitted. // does not confirm that the message has already been transmitted.
message TxAckEvent { message TxAckEvent {
// Downlink ID (UUID). // Downlink ID.
string downlink_id = 1; uint32 downlink_id = 1;
// Timestamp. // Timestamp.
google.protobuf.Timestamp time = 2; google.protobuf.Timestamp time = 2;
@ -186,31 +186,28 @@ message TxAckEvent {
string gateway_id = 6; string gateway_id = 6;
// TX info. // TX info.
gw.DownlinkTXInfo tx_info = 7; gw.DownlinkTxInfo tx_info = 7;
} }
// LogEvent is the message sent when a device-related log was sent. // LogEvent is the message sent when a device-related log was sent.
message LogEvent { message LogEvent {
// Deduplication ID (UUID).
string deduplication_id = 1;
// Timestamp. // Timestamp.
google.protobuf.Timestamp time = 2; google.protobuf.Timestamp time = 1;
// Device info. // Device info.
DeviceInfo device_info = 3; DeviceInfo device_info = 2;
// Log level. // Log level.
LogLevel level = 4; LogLevel level = 3;
// Log code. // Log code.
LogCode code = 5; LogCode code = 4;
// Description message. // Description message.
string description = 6; string description = 5;
// Context map. // Context map.
map<string, string> context = 7; map<string, string> context = 6;
} }
// StatusEvent is the message sent when a device-status mac-command was sent // StatusEvent is the message sent when a device-status mac-command was sent
@ -276,3 +273,28 @@ message IntegrationEvent {
// Struct containing the event object. // Struct containing the event object.
google.protobuf.Struct object = 6; 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;
}

View File

@ -199,8 +199,8 @@ message DeviceGatewayRxInfoItem {
} }
message DownlinkFrame { message DownlinkFrame {
// Downlink ID (UUID). // Downlink ID.
bytes downlink_id = 1; uint32 downlink_id = 1;
// DevEUI. // DevEUI.
bytes dev_eui = 2; bytes dev_eui = 2;
@ -231,5 +231,36 @@ message LoraCloudGeolocBuffer {
message LoraCloudGeolocBufferUplink { message LoraCloudGeolocBufferUplink {
// RxInfo set for a single uplink. // 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;
} }

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package meta; 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_package = "io.chirpstack.api.meta";
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "MetaProto"; option java_outer_classname = "MetaProto";
@ -16,10 +16,10 @@ message UplinkMeta {
string dev_eui = 1; string dev_eui = 1;
// TX meta-data. // TX meta-data.
gw.UplinkTXInfo tx_info = 2; gw.UplinkTxInfo tx_info = 2;
// RX meta-data. // RX meta-data.
repeated gw.UplinkRXInfo rx_info = 3; repeated gw.UplinkRxInfo rx_info = 3;
// PHYPayload byte count. // PHYPayload byte count.
uint32 phy_payload_byte_count = 4; uint32 phy_payload_byte_count = 4;
@ -42,7 +42,7 @@ message DownlinkMeta {
string multicast_group_id = 2; string multicast_group_id = 2;
// TX meta-data. // TX meta-data.
gw.DownlinkTXInfo tx_info = 3; gw.DownlinkTxInfo tx_info = 3;
// PHYPayload byte count. // PHYPayload byte count.
uint32 phy_payload_byte_count = 4; uint32 phy_payload_byte_count = 4;

View File

View File

@ -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 *

File diff suppressed because one or more lines are too long

View File

@ -226,6 +226,26 @@ class ApplicationServiceStub(object):
request_serializer=chirpstack__api_dot_api_dot_application__pb2.DeletePilotThingsIntegrationRequest.SerializeToString, request_serializer=chirpstack__api_dot_api_dot_application__pb2.DeletePilotThingsIntegrationRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
) )
self.CreateIftttIntegration = channel.unary_unary(
'/api.ApplicationService/CreateIftttIntegration',
request_serializer=chirpstack__api_dot_api_dot_application__pb2.CreateIftttIntegrationRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.GetIftttIntegration = channel.unary_unary(
'/api.ApplicationService/GetIftttIntegration',
request_serializer=chirpstack__api_dot_api_dot_application__pb2.GetIftttIntegrationRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_application__pb2.GetIftttIntegrationResponse.FromString,
)
self.UpdateIftttIntegration = channel.unary_unary(
'/api.ApplicationService/UpdateIftttIntegration',
request_serializer=chirpstack__api_dot_api_dot_application__pb2.UpdateIftttIntegrationRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.DeleteIftttIntegration = channel.unary_unary(
'/api.ApplicationService/DeleteIftttIntegration',
request_serializer=chirpstack__api_dot_api_dot_application__pb2.DeleteIftttIntegrationRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.GenerateMqttIntegrationClientCertificate = channel.unary_unary( self.GenerateMqttIntegrationClientCertificate = channel.unary_unary(
'/api.ApplicationService/GenerateMqttIntegrationClientCertificate', '/api.ApplicationService/GenerateMqttIntegrationClientCertificate',
request_serializer=chirpstack__api_dot_api_dot_application__pb2.GenerateMqttIntegrationClientCertificateRequest.SerializeToString, request_serializer=chirpstack__api_dot_api_dot_application__pb2.GenerateMqttIntegrationClientCertificateRequest.SerializeToString,
@ -531,6 +551,34 @@ class ApplicationServiceServicer(object):
context.set_details('Method not implemented!') context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!') raise NotImplementedError('Method not implemented!')
def CreateIftttIntegration(self, request, context):
"""Create IFTTT integration.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetIftttIntegration(self, request, context):
"""Get IFTTT integration.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def UpdateIftttIntegration(self, request, context):
"""Update IFTTT integration.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def DeleteIftttIntegration(self, request, context):
"""Delete IFTTT integration.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GenerateMqttIntegrationClientCertificate(self, request, context): def GenerateMqttIntegrationClientCertificate(self, request, context):
"""Generates application ID specific client-certificate. """Generates application ID specific client-certificate.
""" """
@ -751,6 +799,26 @@ def add_ApplicationServiceServicer_to_server(servicer, server):
request_deserializer=chirpstack__api_dot_api_dot_application__pb2.DeletePilotThingsIntegrationRequest.FromString, request_deserializer=chirpstack__api_dot_api_dot_application__pb2.DeletePilotThingsIntegrationRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
), ),
'CreateIftttIntegration': grpc.unary_unary_rpc_method_handler(
servicer.CreateIftttIntegration,
request_deserializer=chirpstack__api_dot_api_dot_application__pb2.CreateIftttIntegrationRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'GetIftttIntegration': grpc.unary_unary_rpc_method_handler(
servicer.GetIftttIntegration,
request_deserializer=chirpstack__api_dot_api_dot_application__pb2.GetIftttIntegrationRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_application__pb2.GetIftttIntegrationResponse.SerializeToString,
),
'UpdateIftttIntegration': grpc.unary_unary_rpc_method_handler(
servicer.UpdateIftttIntegration,
request_deserializer=chirpstack__api_dot_api_dot_application__pb2.UpdateIftttIntegrationRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'DeleteIftttIntegration': grpc.unary_unary_rpc_method_handler(
servicer.DeleteIftttIntegration,
request_deserializer=chirpstack__api_dot_api_dot_application__pb2.DeleteIftttIntegrationRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'GenerateMqttIntegrationClientCertificate': grpc.unary_unary_rpc_method_handler( 'GenerateMqttIntegrationClientCertificate': grpc.unary_unary_rpc_method_handler(
servicer.GenerateMqttIntegrationClientCertificate, servicer.GenerateMqttIntegrationClientCertificate,
request_deserializer=chirpstack__api_dot_api_dot_application__pb2.GenerateMqttIntegrationClientCertificateRequest.FromString, request_deserializer=chirpstack__api_dot_api_dot_application__pb2.GenerateMqttIntegrationClientCertificateRequest.FromString,
@ -1481,6 +1549,74 @@ class ApplicationService(object):
options, channel_credentials, options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata) insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def CreateIftttIntegration(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.ApplicationService/CreateIftttIntegration',
chirpstack__api_dot_api_dot_application__pb2.CreateIftttIntegrationRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetIftttIntegration(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.ApplicationService/GetIftttIntegration',
chirpstack__api_dot_api_dot_application__pb2.GetIftttIntegrationRequest.SerializeToString,
chirpstack__api_dot_api_dot_application__pb2.GetIftttIntegrationResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def UpdateIftttIntegration(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.ApplicationService/UpdateIftttIntegration',
chirpstack__api_dot_api_dot_application__pb2.UpdateIftttIntegrationRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def DeleteIftttIntegration(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.ApplicationService/DeleteIftttIntegration',
chirpstack__api_dot_api_dot_application__pb2.DeleteIftttIntegrationRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod @staticmethod
def GenerateMqttIntegrationClientCertificate(request, def GenerateMqttIntegrationClientCertificate(request,
target, target,

File diff suppressed because one or more lines are too long

View File

@ -86,10 +86,15 @@ class DeviceServiceStub(object):
request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrRequest.SerializeToString, request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrResponse.FromString, response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrResponse.FromString,
) )
self.GetStats = channel.unary_unary( self.GetMetrics = channel.unary_unary(
'/api.DeviceService/GetStats', '/api.DeviceService/GetMetrics',
request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsRequest.SerializeToString, request_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceMetricsRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsResponse.FromString, 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( self.Enqueue = channel.unary_unary(
'/api.DeviceService/Enqueue', '/api.DeviceService/Enqueue',
@ -210,8 +215,17 @@ class DeviceServiceServicer(object):
context.set_details('Method not implemented!') context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!') raise NotImplementedError('Method not implemented!')
def GetStats(self, request, context): def GetMetrics(self, request, context):
"""GetStats returns the device stats. """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_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!') 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, request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrResponse.SerializeToString, response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetRandomDevAddrResponse.SerializeToString,
), ),
'GetStats': grpc.unary_unary_rpc_method_handler( 'GetMetrics': grpc.unary_unary_rpc_method_handler(
servicer.GetStats, servicer.GetMetrics,
request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsRequest.FromString, request_deserializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceMetricsRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsResponse.SerializeToString, 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( 'Enqueue': grpc.unary_unary_rpc_method_handler(
servicer.Enqueue, servicer.Enqueue,
@ -581,7 +600,7 @@ class DeviceService(object):
insecure, call_credentials, compression, wait_for_ready, timeout, metadata) insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod @staticmethod
def GetStats(request, def GetMetrics(request,
target, target,
options=(), options=(),
channel_credentials=None, channel_credentials=None,
@ -591,9 +610,26 @@ class DeviceService(object):
wait_for_ready=None, wait_for_ready=None,
timeout=None, timeout=None,
metadata=None): metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.DeviceService/GetStats', return grpc.experimental.unary_unary(request, target, '/api.DeviceService/GetMetrics',
chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsRequest.SerializeToString, chirpstack__api_dot_api_dot_device__pb2.GetDeviceMetricsRequest.SerializeToString,
chirpstack__api_dot_api_dot_device__pb2.GetDeviceStatsResponse.FromString, 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, options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata) insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,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)

View File

@ -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)

View File

@ -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 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: if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None 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_start=141
_UPLINKFRAMELOG._serialized_end=356 _UPLINKFRAMELOG._serialized_end=356
_DOWNLINKFRAMELOG._serialized_start=359 _DOWNLINKFRAMELOG._serialized_start=359

File diff suppressed because one or more lines are too long

View File

@ -46,10 +46,10 @@ class GatewayServiceStub(object):
request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateRequest.SerializeToString, request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateResponse.FromString, response_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateResponse.FromString,
) )
self.GetStats = channel.unary_unary( self.GetMetrics = channel.unary_unary(
'/api.GatewayService/GetStats', '/api.GatewayService/GetMetrics',
request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsRequest.SerializeToString, request_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsRequest.SerializeToString,
response_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsResponse.FromString, response_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsResponse.FromString,
) )
@ -99,8 +99,8 @@ class GatewayServiceServicer(object):
context.set_details('Method not implemented!') context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!') raise NotImplementedError('Method not implemented!')
def GetStats(self, request, context): def GetMetrics(self, request, context):
"""GetStats returns the gateway stats. """GetMetrics returns the gateway metrics.
""" """
context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!') 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, request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateResponse.SerializeToString, response_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GenerateGatewayClientCertificateResponse.SerializeToString,
), ),
'GetStats': grpc.unary_unary_rpc_method_handler( 'GetMetrics': grpc.unary_unary_rpc_method_handler(
servicer.GetStats, servicer.GetMetrics,
request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsRequest.FromString, request_deserializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsRequest.FromString,
response_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsResponse.SerializeToString, response_serializer=chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsResponse.SerializeToString,
), ),
} }
generic_handler = grpc.method_handlers_generic_handler( generic_handler = grpc.method_handlers_generic_handler(
@ -258,7 +258,7 @@ class GatewayService(object):
insecure, call_credentials, compression, wait_for_ready, timeout, metadata) insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod @staticmethod
def GetStats(request, def GetMetrics(request,
target, target,
options=(), options=(),
channel_credentials=None, channel_credentials=None,
@ -268,8 +268,8 @@ class GatewayService(object):
wait_for_ready=None, wait_for_ready=None,
timeout=None, timeout=None,
metadata=None): metadata=None):
return grpc.experimental.unary_unary(request, target, '/api.GatewayService/GetStats', return grpc.experimental.unary_unary(request, target, '/api.GatewayService/GetMetrics',
chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsRequest.SerializeToString, chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsRequest.SerializeToString,
chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayStatsResponse.FromString, chirpstack__api_dot_api_dot_gateway__pb2.GetGatewayMetricsResponse.FromString,
options, channel_credentials, options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata) insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -12,11 +12,12 @@ from google.protobuf import symbol_database as _symbol_database
_sym_db = _symbol_database.Default() _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 timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__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: if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\tUserProtoP\001Z*github.com/chirpstack/chirpstack/api/go/v4' DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\tUserProtoP\001Z.github.com/chirpstack/chirpstack/api/go/v4/api'
_USER._serialized_start=100 _USERSERVICE.methods_by_name['Create']._options = None
_USER._serialized_end=184 _USERSERVICE.methods_by_name['Create']._serialized_options = b'\202\323\344\223\002\017\"\n/api/users:\001*'
_USERLISTITEM._serialized_start=187 _USERSERVICE.methods_by_name['Get']._options = None
_USERLISTITEM._serialized_end=361 _USERSERVICE.methods_by_name['Get']._serialized_options = b'\202\323\344\223\002\021\022\017/api/users/{id}'
_USERTENANT._serialized_start=363 _USERSERVICE.methods_by_name['Update']._options = None
_USERTENANT._serialized_end=463 _USERSERVICE.methods_by_name['Update']._serialized_options = b'\202\323\344\223\002\031\032\024/api/users/{user.id}:\001*'
_CREATEUSERREQUEST._serialized_start=465 _USERSERVICE.methods_by_name['Delete']._options = None
_CREATEUSERREQUEST._serialized_end=561 _USERSERVICE.methods_by_name['Delete']._serialized_options = b'\202\323\344\223\002\021*\017/api/users/{id}'
_CREATEUSERRESPONSE._serialized_start=563 _USERSERVICE.methods_by_name['List']._options = None
_CREATEUSERRESPONSE._serialized_end=595 _USERSERVICE.methods_by_name['List']._serialized_options = b'\202\323\344\223\002\014\022\n/api/users'
_GETUSERREQUEST._serialized_start=597 _USERSERVICE.methods_by_name['UpdatePassword']._options = None
_GETUSERREQUEST._serialized_end=625 _USERSERVICE.methods_by_name['UpdatePassword']._serialized_options = b'\202\323\344\223\002\"\"\035/api/users/{user_id}/password:\001*'
_GETUSERRESPONSE._serialized_start=628 _USER._serialized_start=130
_GETUSERRESPONSE._serialized_end=766 _USER._serialized_end=214
_UPDATEUSERREQUEST._serialized_start=768 _USERLISTITEM._serialized_start=217
_UPDATEUSERREQUEST._serialized_end=812 _USERLISTITEM._serialized_end=391
_DELETEUSERREQUEST._serialized_start=814 _USERTENANT._serialized_start=393
_DELETEUSERREQUEST._serialized_end=845 _USERTENANT._serialized_end=493
_LISTUSERSREQUEST._serialized_start=847 _CREATEUSERREQUEST._serialized_start=495
_LISTUSERSREQUEST._serialized_end=896 _CREATEUSERREQUEST._serialized_end=591
_LISTUSERSRESPONSE._serialized_start=898 _CREATEUSERRESPONSE._serialized_start=593
_LISTUSERSRESPONSE._serialized_end=973 _CREATEUSERRESPONSE._serialized_end=625
_UPDATEUSERPASSWORDREQUEST._serialized_start=975 _GETUSERREQUEST._serialized_start=627
_UPDATEUSERPASSWORDREQUEST._serialized_end=1037 _GETUSERREQUEST._serialized_end=655
_USERSERVICE._serialized_start=1040 _GETUSERRESPONSE._serialized_start=658
_USERSERVICE._serialized_end=1419 _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) # @@protoc_insertion_point(module_scope)

View File

@ -0,0 +1 @@
from .common_pb2 import *

View File

@ -13,9 +13,10 @@ from google.protobuf import symbol_database as _symbol_database
_sym_db = _symbol_database.Default() _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 = DESCRIPTOR.enum_types_by_name['Modulation']
Modulation = enum_type_wrapper.EnumTypeWrapper(_MODULATION) Modulation = enum_type_wrapper.EnumTypeWrapper(_MODULATION)
@ -29,6 +30,8 @@ _REGPARAMSREVISION = DESCRIPTOR.enum_types_by_name['RegParamsRevision']
RegParamsRevision = enum_type_wrapper.EnumTypeWrapper(_REGPARAMSREVISION) RegParamsRevision = enum_type_wrapper.EnumTypeWrapper(_REGPARAMSREVISION)
_LOCATIONSOURCE = DESCRIPTOR.enum_types_by_name['LocationSource'] _LOCATIONSOURCE = DESCRIPTOR.enum_types_by_name['LocationSource']
LocationSource = enum_type_wrapper.EnumTypeWrapper(_LOCATIONSOURCE) LocationSource = enum_type_wrapper.EnumTypeWrapper(_LOCATIONSOURCE)
_AGGREGATION = DESCRIPTOR.enum_types_by_name['Aggregation']
Aggregation = enum_type_wrapper.EnumTypeWrapper(_AGGREGATION)
LORA = 0 LORA = 0
FSK = 1 FSK = 1
LR_FHSS = 2 LR_FHSS = 2
@ -73,10 +76,15 @@ GEO_RESOLVER_TDOA = 3
GEO_RESOLVER_RSSI = 4 GEO_RESOLVER_RSSI = 4
GEO_RESOLVER_GNSS = 5 GEO_RESOLVER_GNSS = 5
GEO_RESOLVER_WIFI = 6 GEO_RESOLVER_WIFI = 6
HOUR = 0
DAY = 1
MONTH = 2
_LOCATION = DESCRIPTOR.message_types_by_name['Location'] _LOCATION = DESCRIPTOR.message_types_by_name['Location']
_KEYENVELOPE = DESCRIPTOR.message_types_by_name['KeyEnvelope'] _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,), { Location = _reflection.GeneratedProtocolMessageType('Location', (_message.Message,), {
'DESCRIPTOR' : _LOCATION, 'DESCRIPTOR' : _LOCATION,
'__module__' : 'chirpstack_api.common.common_pb2' '__module__' : 'chirpstack_api.common.common_pb2'
@ -91,24 +99,44 @@ KeyEnvelope = _reflection.GeneratedProtocolMessageType('KeyEnvelope', (_message.
}) })
_sym_db.RegisterMessage(KeyEnvelope) _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: if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\013CommonProtoP\001Z1github.com/chirpstack/chirpstack/api/go/v4/common' DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\013CommonProtoP\001Z1github.com/chirpstack/chirpstack/api/go/v4/common'
_MODULATION._serialized_start=222 _MODULATION._serialized_start=414
_MODULATION._serialized_end=266 _MODULATION._serialized_end=458
_REGION._serialized_start=269 _REGION._serialized_start=461
_REGION._serialized_end=439 _REGION._serialized_end=631
_MTYPE._serialized_start=442 _MTYPE._serialized_start=634
_MTYPE._serialized_end=621 _MTYPE._serialized_end=813
_MACVERSION._serialized_start=623 _MACVERSION._serialized_start=815
_MACVERSION._serialized_end=749 _MACVERSION._serialized_end=941
_REGPARAMSREVISION._serialized_start=751 _REGPARAMSREVISION._serialized_start=943
_REGPARAMSREVISION._serialized_end=852 _REGPARAMSREVISION._serialized_end=1044
_LOCATIONSOURCE._serialized_start=855 _LOCATIONSOURCE._serialized_start=1047
_LOCATIONSOURCE._serialized_end=997 _LOCATIONSOURCE._serialized_end=1189
_LOCATION._serialized_start=46 _AGGREGATION._serialized_start=1191
_LOCATION._serialized_end=169 _AGGREGATION._serialized_end=1234
_KEYENVELOPE._serialized_start=171 _LOCATION._serialized_start=79
_KEYENVELOPE._serialized_end=220 _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) # @@protoc_insertion_point(module_scope)

View File

@ -0,0 +1 @@
from .gw_pb2 import *

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
from .integration_pb2 import *

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
from .meta_pb2 import *

View File

@ -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 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: if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None 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_start=105
_UPLINKMETA._serialized_end=345 _UPLINKMETA._serialized_end=345
_DOWNLINKMETA._serialized_start=348 _DOWNLINKMETA._serialized_start=348