diff --git a/doc/config/_default/config.toml b/doc/config/_default/config.toml index 7b0e777e60..0ed39b8336 100644 --- a/doc/config/_default/config.toml +++ b/doc/config/_default/config.toml @@ -23,7 +23,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.34.0" + version = "3.34.1" [markup] [markup.goldmark] diff --git a/doc/content/api/reference/grpc/end_device.md b/doc/content/api/reference/grpc/end_device.md index 08fce011ee..1a7b62a6f5 100644 --- a/doc/content/api/reference/grpc/end_device.md +++ b/doc/content/api/reference/grpc/end_device.md @@ -461,6 +461,8 @@ See the [EndDevice message](#message:EndDevice) and its sub-messages for additio {{< proto/message message="MACSettings" >}} +{{< proto/message message="MACSettingsProfileIdentifiers" >}} + {{< proto/message message="MACState" >}} {{< proto/message message="MACState.JoinAccept" >}} diff --git a/doc/content/enterprise/aws/ecs/changelog/index.md b/doc/content/enterprise/aws/ecs/changelog/index.md index b84556e7f6..044e13dd18 100644 --- a/doc/content/enterprise/aws/ecs/changelog/index.md +++ b/doc/content/enterprise/aws/ecs/changelog/index.md @@ -8,6 +8,16 @@ All meaningful changes to templates are documented in this file. ## Unreleased +## 3.34.1 + +- Resolve issues with certificate renewal in the certbot scheduled task to ensure proper execution. + +### `5-4-ecs-services` + +- Add more options to the memory parameters. + +## 3.34.0 + ### `4-2a-configuration` - Add `MetadataStorageCacheEnabled` parameter to enable caching of metadata storage in AS. @@ -30,6 +40,10 @@ All meaningful changes to templates are documented in this file. - Add GRPC methods rate limiting metric to prometheus rules. +### Upgrade procedure + +- After upgrading Timescale version to `2.15.2` it's necessary to run a SQL script [provided in the changelog](https://github.com/timescale/timescaledb/releases/tag/2.15.2). + ### Proxy - Add `NsMACSettingsProfileRegistry` grpc service and routes. diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_applications_search.md b/doc/content/ttn-lw-cli/ttn-lw-cli_applications_search.md index 2ab3cc705f..185e7e8480 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_applications_search.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_applications_search.md @@ -34,6 +34,7 @@ ttn-lw-cli applications search [flags] -h, --help help for search --id-contains string --join-server-address select the join_server_address field + --label-id-contains strings --label-ids select the label_ids field --limit uint32 --name select the name field diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_get.md b/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_get.md index 0c0225a0be..a8a2282822 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_get.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_get.md @@ -17,6 +17,7 @@ ttn-lw-cli applications webhooks get [application-id] [webhook-id] [flags] --all select all application webhook fields --application-id string --base-url select the base_url field + --custom-ca select the custom_ca field --downlink-ack select the downlink_ack field and all allowed sub-fields --downlink-ack.path select the downlink_ack.path field --downlink-api-key select the downlink_api_key field diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_list.md b/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_list.md index 847375c3b4..87bacc4383 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_list.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_list.md @@ -17,6 +17,7 @@ ttn-lw-cli applications webhooks list [application-id] [flags] --all select all application webhook fields --application-id string --base-url select the base_url field + --custom-ca select the custom_ca field --downlink-ack select the downlink_ack field and all allowed sub-fields --downlink-ack.path select the downlink_ack.path field --downlink-api-key select the downlink_api_key field diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_set.md b/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_set.md index 6486f256bb..1e95c5906e 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_set.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_applications_webhooks_set.md @@ -16,6 +16,7 @@ ttn-lw-cli applications webhooks set [application-id] [webhook-id] [flags] ``` --application-id string --base-url string + --custom-ca bytesHex --downlink-ack.path string --downlink-api-key string --downlink-failed.path string diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_clients_search.md b/doc/content/ttn-lw-cli/ttn-lw-cli_clients_search.md index b5bdb4804f..5ab26c46ed 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_clients_search.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_clients_search.md @@ -32,6 +32,7 @@ ttn-lw-cli clients search [flags] --grants select the grants field -h, --help help for search --id-contains string + --label-id-contains strings --label-ids select the label_ids field --limit uint32 --logout-redirect-uris select the logout_redirect_uris field diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_create.md b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_create.md index e811b1c20f..640b57da8e 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_create.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_create.md @@ -40,6 +40,7 @@ ttn-lw-cli end-devices create [application-id] [device-id] [flags] -h, --help help for create --join-eui string (hex) --join-server-address string + --label-ids strings --last-dev-nonce uint32 --last-dev-status-received-at timestamp --last-join-nonce uint32 @@ -52,6 +53,8 @@ ttn-lw-cli end-devices create [application-id] [device-id] [flags] --location.longitude float --lorawan-phy-version string allowed values: PHY_UNKNOWN, unknown, 1.0, 1.0.0, PHY_V1_0, TS001_V1_0, V1_0, 1.0.1, PHY_V1_0_1, TS001_V1_0_1, V1_0_1, 1.0.2, 1.0.2-a, PHY_V1_0_2_REV_A, RP001_V1_0_2, V1_0_2, V1_0_2_REV_A, 1.0.2-b, PHY_V1_0_2_REV_B, RP001_V1_0_2_REV_B, V1_0_2_REV_B, 1.1-a, 1.1.0-a, PHY_V1_1_REV_A, RP001_V1_1_REV_A, V1_1_REV_A, 1.1-b, 1.1.0-b, PHY_V1_1_REV_B, RP001_V1_1_REV_B, V1_1_REV_B, 1.0.3-a, PHY_V1_0_3_REV_A, RP001_V1_0_3_REV_A, V1_0_3_REV_A, RP002_V1_0_0, RP002_V1_0_1, RP002_V1_0_2, RP002_V1_0_3, RP002_V1_0_4 --lorawan-version string allowed values: MAC_UNKNOWN, UNKNOWN, unknown, 1.0, 1.0.0, MAC_V1_0, V1_0, 1.0.1, MAC_V1_0_1, V1_0_1, 1.0.2, MAC_V1_0_2, V1_0_2, 1.1, 1.1.0, MAC_V1_1, V1_1, 1.0.3, MAC_V1_0_3, V1_0_3, 1.0.4, MAC_V1_0_4, V1_0_4 + --mac-settings-profile-ids.application-ids.application-id string + --mac-settings-profile-ids.profile-id string --mac-settings.adr.mode.disabled --mac-settings.adr.mode.dynamic --mac-settings.adr.mode.dynamic.channel-steering.mode.disabled diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_get.md b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_get.md index 6da7995b44..b36d1ba559 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_get.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_get.md @@ -39,6 +39,7 @@ ttn-lw-cli end-devices get [application-id] [device-id] [flags] -h, --help help for get --join-eui string (hex) --join-server-address select the join_server_address field + --label-ids select the label_ids field --last-dev-nonce select the last_dev_nonce field --last-dev-status-received-at select the last_dev_status_received_at field --last-join-nonce select the last_join_nonce field @@ -50,6 +51,10 @@ ttn-lw-cli end-devices get [application-id] [device-id] [flags] --lorawan-phy-version select the lorawan_phy_version field --lorawan-version select the lorawan_version field --mac-settings select the mac_settings field and all allowed sub-fields + --mac-settings-profile-ids select the mac_settings_profile_ids field and all allowed sub-fields + --mac-settings-profile-ids.application-ids select the mac_settings_profile_ids.application_ids field and all allowed sub-fields + --mac-settings-profile-ids.application-ids.application-id select the mac_settings_profile_ids.application_ids.application_id field + --mac-settings-profile-ids.profile-id select the mac_settings_profile_ids.profile_id field --mac-settings.adr select the mac_settings.adr field and all allowed sub-fields --mac-settings.adr.mode.disabled select the mac_settings.adr.mode.disabled field and all allowed sub-fields --mac-settings.adr.mode.dynamic select the mac_settings.adr.mode.dynamic field and all allowed sub-fields 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 48968d0ba4..a79e80e428 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 @@ -27,6 +27,7 @@ ttn-lw-cli end-devices list [application-id] [flags] --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 + --label-ids select the label_ids field --last-seen-at select the last_seen_at field --limit uint32 maximum number of results to get (default 50) --locations select the locations field diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_reset.md b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_reset.md index 3d20ba2b6a..c4094fbaf4 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_reset.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_reset.md @@ -39,6 +39,7 @@ ttn-lw-cli end-devices reset [application-id] [device-id] [flags] -h, --help help for reset --join-eui string (hex) --join-server-address select the join_server_address field + --label-ids select the label_ids field --last-dev-nonce select the last_dev_nonce field --last-dev-status-received-at select the last_dev_status_received_at field --last-join-nonce select the last_join_nonce field @@ -50,6 +51,10 @@ ttn-lw-cli end-devices reset [application-id] [device-id] [flags] --lorawan-phy-version select the lorawan_phy_version field --lorawan-version select the lorawan_version field --mac-settings select the mac_settings field and all allowed sub-fields + --mac-settings-profile-ids select the mac_settings_profile_ids field and all allowed sub-fields + --mac-settings-profile-ids.application-ids select the mac_settings_profile_ids.application_ids field and all allowed sub-fields + --mac-settings-profile-ids.application-ids.application-id select the mac_settings_profile_ids.application_ids.application_id field + --mac-settings-profile-ids.profile-id select the mac_settings_profile_ids.profile_id field --mac-settings.adr select the mac_settings.adr field and all allowed sub-fields --mac-settings.adr.mode.disabled select the mac_settings.adr.mode.disabled field and all allowed sub-fields --mac-settings.adr.mode.dynamic select the mac_settings.adr.mode.dynamic field and all allowed sub-fields diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_search.md b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_search.md index 099c736f9d..4cabdae6a0 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_search.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_search.md @@ -43,6 +43,8 @@ ttn-lw-cli end-devices search [application-id] [flags] --id-contains string --join-eui-contains string --join-server-address select the join_server_address field + --label-id-contains strings + --label-ids select the label_ids field --last-dev-nonce select the last_dev_nonce field --last-dev-status-received-at select the last_dev_status_received_at field --last-join-nonce select the last_join_nonce field @@ -55,6 +57,10 @@ ttn-lw-cli end-devices search [application-id] [flags] --lorawan-phy-version select the lorawan_phy_version field --lorawan-version select the lorawan_version field --mac-settings select the mac_settings field and all allowed sub-fields + --mac-settings-profile-ids select the mac_settings_profile_ids field and all allowed sub-fields + --mac-settings-profile-ids.application-ids select the mac_settings_profile_ids.application_ids field and all allowed sub-fields + --mac-settings-profile-ids.application-ids.application-id select the mac_settings_profile_ids.application_ids.application_id field + --mac-settings-profile-ids.profile-id select the mac_settings_profile_ids.profile_id field --mac-settings.adr select the mac_settings.adr field and all allowed sub-fields --mac-settings.adr.mode.disabled select the mac_settings.adr.mode.disabled field and all allowed sub-fields --mac-settings.adr.mode.dynamic select the mac_settings.adr.mode.dynamic field and all allowed sub-fields diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_set.md b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_set.md index 53634443a1..b3804413d1 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_set.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_set.md @@ -38,6 +38,7 @@ ttn-lw-cli end-devices set [application-id] [device-id] [flags] -h, --help help for set --join-eui string (hex) --join-server-address string + --label-ids strings --last-dev-nonce uint32 --last-dev-status-received-at timestamp --last-join-nonce uint32 @@ -50,6 +51,8 @@ ttn-lw-cli end-devices set [application-id] [device-id] [flags] --location.longitude float --lorawan-phy-version string allowed values: PHY_UNKNOWN, unknown, 1.0, 1.0.0, PHY_V1_0, TS001_V1_0, V1_0, 1.0.1, PHY_V1_0_1, TS001_V1_0_1, V1_0_1, 1.0.2, 1.0.2-a, PHY_V1_0_2_REV_A, RP001_V1_0_2, V1_0_2, V1_0_2_REV_A, 1.0.2-b, PHY_V1_0_2_REV_B, RP001_V1_0_2_REV_B, V1_0_2_REV_B, 1.1-a, 1.1.0-a, PHY_V1_1_REV_A, RP001_V1_1_REV_A, V1_1_REV_A, 1.1-b, 1.1.0-b, PHY_V1_1_REV_B, RP001_V1_1_REV_B, V1_1_REV_B, 1.0.3-a, PHY_V1_0_3_REV_A, RP001_V1_0_3_REV_A, V1_0_3_REV_A, RP002_V1_0_0, RP002_V1_0_1, RP002_V1_0_2, RP002_V1_0_3, RP002_V1_0_4 --lorawan-version string allowed values: MAC_UNKNOWN, UNKNOWN, unknown, 1.0, 1.0.0, MAC_V1_0, V1_0, 1.0.1, MAC_V1_0_1, V1_0_1, 1.0.2, MAC_V1_0_2, V1_0_2, 1.1, 1.1.0, MAC_V1_1, V1_1, 1.0.3, MAC_V1_0_3, V1_0_3, 1.0.4, MAC_V1_0_4, V1_0_4 + --mac-settings-profile-ids.application-ids.application-id string + --mac-settings-profile-ids.profile-id string --mac-settings.adr.mode.disabled --mac-settings.adr.mode.dynamic --mac-settings.adr.mode.dynamic.channel-steering.mode.disabled 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 74a25ddb06..b22389a75b 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 @@ -47,6 +47,7 @@ ttn-lw-cli gateways search [flags] --gateway-server-address select the gateway_server_address field -h, --help help for search --id-contains string + --label-id-contains strings --label-ids select the label_ids field --lbs-lns-secret select the lbs_lns_secret field and all allowed sub-fields --lbs-lns-secret.key-id select the lbs_lns_secret.key_id field diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_templates_create.md b/doc/content/ttn-lw-cli/ttn-lw-cli_templates_create.md index d944e36d45..2e1309bbd7 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_templates_create.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_templates_create.md @@ -49,6 +49,7 @@ ttn-lw-cli templates create [flags] -h, --help help for create --join-eui --join-server-address select the join_server_address field + --label-ids select the label_ids field --last-dev-nonce select the last_dev_nonce field --last-dev-status-received-at select the last_dev_status_received_at field --last-join-nonce select the last_join_nonce field @@ -60,6 +61,10 @@ ttn-lw-cli templates create [flags] --lorawan-phy-version select the lorawan_phy_version field --lorawan-version select the lorawan_version field --mac-settings select the mac_settings field and all allowed sub-fields + --mac-settings-profile-ids select the mac_settings_profile_ids field and all allowed sub-fields + --mac-settings-profile-ids.application-ids select the mac_settings_profile_ids.application_ids field and all allowed sub-fields + --mac-settings-profile-ids.application-ids.application-id select the mac_settings_profile_ids.application_ids.application_id field + --mac-settings-profile-ids.profile-id select the mac_settings_profile_ids.profile_id field --mac-settings.adr select the mac_settings.adr field and all allowed sub-fields --mac-settings.adr.mode.disabled select the mac_settings.adr.mode.disabled field and all allowed sub-fields --mac-settings.adr.mode.dynamic select the mac_settings.adr.mode.dynamic field and all allowed sub-fields diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_templates_execute.md b/doc/content/ttn-lw-cli/ttn-lw-cli_templates_execute.md index e9e9acd96a..535d2960ce 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_templates_execute.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_templates_execute.md @@ -38,6 +38,7 @@ ttn-lw-cli templates execute [flags] --frequency-plan-id string -h, --help help for execute --join-server-address string + --label-ids strings --last-dev-nonce uint32 --last-dev-status-received-at timestamp --last-join-nonce uint32 @@ -46,6 +47,8 @@ ttn-lw-cli templates execute [flags] --last-seen-at timestamp --lorawan-phy-version string allowed values: PHY_UNKNOWN, unknown, 1.0, 1.0.0, PHY_V1_0, TS001_V1_0, V1_0, 1.0.1, PHY_V1_0_1, TS001_V1_0_1, V1_0_1, 1.0.2, 1.0.2-a, PHY_V1_0_2_REV_A, RP001_V1_0_2, V1_0_2, V1_0_2_REV_A, 1.0.2-b, PHY_V1_0_2_REV_B, RP001_V1_0_2_REV_B, V1_0_2_REV_B, 1.1-a, 1.1.0-a, PHY_V1_1_REV_A, RP001_V1_1_REV_A, V1_1_REV_A, 1.1-b, 1.1.0-b, PHY_V1_1_REV_B, RP001_V1_1_REV_B, V1_1_REV_B, 1.0.3-a, PHY_V1_0_3_REV_A, RP001_V1_0_3_REV_A, V1_0_3_REV_A, RP002_V1_0_0, RP002_V1_0_1, RP002_V1_0_2, RP002_V1_0_3, RP002_V1_0_4 --lorawan-version string allowed values: MAC_UNKNOWN, UNKNOWN, unknown, 1.0, 1.0.0, MAC_V1_0, V1_0, 1.0.1, MAC_V1_0_1, V1_0_1, 1.0.2, MAC_V1_0_2, V1_0_2, 1.1, 1.1.0, MAC_V1_1, V1_1, 1.0.3, MAC_V1_0_3, V1_0_3, 1.0.4, MAC_V1_0_4, V1_0_4 + --mac-settings-profile-ids.application-ids.application-id string + --mac-settings-profile-ids.profile-id string --mac-settings.adr.mode.disabled --mac-settings.adr.mode.dynamic --mac-settings.adr.mode.dynamic.channel-steering.mode.disabled diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_templates_extend.md b/doc/content/ttn-lw-cli/ttn-lw-cli_templates_extend.md index d5f3584f73..5527599c5b 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_templates_extend.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_templates_extend.md @@ -32,6 +32,7 @@ ttn-lw-cli templates extend [flags] --frequency-plan-id string -h, --help help for extend --join-server-address string + --label-ids strings --last-dev-nonce uint32 --last-dev-status-received-at timestamp --last-join-nonce uint32 @@ -40,6 +41,8 @@ ttn-lw-cli templates extend [flags] --last-seen-at timestamp --lorawan-phy-version string allowed values: PHY_UNKNOWN, unknown, 1.0, 1.0.0, PHY_V1_0, TS001_V1_0, V1_0, 1.0.1, PHY_V1_0_1, TS001_V1_0_1, V1_0_1, 1.0.2, 1.0.2-a, PHY_V1_0_2_REV_A, RP001_V1_0_2, V1_0_2, V1_0_2_REV_A, 1.0.2-b, PHY_V1_0_2_REV_B, RP001_V1_0_2_REV_B, V1_0_2_REV_B, 1.1-a, 1.1.0-a, PHY_V1_1_REV_A, RP001_V1_1_REV_A, V1_1_REV_A, 1.1-b, 1.1.0-b, PHY_V1_1_REV_B, RP001_V1_1_REV_B, V1_1_REV_B, 1.0.3-a, PHY_V1_0_3_REV_A, RP001_V1_0_3_REV_A, V1_0_3_REV_A, RP002_V1_0_0, RP002_V1_0_1, RP002_V1_0_2, RP002_V1_0_3, RP002_V1_0_4 --lorawan-version string allowed values: MAC_UNKNOWN, UNKNOWN, unknown, 1.0, 1.0.0, MAC_V1_0, V1_0, 1.0.1, MAC_V1_0_1, V1_0_1, 1.0.2, MAC_V1_0_2, V1_0_2, 1.1, 1.1.0, MAC_V1_1, V1_1, 1.0.3, MAC_V1_0_3, V1_0_3, 1.0.4, MAC_V1_0_4, V1_0_4 + --mac-settings-profile-ids.application-ids.application-id string + --mac-settings-profile-ids.profile-id string --mac-settings.adr.mode.disabled --mac-settings.adr.mode.dynamic --mac-settings.adr.mode.dynamic.channel-steering.mode.disabled diff --git a/doc/content/whats-new/3.34.1.md b/doc/content/whats-new/3.34.1.md new file mode 100644 index 0000000000..6c9947d423 --- /dev/null +++ b/doc/content/whats-new/3.34.1.md @@ -0,0 +1,38 @@ +--- +date: 2025-04-22T07:58:57Z +title: "3.34.1" +featured: + { + added: + [ + Support for Labels in the Console, + Show recently stored messages in application's message storage in the Console, + Support to associate/disassociate MAC settings profiles to end devices, + ], + changed: [Enable entity registry cache in GS to reduce IS calls], + fixed: [Live data button covers content on the page], + } +--- + +### Added + +- Support to associate/disassociate MAC settings profiles to end devices + - This feature is experimental and subject to change. +- Enable entity registry cache in GS to reduce IS calls. +- Add message storage panel in application overview in the Console. +- RPCs for tenant administrators to fetch gateway information by EUI and release a gateway EUI without deleting it. +- Implement pagination for NOC RPCs. + - The default value of the page limit is `1000`. + - The default limit is configurable via `noc.store.pagination.default-limit`. + +### Changed + +- Support wildcards in the supported hosts for TLS certificates obtained via ACME (`tls.acme.hosts`). +- Increase downlink capacity by raising duty-cycle budgets per priority. +- Show recently stored messages in application's message storage in the Console. + +### Fixed + +- Downlink scheduling conflicts by gateways that require up to 32.5 ms margin between downlink transmissions (this includes the UDP Packet Forwarder and other packet forwarders that behave similarly). +- Live data button covers content on the page. +- Overflow device info in device overview -> General information panel. diff --git a/doc/data/api/tti.lorawan.v3/messages/GetGatewayInfoForEUIRequest.yml b/doc/data/api/tti.lorawan.v3/messages/GetGatewayInfoForEUIRequest.yml new file mode 100644 index 0000000000..6480ca29c9 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/GetGatewayInfoForEUIRequest.yml @@ -0,0 +1,12 @@ +name: GetGatewayInfoForEUIRequest +fields: +- name: eui + type: bytes + rules: + len: 8 + default: "" +- name: field_mask + message: + package: google.protobuf + name: FieldMask + default: {} diff --git a/doc/data/api/tti.lorawan.v3/messages/GetGatewayInfoForEUIResponse.yml b/doc/data/api/tti.lorawan.v3/messages/GetGatewayInfoForEUIResponse.yml new file mode 100644 index 0000000000..313e4ae23b --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/GetGatewayInfoForEUIResponse.yml @@ -0,0 +1,11 @@ +name: GetGatewayInfoForEUIResponse +fields: +- name: tenant_ids + message: + name: TenantIdentifiers + default: {} +- name: gateway + message: + package: ttn.lorawan.v3 + name: Gateway + default: {} diff --git a/doc/data/api/tti.lorawan.v3/messages/Label.yml b/doc/data/api/tti.lorawan.v3/messages/Label.yml index 8d61f31f8b..6b7e5b4cc9 100644 --- a/doc/data/api/tti.lorawan.v3/messages/Label.yml +++ b/doc/data/api/tti.lorawan.v3/messages/Label.yml @@ -33,8 +33,8 @@ fields: - name: color type: string rules: - max_len: 6 - pattern: ([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$ + max_len: 7 + pattern: ^(#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})|)$ default: "" - name: entities message: diff --git a/doc/data/api/tti.lorawan.v3/messages/LabelAssociatedEntities.yml b/doc/data/api/tti.lorawan.v3/messages/LabelAssociatedEntities.yml index 733e1af862..86b05e5ed0 100644 --- a/doc/data/api/tti.lorawan.v3/messages/LabelAssociatedEntities.yml +++ b/doc/data/api/tti.lorawan.v3/messages/LabelAssociatedEntities.yml @@ -19,3 +19,9 @@ fields: package: ttn.lorawan.v3 name: GatewayIdentifiers default: [] +- name: clients + repeated: + message: + package: ttn.lorawan.v3 + name: ClientIdentifiers + default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/ReleaseGatewayEUIRequest.yml b/doc/data/api/tti.lorawan.v3/messages/ReleaseGatewayEUIRequest.yml new file mode 100644 index 0000000000..5606b47af7 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/ReleaseGatewayEUIRequest.yml @@ -0,0 +1,7 @@ +name: ReleaseGatewayEUIRequest +fields: +- name: eui + type: bytes + rules: + len: 8 + default: "" diff --git a/doc/data/api/tti.lorawan.v3/messages/TimeBucketQuery.yml b/doc/data/api/tti.lorawan.v3/messages/TimeBucketQuery.yml index e265acd796..ca50801fb6 100644 --- a/doc/data/api/tti.lorawan.v3/messages/TimeBucketQuery.yml +++ b/doc/data/api/tti.lorawan.v3/messages/TimeBucketQuery.yml @@ -22,3 +22,13 @@ fields: rules: gt: 0s default: 0s +- 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/tti.lorawan.v3/messages/TimeWindowQuery.yml b/doc/data/api/tti.lorawan.v3/messages/TimeWindowQuery.yml index 018e9ba4bc..4ada9d9d06 100644 --- a/doc/data/api/tti.lorawan.v3/messages/TimeWindowQuery.yml +++ b/doc/data/api/tti.lorawan.v3/messages/TimeWindowQuery.yml @@ -15,3 +15,13 @@ fields: rules: required: true default: "0001-01-01T00:00:00Z" +- 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/tti.lorawan.v3/services/TenantRegistry.yml b/doc/data/api/tti.lorawan.v3/services/TenantRegistry.yml index c0905f49e3..3afca0a9b3 100644 --- a/doc/data/api/tti.lorawan.v3/services/TenantRegistry.yml +++ b/doc/data/api/tti.lorawan.v3/services/TenantRegistry.yml @@ -82,3 +82,25 @@ methods: name: GetTenantIdentifiersForBillingIdentifiersRequest output: name: TenantIdentifiers + GetGatewayInfoForEUI: + name: GetGatewayInfoForEUI + comment: Get the tenant identifiers and gateway for the given EUI. + input: + name: GetGatewayInfoForEUIRequest + output: + name: GetGatewayInfoForEUIResponse + http: + - method: POST + path: /tenants/gateways/info + ReleaseGatewayEUI: + name: ReleaseGatewayEUI + comment: Release the EUI of the gateway. This does not delete the gateway but + removes the EUI. + input: + name: ReleaseGatewayEUIRequest + output: + package: google.protobuf + name: Empty + http: + - method: POST + path: /tenants/gateways/release-eui diff --git a/doc/data/api/ttn.lorawan.v3/messages/ApplicationWebhook.yml b/doc/data/api/ttn.lorawan.v3/messages/ApplicationWebhook.yml index 23a207f29a..20e8ac4caf 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/ApplicationWebhook.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/ApplicationWebhook.yml @@ -126,3 +126,10 @@ fields: downlinks from this end point. type: bool default: false +- name: custom_ca + comment: Custom CA certificate for the server where the webhooks are sent to. PEM + formatted. + type: bytes + rules: + max_len: 8192 + default: "" diff --git a/doc/data/api/ttn.lorawan.v3/messages/EndDevice.yml b/doc/data/api/ttn.lorawan.v3/messages/EndDevice.yml index 845b8b48cf..bb115d451c 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/EndDevice.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/EndDevice.yml @@ -210,8 +210,9 @@ fields: ignore_empty: true default: "" - name: mac_settings - comment: Settings for how the Network Server handles MAC layer for this device. - Stored in Network Server. + comment: |- + Settings for how the Network Server handles MAC layer for this device. Stored in Network Server. + Mutually exclusive with MAC settings profile. message: name: MACSettings default: {} @@ -398,3 +399,10 @@ fields: repeated: type: string default: [] +- name: mac_settings_profile_ids + comment: |- + MAC settings profile identifiers. + Mutually exclusive with MAC settings. + message: + name: MACSettingsProfileIdentifiers + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/MACSettingsProfile.yml b/doc/data/api/ttn.lorawan.v3/messages/MACSettingsProfile.yml index 06ee5cbf79..e5bef81e99 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/MACSettingsProfile.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/MACSettingsProfile.yml @@ -14,3 +14,7 @@ fields: rules: required: true default: {} +- name: end_devices_count + comment: Associated end devices counter. + type: uint32 + default: 0 diff --git a/doc/data/api/ttn.lorawan.v3/messages/SearchApplicationsRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/SearchApplicationsRequest.yml index 508aa9d4d1..87f078d8be 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/SearchApplicationsRequest.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/SearchApplicationsRequest.yml @@ -40,6 +40,15 @@ fields: rules: max_len: 50 default: {} +- name: label_id_contains + comment: Find applications where one of the label_ids contains this substring. + rules: + max_items: 10 + repeated: + type: string + rules: + max_len: 50 + default: [] - name: field_mask message: package: google.protobuf diff --git a/doc/data/api/ttn.lorawan.v3/messages/SearchClientsRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/SearchClientsRequest.yml index 18308a1151..acdba2ff9d 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/SearchClientsRequest.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/SearchClientsRequest.yml @@ -40,6 +40,15 @@ fields: rules: max_len: 50 default: {} +- name: label_id_contains + comment: Find OAuth clients where one of the label_ids contains this substring. + rules: + max_items: 10 + repeated: + type: string + rules: + max_len: 50 + default: [] - name: state comment: Find OAuth clients where the state is any of these states. rules: diff --git a/doc/data/api/ttn.lorawan.v3/messages/SearchEndDevicesRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/SearchEndDevicesRequest.yml index 27b6f2ad53..3576b6e20d 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/SearchEndDevicesRequest.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/SearchEndDevicesRequest.yml @@ -62,6 +62,15 @@ fields: rules: max_len: 8 default: "" +- name: label_id_contains + comment: Find end devices where one of the label_ids contains this substring. + rules: + max_items: 10 + repeated: + type: string + rules: + max_len: 50 + default: [] - name: field_mask message: package: google.protobuf diff --git a/doc/data/api/ttn.lorawan.v3/messages/SearchGatewaysRequest.yml b/doc/data/api/ttn.lorawan.v3/messages/SearchGatewaysRequest.yml index 8ce7da400d..80011cb485 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/SearchGatewaysRequest.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/SearchGatewaysRequest.yml @@ -39,6 +39,15 @@ fields: rules: max_len: 50 default: {} +- name: label_id_contains + comment: Find gateways where one of the label_ids contains this substring. + rules: + max_items: 10 + repeated: + type: string + rules: + max_len: 50 + default: [] - name: eui_contains comment: Find gateways where the (hexadecimal) EUI contains this substring. type: string diff --git a/doc/data/api/tts.swagger.json b/doc/data/api/tts.swagger.json index 26085938d9..b23cb386fe 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": "3.34.0" + "version": "3.34.1" }, "paths": { "/alerts/notifications/profiles": { @@ -6269,6 +6269,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -19098,6 +19115,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -32018,6 +32052,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -45298,6 +45349,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -58059,6 +58127,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -70865,6 +70950,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -83630,6 +83732,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -96469,6 +96588,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -114381,6 +114517,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -127146,6 +127299,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -139955,6 +140125,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -152720,6 +152907,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -165559,6 +165763,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -189802,6 +190023,11 @@ "type": "string", "format": "date-time" }, + "custom_ca": { + "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.", + "type": "string", + "format": "byte" + }, "downlink_ack": { "type": "object", "properties": { @@ -190173,6 +190399,11 @@ "type": "string", "format": "date-time" }, + "custom_ca": { + "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.", + "type": "string", + "format": "byte" + }, "downlink_ack": { "type": "object", "properties": { @@ -190477,6 +190708,11 @@ "type": "string", "format": "date-time" }, + "custom_ca": { + "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.", + "type": "string", + "format": "byte" + }, "downlink_ack": { "type": "object", "properties": { @@ -190567,7 +190803,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" + } + } } } } @@ -190680,6 +190963,11 @@ "type": "string", "format": "date-time" }, + "custom_ca": { + "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.", + "type": "string", + "format": "byte" + }, "downlink_ack": { "type": "object", "properties": { @@ -190990,6 +191278,11 @@ "type": "string", "format": "date-time" }, + "custom_ca": { + "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.", + "type": "string", + "format": "byte" + }, "downlink_ack": { "type": "object", "properties": { @@ -191080,7 +191373,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" + } + } } } } @@ -191193,6 +191533,11 @@ "type": "string", "format": "date-time" }, + "custom_ca": { + "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.", + "type": "string", + "format": "byte" + }, "downlink_ack": { "type": "object", "properties": { @@ -201779,6 +202124,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -215057,6 +215419,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -229458,6 +229837,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -242734,6 +243130,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -256334,6 +256747,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -281276,6 +281706,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -294368,6 +294815,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -307133,6 +307597,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -319942,6 +320423,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -332707,6 +333205,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -345546,6 +346061,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -356741,6 +357273,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -356893,6 +357436,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -357003,6 +357557,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -357164,6 +357729,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -357269,6 +357845,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -357429,6 +358016,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -357623,6 +358221,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -357731,6 +358339,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -357839,6 +358457,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -357947,6 +358575,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -358050,6 +358688,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -358174,6 +358822,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -358280,6 +358938,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -358379,6 +359047,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -358469,6 +359147,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -358571,6 +359259,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -358684,6 +359382,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -358832,6 +359540,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -358953,6 +359671,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -359034,6 +359762,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -359235,6 +359973,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -359372,6 +360120,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -359509,6 +360267,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -359646,6 +360414,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -359781,6 +360559,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -359895,6 +360683,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -360026,6 +360824,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -360099,6 +360907,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -360220,6 +361038,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -360327,6 +361155,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -360479,6 +361317,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -360595,6 +361443,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -360711,6 +361569,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -360827,6 +361695,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -360941,6 +361819,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -361058,6 +361946,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -361182,6 +362080,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -361291,6 +362199,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -361420,6 +362338,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -361502,6 +362430,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -361592,6 +362530,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -361713,6 +362661,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -362053,6 +363011,11 @@ "items": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": { @@ -365409,6 +366372,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -378174,6 +379154,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -390983,6 +391980,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -403748,6 +404762,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -416587,6 +417618,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -429436,6 +430484,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -443050,6 +444115,11 @@ "type": "object", "title": "The MAC settings profile to create.", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "description": "Profile identifiers.", "type": "object", @@ -444585,6 +445655,11 @@ "mac_settings_profile": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": { @@ -446180,6 +447255,11 @@ "mac_settings_profile": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": { @@ -447771,6 +448851,11 @@ "mac_settings_profile": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": { @@ -449319,6 +450404,11 @@ "mac_settings_profile": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": { @@ -463808,6 +464898,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -476822,6 +477929,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -489663,6 +490787,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -501012,306 +502153,326 @@ "in": "query" }, { - "type": "string", - "name": "field_mask", - "in": "query" - }, - { - "type": "string", - "description": "Order the results by this field path (must be present in the field mask).\nDefault ordering is by ID. Prepend with a minus (-) to reverse the order.", - "name": "order", - "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" - }, - { - "type": "boolean", - "description": "Only return recently deleted applications.", - "name": "deleted", - "in": "query" - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "applications": { - "type": "array", - "items": { - "description": "Application is the message that defines an Application in 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" - } - } - } - } - }, - "application_server_address": { - "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". 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" - }, - "attributes": { - "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "contact_info": { - "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\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 application 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 application 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 application.", - "type": "string" - }, - "dev_eui_counter": { - "type": "integer", - "format": "int64" - }, - "end_device_limit": { - "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.", - "type": "string", - "format": "uint64" - }, - "ids": { - "type": "object", - "properties": { - "application_id": { - "type": "string" - } - } - }, - "join_server_address": { - "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". 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" - }, - "label_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "The name of the application.", - "type": "string" - }, - "network_server_address": { - "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". 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" - }, - "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" - } - } - } - } - }, - "updated_at": { - "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - }, - "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" - } - } - } - } - } - } - }, - "/search/applications/{application_ids.application_id}/devices": { - "get": { - "tags": [ - "EndDeviceRegistrySearch" - ], - "summary": "Search for end devices in the given application that match the conditions specified in the request.", - "operationId": "EndDeviceRegistrySearch_SearchEndDevices", - "parameters": [ - { - "type": "string", - "name": "application_ids.application_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Find end devices where the ID, name, description or EUI contains this substring.", - "name": "query", - "in": "query" - }, - { - "type": "string", - "description": "Find end devices where the ID contains this substring.", - "name": "id_contains", - "in": "query" - }, - { - "type": "string", - "description": "Find end devices where the name contains this substring.", - "name": "name_contains", - "in": "query" - }, - { - "type": "string", - "description": "Find end devices where the description contains this substring.", - "name": "description_contains", - "in": "query" - }, - { - "type": "string", - "description": "This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18", - "name": "attributes_contain[string]", - "in": "query" - }, - { - "type": "string", - "description": "Find end devices where the (hexadecimal) DevEUI contains this substring.", - "name": "dev_eui_contains", - "in": "query" - }, - { - "type": "string", - "description": "Find end devices where the (hexadecimal) JoinEUI contains this substring.", - "name": "join_eui_contains", - "in": "query" - }, - { - "type": "string", - "description": "Find end devices where the (hexadecimal) DevAddr contains this substring.", - "name": "dev_addr_contains", + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "description": "Find applications where one of the label_ids contains this substring.", + "name": "label_id_contains", + "in": "query" + }, + { + "type": "string", + "name": "field_mask", + "in": "query" + }, + { + "type": "string", + "description": "Order the results by this field path (must be present in the field mask).\nDefault ordering is by ID. Prepend with a minus (-) to reverse the order.", + "name": "order", + "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" + }, + { + "type": "boolean", + "description": "Only return recently deleted applications.", + "name": "deleted", + "in": "query" + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "applications": { + "type": "array", + "items": { + "description": "Application is the message that defines an Application in 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" + } + } + } + } + }, + "application_server_address": { + "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". 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" + }, + "attributes": { + "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "contact_info": { + "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\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 application 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 application 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 application.", + "type": "string" + }, + "dev_eui_counter": { + "type": "integer", + "format": "int64" + }, + "end_device_limit": { + "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.", + "type": "string", + "format": "uint64" + }, + "ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "join_server_address": { + "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". 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" + }, + "label_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "description": "The name of the application.", + "type": "string" + }, + "network_server_address": { + "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". 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" + }, + "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" + } + } + } + } + }, + "updated_at": { + "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.", + "type": "string", + "format": "date-time" + } + } + } + } + } + } + }, + "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" + } + } + } + } + } + } + }, + "/search/applications/{application_ids.application_id}/devices": { + "get": { + "tags": [ + "EndDeviceRegistrySearch" + ], + "summary": "Search for end devices in the given application that match the conditions specified in the request.", + "operationId": "EndDeviceRegistrySearch_SearchEndDevices", + "parameters": [ + { + "type": "string", + "name": "application_ids.application_id", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Find end devices where the ID, name, description or EUI contains this substring.", + "name": "query", + "in": "query" + }, + { + "type": "string", + "description": "Find end devices where the ID contains this substring.", + "name": "id_contains", + "in": "query" + }, + { + "type": "string", + "description": "Find end devices where the name contains this substring.", + "name": "name_contains", + "in": "query" + }, + { + "type": "string", + "description": "Find end devices where the description contains this substring.", + "name": "description_contains", + "in": "query" + }, + { + "type": "string", + "description": "This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18", + "name": "attributes_contain[string]", + "in": "query" + }, + { + "type": "string", + "description": "Find end devices where the (hexadecimal) DevEUI contains this substring.", + "name": "dev_eui_contains", + "in": "query" + }, + { + "type": "string", + "description": "Find end devices where the (hexadecimal) JoinEUI contains this substring.", + "name": "join_eui_contains", + "in": "query" + }, + { + "type": "string", + "description": "Find end devices where the (hexadecimal) DevAddr contains this substring.", + "name": "dev_addr_contains", + "in": "query" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "description": "Find end devices where one of the label_ids contains this substring.", + "name": "label_id_contains", "in": "query" }, { @@ -503129,6 +504290,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -514177,6 +515355,16 @@ "name": "attributes_contain[string]", "in": "query" }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "description": "Find OAuth clients where one of the label_ids contains this substring.", + "name": "label_id_contains", + "in": "query" + }, { "type": "array", "items": { @@ -514618,6 +515806,16 @@ "name": "attributes_contain[string]", "in": "query" }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "description": "Find gateways where one of the label_ids contains this substring.", + "name": "label_id_contains", + "in": "query" + }, { "type": "string", "description": "Find gateways where the (hexadecimal) EUI contains this substring.", @@ -515171,6 +516369,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -520095,12 +521304,13 @@ } } }, - "/tenants/registry-totals": { + "/tenants/gateways/info": { "post": { "tags": [ "TenantRegistry" ], - "operationId": "TenantRegistry_BatchGetRegistryTotals", + "summary": "Get the tenant identifiers and gateway for the given EUI.", + "operationId": "TenantRegistry_GetGatewayInfoForEUI", "parameters": [ { "name": "body", @@ -520109,19 +521319,13 @@ "schema": { "type": "object", "properties": { + "eui": { + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + }, "field_mask": { "type": "string" - }, - "tenant_ids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "tenant_id": { - "type": "string" - } - } - } } } } @@ -520133,49 +521337,577 @@ "schema": { "type": "object", "properties": { - "totals": { - "type": "array", - "items": { - "type": "object", - "properties": { - "tenant_ids": { - "type": "object", - "properties": { - "tenant_id": { - "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" + } } } - }, - "totals": { + } + }, + "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": { - "activated_end_devices": { - "type": "string", - "format": "uint64" + "attributes": { + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "applications": { - "type": "string", - "format": "uint64" + "gain": { + "description": "Antenna gain relative to the gateway, in dBi.", + "type": "number", + "format": "float" }, - "clients": { - "type": "string", - "format": "uint64" + "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" + ] + } + } }, - "end_devices": { + "placement": { "type": "string", - "format": "uint64" - }, - "gateways": { + "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", - "format": "uint64" + "default": "CONTACT_METHOD_OTHER", + "enum": [ + "CONTACT_METHOD_OTHER", + "CONTACT_METHOD_EMAIL", + "CONTACT_METHOD_PHONE" + ] }, - "organizations": { + "contact_type": { "type": "string", - "format": "uint64" + "default": "CONTACT_TYPE_OTHER", + "enum": [ + "CONTACT_TYPE_OTHER", + "CONTACT_TYPE_ABUSE", + "CONTACT_TYPE_BILLING", + "CONTACT_TYPE_TECHNICAL" + ] }, - "users": { + "public": { + "type": "boolean" + }, + "validated_at": { "type": "string", - "format": "uint64" + "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": { + "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" + } + } + }, + "label_ids": { + "type": "array", + "title": "next: 34", + "items": { + "type": "string" + } + }, + "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" + } + } + } + } + }, + "tenant_ids": { + "type": "object", + "properties": { + "tenant_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" + } + } + } + } + } + } + }, + "/tenants/gateways/release-eui": { + "post": { + "description": "This does not delete the gateway but removes the EUI.", + "tags": [ + "TenantRegistry" + ], + "summary": "Release the EUI of the gateway.", + "operationId": "TenantRegistry_ReleaseGatewayEUI", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "eui": { + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + } + } + } + } + ], + "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" + } + } + } + } + } + } + }, + "/tenants/registry-totals": { + "post": { + "tags": [ + "TenantRegistry" + ], + "operationId": "TenantRegistry_BatchGetRegistryTotals", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "field_mask": { + "type": "string" + }, + "tenant_ids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tenant_id": { + "type": "string" + } + } + } + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "totals": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tenant_ids": { + "type": "object", + "properties": { + "tenant_id": { + "type": "string" + } + } + }, + "totals": { + "type": "object", + "properties": { + "activated_end_devices": { + "type": "string", + "format": "uint64" + }, + "applications": { + "type": "string", + "format": "uint64" + }, + "clients": { + "type": "string", + "format": "uint64" + }, + "end_devices": { + "type": "string", + "format": "uint64" + }, + "gateways": { + "type": "string", + "format": "uint64" + }, + "organizations": { + "type": "string", + "format": "uint64" + }, + "users": { + "type": "string", + "format": "uint64" } } } @@ -539287,7 +541019,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" + } + } } } }, @@ -544149,6 +545928,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544175,6 +545964,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544201,6 +546000,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544227,6 +546036,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544250,6 +546069,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544276,6 +546105,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544299,6 +546138,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544322,6 +546171,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544348,6 +546207,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544371,6 +546240,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544397,6 +546276,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544446,6 +546335,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544495,6 +546394,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544544,6 +546453,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544593,6 +546512,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544642,6 +546571,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544691,6 +546630,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544740,6 +546689,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544774,6 +546733,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544808,6 +546777,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544842,6 +546821,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544892,6 +546881,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544928,6 +546927,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544962,6 +546971,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -544997,6 +547016,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -545033,6 +547062,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -545064,6 +547103,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -547934,6 +549983,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -560101,6 +562161,11 @@ "type": "string", "format": "date-time" }, + "custom_ca": { + "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.", + "type": "string", + "format": "byte" + }, "downlink_ack": { "type": "object", "properties": { @@ -560451,7 +562516,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" + } + } } } } @@ -560507,6 +562619,11 @@ "type": "string", "format": "date-time" }, + "custom_ca": { + "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.", + "type": "string", + "format": "byte" + }, "downlink_ack": { "type": "object", "properties": { @@ -560597,7 +562714,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" + } + } } } } @@ -561112,6 +563276,11 @@ "type": "string", "format": "date-time" }, + "custom_ca": { + "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.", + "type": "string", + "format": "byte" + }, "downlink_ack": { "type": "object", "properties": { @@ -563548,6 +565717,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -579194,6 +581380,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -579285,6 +581482,11 @@ "mac_settings_profile": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": { @@ -586252,6 +588454,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -599433,6 +601652,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -612223,6 +614459,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -624986,6 +627239,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -637816,6 +640086,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -652804,6 +655091,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -655108,6 +657405,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -666471,6 +668785,415 @@ } } }, + "v3GetGatewayInfoForEUIRequest": { + "type": "object", + "properties": { + "eui": { + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + }, + "field_mask": { + "type": "string" + } + } + }, + "v3GetGatewayInfoForEUIResponse": { + "type": "object", + "properties": { + "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": { + "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" + } + } + }, + "label_ids": { + "type": "array", + "title": "next: 34", + "items": { + "type": "string" + } + }, + "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" + } + } + } + } + }, + "tenant_ids": { + "type": "object", + "properties": { + "tenant_id": { + "type": "string" + } + } + } + } + }, "v3GetInfoByGatewayEUIRequest": { "type": "object", "properties": { @@ -666818,6 +669541,11 @@ "mac_settings_profile": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": { @@ -671399,6 +674127,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -682451,6 +685196,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -682550,6 +685306,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -682655,6 +685422,17 @@ } } }, + "clients": { + "type": "array", + "items": { + "type": "object", + "properties": { + "client_id": { + "type": "string" + } + } + } + }, "end_devices": { "type": "array", "items": { @@ -683722,6 +686500,11 @@ "items": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": { @@ -688980,6 +691763,11 @@ "v3MACSettingsProfile": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": { @@ -699888,6 +702676,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -710875,6 +713680,11 @@ "type": "object", "title": "The MAC settings profile to create.", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "description": "Profile identifiers.", "type": "object", @@ -712409,6 +715219,11 @@ "mac_settings_profile": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": { @@ -718741,6 +721556,23 @@ } } }, + "mac_settings_profile_ids": { + "type": "object", + "properties": { + "application_ids": { + "type": "object", + "properties": { + "application_id": { + "type": "string" + } + } + }, + "profile_id": { + "description": "Profile ID.", + "type": "string" + } + } + }, "mac_state": { "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.", "type": "object", @@ -730505,6 +733337,16 @@ } } }, + "v3ReleaseGatewayEUIRequest": { + "type": "object", + "properties": { + "eui": { + "type": "string", + "format": "string", + "example": "70B3D57ED000ABCD" + } + } + }, "v3Right": { "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.", "type": "string", @@ -734706,6 +737548,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -734720,6 +737572,16 @@ "type": "string", "format": "date-time" }, + "limit": { + "description": "Limit the number of results per page.", + "type": "integer", + "format": "int64" + }, + "page": { + "description": "Page number for pagination. 0 is interpreted as 1.", + "type": "integer", + "format": "int64" + }, "to": { "type": "string", "format": "date-time" @@ -735663,6 +738525,11 @@ "mac_settings_profile": { "type": "object", "properties": { + "end_devices_count": { + "description": "Associated end devices counter.", + "type": "integer", + "format": "int64" + }, "ids": { "type": "object", "properties": {