syntax = "proto3";
package api;
option go_package = "github.com/brocaar/chirpstack-api/go/v3/as/external/api";
option java_package = "io.chirpstack.api.as.external.api";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
// NetworkServerService is the service managing network-servers.
service NetworkServerService {
// Create creates the given network-server.
rpc Create(CreateNetworkServerRequest) returns (CreateNetworkServerResponse) {
option(google.api.http) = {
post: "/api/network-servers"
body: "*"
};
}
// Get returns the network-server matching the given id.
rpc Get(GetNetworkServerRequest) returns (GetNetworkServerResponse) {
option(google.api.http) = {
get: "/api/network-servers/{id}"
};
}
// Update updates the given network-server.
rpc Update(UpdateNetworkServerRequest) returns (google.protobuf.Empty) {
option(google.api.http) = {
put: "/api/network-servers/{network_server.id}"
body: "*"
};
}
// Delete deletes the network-server matching the given id.
rpc Delete(DeleteNetworkServerRequest) returns (google.protobuf.Empty) {
option(google.api.http) = {
delete: "/api/network-servers/{id}"
};
};
// List lists the available network-servers.
rpc List(ListNetworkServerRequest) returns (ListNetworkServerResponse) {
option(google.api.http) = {
get: "/api/network-servers"
};
}
}
message NetworkServer {
// Network-server ID.
int64 id = 1;
// Network-server name.
string name = 2;
// Network-server server.
// Format: hostname:ip (e.g. localhost:8000).
string server = 3;
// CA certificate (optional).
string ca_cert = 4;
// TLS (client) certificate for connecting to the network-server (optional).
string tls_cert = 5;
// TLS (client) key for connecting to the network-server (optional).
string tls_key = 6;
// Routing-profile ca certificate (used by the network-server to connect
// back to the application-server) (optional).
string routing_profile_ca_cert = 7 [json_name = "routingProfileCACert"];
// Routing-profile TLS certificate (used by the network-server to connect
// back to the application-server) (optional).
string routing_profile_tls_cert = 8 [json_name = "routingProfileTLSCert"];
// Routing-profile TLS key (used by the network-server to connect
// back to the application-server) (optional).
string routing_profile_tls_key = 9 [json_name = "routingProfileTLSKey"];
// Enable gateway discovery for this network-server.
bool gateway_discovery_enabled = 10;
// The number of times per day the gateway discovery 'ping' must be
// broadcasted per gateway.
uint32 gateway_discovery_interval = 11;
// The frequency (Hz) of the gateway discovery 'ping'.
uint32 gateway_discovery_tx_frequency = 12 [json_name = "gatewayDiscoveryTXFrequency"];
// The data-rate of the gateway discovery 'ping'.
uint32 gateway_discovery_dr = 13 [json_name = "gatewayDiscoveryDR"];
}
message NetworkServerListItem {
// Network-server ID.
int64 id = 1;
// Network-server name.
string name = 2;
// Network-server server.
// Format: hostname:ip (e.g. localhost:8000).
string server = 3;
// Created at timestamp.
google.protobuf.Timestamp created_at = 4;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 5;
}
message CreateNetworkServerRequest {
// Network-server object to create.
NetworkServer network_server = 1;
}
message CreateNetworkServerResponse {
// Network-server ID.
int64 id = 1;
}
message GetNetworkServerRequest {
// Network-server ID.
int64 id = 1;
}
message GetNetworkServerResponse {
// Network-server object.
NetworkServer network_server = 1;
// Created at timestamp.
google.protobuf.Timestamp created_at = 2;
// Last update timestamp.
google.protobuf.Timestamp updated_at = 3;
// The ChirpStack Network Server version.
string version = 4;
// The ChirpStack Network Server region configured.
string region = 5;
}
message UpdateNetworkServerRequest {
// Network-server object to update.
NetworkServer network_server = 1;
}
message DeleteNetworkServerRequest {
// Network-server ID.
int64 id = 1;
}
message ListNetworkServerRequest {
// Max number of items to return.
int64 limit = 1;
// Offset in the result-set (for pagination).
int64 offset = 2;
// Organization id to filter on.
int64 organization_id = 3 [json_name = "organizationID"];
}
message ListNetworkServerResponse {
// Total number of network-servers.
int64 total_count = 1;
// Network-servers within the result-set.
repeated NetworkServerListItem result = 2;
}