From 126cf215c8636bb5c21b91457fea66fb503c8926 Mon Sep 17 00:00:00 2001 From: The Things Bot Date: Mon, 9 Sep 2024 14:11:12 +0000 Subject: [PATCH] docs: Release v3.32.0 --- doc/config/_default/config.toml | 2 +- .../host/aws/ecs/changelog/index.md | 7 + .../ttn-lw-cli/ttn-lw-cli_end-devices_list.md | 1 + .../ttn-lw-cli/ttn-lw-cli_gateways_claim.md | 5 +- .../ttn-lw-cli/ttn-lw-cli_gateways_create.md | 1 + .../ttn-lw-cli/ttn-lw-cli_gateways_get.md | 1 + .../ttn-lw-cli/ttn-lw-cli_gateways_list.md | 2 + .../ttn-lw-cli/ttn-lw-cli_gateways_search.md | 1 + .../ttn-lw-cli/ttn-lw-cli_gateways_set.md | 1 + doc/content/whats-new/3.32.0.md | 70 + .../ManagedGatewayNetworkInterfaceStatus.yml | 10 + .../ManagedGatewayNetworkInterfaceType.yml | 10 + .../messages/ApplicationDownlink.yml | 2 + .../messages/CUPSRedirection.yml | 2 + .../messages/ClaimGatewayRequest.yml | 4 +- ...teManagedGatewayEthernetProfileRequest.yml | 14 + ...CreateManagedGatewayWiFiProfileRequest.yml | 14 + ...teManagedGatewayEthernetProfileRequest.yml | 13 + ...DeleteManagedGatewayWiFiProfileRequest.yml | 13 + .../messages/GatewayVersionIdentifiers.yml | 5 + .../messages/GetInfoByGatewayEUIResponse.yml | 6 + ...etManagedGatewayEthernetProfileRequest.yml | 19 + .../GetManagedGatewayWiFiProfileRequest.yml | 19 + .../messages/ListEndDevicesRequest.Filter.yml | 14 + .../messages/ListEndDevicesRequest.yml | 5 + .../messages/ListGatewaysRequest.Filter.yml | 14 + .../messages/ListGatewaysRequest.yml | 5 + ...tManagedGatewayEthernetProfilesRequest.yml | 24 + .../ListManagedGatewayWiFiProfilesRequest.yml | 24 + .../messages/ManagedGateway.yml | 48 + .../ManagedGatewayCellularBackhaul.yml | 16 + .../ManagedGatewayControllerConnection.yml | 8 + .../ManagedGatewayEthernetBackhaul.yml | 6 + .../ManagedGatewayEthernetProfile.yml | 20 + .../ManagedGatewayEthernetProfiles.yml | 7 + .../messages/ManagedGatewayEventData.yml | 45 + .../ManagedGatewayGatewayServerConnection.yml | 11 + ...anagedGatewayNetworkInterfaceAddresses.yml | 30 + .../ManagedGatewayNetworkInterfaceInfo.yml | 15 + .../messages/ManagedGatewaySystemStatus.yml | 8 + .../ManagedGatewayWiFiAccessPoint.yml | 23 + .../ManagedGatewayWiFiAccessPoints.yml | 7 + .../messages/ManagedGatewayWiFiBackhaul.yml | 29 + .../messages/ManagedGatewayWiFiProfile.yml | 30 + .../messages/ManagedGatewayWiFiProfiles.yml | 7 + ...teManagedGatewayEthernetProfileRequest.yml | 20 + .../messages/UpdateManagedGatewayRequest.yml | 14 + ...UpdateManagedGatewayWiFiProfileRequest.yml | 20 + .../services/GatewayClaimingServer.yml | 43 +- .../services/GatewayConfigurator.yml | 10 - .../ManagedGatewayConfigurationService.yml | 39 + ...wayEthernetProfileConfigurationService.yml | 68 + ...GatewayWiFiProfileConfigurationService.yml | 68 + doc/data/api/tts.swagger.json | 6734 +++++++++++++++-- doc/data/commands/ttn-lw-cli.json | 8 - 55 files changed, 6962 insertions(+), 680 deletions(-) create mode 100644 doc/content/whats-new/3.32.0.md create mode 100644 doc/data/api/ttn.lorawan.v3/enums/ManagedGatewayNetworkInterfaceStatus.yml create mode 100644 doc/data/api/ttn.lorawan.v3/enums/ManagedGatewayNetworkInterfaceType.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/CreateManagedGatewayEthernetProfileRequest.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/CreateManagedGatewayWiFiProfileRequest.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/DeleteManagedGatewayEthernetProfileRequest.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/DeleteManagedGatewayWiFiProfileRequest.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/GetManagedGatewayEthernetProfileRequest.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/GetManagedGatewayWiFiProfileRequest.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ListEndDevicesRequest.Filter.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ListGatewaysRequest.Filter.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ListManagedGatewayEthernetProfilesRequest.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ListManagedGatewayWiFiProfilesRequest.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGateway.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayCellularBackhaul.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayControllerConnection.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetBackhaul.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetProfile.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetProfiles.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEventData.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayGatewayServerConnection.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayNetworkInterfaceAddresses.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayNetworkInterfaceInfo.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewaySystemStatus.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiAccessPoint.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiAccessPoints.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiBackhaul.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiProfile.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiProfiles.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayEthernetProfileRequest.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayRequest.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayWiFiProfileRequest.yml delete mode 100644 doc/data/api/ttn.lorawan.v3/services/GatewayConfigurator.yml create mode 100644 doc/data/api/ttn.lorawan.v3/services/ManagedGatewayConfigurationService.yml create mode 100644 doc/data/api/ttn.lorawan.v3/services/ManagedGatewayEthernetProfileConfigurationService.yml create mode 100644 doc/data/api/ttn.lorawan.v3/services/ManagedGatewayWiFiProfileConfigurationService.yml diff --git a/doc/config/_default/config.toml b/doc/config/_default/config.toml index 67ce5ea968..9549800906 100644 --- a/doc/config/_default/config.toml +++ b/doc/config/_default/config.toml @@ -24,7 +24,7 @@ pygmentsUseClasses = true github_repository = "https://github.com/TheThingsIndustries/lorawan-stack-docs" github_repository_edit = "https://github.com/TheThingsIndustries/lorawan-stack-docs/blob/master/doc/content" tts_github_repository = "https://github.com/TheThingsNetwork/lorawan-stack" - version = "3.31.1" + version = "3.32.0" [markup] [markup.goldmark] diff --git a/doc/content/the-things-stack/host/aws/ecs/changelog/index.md b/doc/content/the-things-stack/host/aws/ecs/changelog/index.md index c1b31b34f8..f06922b483 100644 --- a/doc/content/the-things-stack/host/aws/ecs/changelog/index.md +++ b/doc/content/the-things-stack/host/aws/ecs/changelog/index.md @@ -8,6 +8,13 @@ All meaningful changes to templates are documented in this file. ## Unreleased +- Add support for managed gateways via The Things Gateway Controller. The Gateway Configuration Server and Device Claiming Server use TLS client authentication. + - When using AWS Private CA (`CertificateAuthorityARN` in `4-2a-configuration`), the client certificate can be issued automatically. + - To specify a custom TLS client certificate, enable `EnableTTGCCustomCertificate` in `4-1-secrets` and specify the certificate and key according to the format in the description. +- Add support for gateways using The Things Industries Gateway Protocol. This requires TLS mutual authentication and TLS termination by the proxy. Make sure that `SupportProxyTLS` is enabled. This adds a new public listener (port `8889`) that is mapped to the proxy that forwards traffic to the Gateway Server (port `1889`). +- Fixed the rate-limiting profile for the `ApplicationUpStorage` service in the Application Server. +- Add default values for the default and maximum page sizes in the `ApplicationUpStorage` service in the Application Server. + ## 3.31.1 ### Proxy diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_list.md b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_list.md index af0f0a5f2f..48968d0ba4 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_list.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_list.md @@ -24,6 +24,7 @@ ttn-lw-cli end-devices list [application-id] [flags] --claim-authentication-code.valid-to select the claim_authentication_code.valid_to field --claim-authentication-code.value select the claim_authentication_code.value field --description select the description field + --filter.updated-since updated_at filter the updated_at field by this timestamp (YYYY-MM-DDTHH:MM:SSZ) -h, --help help for list --join-server-address select the join_server_address field --last-seen-at select the last_seen_at field diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_claim.md b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_claim.md index dd72b79aa5..d3961ab8fc 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_claim.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_claim.md @@ -39,9 +39,8 @@ ttn-lw-cli gateways claim [gateway-eui] [flags] --gateway-id string -h, --help help for claim --organization-id string - --target-cups-trust-local-file string (optional) Target CUPS trust in PEM format (local file name) - --target-cups-uri string --target-frequency-plan-id string + --target-frequency-plan-ids string --target-gateway-id string gateway ID for the claimed gateway --target-gateway-server-address string --user-id string @@ -87,7 +86,5 @@ ttn-lw-cli gateways claim [gateway-eui] [flags] ### SEE ALSO * [ttn-lw-cli gateways]({{< relref "ttn-lw-cli_gateways" >}}) - Gateway commands -* [ttn-lw-cli gateways claim authorize]({{< relref "ttn-lw-cli_gateways_claim_authorize" >}}) - Authorize a gateway for claiming (EXPERIMENTAL) * [ttn-lw-cli gateways claim info]({{< relref "ttn-lw-cli_gateways_claim_info" >}}) - Check if claiming is supported for the EUI (EXPERIMENTAL) -* [ttn-lw-cli gateways claim unauthorize]({{< relref "ttn-lw-cli_gateways_claim_unauthorize" >}}) - Unauthorize a gateway for claiming (EXPERIMENTAL) diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_create.md b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_create.md index 7617d9285d..0eaa77c0d2 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_create.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_create.md @@ -63,6 +63,7 @@ ttn-lw-cli gateways create [gateway-id] [flags] --version-ids.firmware-version string --version-ids.hardware-version string --version-ids.model-id string + --version-ids.runtime-version string ``` ### Options inherited from parent commands diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_get.md b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_get.md index 0bccb95370..9bd0f70db3 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_get.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_get.md @@ -70,6 +70,7 @@ ttn-lw-cli gateways get [gateway-id] [flags] --version-ids.firmware-version select the version_ids.firmware_version field --version-ids.hardware-version select the version_ids.hardware_version field --version-ids.model-id select the version_ids.model_id field + --version-ids.runtime-version select the version_ids.runtime_version field ``` ### Options inherited from parent commands diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_list.md b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_list.md index fe52e1648f..2aa8726b8a 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_list.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_list.md @@ -39,6 +39,7 @@ ttn-lw-cli gateways list [flags] --downlink-path-constraint select the downlink_path_constraint field --enforce-duty-cycle select the enforce_duty_cycle field --field-mask strings + --filter.updated-since updated_at filter the updated_at field by this timestamp (YYYY-MM-DDTHH:MM:SSZ) --frequency-plan-id select the frequency_plan_id field --frequency-plan-ids select the frequency_plan_ids field --gateway-server-address select the gateway_server_address field @@ -75,6 +76,7 @@ ttn-lw-cli gateways list [flags] --version-ids.firmware-version select the version_ids.firmware_version field --version-ids.hardware-version select the version_ids.hardware_version field --version-ids.model-id select the version_ids.model_id field + --version-ids.runtime-version select the version_ids.runtime_version field ``` ### Options inherited from parent commands diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_search.md b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_search.md index d8e274438b..e91cde8da0 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_search.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_search.md @@ -79,6 +79,7 @@ ttn-lw-cli gateways search [flags] --version-ids.firmware-version select the version_ids.firmware_version field --version-ids.hardware-version select the version_ids.hardware_version field --version-ids.model-id select the version_ids.model_id field + --version-ids.runtime-version select the version_ids.runtime_version field ``` ### Options inherited from parent commands diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_set.md b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_set.md index 164a8cd85b..cd857a0bf8 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_set.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_gateways_set.md @@ -64,6 +64,7 @@ ttn-lw-cli gateways set [gateway-id] [flags] --version-ids.firmware-version string --version-ids.hardware-version string --version-ids.model-id string + --version-ids.runtime-version string ``` ### Options inherited from parent commands diff --git a/doc/content/whats-new/3.32.0.md b/doc/content/whats-new/3.32.0.md new file mode 100644 index 0000000000..74a0d43eeb --- /dev/null +++ b/doc/content/whats-new/3.32.0.md @@ -0,0 +1,70 @@ +--- +date: 2024-09-09T14:11:11Z +title: "3.32.0" +featured: { + added: [], + changed: [], + fixed: [] +} +--- + +### Added + +- Newly redesigned The Things Stack Console. The most notable changes are as follows: + - New look and feel + - New sidebar-based navigation and structure + - Top entities are automatically stored and displayed for faster access + - More useful panels in the overviews of gateways, applications and end devices + - Quick search feature to search globally for any entity + - New event overlay for better in-context event examination + - Notifications can now be viewed from within the Console +- Add `ResendAdminValidation` RPC to the `TenantAccess` service. Allows tenant administrators to re-send the tenant's email validation email to their initial user. +- Add `ResendAdminValidation` RPC to the `TenantAccess` service. Allows tenant administrators to re-send the tenant's email validation email to their initial user. +- Support for managed gateways and claiming through The Things Gateway Controller. +- Support for The Things Industries gateway protocol. This is adds a new pair of ports to Gateway Server: `1889` for Envoy or Traefik terminated TLS mutual authentication, and `8889` for The Things Stack terminated TLS mutual authentication. +- Option to filter the output of the `List` RPCs for end devices and gateways based on when they were updated. + - `ListGatewaysRequest` and `ListEndDevicesRequest` RPCs have a new `Filter` field that supports an `updated_since` timestamp. +- Preparation for universal rights assigned to users. + - This requires a database schema migration (`ttn-lw-stack is-db migrate`). + +### Changed + +- Enforce `NOT NULL` constraint on Network Operations Center's `end_device_data_uplink` hypertable. + - This requires a Network Operations Center migration (`tti-lw-stack noc-db migrate`). + +### Deprecated + +- Experimental RPCs `AuthorizeGateway` and `UnauthorizeGateway` of the Gateway Claiming Server (GCLS). +- `CUPSRedirection` field of `ClaimGatewayRequest`. + +### Removed + +- `authorize` and `unauthorize` sub-commands of the gateway `claim` command. + +### Fixed + +- Fixed an issue where an downlink message was scheduled by the Application Layer Clock Synchronization (ALCS) implementation when there is no answer to send (i.e. `AnsRequired` is not set and the difference with what the end device reports falls within the threshold). +- Fix unhandled video stream in QR code scanner +- Recreate Network Operations Center's `gateway_end_device_uplink_statistics_1h` aggregate with a proper time bucket. + - This requires a Network Operations Center migration (`tti-lw-stack noc-db migrate`). + - Decreases aggregate's total data size to be less than 10% of the previous size. + - To generate data for the new table, run the following command: + - `CALL refresh_continuous_aggregate('gateway_end_device_uplink_statistics_1h', NOW() - interval '30d', null);` + - Deployments that have retention period for the hypertable `gateway_end_device_uplink` shorter than 30 days will see a loss of data in the migration. Specifically the data loss happens in the period between ['30d', retention_period). + - Grafana graphs will be impacted but slowly replenished by the new aggregate. +- The Network Operation Center no longer returns an incorrect amount of active Gateways, End-devices and Applications on the bigger bucket intervals. + - This requires a Network Operations Center migration (`tti-lw-stack noc-db migrate`). + - To generate data for the new aggregates, run the following commands: + - `CALL refresh_continuous_aggregate('active_gateways_1h', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_gateways_1d', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_end_devices_1h', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_end_devices_1d', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_applications_1h', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_applications_1d', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_gateway_count_1d', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_gateway_count_1w', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_end_device_count_1d', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_end_device_count_1w', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_application_count_1d', NOW() - interval '30d', null);` + - `CALL refresh_continuous_aggregate('active_application_count_1w', NOW() - interval '30d', null);` +- Network Operations Center no longer returns only the last three days of data of gateways' connection events. diff --git a/doc/data/api/ttn.lorawan.v3/enums/ManagedGatewayNetworkInterfaceStatus.yml b/doc/data/api/ttn.lorawan.v3/enums/ManagedGatewayNetworkInterfaceStatus.yml new file mode 100644 index 0000000000..1ed48cd00d --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/enums/ManagedGatewayNetworkInterfaceStatus.yml @@ -0,0 +1,10 @@ +name: ManagedGatewayNetworkInterfaceStatus +values: +- name: MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED + value: 0 +- name: MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN + value: 1 +- name: MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP + value: 2 +- name: MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED + value: 3 diff --git a/doc/data/api/ttn.lorawan.v3/enums/ManagedGatewayNetworkInterfaceType.yml b/doc/data/api/ttn.lorawan.v3/enums/ManagedGatewayNetworkInterfaceType.yml new file mode 100644 index 0000000000..1dc71fb4d0 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/enums/ManagedGatewayNetworkInterfaceType.yml @@ -0,0 +1,10 @@ +name: ManagedGatewayNetworkInterfaceType +values: +- name: MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED + value: 0 +- name: MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_CELLULAR + value: 1 +- name: MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_WIFI + value: 2 +- name: MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_ETHERNET + value: 3 diff --git a/doc/data/api/ttn.lorawan.v3/messages/ApplicationDownlink.yml b/doc/data/api/ttn.lorawan.v3/messages/ApplicationDownlink.yml index 372945edc9..ab540d36d7 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/ApplicationDownlink.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/ApplicationDownlink.yml @@ -22,6 +22,8 @@ fields: The payload is encrypted if the skip_payload_crypto field of the EndDevice is true. type: bytes + rules: + max_len: 255 default: "" - name: decoded_payload comment: |- diff --git a/doc/data/api/ttn.lorawan.v3/messages/CUPSRedirection.yml b/doc/data/api/ttn.lorawan.v3/messages/CUPSRedirection.yml index 7dc15425b9..02c4ef1b75 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/CUPSRedirection.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/CUPSRedirection.yml @@ -1,4 +1,6 @@ name: CUPSRedirection +comment: 'DEPRECATED: This message is deprecated and will be removed in a future version + of The Things Stack.' fields: - name: target_cups_uri comment: CUPS URI for LoRa Basics Station CUPS redirection. diff --git a/doc/data/api/ttn.lorawan.v3/messages/ClaimGatewayRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/ClaimGatewayRequest.yml index de70b2ea4a..c8c9e8a46a 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/ClaimGatewayRequest.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/ClaimGatewayRequest.yml @@ -32,7 +32,9 @@ fields: pattern: ^(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*(?:[A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])(?::[0-9]{1,5})?$|^$ default: "" - name: cups_redirection - comment: Parameters to set CUPS redirection for the gateway. + comment: |- + Parameters to set CUPS redirection for the gateway. + DEPRECATED: This field is deprecated and will be removed in a future version of The Things Stack. message: name: CUPSRedirection default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/CreateManagedGatewayEthernetProfileRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/CreateManagedGatewayEthernetProfileRequest.yml new file mode 100644 index 0000000000..de2212d87d --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/CreateManagedGatewayEthernetProfileRequest.yml @@ -0,0 +1,14 @@ +name: CreateManagedGatewayEthernetProfileRequest +fields: +- name: profile + message: + name: ManagedGatewayEthernetProfile + rules: + required: true + default: {} +- name: collaborator + message: + name: OrganizationOrUserIdentifiers + rules: + required: true + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/CreateManagedGatewayWiFiProfileRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/CreateManagedGatewayWiFiProfileRequest.yml new file mode 100644 index 0000000000..e46a07aaf7 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/CreateManagedGatewayWiFiProfileRequest.yml @@ -0,0 +1,14 @@ +name: CreateManagedGatewayWiFiProfileRequest +fields: +- name: profile + message: + name: ManagedGatewayWiFiProfile + rules: + required: true + default: {} +- name: collaborator + message: + name: OrganizationOrUserIdentifiers + rules: + required: true + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/DeleteManagedGatewayEthernetProfileRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/DeleteManagedGatewayEthernetProfileRequest.yml new file mode 100644 index 0000000000..d807bd5d00 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/DeleteManagedGatewayEthernetProfileRequest.yml @@ -0,0 +1,13 @@ +name: DeleteManagedGatewayEthernetProfileRequest +fields: +- name: collaborator + message: + name: OrganizationOrUserIdentifiers + rules: + required: true + default: {} +- name: profile_id + type: string + rules: + uuid: true + default: "" diff --git a/doc/data/api/ttn.lorawan.v3/messages/DeleteManagedGatewayWiFiProfileRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/DeleteManagedGatewayWiFiProfileRequest.yml new file mode 100644 index 0000000000..9c866bf486 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/DeleteManagedGatewayWiFiProfileRequest.yml @@ -0,0 +1,13 @@ +name: DeleteManagedGatewayWiFiProfileRequest +fields: +- name: collaborator + message: + name: OrganizationOrUserIdentifiers + rules: + required: true + default: {} +- name: profile_id + type: string + rules: + uuid: true + default: "" diff --git a/doc/data/api/ttn.lorawan.v3/messages/GatewayVersionIdentifiers.yml b/doc/data/api/ttn.lorawan.v3/messages/GatewayVersionIdentifiers.yml index 82da551577..95ffcd51d5 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/GatewayVersionIdentifiers.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/GatewayVersionIdentifiers.yml @@ -25,3 +25,8 @@ fields: rules: max_len: 32 default: "" +- name: runtime_version + type: string + rules: + max_len: 32 + default: "" diff --git a/doc/data/api/ttn.lorawan.v3/messages/GetInfoByGatewayEUIResponse.yml b/doc/data/api/ttn.lorawan.v3/messages/GetInfoByGatewayEUIResponse.yml index fe210cbe8f..066338e4d9 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/GetInfoByGatewayEUIResponse.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/GetInfoByGatewayEUIResponse.yml @@ -9,3 +9,9 @@ fields: - name: supports_claiming type: bool default: false +- name: is_managed + comment: |- + Indicates whether the gateway is a managed gateway. + If true, when the gateway is successfully claimed, it can be managed with ManagedGatewayConfigurationService. + type: bool + default: false diff --git a/doc/data/api/ttn.lorawan.v3/messages/GetManagedGatewayEthernetProfileRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/GetManagedGatewayEthernetProfileRequest.yml new file mode 100644 index 0000000000..90bce1539b --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/GetManagedGatewayEthernetProfileRequest.yml @@ -0,0 +1,19 @@ +name: GetManagedGatewayEthernetProfileRequest +fields: +- name: collaborator + message: + name: OrganizationOrUserIdentifiers + rules: + required: true + default: {} +- name: profile_id + type: string + rules: + uuid: true + default: "" +- name: field_mask + comment: The names of the gateway fields that should be returned. + message: + package: google.protobuf + name: FieldMask + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/GetManagedGatewayWiFiProfileRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/GetManagedGatewayWiFiProfileRequest.yml new file mode 100644 index 0000000000..de1cd90807 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/GetManagedGatewayWiFiProfileRequest.yml @@ -0,0 +1,19 @@ +name: GetManagedGatewayWiFiProfileRequest +fields: +- name: collaborator + message: + name: OrganizationOrUserIdentifiers + rules: + required: true + default: {} +- name: profile_id + type: string + rules: + uuid: true + default: "" +- name: field_mask + comment: The names of the gateway fields that should be returned. + message: + package: google.protobuf + name: FieldMask + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/ListEndDevicesRequest.Filter.yml b/doc/data/api/ttn.lorawan.v3/messages/ListEndDevicesRequest.Filter.yml new file mode 100644 index 0000000000..85f652eec4 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ListEndDevicesRequest.Filter.yml @@ -0,0 +1,14 @@ +name: ListEndDevicesRequest.Filter +comment: Filter end devices by fields. +fields: +- name: updated_since + message: + package: google.protobuf + name: Timestamp + rules: + lt_now: true + default: "0001-01-01T00:00:00Z" +oneofs: +- name: field + field_names: + - updated_since diff --git a/doc/data/api/ttn.lorawan.v3/messages/ListEndDevicesRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/ListEndDevicesRequest.yml index 3dbbf24683..ef38d66344 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/ListEndDevicesRequest.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/ListEndDevicesRequest.yml @@ -45,3 +45,8 @@ fields: comment: Page number for pagination. 0 is interpreted as 1. type: uint32 default: 0 +- name: filters + repeated: + message: + name: ListEndDevicesRequest.Filter + default: [] diff --git a/doc/data/api/ttn.lorawan.v3/messages/ListGatewaysRequest.Filter.yml b/doc/data/api/ttn.lorawan.v3/messages/ListGatewaysRequest.Filter.yml new file mode 100644 index 0000000000..1d465a038d --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ListGatewaysRequest.Filter.yml @@ -0,0 +1,14 @@ +name: ListGatewaysRequest.Filter +comment: Filter gateways by fields. +fields: +- name: updated_since + message: + package: google.protobuf + name: Timestamp + rules: + lt_now: true + default: "0001-01-01T00:00:00Z" +oneofs: +- name: field + field_names: + - updated_since diff --git a/doc/data/api/ttn.lorawan.v3/messages/ListGatewaysRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/ListGatewaysRequest.yml index c57e5a6037..e95dde40f9 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/ListGatewaysRequest.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/ListGatewaysRequest.yml @@ -45,3 +45,8 @@ fields: comment: Only return recently deleted gateways. type: bool default: false +- name: filters + repeated: + message: + name: ListGatewaysRequest.Filter + default: [] diff --git a/doc/data/api/ttn.lorawan.v3/messages/ListManagedGatewayEthernetProfilesRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/ListManagedGatewayEthernetProfilesRequest.yml new file mode 100644 index 0000000000..b9fe1bf8da --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ListManagedGatewayEthernetProfilesRequest.yml @@ -0,0 +1,24 @@ +name: ListManagedGatewayEthernetProfilesRequest +fields: +- name: collaborator + message: + name: OrganizationOrUserIdentifiers + rules: + required: true + default: {} +- name: field_mask + comment: The names of the gateway fields that should be returned. + message: + package: google.protobuf + name: FieldMask + default: {} +- name: limit + comment: Limit the number of results per page. + type: uint32 + rules: + lte: 1000 + default: 0 +- name: page + comment: Page number for pagination. 0 is interpreted as 1. + type: uint32 + default: 0 diff --git a/doc/data/api/ttn.lorawan.v3/messages/ListManagedGatewayWiFiProfilesRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/ListManagedGatewayWiFiProfilesRequest.yml new file mode 100644 index 0000000000..c5490184fb --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ListManagedGatewayWiFiProfilesRequest.yml @@ -0,0 +1,24 @@ +name: ListManagedGatewayWiFiProfilesRequest +fields: +- name: collaborator + message: + name: OrganizationOrUserIdentifiers + rules: + required: true + default: {} +- name: field_mask + comment: The names of the gateway fields that should be returned. + message: + package: google.protobuf + name: FieldMask + default: {} +- name: limit + comment: Limit the number of results per page. + type: uint32 + rules: + lte: 1000 + default: 0 +- name: page + comment: Page number for pagination. 0 is interpreted as 1. + type: uint32 + default: 0 diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGateway.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGateway.yml new file mode 100644 index 0000000000..4b40da7596 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGateway.yml @@ -0,0 +1,48 @@ +name: ManagedGateway +fields: +- name: ids + message: + name: GatewayIdentifiers + rules: + required: true + default: {} +- name: version_ids + message: + name: GatewayVersionIdentifiers + default: {} +- name: cellular_imei + type: string + rules: + pattern: ^[0-9]{15}$ + ignore_empty: true + default: "" +- name: cellular_imsi + type: string + rules: + pattern: ^[0-9]{15}$ + ignore_empty: true + default: "" +- name: wifi_mac_address + type: bytes + rules: + len: 6 + ignore_empty: true + default: "" +- name: ethernet_mac_address + type: bytes + rules: + len: 6 + ignore_empty: true + default: "" +- name: wifi_profile_id + type: string + rules: + uuid: true + ignore_empty: true + default: "" +- name: ethernet_profile_id + type: string + rules: + uuid: true + ignore_empty: true + default: "" diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayCellularBackhaul.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayCellularBackhaul.yml new file mode 100644 index 0000000000..d567b6c9b5 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayCellularBackhaul.yml @@ -0,0 +1,16 @@ +name: ManagedGatewayCellularBackhaul +fields: +- name: network_interface + message: + name: ManagedGatewayNetworkInterfaceInfo + default: {} +- name: operator + type: string + rules: + max_len: 32 + default: "" +- name: rssi + message: + package: google.protobuf + name: FloatValue + default: null diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayControllerConnection.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayControllerConnection.yml new file mode 100644 index 0000000000..93bff8e944 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayControllerConnection.yml @@ -0,0 +1,8 @@ +name: ManagedGatewayControllerConnection +fields: +- name: network_interface_type + enum: + name: ManagedGatewayNetworkInterfaceType + rules: + defined_only: true + default: MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetBackhaul.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetBackhaul.yml new file mode 100644 index 0000000000..93adbe3e31 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetBackhaul.yml @@ -0,0 +1,6 @@ +name: ManagedGatewayEthernetBackhaul +fields: +- name: network_interface + message: + name: ManagedGatewayNetworkInterfaceInfo + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetProfile.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetProfile.yml new file mode 100644 index 0000000000..72852469e8 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetProfile.yml @@ -0,0 +1,20 @@ +name: ManagedGatewayEthernetProfile +fields: +- name: profile_id + type: string + rules: + uuid: true + ignore_empty: true + default: "" +- name: profile_name + type: string + rules: + max_len: 32 + default: "" +- name: shared + type: bool + default: false +- name: network_interface_addresses + message: + name: ManagedGatewayNetworkInterfaceAddresses + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetProfiles.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetProfiles.yml new file mode 100644 index 0000000000..b2936313fa --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEthernetProfiles.yml @@ -0,0 +1,7 @@ +name: ManagedGatewayEthernetProfiles +fields: +- name: profiles + repeated: + message: + name: ManagedGatewayEthernetProfile + default: [] diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEventData.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEventData.yml new file mode 100644 index 0000000000..a4b0c6c982 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayEventData.yml @@ -0,0 +1,45 @@ +name: ManagedGatewayEventData +fields: +- name: entity + message: + name: ManagedGateway + default: {} +- name: location + message: + name: Location + default: {} +- name: system_status + message: + name: ManagedGatewaySystemStatus + default: {} +- name: controller_connection + message: + name: ManagedGatewayControllerConnection + default: {} +- name: gateway_server_connection + message: + name: ManagedGatewayGatewayServerConnection + default: {} +- name: cellular_backhaul + message: + name: ManagedGatewayCellularBackhaul + default: {} +- name: wifi_backhaul + message: + name: ManagedGatewayWiFiBackhaul + default: {} +- name: ethernet_backhaul + message: + name: ManagedGatewayEthernetBackhaul + default: {} +oneofs: +- name: data + field_names: + - entity + - location + - system_status + - controller_connection + - gateway_server_connection + - cellular_backhaul + - wifi_backhaul + - ethernet_backhaul diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayGatewayServerConnection.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayGatewayServerConnection.yml new file mode 100644 index 0000000000..ef53c0ee7b --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayGatewayServerConnection.yml @@ -0,0 +1,11 @@ +name: ManagedGatewayGatewayServerConnection +fields: +- name: network_interface_type + enum: + name: ManagedGatewayNetworkInterfaceType + rules: + defined_only: true + default: MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED +- name: address + type: string + default: "" diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayNetworkInterfaceAddresses.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayNetworkInterfaceAddresses.yml new file mode 100644 index 0000000000..6946b32917 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayNetworkInterfaceAddresses.yml @@ -0,0 +1,30 @@ +name: ManagedGatewayNetworkInterfaceAddresses +fields: +- name: ip_addresses + rules: + max_items: 2 + repeated: + type: string + rules: + ip: true + default: [] +- name: subnet_mask + type: string + rules: + ipv4: true + ignore_empty: true + default: "" +- name: gateway + type: string + rules: + ipv4: true + ignore_empty: true + default: "" +- name: dns_servers + rules: + max_items: 2 + repeated: + type: string + rules: + ipv4: true + default: [] diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayNetworkInterfaceInfo.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayNetworkInterfaceInfo.yml new file mode 100644 index 0000000000..3d315838bd --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayNetworkInterfaceInfo.yml @@ -0,0 +1,15 @@ +name: ManagedGatewayNetworkInterfaceInfo +fields: +- name: status + enum: + name: ManagedGatewayNetworkInterfaceStatus + rules: + defined_only: true + default: MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED +- name: dhcp_enabled + type: bool + default: false +- name: addresses + message: + name: ManagedGatewayNetworkInterfaceAddresses + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewaySystemStatus.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewaySystemStatus.yml new file mode 100644 index 0000000000..27a67bc51a --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewaySystemStatus.yml @@ -0,0 +1,8 @@ +name: ManagedGatewaySystemStatus +fields: +- name: cpu_temperature + comment: CPU temperature (Celsius). + message: + package: google.protobuf + name: FloatValue + default: null diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiAccessPoint.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiAccessPoint.yml new file mode 100644 index 0000000000..69f227acbb --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiAccessPoint.yml @@ -0,0 +1,23 @@ +name: ManagedGatewayWiFiAccessPoint +fields: +- name: ssid + type: string + rules: + max_len: 32 + default: "" +- name: bssid + type: bytes + rules: + len: 6 + default: "" +- name: channel + type: uint32 + rules: + gte: 1 + default: 0 +- name: authentication_mode + type: string + default: "" +- name: rssi + type: float + default: 0 diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiAccessPoints.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiAccessPoints.yml new file mode 100644 index 0000000000..3d46c61442 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiAccessPoints.yml @@ -0,0 +1,7 @@ +name: ManagedGatewayWiFiAccessPoints +fields: +- name: access_points + repeated: + message: + name: ManagedGatewayWiFiAccessPoint + default: [] diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiBackhaul.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiBackhaul.yml new file mode 100644 index 0000000000..e49dbf7ca4 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiBackhaul.yml @@ -0,0 +1,29 @@ +name: ManagedGatewayWiFiBackhaul +fields: +- name: network_interface + message: + name: ManagedGatewayNetworkInterfaceInfo + default: {} +- name: ssid + type: string + rules: + max_len: 32 + default: "" +- name: bssid + type: bytes + rules: + len: 6 + default: "" +- name: channel + type: uint32 + rules: + gte: 1 + default: 0 +- name: authentication_mode + type: string + default: "" +- name: rssi + message: + package: google.protobuf + name: FloatValue + default: null diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiProfile.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiProfile.yml new file mode 100644 index 0000000000..af20f56215 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiProfile.yml @@ -0,0 +1,30 @@ +name: ManagedGatewayWiFiProfile +fields: +- name: profile_id + type: string + rules: + uuid: true + ignore_empty: true + default: "" +- name: profile_name + type: string + rules: + max_len: 32 + default: "" +- name: shared + type: bool + default: false +- name: ssid + type: string + rules: + max_len: 32 + default: "" +- name: password + type: string + rules: + max_len: 64 + default: "" +- name: network_interface_addresses + message: + name: ManagedGatewayNetworkInterfaceAddresses + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiProfiles.yml b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiProfiles.yml new file mode 100644 index 0000000000..1715796a6c --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/ManagedGatewayWiFiProfiles.yml @@ -0,0 +1,7 @@ +name: ManagedGatewayWiFiProfiles +fields: +- name: profiles + repeated: + message: + name: ManagedGatewayWiFiProfile + default: [] diff --git a/doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayEthernetProfileRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayEthernetProfileRequest.yml new file mode 100644 index 0000000000..508cd924ac --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayEthernetProfileRequest.yml @@ -0,0 +1,20 @@ +name: UpdateManagedGatewayEthernetProfileRequest +fields: +- name: profile + message: + name: ManagedGatewayEthernetProfile + rules: + required: true + default: {} +- name: collaborator + message: + name: OrganizationOrUserIdentifiers + rules: + required: true + default: {} +- name: field_mask + comment: The names of the gateway fields that should be updated. + message: + package: google.protobuf + name: FieldMask + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayRequest.yml new file mode 100644 index 0000000000..841270d080 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayRequest.yml @@ -0,0 +1,14 @@ +name: UpdateManagedGatewayRequest +fields: +- name: gateway + message: + name: ManagedGateway + rules: + required: true + default: {} +- name: field_mask + comment: The names of the gateway fields that should be updated. + message: + package: google.protobuf + name: FieldMask + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayWiFiProfileRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayWiFiProfileRequest.yml new file mode 100644 index 0000000000..ad88ea0c0c --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/UpdateManagedGatewayWiFiProfileRequest.yml @@ -0,0 +1,20 @@ +name: UpdateManagedGatewayWiFiProfileRequest +fields: +- name: profile + message: + name: ManagedGatewayWiFiProfile + rules: + required: true + default: {} +- name: collaborator + message: + name: OrganizationOrUserIdentifiers + rules: + required: true + default: {} +- name: field_mask + comment: The names of the gateway fields that should be updated. + message: + package: google.protobuf + name: FieldMask + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/services/GatewayClaimingServer.yml b/doc/data/api/ttn.lorawan.v3/services/GatewayClaimingServer.yml index a2b4e6620a..937bffb3c4 100644 --- a/doc/data/api/ttn.lorawan.v3/services/GatewayClaimingServer.yml +++ b/doc/data/api/ttn.lorawan.v3/services/GatewayClaimingServer.yml @@ -12,9 +12,35 @@ methods: http: - method: POST path: /gcls/claim + Unclaim: + name: Unclaim + comment: |- + Unclaims the gateway. + EUI provided in the request are ignored and the end device is looked up by the gateway ID. + input: + name: GatewayIdentifiers + output: + package: google.protobuf + name: Empty + http: + - method: DELETE + path: /gcls/claim/{gateway_id} + GetInfoByGatewayEUI: + name: GetInfoByGatewayEUI + comment: Return whether claiming is available for a given gateway EUI. + input: + name: GetInfoByGatewayEUIRequest + output: + name: GetInfoByGatewayEUIResponse + http: + - method: POST + path: /gcls/claim/info AuthorizeGateway: name: AuthorizeGateway - comment: AuthorizeGateway allows a gateway to be claimed. + comment: |- + AuthorizeGateway allows a gateway to be claimed. + DEPRECATED: Authorizing gateways for claiming is no longer supported and will be removed in a future version of The + Things Stack. input: name: AuthorizeGatewayRequest output: @@ -25,7 +51,10 @@ methods: path: /gcls/gateways/{gateway_ids.gateway_id}/authorize UnauthorizeGateway: name: UnauthorizeGateway - comment: UnauthorizeGateway prevents a gateway from being claimed. + comment: |- + UnauthorizeGateway prevents a gateway from being claimed. + DEPRECATED: Unauthorizing (locking) gateways for claiming is no longer supported and will be removed in a future + version of The Things Stack. input: name: GatewayIdentifiers output: @@ -34,13 +63,3 @@ methods: http: - method: DELETE path: /gcls/gateways/{gateway_id}/authorize - GetInfoByGatewayEUI: - name: GetInfoByGatewayEUI - comment: Return whether claiming is available for a given gateway EUI. - input: - name: GetInfoByGatewayEUIRequest - output: - name: GetInfoByGatewayEUIResponse - http: - - method: POST - path: /gcls/claim/info diff --git a/doc/data/api/ttn.lorawan.v3/services/GatewayConfigurator.yml b/doc/data/api/ttn.lorawan.v3/services/GatewayConfigurator.yml deleted file mode 100644 index 8e46293620..0000000000 --- a/doc/data/api/ttn.lorawan.v3/services/GatewayConfigurator.yml +++ /dev/null @@ -1,10 +0,0 @@ -name: GatewayConfigurator -comment: The GatewayConfigurator service is used to fetch gateway configuration. -methods: - PullConfiguration: - name: PullConfiguration - input: - name: PullGatewayConfigurationRequest - output: - name: Gateway - stream: true diff --git a/doc/data/api/ttn.lorawan.v3/services/ManagedGatewayConfigurationService.yml b/doc/data/api/ttn.lorawan.v3/services/ManagedGatewayConfigurationService.yml new file mode 100644 index 0000000000..f049f79dda --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/services/ManagedGatewayConfigurationService.yml @@ -0,0 +1,39 @@ +name: ManagedGatewayConfigurationService +methods: + Get: + name: Get + input: + name: GetGatewayRequest + output: + name: ManagedGateway + http: + - method: GET + path: /gcs/gateways/managed/{gateway_ids.gateway_id} + Update: + name: Update + input: + name: UpdateManagedGatewayRequest + output: + name: ManagedGateway + http: + - method: PUT + path: /gcs/gateways/managed/{gateway.ids.gateway_id} + StreamEvents: + name: StreamEvents + input: + name: GatewayIdentifiers + output: + name: ManagedGatewayEventData + stream: true + http: + - method: POST + path: /gcs/gateways/managed/{gateway_id}/events + ScanWiFiAccessPoints: + name: ScanWiFiAccessPoints + input: + name: GatewayIdentifiers + output: + name: ManagedGatewayWiFiAccessPoints + http: + - method: POST + path: /gcs/gateways/managed/{gateway_id}/wifi/scan diff --git a/doc/data/api/ttn.lorawan.v3/services/ManagedGatewayEthernetProfileConfigurationService.yml b/doc/data/api/ttn.lorawan.v3/services/ManagedGatewayEthernetProfileConfigurationService.yml new file mode 100644 index 0000000000..b40988063c --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/services/ManagedGatewayEthernetProfileConfigurationService.yml @@ -0,0 +1,68 @@ +name: ManagedGatewayEthernetProfileConfigurationService +methods: + Create: + name: Create + input: + name: CreateManagedGatewayEthernetProfileRequest + output: + name: ManagedGatewayEthernetProfile + http: + - method: "" + path: "" + - method: POST + path: /gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id} + - method: POST + path: /gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id} + Update: + name: Update + input: + name: UpdateManagedGatewayEthernetProfileRequest + output: + name: ManagedGatewayEthernetProfile + http: + - method: "" + path: "" + - method: PUT + path: /gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}/{profile.profile_id} + - method: PUT + path: /gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}/{profile.profile_id} + List: + name: List + input: + name: ListManagedGatewayEthernetProfilesRequest + output: + name: ManagedGatewayEthernetProfiles + http: + - method: "" + path: "" + - method: GET + path: /gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id} + - method: GET + path: /gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id} + Get: + name: Get + input: + name: GetManagedGatewayEthernetProfileRequest + output: + name: ManagedGatewayEthernetProfile + http: + - method: "" + path: "" + - method: GET + path: /gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}/{profile_id} + - method: GET + path: /gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}/{profile_id} + Delete: + name: Delete + input: + name: DeleteManagedGatewayEthernetProfileRequest + output: + package: google.protobuf + name: Empty + http: + - method: "" + path: "" + - method: DELETE + path: /gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}/{profile_id} + - method: DELETE + path: /gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}/{profile_id} diff --git a/doc/data/api/ttn.lorawan.v3/services/ManagedGatewayWiFiProfileConfigurationService.yml b/doc/data/api/ttn.lorawan.v3/services/ManagedGatewayWiFiProfileConfigurationService.yml new file mode 100644 index 0000000000..b99379b899 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/services/ManagedGatewayWiFiProfileConfigurationService.yml @@ -0,0 +1,68 @@ +name: ManagedGatewayWiFiProfileConfigurationService +methods: + Create: + name: Create + input: + name: CreateManagedGatewayWiFiProfileRequest + output: + name: ManagedGatewayWiFiProfile + http: + - method: "" + path: "" + - method: POST + path: /gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id} + - method: POST + path: /gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id} + Update: + name: Update + input: + name: UpdateManagedGatewayWiFiProfileRequest + output: + name: ManagedGatewayWiFiProfile + http: + - method: "" + path: "" + - method: PUT + path: /gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}/{profile.profile_id} + - method: PUT + path: /gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}/{profile.profile_id} + List: + name: List + input: + name: ListManagedGatewayWiFiProfilesRequest + output: + name: ManagedGatewayWiFiProfiles + http: + - method: "" + path: "" + - method: GET + path: /gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id} + - method: GET + path: /gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id} + Get: + name: Get + input: + name: GetManagedGatewayWiFiProfileRequest + output: + name: ManagedGatewayWiFiProfile + http: + - method: "" + path: "" + - method: GET + path: /gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}/{profile_id} + - method: GET + path: /gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}/{profile_id} + Delete: + name: Delete + input: + name: DeleteManagedGatewayWiFiProfileRequest + output: + package: google.protobuf + name: Empty + http: + - method: "" + path: "" + - method: DELETE + path: /gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}/{profile_id} + - method: DELETE + path: /gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}/{profile_id} diff --git a/doc/data/api/tts.swagger.json b/doc/data/api/tts.swagger.json index 5ab3266170..314fb8e340 100644 --- a/doc/data/api/tts.swagger.json +++ b/doc/data/api/tts.swagger.json @@ -8,7 +8,7 @@ "swagger": "2.0", "info": { "title": "The Things Stack for LoRaWAN® OpenAPI 2.0 Reference", - "version": "v3.31.1" + "version": "v3.32.0" }, "paths": { "/alerts/notifications/profiles": { @@ -91741,54 +91741,7 @@ } }, "error": { - "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", - "type": "object", - "properties": { - "attributes": { - "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", - "type": "object" - }, - "cause": { - "description": "The error that caused this error.", - "$ref": "#/definitions/v3ErrorDetails" - }, - "code": { - "description": "The status code of the error.", - "type": "integer", - "format": "int64" - }, - "correlation_id": { - "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", - "type": "string" - }, - "details": { - "description": "The details of the error.", - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string" - } - }, - "additionalProperties": {} - } - }, - "message_format": { - "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", - "type": "string" - }, - "name": { - "description": "Name of the error.", - "type": "string" - }, - "namespace": { - "description": "Namespace of the error (typically the package name in The Things Stack).", - "type": "string" - } - } + "$ref": "#/definitions/v3ErrorDetails" } } }, @@ -157143,54 +157096,7 @@ } }, "error": { - "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", - "type": "object", - "properties": { - "attributes": { - "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", - "type": "object" - }, - "cause": { - "description": "The error that caused this error.", - "$ref": "#/definitions/v3ErrorDetails" - }, - "code": { - "description": "The status code of the error.", - "type": "integer", - "format": "int64" - }, - "correlation_id": { - "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", - "type": "string" - }, - "details": { - "description": "The details of the error.", - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string" - } - }, - "additionalProperties": {} - } - }, - "message_format": { - "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", - "type": "string" - }, - "name": { - "description": "Name of the error.", - "type": "string" - }, - "namespace": { - "description": "Namespace of the error (typically the package name in The Things Stack).", - "type": "string" - } - } + "$ref": "#/definitions/v3ErrorDetails" } } }, @@ -166351,7 +166257,54 @@ "format": "date-time" }, "last_failed_attempt_details": { - "$ref": "#/definitions/v3ErrorDetails" + "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", + "type": "object", + "properties": { + "attributes": { + "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", + "type": "object" + }, + "cause": { + "description": "The error that caused this error.", + "$ref": "#/definitions/v3ErrorDetails" + }, + "code": { + "description": "The status code of the error.", + "type": "integer", + "format": "int64" + }, + "correlation_id": { + "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", + "type": "string" + }, + "details": { + "description": "The details of the error.", + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message_format": { + "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", + "type": "string" + }, + "name": { + "description": "Name of the error.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the error (typically the package name in The Things Stack).", + "type": "string" + } + } } } } @@ -166809,7 +166762,54 @@ "format": "date-time" }, "last_failed_attempt_details": { - "$ref": "#/definitions/v3ErrorDetails" + "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", + "type": "object", + "properties": { + "attributes": { + "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", + "type": "object" + }, + "cause": { + "description": "The error that caused this error.", + "$ref": "#/definitions/v3ErrorDetails" + }, + "code": { + "description": "The status code of the error.", + "type": "integer", + "format": "int64" + }, + "correlation_id": { + "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", + "type": "string" + }, + "details": { + "description": "The details of the error.", + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message_format": { + "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", + "type": "string" + }, + "name": { + "description": "Name of the error.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the error (typically the package name in The Things Stack).", + "type": "string" + } + } } } } @@ -241255,6 +241255,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -241860,6 +241863,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -242240,6 +242246,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -242678,6 +242687,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -245093,6 +245105,7 @@ } }, "cups_redirection": { + "description": "DEPRECATED: This message is deprecated and will be removed in a future version of The Things Stack.", "type": "object", "properties": { "auth_token": { @@ -245241,6 +245254,10 @@ "format": "string", "example": "70B3D57ED000ABCD" }, + "is_managed": { + "description": "Indicates whether the gateway is a managed gateway.\nIf true, when the gateway is successfully claimed, it can be managed with ManagedGatewayConfigurationService.", + "type": "boolean" + }, "supports_claiming": { "type": "boolean" } @@ -245279,43 +245296,27 @@ } } }, - "/gcls/gateways/{gateway_ids.gateway_id}/authorize": { - "post": { + "/gcls/claim/{gateway_id}": { + "delete": { + "description": "EUI provided in the request are ignored and the end device is looked up by the gateway ID.", "tags": [ "GatewayClaimingServer" ], - "summary": "AuthorizeGateway allows a gateway to be claimed.", - "operationId": "GatewayClaimingServer_AuthorizeGateway", + "summary": "Unclaims the gateway.", + "operationId": "GatewayClaimingServer_Unclaim", "parameters": [ { "type": "string", - "name": "gateway_ids.gateway_id", + "name": "gateway_id", "in": "path", "required": true }, { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "api_key": { - "type": "string" - }, - "gateway_ids": { - "type": "object", - "properties": { - "eui": { - "description": "Secondary identifier, which can only be used in specific requests.", - "type": "string", - "format": "string", - "example": "70B3D57ED000ABCD" - } - } - } - } - } + "type": "string", + "format": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "eui", + "in": "query" } ], "responses": { @@ -245357,116 +245358,196 @@ } } }, - "/gcls/gateways/{gateway_id}/authorize": { - "delete": { + "/gcls/gateways/{gateway_ids.gateway_id}/authorize": { + "post": { + "description": "DEPRECATED: Authorizing gateways for claiming is no longer supported and will be removed in a future version of The\nThings Stack.", "tags": [ "GatewayClaimingServer" ], - "summary": "UnauthorizeGateway prevents a gateway from being claimed.", - "operationId": "GatewayClaimingServer_UnauthorizeGateway", + "summary": "AuthorizeGateway allows a gateway to be claimed.", + "operationId": "GatewayClaimingServer_AuthorizeGateway", "parameters": [ { "type": "string", - "name": "gateway_id", + "name": "gateway_ids.gateway_id", "in": "path", "required": true }, { - "type": "string", - "format": "string", - "description": "Secondary identifier, which can only be used in specific requests.", - "name": "eui", - "in": "query" - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", + "name": "body", + "in": "body", + "required": true, "schema": { "type": "object", "properties": { - "code": { - "type": "integer", - "format": "int32" + "api_key": { + "type": "string" }, - "details": { - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string" - } - }, - "additionalProperties": {} + "gateway_ids": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + } } - }, - "message": { - "type": "string" } } } } - } - } - }, - "/gcs/gateways/configuration/{gateway_ids.gateway_id}/{format}/{filename}": { - "get": { - "tags": [ - "GatewayConfigurationService" - ], - "operationId": "GatewayConfigurationService_GetGatewayConfiguration", - "parameters": [ - { - "type": "string", - "name": "gateway_ids.gateway_id", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "format", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "filename", - "in": "path", - "required": true - }, - { - "type": "string", - "format": "string", - "description": "Secondary identifier, which can only be used in specific requests.", - "name": "gateway_ids.eui", - "in": "query" - }, - { - "type": "string", - "name": "type", - "in": "query" - } ], "responses": { "200": { "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "contents": { - "type": "string", - "format": "byte" - } - } + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcls/gateways/{gateway_id}/authorize": { + "delete": { + "description": "DEPRECATED: Unauthorizing (locking) gateways for claiming is no longer supported and will be removed in a future\nversion of The Things Stack.", + "tags": [ + "GatewayClaimingServer" + ], + "summary": "UnauthorizeGateway prevents a gateway from being claimed.", + "operationId": "GatewayClaimingServer_UnauthorizeGateway", + "parameters": [ + { + "type": "string", + "name": "gateway_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "eui", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/configuration/{gateway_ids.gateway_id}/{format}/{filename}": { + "get": { + "tags": [ + "GatewayConfigurationService" + ], + "operationId": "GatewayConfigurationService_GetGatewayConfiguration", + "parameters": [ + { + "type": "string", + "name": "gateway_ids.gateway_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "format", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "filename", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "gateway_ids.eui", + "in": "query" + }, + { + "type": "string", + "name": "type", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "contents": { + "type": "string", + "format": "byte" + } + } } }, "default": { @@ -245585,6 +245666,3809 @@ } } }, + "/gcs/gateways/managed/{gateway.ids.gateway_id}": { + "put": { + "tags": [ + "ManagedGatewayConfigurationService" + ], + "operationId": "ManagedGatewayConfigurationService_Update", + "parameters": [ + { + "type": "string", + "name": "gateway.ids.gateway_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "field_mask": { + "description": "The names of the gateway fields that should be updated.", + "type": "string" + }, + "gateway": { + "type": "object", + "properties": { + "cellular_imei": { + "type": "string" + }, + "cellular_imsi": { + "type": "string" + }, + "ethernet_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "ethernet_profile_id": { + "type": "string" + }, + "ids": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + } + } + }, + "version_ids": { + "description": "Identifies an end device model with version information.", + "type": "object", + "properties": { + "brand_id": { + "type": "string" + }, + "firmware_version": { + "type": "string" + }, + "hardware_version": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "runtime_version": { + "type": "string" + } + } + }, + "wifi_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "wifi_profile_id": { + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "cellular_imei": { + "type": "string" + }, + "cellular_imsi": { + "type": "string" + }, + "ethernet_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "ethernet_profile_id": { + "type": "string" + }, + "ids": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + }, + "gateway_id": { + "type": "string" + } + } + }, + "version_ids": { + "description": "Identifies an end device model with version information.", + "type": "object", + "properties": { + "brand_id": { + "type": "string" + }, + "firmware_version": { + "type": "string" + }, + "hardware_version": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "runtime_version": { + "type": "string" + } + } + }, + "wifi_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "wifi_profile_id": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/managed/{gateway_ids.gateway_id}": { + "get": { + "tags": [ + "ManagedGatewayConfigurationService" + ], + "operationId": "ManagedGatewayConfigurationService_Get", + "parameters": [ + { + "type": "string", + "name": "gateway_ids.gateway_id", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "gateway_ids.eui", + "in": "query" + }, + { + "type": "string", + "description": "The names of the gateway fields that should be returned.", + "name": "field_mask", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "cellular_imei": { + "type": "string" + }, + "cellular_imsi": { + "type": "string" + }, + "ethernet_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "ethernet_profile_id": { + "type": "string" + }, + "ids": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + }, + "gateway_id": { + "type": "string" + } + } + }, + "version_ids": { + "description": "Identifies an end device model with version information.", + "type": "object", + "properties": { + "brand_id": { + "type": "string" + }, + "firmware_version": { + "type": "string" + }, + "hardware_version": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "runtime_version": { + "type": "string" + } + } + }, + "wifi_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "wifi_profile_id": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/managed/{gateway_id}/events": { + "post": { + "tags": [ + "ManagedGatewayConfigurationService" + ], + "operationId": "ManagedGatewayConfigurationService_StreamEvents", + "parameters": [ + { + "type": "string", + "name": "gateway_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "title": "Stream result of v3ManagedGatewayEventData", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + }, + "result": { + "type": "object", + "properties": { + "cellular_backhaul": { + "type": "object", + "properties": { + "network_interface": { + "type": "object", + "properties": { + "addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "dhcp_enabled": { + "type": "boolean" + }, + "status": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + } + } + }, + "operator": { + "type": "string" + }, + "rssi": { + "type": "number", + "format": "float" + } + } + }, + "controller_connection": { + "type": "object", + "properties": { + "network_interface_type": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_CELLULAR", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_WIFI", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_ETHERNET" + ] + } + } + }, + "entity": { + "type": "object", + "properties": { + "cellular_imei": { + "type": "string" + }, + "cellular_imsi": { + "type": "string" + }, + "ethernet_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "ethernet_profile_id": { + "type": "string" + }, + "ids": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + }, + "gateway_id": { + "type": "string" + } + } + }, + "version_ids": { + "description": "Identifies an end device model with version information.", + "type": "object", + "properties": { + "brand_id": { + "type": "string" + }, + "firmware_version": { + "type": "string" + }, + "hardware_version": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "runtime_version": { + "type": "string" + } + } + }, + "wifi_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "wifi_profile_id": { + "type": "string" + } + } + }, + "ethernet_backhaul": { + "type": "object", + "properties": { + "network_interface": { + "type": "object", + "properties": { + "addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "dhcp_enabled": { + "type": "boolean" + }, + "status": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + } + } + } + } + }, + "gateway_server_connection": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "network_interface_type": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_CELLULAR", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_WIFI", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_ETHERNET" + ] + } + } + }, + "location": { + "type": "object", + "properties": { + "accuracy": { + "description": "The accuracy of the location (meters).", + "type": "integer", + "format": "int32" + }, + "altitude": { + "description": "The altitude (meters), where 0 is the mean sea level.", + "type": "integer", + "format": "int32" + }, + "latitude": { + "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.", + "type": "number", + "format": "double" + }, + "longitude": { + "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.", + "type": "number", + "format": "double" + }, + "source": { + "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.", + "type": "string", + "default": "SOURCE_UNKNOWN", + "enum": [ + "SOURCE_UNKNOWN", + "SOURCE_GPS", + "SOURCE_REGISTRY", + "SOURCE_IP_GEOLOCATION", + "SOURCE_WIFI_RSSI_GEOLOCATION", + "SOURCE_BT_RSSI_GEOLOCATION", + "SOURCE_LORA_RSSI_GEOLOCATION", + "SOURCE_LORA_TDOA_GEOLOCATION", + "SOURCE_COMBINED_GEOLOCATION" + ] + } + } + }, + "system_status": { + "type": "object", + "properties": { + "cpu_temperature": { + "description": "CPU temperature (Celsius).", + "type": "number", + "format": "float" + } + } + }, + "wifi_backhaul": { + "type": "object", + "properties": { + "authentication_mode": { + "type": "string" + }, + "bssid": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "channel": { + "type": "integer", + "format": "int64" + }, + "network_interface": { + "type": "object", + "properties": { + "addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "dhcp_enabled": { + "type": "boolean" + }, + "status": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + } + } + }, + "rssi": { + "type": "number", + "format": "float" + }, + "ssid": { + "type": "string" + } + } + } + } + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/managed/{gateway_id}/wifi/scan": { + "post": { + "tags": [ + "ManagedGatewayConfigurationService" + ], + "operationId": "ManagedGatewayConfigurationService_ScanWiFiAccessPoints", + "parameters": [ + { + "type": "string", + "name": "gateway_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "access_points": { + "type": "array", + "items": { + "type": "object", + "properties": { + "authentication_mode": { + "type": "string" + }, + "bssid": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "channel": { + "type": "integer", + "format": "int64" + }, + "rssi": { + "type": "number", + "format": "float" + }, + "ssid": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}": { + "get": { + "tags": [ + "ManagedGatewayEthernetProfileConfigurationService" + ], + "operationId": "ManagedGatewayEthernetProfileConfigurationService_List", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + }, + { + "type": "string", + "description": "The names of the gateway fields that should be returned.", + "name": "field_mask", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "description": "Limit the number of results per page.", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "description": "Page number for pagination. 0 is interpreted as 1.", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + }, + "post": { + "tags": [ + "ManagedGatewayEthernetProfileConfigurationService" + ], + "operationId": "ManagedGatewayEthernetProfileConfigurationService_Create", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}/{profile.profile_id}": { + "put": { + "tags": [ + "ManagedGatewayEthernetProfileConfigurationService" + ], + "operationId": "ManagedGatewayEthernetProfileConfigurationService_Update", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile.profile_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "field_mask": { + "description": "The names of the gateway fields that should be updated.", + "type": "string" + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}/{profile_id}": { + "get": { + "tags": [ + "ManagedGatewayEthernetProfileConfigurationService" + ], + "operationId": "ManagedGatewayEthernetProfileConfigurationService_Get", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + }, + { + "type": "string", + "description": "The names of the gateway fields that should be returned.", + "name": "field_mask", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + }, + "delete": { + "tags": [ + "ManagedGatewayEthernetProfileConfigurationService" + ], + "operationId": "ManagedGatewayEthernetProfileConfigurationService_Delete", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}": { + "get": { + "tags": [ + "ManagedGatewayEthernetProfileConfigurationService" + ], + "operationId": "ManagedGatewayEthernetProfileConfigurationService_List2", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + }, + { + "type": "string", + "description": "The names of the gateway fields that should be returned.", + "name": "field_mask", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "description": "Limit the number of results per page.", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "description": "Page number for pagination. 0 is interpreted as 1.", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + }, + "post": { + "tags": [ + "ManagedGatewayEthernetProfileConfigurationService" + ], + "operationId": "ManagedGatewayEthernetProfileConfigurationService_Create2", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}/{profile.profile_id}": { + "put": { + "tags": [ + "ManagedGatewayEthernetProfileConfigurationService" + ], + "operationId": "ManagedGatewayEthernetProfileConfigurationService_Update2", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile.profile_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "field_mask": { + "description": "The names of the gateway fields that should be updated.", + "type": "string" + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}/{profile_id}": { + "get": { + "tags": [ + "ManagedGatewayEthernetProfileConfigurationService" + ], + "operationId": "ManagedGatewayEthernetProfileConfigurationService_Get2", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + }, + { + "type": "string", + "description": "The names of the gateway fields that should be returned.", + "name": "field_mask", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + }, + "delete": { + "tags": [ + "ManagedGatewayEthernetProfileConfigurationService" + ], + "operationId": "ManagedGatewayEthernetProfileConfigurationService_Delete2", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}": { + "get": { + "tags": [ + "ManagedGatewayWiFiProfileConfigurationService" + ], + "operationId": "ManagedGatewayWiFiProfileConfigurationService_List", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + }, + { + "type": "string", + "description": "The names of the gateway fields that should be returned.", + "name": "field_mask", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "description": "Limit the number of results per page.", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "description": "Page number for pagination. 0 is interpreted as 1.", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + }, + "post": { + "tags": [ + "ManagedGatewayWiFiProfileConfigurationService" + ], + "operationId": "ManagedGatewayWiFiProfileConfigurationService_Create", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}/{profile.profile_id}": { + "put": { + "tags": [ + "ManagedGatewayWiFiProfileConfigurationService" + ], + "operationId": "ManagedGatewayWiFiProfileConfigurationService_Update", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile.profile_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "field_mask": { + "description": "The names of the gateway fields that should be updated.", + "type": "string" + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}/{profile_id}": { + "get": { + "tags": [ + "ManagedGatewayWiFiProfileConfigurationService" + ], + "operationId": "ManagedGatewayWiFiProfileConfigurationService_Get", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + }, + { + "type": "string", + "description": "The names of the gateway fields that should be returned.", + "name": "field_mask", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + }, + "delete": { + "tags": [ + "ManagedGatewayWiFiProfileConfigurationService" + ], + "operationId": "ManagedGatewayWiFiProfileConfigurationService_Delete", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}": { + "get": { + "tags": [ + "ManagedGatewayWiFiProfileConfigurationService" + ], + "operationId": "ManagedGatewayWiFiProfileConfigurationService_List2", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + }, + { + "type": "string", + "description": "The names of the gateway fields that should be returned.", + "name": "field_mask", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "description": "Limit the number of results per page.", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "description": "Page number for pagination. 0 is interpreted as 1.", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + }, + "post": { + "tags": [ + "ManagedGatewayWiFiProfileConfigurationService" + ], + "operationId": "ManagedGatewayWiFiProfileConfigurationService_Create2", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}/{profile.profile_id}": { + "put": { + "tags": [ + "ManagedGatewayWiFiProfileConfigurationService" + ], + "operationId": "ManagedGatewayWiFiProfileConfigurationService_Update2", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile.profile_id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "field_mask": { + "description": "The names of the gateway fields that should be updated.", + "type": "string" + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, + "/gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}/{profile_id}": { + "get": { + "tags": [ + "ManagedGatewayWiFiProfileConfigurationService" + ], + "operationId": "ManagedGatewayWiFiProfileConfigurationService_Get2", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + }, + { + "type": "string", + "description": "The names of the gateway fields that should be returned.", + "name": "field_mask", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + }, + "delete": { + "tags": [ + "ManagedGatewayWiFiProfileConfigurationService" + ], + "operationId": "ManagedGatewayWiFiProfileConfigurationService_Delete2", + "parameters": [ + { + "type": "string", + "description": "This ID shares namespace with organization IDs.", + "name": "collaborator.user_ids.user_id", + "in": "path", + "required": true + }, + { + "type": "string", + "name": "profile_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "This ID shares namespace with user IDs.", + "name": "collaborator.organization_ids.organization_id", + "in": "query" + }, + { + "type": "string", + "description": "Secondary identifier, which can only be used in specific requests.", + "name": "collaborator.user_ids.email", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message": { + "type": "string" + } + } + } + } + } + } + }, "/gs/gateways/connection/stats": { "post": { "description": "- Statistics are not persisted between reconnects.\n- Gateways that are not connected or are part of a different cluster are ignored.\n- The client should ensure that the requested gateways are in the requested cluster.\n- The client should have the right to get the gateway connection stats on all requested gateways.", @@ -405707,6 +409591,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -406160,6 +410047,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -406540,6 +410430,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -462814,6 +466707,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -473365,6 +477261,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -473818,6 +477717,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -474198,6 +478100,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -488372,6 +492277,28 @@ "EXACTLY_ONCE" ] }, + "ManagedGatewayConfigurationServiceScanWiFiAccessPointsBody": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + } + } + }, + "ManagedGatewayConfigurationServiceStreamEventsBody": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + } + } + }, "MeteringDataTenantMeteringData": { "type": "object", "properties": { @@ -498787,54 +502714,7 @@ } }, "error": { - "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", - "type": "object", - "properties": { - "attributes": { - "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", - "type": "object" - }, - "cause": { - "description": "The error that caused this error.", - "$ref": "#/definitions/v3ErrorDetails" - }, - "code": { - "description": "The status code of the error.", - "type": "integer", - "format": "int64" - }, - "correlation_id": { - "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", - "type": "string" - }, - "details": { - "description": "The details of the error.", - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string" - } - }, - "additionalProperties": {} - } - }, - "message_format": { - "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", - "type": "string" - }, - "name": { - "description": "Name of the error.", - "type": "string" - }, - "namespace": { - "description": "Namespace of the error (typically the package name in The Things Stack).", - "type": "string" - } - } + "$ref": "#/definitions/v3ErrorDetails" } } }, @@ -502141,7 +506021,54 @@ "format": "date-time" }, "last_failed_attempt_details": { - "$ref": "#/definitions/v3ErrorDetails" + "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", + "type": "object", + "properties": { + "attributes": { + "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", + "type": "object" + }, + "cause": { + "description": "The error that caused this error.", + "$ref": "#/definitions/v3ErrorDetails" + }, + "code": { + "description": "The status code of the error.", + "type": "integer", + "format": "int64" + }, + "correlation_id": { + "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", + "type": "string" + }, + "details": { + "description": "The details of the error.", + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string" + } + }, + "additionalProperties": {} + } + }, + "message_format": { + "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", + "type": "string" + }, + "name": { + "description": "Name of the error.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the error (typically the package name in The Things Stack).", + "type": "string" + } + } } } } @@ -517332,6 +521259,7 @@ ] }, "v3CUPSRedirection": { + "description": "DEPRECATED: This message is deprecated and will be removed in a future version of The Things Stack.", "type": "object", "properties": { "auth_token": { @@ -517613,6 +521541,7 @@ } }, "cups_redirection": { + "description": "DEPRECATED: This message is deprecated and will be removed in a future version of The Things Stack.", "type": "object", "properties": { "auth_token": { @@ -585685,6 +589614,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -587579,386 +591511,392 @@ }, "model_id": { "type": "string" - } - } - } - } - } - } - }, - "v3GatewayRegistryUpdateBody": { - "type": "object", - "properties": { - "field_mask": { - "description": "The names of the gateway fields that should be updated.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the message that defines a gateway on the network.", - "type": "object", - "properties": { - "administrative_contact": { - "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", - "type": "object", - "properties": { - "organization_ids": { - "type": "object", - "properties": { - "organization_id": { - "description": "This ID shares namespace with user IDs.", - "type": "string" - } - } }, - "user_ids": { - "type": "object", - "properties": { - "email": { - "description": "Secondary identifier, which can only be used in specific requests.", - "type": "string" - }, - "user_id": { - "description": "This ID shares namespace with organization IDs.", - "type": "string" - } - } - } - } - }, - "alert_notification_profile_ids": { - "type": "object", - "properties": { - "profile_id": { - "type": "string" - } - } - }, - "antennas": { - "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.", - "type": "array", - "items": { - "description": "GatewayAntenna is the message that defines a gateway antenna.", - "type": "object", - "properties": { - "attributes": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "gain": { - "description": "Antenna gain relative to the gateway, in dBi.", - "type": "number", - "format": "float" - }, - "location": { - "type": "object", - "properties": { - "accuracy": { - "description": "The accuracy of the location (meters).", - "type": "integer", - "format": "int32" - }, - "altitude": { - "description": "The altitude (meters), where 0 is the mean sea level.", - "type": "integer", - "format": "int32" - }, - "latitude": { - "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.", - "type": "number", - "format": "double" - }, - "longitude": { - "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.", - "type": "number", - "format": "double" - }, - "source": { - "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.", - "type": "string", - "default": "SOURCE_UNKNOWN", - "enum": [ - "SOURCE_UNKNOWN", - "SOURCE_GPS", - "SOURCE_REGISTRY", - "SOURCE_IP_GEOLOCATION", - "SOURCE_WIFI_RSSI_GEOLOCATION", - "SOURCE_BT_RSSI_GEOLOCATION", - "SOURCE_LORA_RSSI_GEOLOCATION", - "SOURCE_LORA_TDOA_GEOLOCATION", - "SOURCE_COMBINED_GEOLOCATION" - ] - } - } - }, - "placement": { - "type": "string", - "default": "PLACEMENT_UNKNOWN", - "enum": [ - "PLACEMENT_UNKNOWN", - "INDOOR", - "OUTDOOR" - ] - } - } - } - }, - "attributes": { - "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "auto_update": { - "type": "boolean" - }, - "claim_authentication_code": { - "description": "Authentication code for claiming gateways.", - "type": "object", - "properties": { - "secret": { - "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.", - "type": "object", - "properties": { - "key_id": { - "description": "ID of the Key used to encrypt the secret.", - "type": "string" - }, - "value": { - "type": "string", - "format": "byte" - } - } - }, - "valid_from": { - "type": "string", - "format": "date-time" - }, - "valid_to": { - "type": "string", - "format": "date-time" - } - } - }, - "contact_info": { - "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.", - "type": "array", - "items": { - "type": "object", - "properties": { - "contact_method": { - "type": "string", - "default": "CONTACT_METHOD_OTHER", - "enum": [ - "CONTACT_METHOD_OTHER", - "CONTACT_METHOD_EMAIL", - "CONTACT_METHOD_PHONE" - ] - }, - "contact_type": { - "type": "string", - "default": "CONTACT_TYPE_OTHER", - "enum": [ - "CONTACT_TYPE_OTHER", - "CONTACT_TYPE_ABUSE", - "CONTACT_TYPE_BILLING", - "CONTACT_TYPE_TECHNICAL" - ] - }, - "public": { - "type": "boolean" - }, - "validated_at": { - "type": "string", - "format": "date-time" - }, - "value": { - "type": "string" - } - } - } - }, - "created_at": { - "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.", - "type": "string", - "format": "date-time" - }, - "deleted_at": { - "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.", - "type": "string", - "format": "date-time" - }, - "description": { - "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.", - "type": "string" - }, - "disable_packet_broker_forwarding": { - "type": "boolean" - }, - "downlink_path_constraint": { - "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.", - "type": "string", - "default": "DOWNLINK_PATH_CONSTRAINT_NONE", - "enum": [ - "DOWNLINK_PATH_CONSTRAINT_NONE", - "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER", - "DOWNLINK_PATH_CONSTRAINT_NEVER" - ] - }, - "enforce_duty_cycle": { - "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.", - "type": "boolean" - }, - "frequency_plan_id": { - "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.", - "type": "string" - }, - "frequency_plan_ids": { - "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.", - "type": "array", - "items": { - "type": "string" - } - }, - "gateway_server_address": { - "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.", - "type": "string" - }, - "ids": { - "description": "The identifiers of the gateway. These are public and can be seen by any authenticated user in the network.", - "type": "object", - "title": "The identifiers of the gateway. These are public and can be seen by any authenticated user in the network.", - "properties": { - "eui": { - "description": "Secondary identifier, which can only be used in specific requests.", - "type": "string", - "format": "string", - "example": "70B3D57ED000ABCD" - } - } - }, - "lbs_lns_secret": { - "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.", - "type": "object", - "properties": { - "key_id": { - "description": "ID of the Key used to encrypt the secret.", - "type": "string" - }, - "value": { - "type": "string", - "format": "byte" - } - } - }, - "location_public": { - "description": "The location of this gateway may be publicly displayed.", - "type": "boolean" - }, - "lrfhss": { - "description": "LR-FHSS gateway capabilities.", - "type": "object", - "properties": { - "supported": { - "description": "The gateway supports the LR-FHSS uplink channels.", - "type": "boolean" - } - } - }, - "name": { - "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.", - "type": "string" - }, - "require_authenticated_connection": { - "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.", - "type": "boolean" - }, - "schedule_anytime_delay": { - "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.", - "type": "string" - }, - "schedule_downlink_late": { - "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.", - "type": "boolean" - }, - "status_public": { - "description": "The status of this gateway may be publicly displayed.", - "type": "boolean" - }, - "target_cups_key": { - "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.", - "type": "object", - "properties": { - "key_id": { - "description": "ID of the Key used to encrypt the secret.", - "type": "string" - }, - "value": { - "type": "string", - "format": "byte" - } - } - }, - "target_cups_uri": { - "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.", - "type": "string" - }, - "technical_contact": { - "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", - "type": "object", - "properties": { - "organization_ids": { - "type": "object", - "properties": { - "organization_id": { - "description": "This ID shares namespace with user IDs.", - "type": "string" - } - } - }, - "user_ids": { - "type": "object", - "properties": { - "email": { - "description": "Secondary identifier, which can only be used in specific requests.", - "type": "string" - }, - "user_id": { - "description": "This ID shares namespace with organization IDs.", - "type": "string" - } - } - } - } - }, - "update_channel": { - "type": "string" - }, - "update_location_from_status": { - "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.", - "type": "boolean" - }, - "updated_at": { - "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.", - "type": "string", - "format": "date-time" - }, - "version_ids": { - "description": "Identifies an end device model with version information.", - "type": "object", - "properties": { - "brand_id": { - "type": "string" - }, - "firmware_version": { - "type": "string" - }, - "hardware_version": { - "type": "string" - }, - "model_id": { + "runtime_version": { + "type": "string" + } + } + } + } + } + } + }, + "v3GatewayRegistryUpdateBody": { + "type": "object", + "properties": { + "field_mask": { + "description": "The names of the gateway fields that should be updated.", + "type": "string" + }, + "gateway": { + "description": "Gateway is the message that defines a gateway on the network.", + "type": "object", + "properties": { + "administrative_contact": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + }, + "user_id": { + "description": "This ID shares namespace with organization IDs.", + "type": "string" + } + } + } + } + }, + "alert_notification_profile_ids": { + "type": "object", + "properties": { + "profile_id": { + "type": "string" + } + } + }, + "antennas": { + "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.", + "type": "array", + "items": { + "description": "GatewayAntenna is the message that defines a gateway antenna.", + "type": "object", + "properties": { + "attributes": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "gain": { + "description": "Antenna gain relative to the gateway, in dBi.", + "type": "number", + "format": "float" + }, + "location": { + "type": "object", + "properties": { + "accuracy": { + "description": "The accuracy of the location (meters).", + "type": "integer", + "format": "int32" + }, + "altitude": { + "description": "The altitude (meters), where 0 is the mean sea level.", + "type": "integer", + "format": "int32" + }, + "latitude": { + "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.", + "type": "number", + "format": "double" + }, + "longitude": { + "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.", + "type": "number", + "format": "double" + }, + "source": { + "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.", + "type": "string", + "default": "SOURCE_UNKNOWN", + "enum": [ + "SOURCE_UNKNOWN", + "SOURCE_GPS", + "SOURCE_REGISTRY", + "SOURCE_IP_GEOLOCATION", + "SOURCE_WIFI_RSSI_GEOLOCATION", + "SOURCE_BT_RSSI_GEOLOCATION", + "SOURCE_LORA_RSSI_GEOLOCATION", + "SOURCE_LORA_TDOA_GEOLOCATION", + "SOURCE_COMBINED_GEOLOCATION" + ] + } + } + }, + "placement": { + "type": "string", + "default": "PLACEMENT_UNKNOWN", + "enum": [ + "PLACEMENT_UNKNOWN", + "INDOOR", + "OUTDOOR" + ] + } + } + } + }, + "attributes": { + "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "auto_update": { + "type": "boolean" + }, + "claim_authentication_code": { + "description": "Authentication code for claiming gateways.", + "type": "object", + "properties": { + "secret": { + "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.", + "type": "object", + "properties": { + "key_id": { + "description": "ID of the Key used to encrypt the secret.", + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "valid_from": { + "type": "string", + "format": "date-time" + }, + "valid_to": { + "type": "string", + "format": "date-time" + } + } + }, + "contact_info": { + "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.", + "type": "array", + "items": { + "type": "object", + "properties": { + "contact_method": { + "type": "string", + "default": "CONTACT_METHOD_OTHER", + "enum": [ + "CONTACT_METHOD_OTHER", + "CONTACT_METHOD_EMAIL", + "CONTACT_METHOD_PHONE" + ] + }, + "contact_type": { + "type": "string", + "default": "CONTACT_TYPE_OTHER", + "enum": [ + "CONTACT_TYPE_OTHER", + "CONTACT_TYPE_ABUSE", + "CONTACT_TYPE_BILLING", + "CONTACT_TYPE_TECHNICAL" + ] + }, + "public": { + "type": "boolean" + }, + "validated_at": { + "type": "string", + "format": "date-time" + }, + "value": { + "type": "string" + } + } + } + }, + "created_at": { + "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.", + "type": "string", + "format": "date-time" + }, + "description": { + "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.", + "type": "string" + }, + "disable_packet_broker_forwarding": { + "type": "boolean" + }, + "downlink_path_constraint": { + "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.", + "type": "string", + "default": "DOWNLINK_PATH_CONSTRAINT_NONE", + "enum": [ + "DOWNLINK_PATH_CONSTRAINT_NONE", + "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER", + "DOWNLINK_PATH_CONSTRAINT_NEVER" + ] + }, + "enforce_duty_cycle": { + "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.", + "type": "boolean" + }, + "frequency_plan_id": { + "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.", + "type": "string" + }, + "frequency_plan_ids": { + "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.", + "type": "array", + "items": { + "type": "string" + } + }, + "gateway_server_address": { + "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.", + "type": "string" + }, + "ids": { + "description": "The identifiers of the gateway. These are public and can be seen by any authenticated user in the network.", + "type": "object", + "title": "The identifiers of the gateway. These are public and can be seen by any authenticated user in the network.", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + } + } + }, + "lbs_lns_secret": { + "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.", + "type": "object", + "properties": { + "key_id": { + "description": "ID of the Key used to encrypt the secret.", + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "location_public": { + "description": "The location of this gateway may be publicly displayed.", + "type": "boolean" + }, + "lrfhss": { + "description": "LR-FHSS gateway capabilities.", + "type": "object", + "properties": { + "supported": { + "description": "The gateway supports the LR-FHSS uplink channels.", + "type": "boolean" + } + } + }, + "name": { + "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.", + "type": "string" + }, + "require_authenticated_connection": { + "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.", + "type": "boolean" + }, + "schedule_anytime_delay": { + "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.", + "type": "string" + }, + "schedule_downlink_late": { + "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.", + "type": "boolean" + }, + "status_public": { + "description": "The status of this gateway may be publicly displayed.", + "type": "boolean" + }, + "target_cups_key": { + "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.", + "type": "object", + "properties": { + "key_id": { + "description": "ID of the Key used to encrypt the secret.", + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "target_cups_uri": { + "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.", + "type": "string" + }, + "technical_contact": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + }, + "user_id": { + "description": "This ID shares namespace with organization IDs.", + "type": "string" + } + } + } + } + }, + "update_channel": { + "type": "string" + }, + "update_location_from_status": { + "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.", + "type": "boolean" + }, + "updated_at": { + "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.", + "type": "string", + "format": "date-time" + }, + "version_ids": { + "description": "Identifies an end device model with version information.", + "type": "object", + "properties": { + "brand_id": { + "type": "string" + }, + "firmware_version": { + "type": "string" + }, + "hardware_version": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "runtime_version": { "type": "string" } } @@ -588153,6 +592091,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } }, @@ -588529,6 +592470,9 @@ }, "model_id": { "type": "string" + }, + "runtime_version": { + "type": "string" } } } @@ -601213,6 +605157,10 @@ "format": "string", "example": "70B3D57ED000ABCD" }, + "is_managed": { + "description": "Indicates whether the gateway is a managed gateway.\nIf true, when the gateway is successfully claimed, it can be managed with ManagedGatewayConfigurationService.", + "type": "boolean" + }, "supports_claiming": { "type": "boolean" } @@ -615926,6 +619874,16 @@ } } }, + "v3ListEndDevicesRequestFilter": { + "description": "Filter end devices by fields.", + "type": "object", + "properties": { + "updated_since": { + "type": "string", + "format": "date-time" + } + } + }, "v3ListFrequencyPlansResponse": { "type": "object", "properties": { @@ -615957,6 +619915,16 @@ } } }, + "v3ListGatewaysRequestFilter": { + "description": "Filter gateways by fields.", + "type": "object", + "properties": { + "updated_since": { + "type": "string", + "format": "date-time" + } + } + }, "v3ListNotificationsResponse": { "type": "object", "properties": { @@ -625112,6 +629080,1476 @@ "LORAWAN_R1" ] }, + "v3ManagedGateway": { + "type": "object", + "properties": { + "cellular_imei": { + "type": "string" + }, + "cellular_imsi": { + "type": "string" + }, + "ethernet_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "ethernet_profile_id": { + "type": "string" + }, + "ids": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + }, + "gateway_id": { + "type": "string" + } + } + }, + "version_ids": { + "description": "Identifies an end device model with version information.", + "type": "object", + "properties": { + "brand_id": { + "type": "string" + }, + "firmware_version": { + "type": "string" + }, + "hardware_version": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "runtime_version": { + "type": "string" + } + } + }, + "wifi_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "wifi_profile_id": { + "type": "string" + } + } + }, + "v3ManagedGatewayCellularBackhaul": { + "type": "object", + "properties": { + "network_interface": { + "type": "object", + "properties": { + "addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "dhcp_enabled": { + "type": "boolean" + }, + "status": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + } + } + }, + "operator": { + "type": "string" + }, + "rssi": { + "type": "number", + "format": "float" + } + } + }, + "v3ManagedGatewayConfigurationServiceUpdateBody": { + "type": "object", + "properties": { + "field_mask": { + "description": "The names of the gateway fields that should be updated.", + "type": "string" + }, + "gateway": { + "type": "object", + "properties": { + "cellular_imei": { + "type": "string" + }, + "cellular_imsi": { + "type": "string" + }, + "ethernet_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "ethernet_profile_id": { + "type": "string" + }, + "ids": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + } + } + }, + "version_ids": { + "description": "Identifies an end device model with version information.", + "type": "object", + "properties": { + "brand_id": { + "type": "string" + }, + "firmware_version": { + "type": "string" + }, + "hardware_version": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "runtime_version": { + "type": "string" + } + } + }, + "wifi_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "wifi_profile_id": { + "type": "string" + } + } + } + } + }, + "v3ManagedGatewayControllerConnection": { + "type": "object", + "properties": { + "network_interface_type": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_CELLULAR", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_WIFI", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_ETHERNET" + ] + } + } + }, + "v3ManagedGatewayEthernetBackhaul": { + "type": "object", + "properties": { + "network_interface": { + "type": "object", + "properties": { + "addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "dhcp_enabled": { + "type": "boolean" + }, + "status": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + } + } + } + } + }, + "v3ManagedGatewayEthernetProfile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + }, + "v3ManagedGatewayEthernetProfileConfigurationServiceCreateBody": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + } + }, + "v3ManagedGatewayEthernetProfileConfigurationServiceUpdateBody": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "field_mask": { + "description": "The names of the gateway fields that should be updated.", + "type": "string" + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + } + }, + "v3ManagedGatewayEthernetProfiles": { + "type": "object", + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + } + } + } + } + } + }, + "v3ManagedGatewayEventData": { + "type": "object", + "properties": { + "cellular_backhaul": { + "type": "object", + "properties": { + "network_interface": { + "type": "object", + "properties": { + "addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "dhcp_enabled": { + "type": "boolean" + }, + "status": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + } + } + }, + "operator": { + "type": "string" + }, + "rssi": { + "type": "number", + "format": "float" + } + } + }, + "controller_connection": { + "type": "object", + "properties": { + "network_interface_type": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_CELLULAR", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_WIFI", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_ETHERNET" + ] + } + } + }, + "entity": { + "type": "object", + "properties": { + "cellular_imei": { + "type": "string" + }, + "cellular_imsi": { + "type": "string" + }, + "ethernet_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "ethernet_profile_id": { + "type": "string" + }, + "ids": { + "type": "object", + "properties": { + "eui": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + }, + "gateway_id": { + "type": "string" + } + } + }, + "version_ids": { + "description": "Identifies an end device model with version information.", + "type": "object", + "properties": { + "brand_id": { + "type": "string" + }, + "firmware_version": { + "type": "string" + }, + "hardware_version": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "runtime_version": { + "type": "string" + } + } + }, + "wifi_mac_address": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "wifi_profile_id": { + "type": "string" + } + } + }, + "ethernet_backhaul": { + "type": "object", + "properties": { + "network_interface": { + "type": "object", + "properties": { + "addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "dhcp_enabled": { + "type": "boolean" + }, + "status": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + } + } + } + } + }, + "gateway_server_connection": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "network_interface_type": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_CELLULAR", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_WIFI", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_ETHERNET" + ] + } + } + }, + "location": { + "type": "object", + "properties": { + "accuracy": { + "description": "The accuracy of the location (meters).", + "type": "integer", + "format": "int32" + }, + "altitude": { + "description": "The altitude (meters), where 0 is the mean sea level.", + "type": "integer", + "format": "int32" + }, + "latitude": { + "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.", + "type": "number", + "format": "double" + }, + "longitude": { + "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.", + "type": "number", + "format": "double" + }, + "source": { + "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.", + "type": "string", + "default": "SOURCE_UNKNOWN", + "enum": [ + "SOURCE_UNKNOWN", + "SOURCE_GPS", + "SOURCE_REGISTRY", + "SOURCE_IP_GEOLOCATION", + "SOURCE_WIFI_RSSI_GEOLOCATION", + "SOURCE_BT_RSSI_GEOLOCATION", + "SOURCE_LORA_RSSI_GEOLOCATION", + "SOURCE_LORA_TDOA_GEOLOCATION", + "SOURCE_COMBINED_GEOLOCATION" + ] + } + } + }, + "system_status": { + "type": "object", + "properties": { + "cpu_temperature": { + "description": "CPU temperature (Celsius).", + "type": "number", + "format": "float" + } + } + }, + "wifi_backhaul": { + "type": "object", + "properties": { + "authentication_mode": { + "type": "string" + }, + "bssid": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "channel": { + "type": "integer", + "format": "int64" + }, + "network_interface": { + "type": "object", + "properties": { + "addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "dhcp_enabled": { + "type": "boolean" + }, + "status": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + } + } + }, + "rssi": { + "type": "number", + "format": "float" + }, + "ssid": { + "type": "string" + } + } + } + } + }, + "v3ManagedGatewayGatewayServerConnection": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "network_interface_type": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_CELLULAR", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_WIFI", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_ETHERNET" + ] + } + } + }, + "v3ManagedGatewayNetworkInterfaceAddresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "v3ManagedGatewayNetworkInterfaceInfo": { + "type": "object", + "properties": { + "addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "dhcp_enabled": { + "type": "boolean" + }, + "status": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + } + } + }, + "v3ManagedGatewayNetworkInterfaceStatus": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + }, + "v3ManagedGatewayNetworkInterfaceType": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_CELLULAR", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_WIFI", + "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_ETHERNET" + ] + }, + "v3ManagedGatewaySystemStatus": { + "type": "object", + "properties": { + "cpu_temperature": { + "description": "CPU temperature (Celsius).", + "type": "number", + "format": "float" + } + } + }, + "v3ManagedGatewayWiFiAccessPoint": { + "type": "object", + "properties": { + "authentication_mode": { + "type": "string" + }, + "bssid": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "channel": { + "type": "integer", + "format": "int64" + }, + "rssi": { + "type": "number", + "format": "float" + }, + "ssid": { + "type": "string" + } + } + }, + "v3ManagedGatewayWiFiAccessPoints": { + "type": "object", + "properties": { + "access_points": { + "type": "array", + "items": { + "type": "object", + "properties": { + "authentication_mode": { + "type": "string" + }, + "bssid": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "channel": { + "type": "integer", + "format": "int64" + }, + "rssi": { + "type": "number", + "format": "float" + }, + "ssid": { + "type": "string" + } + } + } + } + } + }, + "v3ManagedGatewayWiFiBackhaul": { + "type": "object", + "properties": { + "authentication_mode": { + "type": "string" + }, + "bssid": { + "type": "string", + "format": "string", + "example": "EC656E000100" + }, + "channel": { + "type": "integer", + "format": "int64" + }, + "network_interface": { + "type": "object", + "properties": { + "addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "dhcp_enabled": { + "type": "boolean" + }, + "status": { + "type": "string", + "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "enum": [ + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP", + "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED" + ] + } + } + }, + "rssi": { + "type": "number", + "format": "float" + }, + "ssid": { + "type": "string" + } + } + }, + "v3ManagedGatewayWiFiProfile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + }, + "v3ManagedGatewayWiFiProfileConfigurationServiceCreateBody": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + } + }, + "v3ManagedGatewayWiFiProfileConfigurationServiceUpdateBody": { + "type": "object", + "properties": { + "collaborator": { + "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.", + "type": "object", + "properties": { + "organization_ids": { + "type": "object", + "properties": { + "organization_id": { + "description": "This ID shares namespace with user IDs.", + "type": "string" + } + } + }, + "user_ids": { + "type": "object", + "properties": { + "email": { + "description": "Secondary identifier, which can only be used in specific requests.", + "type": "string" + } + } + } + } + }, + "field_mask": { + "description": "The names of the gateway fields that should be updated.", + "type": "string" + }, + "profile": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + } + }, + "v3ManagedGatewayWiFiProfiles": { + "type": "object", + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "network_interface_addresses": { + "type": "object", + "properties": { + "dns_servers": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "192.0.2.1" + ] + }, + "gateway": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + }, + "ip_addresses": { + "type": "string", + "items": { + "type": "string", + "format": "string" + }, + "example": [ + "192.0.2.0", + "2001:db8::1" + ] + }, + "subnet_mask": { + "type": "string", + "format": "string", + "example": "192.0.2.0" + } + } + }, + "password": { + "type": "string" + }, + "profile_id": { + "type": "string" + }, + "profile_name": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "ssid": { + "type": "string" + } + } + } + } + } + }, "v3MessagePayloadDecoder": { "type": "object", "properties": { @@ -660866,6 +666304,18 @@ "description": "Fetch configuration for gateways.", "name": "GatewayConfigurationService" }, + { + "description": "Configure managed gateways.", + "name": "ManagedGatewayConfigurationService" + }, + { + "description": "Configure WiFi profiles for managed gateways.", + "name": "ManagedGatewayWiFiProfileConfigurationService" + }, + { + "description": "Configure Ethernet profiles for managed gateways.", + "name": "ManagedGatewayEthernetProfileConfigurationService" + }, { "description": "Manage gateways.", "name": "GatewayRegistry" @@ -660874,10 +666324,6 @@ "description": "Manage access to gateways.", "name": "GatewayAccess" }, - { - "description": "Fetch gateway configuration.", - "name": "GatewayConfigurator" - }, { "description": "Manage access to batches of gateways.", "name": "GatewayBatchAccess" diff --git a/doc/data/commands/ttn-lw-cli.json b/doc/data/commands/ttn-lw-cli.json index b925ff4c17..79c0b06a7c 100644 --- a/doc/data/commands/ttn-lw-cli.json +++ b/doc/data/commands/ttn-lw-cli.json @@ -613,17 +613,9 @@ "short": "Claim a gateway (EXPERIMENTAL)", "path": "ttn-lw-cli gateways claim", "subCommands": { - "authorize": { - "short": "Authorize a gateway for claiming (EXPERIMENTAL)", - "path": "ttn-lw-cli gateways claim authorize" - }, "info": { "short": "Check if claiming is supported for the EUI (EXPERIMENTAL)", "path": "ttn-lw-cli gateways claim info" - }, - "unauthorize": { - "short": "Unauthorize a gateway for claiming (EXPERIMENTAL)", - "path": "ttn-lw-cli gateways claim unauthorize" } } },