From 4e78b829efcd5b3e5459ad241457d889f2cada11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nejra=20Selimovi=C4=87?= Date: Sun, 19 Feb 2023 18:40:50 +0100 Subject: [PATCH] doc: Add v3.24.0 release docs (#1036) --- doc/config/_default/config.toml | 2 +- .../aws/ecs/changelog/index.md | 59 +++++ doc/content/reference/api/end_device.md | 2 + .../api/network_operations_center.md | 6 - .../ttn-lw-cli_applications_storage_get.md | 6 - .../ttn-lw-cli_end-devices_create.md | 3 +- .../ttn-lw-cli/ttn-lw-cli_end-devices_get.md | 2 + .../ttn-lw-cli/ttn-lw-cli_end-devices_list.md | 2 + .../ttn-lw-cli_end-devices_reset.md | 2 + .../ttn-lw-cli_end-devices_search.md | 2 + .../ttn-lw-cli/ttn-lw-cli_end-devices_set.md | 3 +- .../ttn-lw-cli_end-devices_storage_get.md | 6 - .../ttn-lw-cli_simulate_application-uplink.md | 49 ++--- .../ttn-lw-cli/ttn-lw-cli_templates_create.md | 2 + .../ttn-lw-cli_templates_execute.md | 3 +- .../ttn-lw-cli/ttn-lw-cli_templates_extend.md | 3 +- .../ttn-lw-cli_templates_from-data.md | 19 +- doc/content/ttn-lw-cli/ttn-lw-cli_tenants.md | 1 + ...get-identifiers-for-billing-identifiers.md | 60 +++++ doc/content/whats-new/3.24.0.md | 32 +++ .../ApplicationEndDeviceStatistic.yml | 27 +++ .../ApplicationEndDeviceStatistics.yml | 8 + .../messages/ApplicationGatewaysSeen.yml | 7 + .../messages/ApplicationTimeBucketQuery.yml | 17 ++ .../messages/ApplicationTimeWindowQuery.yml | 16 ++ .../messages/ApplicationsActiveMetrics.yml | 9 + .../messages/ApplicationsStatistic.yml | 14 ++ .../messages/ApplicationsStatistics.yml | 8 + .../BatchGetTenantRegistryTotalsRequest.yml | 12 + .../BatchGetTenantRegistryTotalsResponse.yml | 7 + .../messages/BatchTenantRegistryTotals.yml | 10 + ...ormance.yml => ChannelLoRaPerformance.yml} | 2 +- ...Utilization.yml => ChannelUtilization.yml} | 2 +- ...rmance.yml => ChannelsLoRaPerformance.yml} | 4 +- ...tilization.yml => ChannelsUtilization.yml} | 4 +- ...TimeBucket.yml => ConnectedTimeBucket.yml} | 4 +- .../messages/ConnectedTimeBuckets.yml | 18 ++ .../messages/DataRatePacketCount.yml | 16 ++ .../messages/DataRatesPacketCount.yml | 7 + .../messages/EndDeviceTimeBucketQuery.yml | 17 ++ .../messages/EndDeviceTimeWindowQuery.yml | 16 ++ .../messages/EndDevicesActiveMetrics.yml | 9 + .../messages/EndDevicesStatistic.yml | 21 ++ .../messages/EndDevicesStatistics.yml | 8 + .../messages/GatewayStatistics.yml | 13 ++ ...ysActive.yml => GatewaysActiveMetrics.yml} | 2 +- .../messages/GatewaysConnectedTimeBuckets.yml | 8 - ...tErrorRatesTimeBuckets.PacketErrorRate.yml | 12 + .../messages/PacketErrorRatesTimeBuckets.yml | 7 + doc/data/api/tti.lorawan.v3/services/Noc.yml | 205 +++++++++++++++++- .../services/TenantRegistry.yml | 9 + .../api/ttn.lorawan.v3/messages/EndDevice.yml | 11 + .../messages/EndDeviceVersionIdentifiers.yml | 15 -- .../LoRaAllianceProfileIdentifiers.yml | 10 + doc/data/commands/ttn-lw-cli.json | 4 + 55 files changed, 720 insertions(+), 103 deletions(-) create mode 100644 doc/content/ttn-lw-cli/ttn-lw-cli_tenants_get-identifiers-for-billing-identifiers.md create mode 100644 doc/content/whats-new/3.24.0.md create mode 100644 doc/data/api/tti.lorawan.v3/messages/ApplicationEndDeviceStatistic.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/ApplicationEndDeviceStatistics.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/ApplicationGatewaysSeen.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/ApplicationTimeBucketQuery.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/ApplicationTimeWindowQuery.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/ApplicationsActiveMetrics.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/ApplicationsStatistic.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/ApplicationsStatistics.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/BatchGetTenantRegistryTotalsRequest.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/BatchGetTenantRegistryTotalsResponse.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/BatchTenantRegistryTotals.yml rename doc/data/api/tti.lorawan.v3/messages/{GatewayChannelLoRaPerformance.yml => ChannelLoRaPerformance.yml} (91%) rename doc/data/api/tti.lorawan.v3/messages/{GatewayChannelUtilization.yml => ChannelUtilization.yml} (91%) rename doc/data/api/tti.lorawan.v3/messages/{GatewayChannelsLoRaPerformance.yml => ChannelsLoRaPerformance.yml} (56%) rename doc/data/api/tti.lorawan.v3/messages/{GatewayChannelsUtilization.yml => ChannelsUtilization.yml} (58%) rename doc/data/api/tti.lorawan.v3/messages/{GatewaysConnectedTimeBucket.yml => ConnectedTimeBucket.yml} (67%) create mode 100644 doc/data/api/tti.lorawan.v3/messages/ConnectedTimeBuckets.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/DataRatePacketCount.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/DataRatesPacketCount.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/EndDeviceTimeBucketQuery.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/EndDeviceTimeWindowQuery.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/EndDevicesActiveMetrics.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/EndDevicesStatistic.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/EndDevicesStatistics.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/GatewayStatistics.yml rename doc/data/api/tti.lorawan.v3/messages/{GatewaysActive.yml => GatewaysActiveMetrics.yml} (85%) delete mode 100644 doc/data/api/tti.lorawan.v3/messages/GatewaysConnectedTimeBuckets.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/PacketErrorRatesTimeBuckets.PacketErrorRate.yml create mode 100644 doc/data/api/tti.lorawan.v3/messages/PacketErrorRatesTimeBuckets.yml create mode 100644 doc/data/api/ttn.lorawan.v3/messages/LoRaAllianceProfileIdentifiers.yml diff --git a/doc/config/_default/config.toml b/doc/config/_default/config.toml index 4cbc40efba..767498e396 100644 --- a/doc/config/_default/config.toml +++ b/doc/config/_default/config.toml @@ -24,7 +24,7 @@ pygmentsUseClasses = true github_repository = "https://github.com/TheThingsIndustries/lorawan-stack-docs" github_repository_edit = "https://github.com/TheThingsIndustries/lorawan-stack-docs/blob/master/doc/content" tts_github_repository = "https://github.com/TheThingsNetwork/lorawan-stack" - version = "3.23.2" + version = "3.24.0" [markup] [markup.goldmark] diff --git a/doc/content/getting-started/aws/ecs/changelog/index.md b/doc/content/getting-started/aws/ecs/changelog/index.md index 7e66929b79..3e40e44412 100644 --- a/doc/content/getting-started/aws/ecs/changelog/index.md +++ b/doc/content/getting-started/aws/ecs/changelog/index.md @@ -8,6 +8,65 @@ All meaningful changes to templates are documented in this file. ## Unreleased +## 3.24.0 + +### ECS templates + +- Support for TLS mutual authentication terminated by The Things Stack has been removed. TLS authentication is now only terminated by the Network Load Balancer or Envoy Proxy. +- Support for LoRaWAN Backend Interfaces interoperability with the Join Server has been removed. +- Crypto Server deployment has been removed. + +### Upgrade procedure + +- As this version upgrade removes certain resources, the standard upgrade procedure which follows the template numbering order cannot be followed directly. +- The `5-7a-certs-le` template needs to be upgraded first. +- The `5-3a-ecs-is-service` template needs to be upgraded next, and have `InteropEnabled` set to `disabled`. The value may be enabled again after every other template has been upgraded. +- The standard upgrade procedure can commence after these two templates have been upgraded. + +### `3-2-load-balancer-rules` + +- Changed `InteropEnabled` to a boolean since TLS mutual authentication is no longer terminated by The Things Stack. + - If you were using `server-authentication` or `mutual-authentication`, select `true`; + - If you were using `disabled`, select `false`. + +### `4-1-secrets` + +- Removed `InteropTLSSecret` and output `InteropTLSSecretID`. + +### `4-2a-configuration` + +- Removed `InteropEnabled` parameter. +- Removed `CryptoServerDNSName` parameter. +- Added `CertificateAuthorityARN` parameter. + +### `5-2-ecs-ops` + +- Added `UseCertificateAuthorityARN` parameter. + +### `5-3a-ecs-is-service` + +- Changed `InteropEnabledIS` to a boolean since TLS mutual authentication is no longer terminated by The Things Stack. + - If you were using `server-authentication` or `mutual-authentication`, select `true`; + - If you were using `disabled`, select `false`. +- Added `UseCertificateAuthorityARN` parameter. + +### `5-3c-ecs-tbs-service` + +- Added `UseCertificateAuthorityARN` parameter. + +### `5-4-ecs-services` + +- Removed `InteropEnabledJS` parameter. +- Added `UseCertificateAuthorityARN` parameter. + +### `5-7a-certs-le` + +- Removed configuration for storing certificates for interoperability. + +### `200-1-crypto` + +- This template has been removed and can be undeployed. + ## 3.23.2 ## 3.23.1 diff --git a/doc/content/reference/api/end_device.md b/doc/content/reference/api/end_device.md index ad39ed3c5e..22c2259a73 100644 --- a/doc/content/reference/api/end_device.md +++ b/doc/content/reference/api/end_device.md @@ -287,6 +287,8 @@ See the [EndDevice message](#message:EndDevice) and its sub-messages for additio {{< proto/message message="Location" >}} +{{< proto/message message="LoRaAllianceProfileIdentifiers" >}} + {{< proto/message message="LoRaDataRate" >}} {{< proto/message message="LRFHSSDataRate" >}} diff --git a/doc/content/reference/api/network_operations_center.md b/doc/content/reference/api/network_operations_center.md index b0ed62494b..ca80aefad2 100644 --- a/doc/content/reference/api/network_operations_center.md +++ b/doc/content/reference/api/network_operations_center.md @@ -9,8 +9,6 @@ description: "" {{< proto/method package="tti.lorawan.v3" service="Noc" method="QueryGatewaysConnectivityTimes" >}} -{{< proto/method package="tti.lorawan.v3" service="Noc" method="QueryGatewaysActive" >}} - {{< proto/method package="tti.lorawan.v3" service="Noc" method="QueryGatewayConnectionEvents" >}} {{< proto/method package="tti.lorawan.v3" service="Noc" method="QueryGatewayChannelsUtilization" >}} @@ -31,10 +29,6 @@ description: "" {{< proto/message package="tti.lorawan.v3" message="GatewayConnectionEventTypeValue" >}} -{{< proto/message package="tti.lorawan.v3" message="GatewaysConnectedTimeBuckets" >}} - -{{< proto/message package="tti.lorawan.v3" message="GatewaysConnectedTimeBucket" >}} - {{< proto/message package="tti.lorawan.v3" message="TimeBucketQuery" >}} {{< proto/message package="tti.lorawan.v3" message="TimeWindowQuery" >}} diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_applications_storage_get.md b/doc/content/ttn-lw-cli/ttn-lw-cli_applications_storage_get.md index 9d29a871c4..328e9899c5 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_applications_storage_get.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_applications_storage_get.md @@ -180,9 +180,6 @@ ttn-lw-cli applications storage get [application-id] [flags] --up.uplink-message.version-ids.firmware-version select the up.uplink_message.version_ids.firmware_version field --up.uplink-message.version-ids.hardware-version select the up.uplink_message.version_ids.hardware_version field --up.uplink-message.version-ids.model-id select the up.uplink_message.version_ids.model_id field - --up.uplink-message.version-ids.serial-number select the up.uplink_message.version_ids.serial_number field - --up.uplink-message.version-ids.vendor-id select the up.uplink_message.version_ids.vendor_id field - --up.uplink-message.version-ids.vendor-profile-id select the up.uplink_message.version_ids.vendor_profile_id field --up.uplink-normalized select the up.uplink_normalized field and all allowed sub-fields --up.uplink-normalized.confirmed select the up.uplink_normalized.confirmed field --up.uplink-normalized.consumed-airtime select the up.uplink_normalized.consumed_airtime field @@ -228,9 +225,6 @@ ttn-lw-cli applications storage get [application-id] [flags] --up.uplink-normalized.version-ids.firmware-version select the up.uplink_normalized.version_ids.firmware_version field --up.uplink-normalized.version-ids.hardware-version select the up.uplink_normalized.version_ids.hardware_version field --up.uplink-normalized.version-ids.model-id select the up.uplink_normalized.version_ids.model_id field - --up.uplink-normalized.version-ids.serial-number select the up.uplink_normalized.version_ids.serial_number field - --up.uplink-normalized.version-ids.vendor-id select the up.uplink_normalized.version_ids.vendor_id field - --up.uplink-normalized.version-ids.vendor-profile-id select the up.uplink_normalized.version_ids.vendor_profile_id field ``` ### Options inherited from parent commands 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 b7872ad8d8..b34eb7bc1a 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 @@ -246,6 +246,7 @@ ttn-lw-cli end-devices create [application-id] [device-id] [flags] --root-keys.app-key.key 16-bytes --root-keys.nwk-key.key 16-bytes --root-keys.root-key-id string + --serial-number string --service-profile-id string --session.dev-addr 4-bytes --session.keys.app-s-key.key 16-bytes @@ -269,8 +270,6 @@ ttn-lw-cli end-devices create [application-id] [device-id] [flags] --version-ids.firmware-version string --version-ids.hardware-version string --version-ids.model-id string - --version-ids.vendor-id uint32 - --version-ids.vendor-profile-id uint32 --with-claim-authentication-code generate claim authentication code of 4 bytes --with-root-keys generate OTAA root keys --with-session generate ABP session DevAddr and keys 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 0b79927d09..ae962f5aec 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 @@ -46,6 +46,7 @@ ttn-lw-cli end-devices get [application-id] [device-id] [flags] --last-rj-count-1 select the last_rj_count_1 field --last-seen-at select the last_seen_at field --locations select the locations field + --lora-alliance-profile-ids select the lora_alliance_profile_ids field and all allowed sub-fields --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 @@ -289,6 +290,7 @@ ttn-lw-cli end-devices get [application-id] [device-id] [flags] --root-keys.nwk-key select the root_keys.nwk_key field and all allowed sub-fields --root-keys.nwk-key.key select the root_keys.nwk_key.key field --root-keys.root-key-id select the root_keys.root_key_id field + --serial-number select the serial_number field --service-profile-id select the service_profile_id field --session select the session field and all allowed sub-fields --session.dev-addr select the session.dev_addr field 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 91e20e7a5f..03e5973d32 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 @@ -29,11 +29,13 @@ ttn-lw-cli end-devices list [application-id] [flags] --last-seen-at select the last_seen_at field --limit uint32 maximum number of results to get (default 50) --locations select the locations field + --lora-alliance-profile-ids select the lora_alliance_profile_ids field and all allowed sub-fields --name select the name field --network-server-address select the network_server_address field --order string order by this field --page uint32 results page number (default 1) --picture select the picture field and all allowed sub-fields + --serial-number select the serial_number field --service-profile-id select the service_profile_id field --version-ids select the version_ids field and all allowed sub-fields --version-ids.band-id select the version_ids.band_id 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 d16fc2559e..9b25fed955 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 @@ -46,6 +46,7 @@ ttn-lw-cli end-devices reset [application-id] [device-id] [flags] --last-rj-count-1 select the last_rj_count_1 field --last-seen-at select the last_seen_at field --locations select the locations field + --lora-alliance-profile-ids select the lora_alliance_profile_ids field and all allowed sub-fields --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 @@ -289,6 +290,7 @@ ttn-lw-cli end-devices reset [application-id] [device-id] [flags] --root-keys.nwk-key select the root_keys.nwk_key field and all allowed sub-fields --root-keys.nwk-key.key select the root_keys.nwk_key.key field --root-keys.root-key-id select the root_keys.root_key_id field + --serial-number select the serial_number field --service-profile-id select the service_profile_id field --session select the session field and all allowed sub-fields --session.dev-addr select the session.dev_addr field 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 b68b2922e9..eb3cd8f994 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 @@ -51,6 +51,7 @@ ttn-lw-cli end-devices search [application-id] [flags] --last-seen-at select the last_seen_at field --limit uint32 --locations select the locations field + --lora-alliance-profile-ids select the lora_alliance_profile_ids field and all allowed sub-fields --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 @@ -298,6 +299,7 @@ ttn-lw-cli end-devices search [application-id] [flags] --root-keys.nwk-key select the root_keys.nwk_key field and all allowed sub-fields --root-keys.nwk-key.key select the root_keys.nwk_key.key field --root-keys.root-key-id select the root_keys.root_key_id field + --serial-number select the serial_number field --service-profile-id select the service_profile_id field --session select the session field and all allowed sub-fields --session.dev-addr select the session.dev_addr field 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 4a946c157e..d6cd67527c 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 @@ -243,6 +243,7 @@ ttn-lw-cli end-devices set [application-id] [device-id] [flags] --root-keys.app-key.key 16-bytes --root-keys.nwk-key.key 16-bytes --root-keys.root-key-id string + --serial-number string --service-profile-id string --session.dev-addr 4-bytes --session.keys.app-s-key.key 16-bytes @@ -268,8 +269,6 @@ ttn-lw-cli end-devices set [application-id] [device-id] [flags] --version-ids.firmware-version string --version-ids.hardware-version string --version-ids.model-id string - --version-ids.vendor-id uint32 - --version-ids.vendor-profile-id uint32 ``` ### Options inherited from parent commands diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_storage_get.md b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_storage_get.md index 1bd4aeb354..00007285b1 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_storage_get.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_end-devices_storage_get.md @@ -183,9 +183,6 @@ ttn-lw-cli end-devices storage get [application-id] [device-id] [flags] --up.uplink-message.version-ids.firmware-version select the up.uplink_message.version_ids.firmware_version field --up.uplink-message.version-ids.hardware-version select the up.uplink_message.version_ids.hardware_version field --up.uplink-message.version-ids.model-id select the up.uplink_message.version_ids.model_id field - --up.uplink-message.version-ids.serial-number select the up.uplink_message.version_ids.serial_number field - --up.uplink-message.version-ids.vendor-id select the up.uplink_message.version_ids.vendor_id field - --up.uplink-message.version-ids.vendor-profile-id select the up.uplink_message.version_ids.vendor_profile_id field --up.uplink-normalized select the up.uplink_normalized field and all allowed sub-fields --up.uplink-normalized.confirmed select the up.uplink_normalized.confirmed field --up.uplink-normalized.consumed-airtime select the up.uplink_normalized.consumed_airtime field @@ -231,9 +228,6 @@ ttn-lw-cli end-devices storage get [application-id] [device-id] [flags] --up.uplink-normalized.version-ids.firmware-version select the up.uplink_normalized.version_ids.firmware_version field --up.uplink-normalized.version-ids.hardware-version select the up.uplink_normalized.version_ids.hardware_version field --up.uplink-normalized.version-ids.model-id select the up.uplink_normalized.version_ids.model_id field - --up.uplink-normalized.version-ids.serial-number select the up.uplink_normalized.version_ids.serial_number field - --up.uplink-normalized.version-ids.vendor-id select the up.uplink_normalized.version_ids.vendor_id field - --up.uplink-normalized.version-ids.vendor-profile-id select the up.uplink_normalized.version_ids.vendor_profile_id field ``` ### Options inherited from parent commands diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_simulate_application-uplink.md b/doc/content/ttn-lw-cli/ttn-lw-cli_simulate_application-uplink.md index 4949af6c36..39cb976591 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_simulate_application-uplink.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_simulate_application-uplink.md @@ -14,32 +14,29 @@ ttn-lw-cli simulate application-uplink [application-id] [device-id] [flags] ### Options ``` - --app-s-key.encrypted-key bytesHex - --app-s-key.kek-label string - --app-s-key.key 16-bytes - --application-id string - --confirmed - --consumed-airtime duration - --decoded-payload-warnings strings - --dev-eui string (hex) - --device-id string - --f-cnt uint32 - --f-port uint32 - --frm-payload bytesBase64 - -h, --help help for application-uplink - --join-eui string (hex) - --last-a-f-cnt-down uint32 - --normalized-payload-warnings strings - --received-at timestamp - --session-key-id bytesBase64 - --version-ids.band-id string - --version-ids.brand-id string - --version-ids.firmware-version string - --version-ids.hardware-version string - --version-ids.model-id string - --version-ids.serial-number string - --version-ids.vendor-id uint32 - --version-ids.vendor-profile-id uint32 + --app-s-key.encrypted-key bytesHex + --app-s-key.kek-label string + --app-s-key.key 16-bytes + --application-id string + --confirmed + --consumed-airtime duration + --decoded-payload-warnings strings + --dev-eui string (hex) + --device-id string + --f-cnt uint32 + --f-port uint32 + --frm-payload bytesBase64 + -h, --help help for application-uplink + --join-eui string (hex) + --last-a-f-cnt-down uint32 + --normalized-payload-warnings strings + --received-at timestamp + --session-key-id bytesBase64 + --version-ids.band-id string + --version-ids.brand-id string + --version-ids.firmware-version string + --version-ids.hardware-version string + --version-ids.model-id string ``` ### Options inherited from parent commands 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 7d68210c0a..952a57f01f 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 @@ -56,6 +56,7 @@ ttn-lw-cli templates create [flags] --last-rj-count-1 select the last_rj_count_1 field --last-seen-at select the last_seen_at field --locations select the locations field + --lora-alliance-profile-ids select the lora_alliance_profile_ids field and all allowed sub-fields --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 @@ -300,6 +301,7 @@ ttn-lw-cli templates create [flags] --root-keys.nwk-key select the root_keys.nwk_key field and all allowed sub-fields --root-keys.nwk-key.key select the root_keys.nwk_key.key field --root-keys.root-key-id select the root_keys.root_key_id field + --serial-number select the serial_number field --service-profile-id select the service_profile_id field --session select the session field and all allowed sub-fields --session.dev-addr select the session.dev_addr field 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 c4b2d5c6e0..d009f36cee 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 @@ -238,6 +238,7 @@ ttn-lw-cli templates execute [flags] --root-keys.app-key.key 16-bytes --root-keys.nwk-key.key 16-bytes --root-keys.root-key-id string + --serial-number string --service-profile-id string --session.dev-addr 4-bytes --session.keys.app-s-key.key 16-bytes @@ -261,8 +262,6 @@ ttn-lw-cli templates execute [flags] --version-ids.firmware-version string --version-ids.hardware-version string --version-ids.model-id string - --version-ids.vendor-id uint32 - --version-ids.vendor-profile-id uint32 ``` ### Options inherited from parent commands 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 4b3ec9f383..9f829a8fbe 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 @@ -233,6 +233,7 @@ ttn-lw-cli templates extend [flags] --root-keys.app-key.key 16-bytes --root-keys.nwk-key.key 16-bytes --root-keys.root-key-id string + --serial-number string --service-profile-id string --session.dev-addr 4-bytes --session.keys.app-s-key.key 16-bytes @@ -256,8 +257,6 @@ ttn-lw-cli templates extend [flags] --version-ids.firmware-version string --version-ids.hardware-version string --version-ids.model-id string - --version-ids.vendor-id uint32 - --version-ids.vendor-profile-id uint32 ``` ### Options inherited from parent commands diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_templates_from-data.md b/doc/content/ttn-lw-cli/ttn-lw-cli_templates_from-data.md index 1f3db9be60..f3ec1d24b6 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_templates_from-data.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_templates_from-data.md @@ -14,17 +14,14 @@ ttn-lw-cli templates from-data [format-id] [flags] ### Options ``` - --end-device-version-ids.band-id string - --end-device-version-ids.brand-id string - --end-device-version-ids.firmware-version string - --end-device-version-ids.hardware-version string - --end-device-version-ids.model-id string - --end-device-version-ids.serial-number string - --end-device-version-ids.vendor-id uint32 - --end-device-version-ids.vendor-profile-id uint32 - --format-id string - -h, --help help for from-data - --local-file string (local file name) + --end-device-version-ids.band-id string + --end-device-version-ids.brand-id string + --end-device-version-ids.firmware-version string + --end-device-version-ids.hardware-version string + --end-device-version-ids.model-id string + --format-id string + -h, --help help for from-data + --local-file string (local file name) ``` ### Options inherited from parent commands diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_tenants.md b/doc/content/ttn-lw-cli/ttn-lw-cli_tenants.md index 0c207f3d65..40db050ded 100644 --- a/doc/content/ttn-lw-cli/ttn-lw-cli_tenants.md +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_tenants.md @@ -55,6 +55,7 @@ Tenant commands * [ttn-lw-cli tenants create]({{< relref "ttn-lw-cli_tenants_create" >}}) - Create a tenant * [ttn-lw-cli tenants delete]({{< relref "ttn-lw-cli_tenants_delete" >}}) - Delete a tenant * [ttn-lw-cli tenants get]({{< relref "ttn-lw-cli_tenants_get" >}}) - Get a tenant +* [ttn-lw-cli tenants get-identifiers-for-billing-identifiers]({{< relref "ttn-lw-cli_tenants_get-identifiers-for-billing-identifiers" >}}) - Get tenant identifiers for billing identifiers * [ttn-lw-cli tenants get-identifiers-for-end-device-euis]({{< relref "ttn-lw-cli_tenants_get-identifiers-for-end-device-euis" >}}) - Get tenant identifiers for Device EUIs * [ttn-lw-cli tenants get-identifiers-for-gateway-eui]({{< relref "ttn-lw-cli_tenants_get-identifiers-for-gateway-eui" >}}) - Get tenant identifiers for a Gateway EUI * [ttn-lw-cli tenants get-registry-totals]({{< relref "ttn-lw-cli_tenants_get-registry-totals" >}}) - Get registry totals of a tenant diff --git a/doc/content/ttn-lw-cli/ttn-lw-cli_tenants_get-identifiers-for-billing-identifiers.md b/doc/content/ttn-lw-cli/ttn-lw-cli_tenants_get-identifiers-for-billing-identifiers.md new file mode 100644 index 0000000000..4b1c63e9c5 --- /dev/null +++ b/doc/content/ttn-lw-cli/ttn-lw-cli_tenants_get-identifiers-for-billing-identifiers.md @@ -0,0 +1,60 @@ +--- +title: "ttn-lw-cli tenants get-identifiers-for-billing-identifiers" +slug: ttn-lw-cli_tenants_get-identifiers-for-billing-identifiers +--- + +## ttn-lw-cli tenants get-identifiers-for-billing-identifiers + +Get tenant identifiers for billing identifiers + +``` +ttn-lw-cli tenants get-identifiers-for-billing-identifiers [flags] +``` + +### Options + +``` + --billing-id string + -h, --help help for get-identifiers-for-billing-identifiers +``` + +### Options inherited from parent commands + +``` + --allow-unknown-hosts Allow sending credentials to unknown hosts + --application-server-enabled Application Server enabled (default true) + --application-server-grpc-address string Application Server address (default "localhost:8884") + --ca string CA certificate file + -c, --config strings Location of the config files (default [.ttn-lw-cli.yml,$HOME/.ttn-lw-cli.yml,$HOME/.config/.ttn-lw-cli.yml]) + --credentials-id string Credentials ID (if using multiple configurations) + --device-claiming-server-grpc-address string Device Claiming Server address (default "localhost:8884") + --device-template-converter-grpc-address string Device Template Converter address (default "localhost:8884") + --dump-requests When log level is set to debug, also dump request payload as JSON + --experimental.features strings Experimental features to activate + --gateway-server-enabled Gateway Server enabled (default true) + --gateway-server-grpc-address string Gateway Server address (default "localhost:8884") + --identity-server-grpc-address string Identity Server address (default "localhost:8884") + --input-format string Input format (default "json") + --insecure Connect without TLS + --join-server-enabled Join Server enabled (default true) + --join-server-grpc-address string Join Server address (default "localhost:8884") + --log.format string Log format to write (console, json) (default "console") + --log.level string The minimum level log messages must have to be shown (default "info") + --network-server-enabled Network Server enabled (default true) + --network-server-grpc-address string Network Server address (default "localhost:8884") + --oauth-server-address string OAuth Server address (default "https://localhost/oauth") + --output-format string Output format (default "json") + --packet-broker-agent-grpc-address string Packet Broker Agent address (default "localhost:8884") + --qr-code-generator-grpc-address string QR Code Generator address (default "localhost:8884") + --retry.default-timeout duration Default timeout between retry attempts (default 100ms) + --retry.enable-metadata Use request response metadata to dynamically calculate timeout between retry attempts (default true) + --retry.jitter float Fraction that creates a deviation of the timeout used between retry attempts + --retry.max uint Maximum amount of times that a request can be reattempted + --skip-version-check Do not perform version checks + --tenant-admin-key string Tenant admin key +``` + +### SEE ALSO + +* [ttn-lw-cli tenants]({{< relref "ttn-lw-cli_tenants" >}}) - Tenant commands + diff --git a/doc/content/whats-new/3.24.0.md b/doc/content/whats-new/3.24.0.md new file mode 100644 index 0000000000..0553d54a99 --- /dev/null +++ b/doc/content/whats-new/3.24.0.md @@ -0,0 +1,32 @@ +--- +date: 2023-02-02 +title: "3.24.0" +--- + +### Added + +- List of end-devices can now be sorted by `last_seen_at` field. Unseen devices will be shown last. +- End devices now contain `lora_alliance_profile_ids` field. +- LoRa Alliance NetIDs revision 69 and 70. This is used in Network Operations Center. + - This requires a database schema migration (`ttn-lw-stack noc-db migrate`) because of added table records. +- Add `source` config option for TLS certificates in LoRaWAN Backend Interfaces interop client and The Things Join Server device claiming configuration. This value can be `file` (existing behavior) or `key-vault`. +- Add issuing short-lived TLS client certificates from AWS Private CA. +- Experimental support for application and end device statistics in the Network Operations Center. + - The collection of the end device and application statistics can be enabled via the `noc.events.ns` experimental flag. + - The collection of the end device MAC command events can be enabled via the `noc.events.mac_commands` experimental flag. + - The new dashboards can be enabled via the `noc.dashboards.preview` experimental flag. + - This requires a database schema migration (`ttn-lw-stack noc-db migrate`) because of added table records. + +### Changed + +- `serial_number` field is now moved to the root of the end device structure. `vendor_id` and `vendor_profile_id` are now moved to the `lora_alliance_profile_ids`. + - This requires a database schema migration (`ttn-lw-stack is-db migrate`) because of added columns and views. +- The underlying implementation of the storage integration of the Application Server now uses `bun` by default. This can be switched back by setting the experimental flag `as.bunstore` to `false`. + +### Deprecated + +- Configuring certificate authorities per LoRaWAN Backend Interfaces SenderID (`interop.sender-client-ca`) is now deprecated and support will be removed in a future version of The Things Stack. + +### Removed + +- The device version identifiers no longer have the `serial_number`, `vendor_id` and `vendor_profile_id` fields. \ No newline at end of file diff --git a/doc/data/api/tti.lorawan.v3/messages/ApplicationEndDeviceStatistic.yml b/doc/data/api/tti.lorawan.v3/messages/ApplicationEndDeviceStatistic.yml new file mode 100644 index 0000000000..6e3294ddc7 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/ApplicationEndDeviceStatistic.yml @@ -0,0 +1,27 @@ +name: ApplicationEndDeviceStatistic +comment: Application end devices statistic. +fields: +- name: end_device_ids + message: + package: ttn.lorawan.v3 + name: EndDeviceIdentifiers + default: {} +- name: last_seen + message: + package: google.protobuf + name: Timestamp + default: "0001-01-01T00:00:00Z" +- name: last_packet_error_rate + type: float + default: 0 +- name: best_gateway_ids + message: + package: ttn.lorawan.v3 + name: GatewayIdentifiers + default: {} +- name: best_channel_rssi + type: float + default: 0 +- name: packet_count + type: uint64 + default: 0 diff --git a/doc/data/api/tti.lorawan.v3/messages/ApplicationEndDeviceStatistics.yml b/doc/data/api/tti.lorawan.v3/messages/ApplicationEndDeviceStatistics.yml new file mode 100644 index 0000000000..7eba009a6a --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/ApplicationEndDeviceStatistics.yml @@ -0,0 +1,8 @@ +name: ApplicationEndDeviceStatistics +comment: Application end devices statistics. +fields: +- name: stats + repeated: + message: + name: ApplicationEndDeviceStatistic + default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/ApplicationGatewaysSeen.yml b/doc/data/api/tti.lorawan.v3/messages/ApplicationGatewaysSeen.yml new file mode 100644 index 0000000000..4cbd1aa993 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/ApplicationGatewaysSeen.yml @@ -0,0 +1,7 @@ +name: ApplicationGatewaysSeen +fields: +- name: gateways + repeated: + message: + name: GatewayStatistics + default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/ApplicationTimeBucketQuery.yml b/doc/data/api/tti.lorawan.v3/messages/ApplicationTimeBucketQuery.yml new file mode 100644 index 0000000000..c54a976666 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/ApplicationTimeBucketQuery.yml @@ -0,0 +1,17 @@ +name: ApplicationTimeBucketQuery +comment: Request for end device data using aggregates by time buckets with a specified + interval. +fields: +- name: application_ids + message: + package: ttn.lorawan.v3 + name: ApplicationIdentifiers + rules: + required: true + default: {} +- name: time_bucket + message: + name: TimeBucketQuery + rules: + required: true + default: {} diff --git a/doc/data/api/tti.lorawan.v3/messages/ApplicationTimeWindowQuery.yml b/doc/data/api/tti.lorawan.v3/messages/ApplicationTimeWindowQuery.yml new file mode 100644 index 0000000000..e25b4f99ae --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/ApplicationTimeWindowQuery.yml @@ -0,0 +1,16 @@ +name: ApplicationTimeWindowQuery +comment: Request for application data in a specific time window. +fields: +- name: application_ids + message: + package: ttn.lorawan.v3 + name: ApplicationIdentifiers + rules: + required: true + default: {} +- name: time_window + message: + name: TimeWindowQuery + rules: + required: true + default: {} diff --git a/doc/data/api/tti.lorawan.v3/messages/ApplicationsActiveMetrics.yml b/doc/data/api/tti.lorawan.v3/messages/ApplicationsActiveMetrics.yml new file mode 100644 index 0000000000..c5c910c997 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/ApplicationsActiveMetrics.yml @@ -0,0 +1,9 @@ +name: ApplicationsActiveMetrics +comment: Identifiers of active applications. +fields: +- name: application_ids + repeated: + message: + package: ttn.lorawan.v3 + name: ApplicationIdentifiers + default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/ApplicationsStatistic.yml b/doc/data/api/tti.lorawan.v3/messages/ApplicationsStatistic.yml new file mode 100644 index 0000000000..b6a82a9469 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/ApplicationsStatistic.yml @@ -0,0 +1,14 @@ +name: ApplicationsStatistic +comment: Applications statistic. +fields: +- name: application_ids + message: + package: ttn.lorawan.v3 + name: ApplicationIdentifiers + default: {} +- name: active_devices + type: uint32 + default: 0 +- name: average_packet_error_rate + type: float + default: 0 diff --git a/doc/data/api/tti.lorawan.v3/messages/ApplicationsStatistics.yml b/doc/data/api/tti.lorawan.v3/messages/ApplicationsStatistics.yml new file mode 100644 index 0000000000..af453e3fc0 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/ApplicationsStatistics.yml @@ -0,0 +1,8 @@ +name: ApplicationsStatistics +comment: Applications statistics. +fields: +- name: stats + repeated: + message: + name: ApplicationsStatistic + default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/BatchGetTenantRegistryTotalsRequest.yml b/doc/data/api/tti.lorawan.v3/messages/BatchGetTenantRegistryTotalsRequest.yml new file mode 100644 index 0000000000..186cd59398 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/BatchGetTenantRegistryTotalsRequest.yml @@ -0,0 +1,12 @@ +name: BatchGetTenantRegistryTotalsRequest +fields: +- name: tenant_ids + repeated: + message: + name: TenantIdentifiers + default: [] +- name: field_mask + message: + package: google.protobuf + name: FieldMask + default: {} diff --git a/doc/data/api/tti.lorawan.v3/messages/BatchGetTenantRegistryTotalsResponse.yml b/doc/data/api/tti.lorawan.v3/messages/BatchGetTenantRegistryTotalsResponse.yml new file mode 100644 index 0000000000..6fad5b15e5 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/BatchGetTenantRegistryTotalsResponse.yml @@ -0,0 +1,7 @@ +name: BatchGetTenantRegistryTotalsResponse +fields: +- name: totals + repeated: + message: + name: BatchTenantRegistryTotals + default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/BatchTenantRegistryTotals.yml b/doc/data/api/tti.lorawan.v3/messages/BatchTenantRegistryTotals.yml new file mode 100644 index 0000000000..11752b1f37 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/BatchTenantRegistryTotals.yml @@ -0,0 +1,10 @@ +name: BatchTenantRegistryTotals +fields: +- name: tenant_ids + message: + name: TenantIdentifiers + default: {} +- name: totals + message: + name: TenantRegistryTotals + default: {} diff --git a/doc/data/api/tti.lorawan.v3/messages/GatewayChannelLoRaPerformance.yml b/doc/data/api/tti.lorawan.v3/messages/ChannelLoRaPerformance.yml similarity index 91% rename from doc/data/api/tti.lorawan.v3/messages/GatewayChannelLoRaPerformance.yml rename to doc/data/api/tti.lorawan.v3/messages/ChannelLoRaPerformance.yml index f92415e187..5d517627f7 100644 --- a/doc/data/api/tti.lorawan.v3/messages/GatewayChannelLoRaPerformance.yml +++ b/doc/data/api/tti.lorawan.v3/messages/ChannelLoRaPerformance.yml @@ -1,4 +1,4 @@ -name: GatewayChannelLoRaPerformance +name: ChannelLoRaPerformance comment: LoRa performance per channel. fields: - name: time diff --git a/doc/data/api/tti.lorawan.v3/messages/GatewayChannelUtilization.yml b/doc/data/api/tti.lorawan.v3/messages/ChannelUtilization.yml similarity index 91% rename from doc/data/api/tti.lorawan.v3/messages/GatewayChannelUtilization.yml rename to doc/data/api/tti.lorawan.v3/messages/ChannelUtilization.yml index e5f29115f3..52cbd4d4ac 100644 --- a/doc/data/api/tti.lorawan.v3/messages/GatewayChannelUtilization.yml +++ b/doc/data/api/tti.lorawan.v3/messages/ChannelUtilization.yml @@ -1,4 +1,4 @@ -name: GatewayChannelUtilization +name: ChannelUtilization comment: Utilization per channel. fields: - name: time diff --git a/doc/data/api/tti.lorawan.v3/messages/GatewayChannelsLoRaPerformance.yml b/doc/data/api/tti.lorawan.v3/messages/ChannelsLoRaPerformance.yml similarity index 56% rename from doc/data/api/tti.lorawan.v3/messages/GatewayChannelsLoRaPerformance.yml rename to doc/data/api/tti.lorawan.v3/messages/ChannelsLoRaPerformance.yml index 3ddfa94dbe..045da2ad10 100644 --- a/doc/data/api/tti.lorawan.v3/messages/GatewayChannelsLoRaPerformance.yml +++ b/doc/data/api/tti.lorawan.v3/messages/ChannelsLoRaPerformance.yml @@ -1,8 +1,8 @@ -name: GatewayChannelsLoRaPerformance +name: ChannelsLoRaPerformance comment: LoRa performance of channels. fields: - name: channels repeated: message: - name: GatewayChannelLoRaPerformance + name: ChannelLoRaPerformance default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/GatewayChannelsUtilization.yml b/doc/data/api/tti.lorawan.v3/messages/ChannelsUtilization.yml similarity index 58% rename from doc/data/api/tti.lorawan.v3/messages/GatewayChannelsUtilization.yml rename to doc/data/api/tti.lorawan.v3/messages/ChannelsUtilization.yml index b4b530ff47..61e3914ec0 100644 --- a/doc/data/api/tti.lorawan.v3/messages/GatewayChannelsUtilization.yml +++ b/doc/data/api/tti.lorawan.v3/messages/ChannelsUtilization.yml @@ -1,8 +1,8 @@ -name: GatewayChannelsUtilization +name: ChannelsUtilization comment: Utilizations of channels. fields: - name: channels repeated: message: - name: GatewayChannelUtilization + name: ChannelUtilization default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/GatewaysConnectedTimeBucket.yml b/doc/data/api/tti.lorawan.v3/messages/ConnectedTimeBucket.yml similarity index 67% rename from doc/data/api/tti.lorawan.v3/messages/GatewaysConnectedTimeBucket.yml rename to doc/data/api/tti.lorawan.v3/messages/ConnectedTimeBucket.yml index 29735eb7e0..82b01908d4 100644 --- a/doc/data/api/tti.lorawan.v3/messages/GatewaysConnectedTimeBucket.yml +++ b/doc/data/api/tti.lorawan.v3/messages/ConnectedTimeBucket.yml @@ -1,5 +1,5 @@ -name: GatewaysConnectedTimeBucket -comment: Number of gateways connected in a time bucket. +name: ConnectedTimeBucket +comment: Number of entities connected in a time bucket. fields: - name: time message: diff --git a/doc/data/api/tti.lorawan.v3/messages/ConnectedTimeBuckets.yml b/doc/data/api/tti.lorawan.v3/messages/ConnectedTimeBuckets.yml new file mode 100644 index 0000000000..d020ed79c5 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/ConnectedTimeBuckets.yml @@ -0,0 +1,18 @@ +name: ConnectedTimeBuckets +comment: Number of entities connected. +fields: +- name: hourly_buckets + repeated: + message: + name: ConnectedTimeBucket + default: [] +- name: daily_buckets + repeated: + message: + name: ConnectedTimeBucket + default: [] +- name: weekly_buckets + repeated: + message: + name: ConnectedTimeBucket + default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/DataRatePacketCount.yml b/doc/data/api/tti.lorawan.v3/messages/DataRatePacketCount.yml new file mode 100644 index 0000000000..b90133b606 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/DataRatePacketCount.yml @@ -0,0 +1,16 @@ +name: DataRatePacketCount +fields: +- name: time + message: + package: google.protobuf + name: Timestamp + rules: + required: true + default: "0001-01-01T00:00:00Z" +- name: count + comment: Packet counts per data rate. + map_key: + type: string + map_value: + type: uint64 + default: {} diff --git a/doc/data/api/tti.lorawan.v3/messages/DataRatesPacketCount.yml b/doc/data/api/tti.lorawan.v3/messages/DataRatesPacketCount.yml new file mode 100644 index 0000000000..5bacccd839 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/DataRatesPacketCount.yml @@ -0,0 +1,7 @@ +name: DataRatesPacketCount +fields: +- name: data_rates + repeated: + message: + name: DataRatePacketCount + default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/EndDeviceTimeBucketQuery.yml b/doc/data/api/tti.lorawan.v3/messages/EndDeviceTimeBucketQuery.yml new file mode 100644 index 0000000000..6fe95b1570 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/EndDeviceTimeBucketQuery.yml @@ -0,0 +1,17 @@ +name: EndDeviceTimeBucketQuery +comment: Request for end device data using aggregates by time buckets with a specified + interval. +fields: +- name: end_device_ids + message: + package: ttn.lorawan.v3 + name: EndDeviceIdentifiers + rules: + required: true + default: {} +- name: time_bucket + message: + name: TimeBucketQuery + rules: + required: true + default: {} diff --git a/doc/data/api/tti.lorawan.v3/messages/EndDeviceTimeWindowQuery.yml b/doc/data/api/tti.lorawan.v3/messages/EndDeviceTimeWindowQuery.yml new file mode 100644 index 0000000000..cbc84cc6a3 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/EndDeviceTimeWindowQuery.yml @@ -0,0 +1,16 @@ +name: EndDeviceTimeWindowQuery +comment: Request for end device data in a specific time window. +fields: +- name: end_device_ids + message: + package: ttn.lorawan.v3 + name: EndDeviceIdentifiers + rules: + required: true + default: {} +- name: time_window + message: + name: TimeWindowQuery + rules: + required: true + default: {} diff --git a/doc/data/api/tti.lorawan.v3/messages/EndDevicesActiveMetrics.yml b/doc/data/api/tti.lorawan.v3/messages/EndDevicesActiveMetrics.yml new file mode 100644 index 0000000000..a2a12aa490 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/EndDevicesActiveMetrics.yml @@ -0,0 +1,9 @@ +name: EndDevicesActiveMetrics +comment: Identifiers of active end devices. +fields: +- name: end_device_ids + repeated: + message: + package: ttn.lorawan.v3 + name: EndDeviceIdentifiers + default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/EndDevicesStatistic.yml b/doc/data/api/tti.lorawan.v3/messages/EndDevicesStatistic.yml new file mode 100644 index 0000000000..a6f9b54287 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/EndDevicesStatistic.yml @@ -0,0 +1,21 @@ +name: EndDevicesStatistic +comment: End devices statistic. +fields: +- name: end_device_ids + message: + package: ttn.lorawan.v3 + name: EndDeviceIdentifiers + default: {} +- name: application_ids + message: + package: ttn.lorawan.v3 + name: ApplicationIdentifiers + default: {} +- name: last_seen + message: + package: google.protobuf + name: Timestamp + default: "0001-01-01T00:00:00Z" +- name: last_packet_error_rate + type: float + default: 0 diff --git a/doc/data/api/tti.lorawan.v3/messages/EndDevicesStatistics.yml b/doc/data/api/tti.lorawan.v3/messages/EndDevicesStatistics.yml new file mode 100644 index 0000000000..33e7dec2be --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/EndDevicesStatistics.yml @@ -0,0 +1,8 @@ +name: EndDevicesStatistics +comment: End devices statistics. +fields: +- name: stats + repeated: + message: + name: EndDevicesStatistic + default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/GatewayStatistics.yml b/doc/data/api/tti.lorawan.v3/messages/GatewayStatistics.yml new file mode 100644 index 0000000000..0976d9397d --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/GatewayStatistics.yml @@ -0,0 +1,13 @@ +name: GatewayStatistics +fields: +- name: gateway_id + message: + package: ttn.lorawan.v3 + name: GatewayIdentifiers + default: {} +- name: best_channel_rssi + type: float + default: 0 +- name: packet_count + type: uint64 + default: 0 diff --git a/doc/data/api/tti.lorawan.v3/messages/GatewaysActive.yml b/doc/data/api/tti.lorawan.v3/messages/GatewaysActiveMetrics.yml similarity index 85% rename from doc/data/api/tti.lorawan.v3/messages/GatewaysActive.yml rename to doc/data/api/tti.lorawan.v3/messages/GatewaysActiveMetrics.yml index ad3da17558..99bbc056c5 100644 --- a/doc/data/api/tti.lorawan.v3/messages/GatewaysActive.yml +++ b/doc/data/api/tti.lorawan.v3/messages/GatewaysActiveMetrics.yml @@ -1,4 +1,4 @@ -name: GatewaysActive +name: GatewaysActiveMetrics comment: Identifiers of active gateways. fields: - name: gateway_ids diff --git a/doc/data/api/tti.lorawan.v3/messages/GatewaysConnectedTimeBuckets.yml b/doc/data/api/tti.lorawan.v3/messages/GatewaysConnectedTimeBuckets.yml deleted file mode 100644 index 1d993d4a06..0000000000 --- a/doc/data/api/tti.lorawan.v3/messages/GatewaysConnectedTimeBuckets.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: GatewaysConnectedTimeBuckets -comment: Number of gateways connected. -fields: -- name: buckets - repeated: - message: - name: GatewaysConnectedTimeBucket - default: [] diff --git a/doc/data/api/tti.lorawan.v3/messages/PacketErrorRatesTimeBuckets.PacketErrorRate.yml b/doc/data/api/tti.lorawan.v3/messages/PacketErrorRatesTimeBuckets.PacketErrorRate.yml new file mode 100644 index 0000000000..3b19e66430 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/PacketErrorRatesTimeBuckets.PacketErrorRate.yml @@ -0,0 +1,12 @@ +name: PacketErrorRatesTimeBuckets.PacketErrorRate +fields: +- name: time + message: + package: google.protobuf + name: Timestamp + rules: + required: true + default: "0001-01-01T00:00:00Z" +- name: packet_error_rate + type: float + default: 0 diff --git a/doc/data/api/tti.lorawan.v3/messages/PacketErrorRatesTimeBuckets.yml b/doc/data/api/tti.lorawan.v3/messages/PacketErrorRatesTimeBuckets.yml new file mode 100644 index 0000000000..1c508c03b6 --- /dev/null +++ b/doc/data/api/tti.lorawan.v3/messages/PacketErrorRatesTimeBuckets.yml @@ -0,0 +1,7 @@ +name: PacketErrorRatesTimeBuckets +fields: +- name: packet_error_rates + repeated: + message: + name: PacketErrorRatesTimeBuckets.PacketErrorRate + default: [] diff --git a/doc/data/api/tti.lorawan.v3/services/Noc.yml b/doc/data/api/tti.lorawan.v3/services/Noc.yml index 014913f7e0..5e47bebc33 100644 --- a/doc/data/api/tti.lorawan.v3/services/Noc.yml +++ b/doc/data/api/tti.lorawan.v3/services/Noc.yml @@ -7,7 +7,7 @@ methods: input: name: TimeBucketQuery output: - name: GatewaysConnectedTimeBuckets + name: ConnectedTimeBuckets http: - method: POST path: /noc/gateways/connected @@ -20,15 +20,15 @@ methods: http: - method: POST path: /noc/gateways/connectivity - QueryGatewaysActive: - name: QueryGatewaysActive + QueryGatewaysActiveMetrics: + name: QueryGatewaysActiveMetrics input: name: TimeWindowQuery output: - name: GatewaysActive + name: GatewaysActiveMetrics http: - method: POST - path: /noc/gateways/active + path: /noc/gateways/active-metrics QueryGatewayConnectionEvents: name: QueryGatewayConnectionEvents input: @@ -43,7 +43,7 @@ methods: input: name: GatewayTimeBucketQuery output: - name: GatewayChannelsUtilization + name: ChannelsUtilization http: - method: POST path: /noc/gateway/{gateway_ids.gateway_id}/channels/utilization @@ -52,7 +52,7 @@ methods: input: name: GatewayTimeBucketQuery output: - name: GatewayChannelsLoRaPerformance + name: ChannelsLoRaPerformance http: - method: POST path: /noc/gateway/{gateway_ids.gateway_id}/channels/lora-performance @@ -65,6 +65,15 @@ methods: http: - method: POST path: /noc/gateway/{gateway_ids.gateway_id}/channels/packet-count + QueryGatewayDataRatesPacketCount: + name: QueryGatewayDataRatesPacketCount + input: + name: GatewayTimeBucketQuery + output: + name: DataRatesPacketCount + http: + - method: POST + path: /noc/gateway/{gateway_ids.gateway_id}/data_rates/packet-count QueryGatewayTrafficRates: name: QueryGatewayTrafficRates input: @@ -93,6 +102,188 @@ methods: http: - method: POST path: /noc/gateway/{gateway_time_window.gateway_ids.gateway_id}/networks-seen/top/{top} + QueryApplicationsActiveMetrics: + name: QueryApplicationsActiveMetrics + input: + name: TimeWindowQuery + output: + name: ApplicationsActiveMetrics + http: + - method: POST + path: /noc/applications/active-metrics + QueryApplicationsActive: + name: QueryApplicationsActive + input: + name: TimeBucketQuery + output: + name: ConnectedTimeBuckets + http: + - method: POST + path: /noc/applications/active + QueryApplicationsStatistics: + name: QueryApplicationsStatistics + input: + name: TimeWindowQuery + output: + name: ApplicationsStatistics + http: + - method: POST + path: /noc/applications/statistics + QueryApplicationStatistics: + name: QueryApplicationStatistics + input: + name: ApplicationTimeWindowQuery + output: + name: ApplicationEndDeviceStatistics + http: + - method: POST + path: /noc/application/{application_ids.application_id}/statistics + QueryApplicationEndDevicesActiveMetrics: + name: QueryApplicationEndDevicesActiveMetrics + input: + name: ApplicationTimeWindowQuery + output: + name: EndDevicesActiveMetrics + http: + - method: POST + path: /noc/application/{application_ids.application_id}/end_devices/active-metrics + QueryApplicationGatewaysSeen: + name: QueryApplicationGatewaysSeen + input: + name: ApplicationTimeWindowQuery + output: + name: ApplicationGatewaysSeen + http: + - method: POST + path: /noc/application/{application_ids.application_id}/gateways + QueryApplicationChannelsPacketCount: + name: QueryApplicationChannelsPacketCount + input: + name: ApplicationTimeBucketQuery + output: + name: ChannelsPacketCount + http: + - method: POST + path: /noc/application/{application_ids.application_id}/channels/packet-count + QueryApplicationChannelsUtilization: + name: QueryApplicationChannelsUtilization + input: + name: ApplicationTimeBucketQuery + output: + name: ChannelsUtilization + http: + - method: POST + path: /noc/application/{application_ids.application_id}/channels/utilization + QueryApplicationChannelsLoRaPerformance: + name: QueryApplicationChannelsLoRaPerformance + input: + name: ApplicationTimeBucketQuery + output: + name: ChannelsLoRaPerformance + http: + - method: POST + path: /noc/application/{application_ids.application_id}/channels/lora-performance + QueryApplicationDataRatesPacketCount: + name: QueryApplicationDataRatesPacketCount + input: + name: ApplicationTimeBucketQuery + output: + name: DataRatesPacketCount + http: + - method: POST + path: /noc/application/{application_ids.application_id}/data_rates/packet-count + QueryEndDevicesActive: + name: QueryEndDevicesActive + input: + name: TimeBucketQuery + output: + name: ConnectedTimeBuckets + http: + - method: POST + path: /noc/end_devices/active + QueryEndDevicesActiveMetrics: + name: QueryEndDevicesActiveMetrics + input: + name: TimeWindowQuery + output: + name: EndDevicesActiveMetrics + http: + - method: POST + path: /noc/end_devices/active-metrics + QueryEndDevicesStatistics: + name: QueryEndDevicesStatistics + input: + name: TimeWindowQuery + output: + name: EndDevicesStatistics + http: + - method: POST + path: /noc/end_devices/statistics + QueryEndDeviceChannelsPacketCount: + name: QueryEndDeviceChannelsPacketCount + input: + name: EndDeviceTimeBucketQuery + output: + name: ChannelsPacketCount + http: + - method: POST + path: /noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/channels/packet-count + QueryEndDeviceChannelsUtilization: + name: QueryEndDeviceChannelsUtilization + input: + name: EndDeviceTimeBucketQuery + output: + name: ChannelsUtilization + http: + - method: POST + path: /noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/channels/utilization + QueryEndDeviceChannelsLoRaPerformance: + name: QueryEndDeviceChannelsLoRaPerformance + input: + name: EndDeviceTimeBucketQuery + output: + name: ChannelsLoRaPerformance + http: + - method: POST + path: /noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/channels/lora-performance + QueryEndDeviceDataRatesPacketCount: + name: QueryEndDeviceDataRatesPacketCount + input: + name: EndDeviceTimeBucketQuery + output: + name: DataRatesPacketCount + http: + - method: POST + path: /noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/data_rates/packet-count + QueryEndDevicePacketErrorRate: + name: QueryEndDevicePacketErrorRate + input: + name: EndDeviceTimeBucketQuery + output: + name: PacketErrorRatesTimeBuckets + http: + - method: POST + path: /noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/packet-error-rate + QueryEndDeviceSessionStart: + name: QueryEndDeviceSessionStart + input: + name: EndDeviceTimeBucketQuery + output: + package: google.protobuf + name: Timestamp + http: + - method: POST + path: /noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/session-start + QueryEndDeviceLastSeen: + name: QueryEndDeviceLastSeen + input: + name: EndDeviceTimeBucketQuery + output: + package: google.protobuf + name: Timestamp + http: + - method: POST + path: /noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/last-seen CheckHealth: name: CheckHealth input: diff --git a/doc/data/api/tti.lorawan.v3/services/TenantRegistry.yml b/doc/data/api/tti.lorawan.v3/services/TenantRegistry.yml index ab8a77e9cd..c0905f49e3 100644 --- a/doc/data/api/tti.lorawan.v3/services/TenantRegistry.yml +++ b/doc/data/api/tti.lorawan.v3/services/TenantRegistry.yml @@ -27,6 +27,15 @@ methods: http: - method: GET path: /tenants/{tenant_ids.tenant_id}/registry-totals + BatchGetRegistryTotals: + name: BatchGetRegistryTotals + input: + name: BatchGetTenantRegistryTotalsRequest + output: + name: BatchGetTenantRegistryTotalsResponse + http: + - method: POST + path: /tenants/registry-totals List: name: List input: diff --git a/doc/data/api/ttn.lorawan.v3/messages/EndDevice.yml b/doc/data/api/ttn.lorawan.v3/messages/EndDevice.yml index 6ed0723349..a2c0388e34 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/EndDevice.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/EndDevice.yml @@ -383,3 +383,14 @@ fields: package: google.protobuf name: Timestamp default: "0001-01-01T00:00:00Z" +- name: serial_number + type: string + rules: + max_len: 36 + pattern: ^[a-z0-9](?:[-]?[a-z0-9]){2,}$ + ignore_empty: true + default: "" +- name: lora_alliance_profile_ids + message: + name: LoRaAllianceProfileIdentifiers + default: {} diff --git a/doc/data/api/ttn.lorawan.v3/messages/EndDeviceVersionIdentifiers.yml b/doc/data/api/ttn.lorawan.v3/messages/EndDeviceVersionIdentifiers.yml index c85494c4c5..ee2a614b05 100644 --- a/doc/data/api/ttn.lorawan.v3/messages/EndDeviceVersionIdentifiers.yml +++ b/doc/data/api/ttn.lorawan.v3/messages/EndDeviceVersionIdentifiers.yml @@ -30,18 +30,3 @@ fields: rules: max_len: 32 default: "" -- name: vendor_id - comment: VendorID managed by the LoRa Alliance, as defined in TR005. - type: uint32 - default: 0 -- name: vendor_profile_id - comment: ID of the LoRaWAN end device profile assigned by the vendor. - type: uint32 - default: 0 -- name: serial_number - type: string - rules: - max_len: 36 - pattern: ^[a-z0-9](?:[-]?[a-z0-9]){2,}$ - ignore_empty: true - default: "" diff --git a/doc/data/api/ttn.lorawan.v3/messages/LoRaAllianceProfileIdentifiers.yml b/doc/data/api/ttn.lorawan.v3/messages/LoRaAllianceProfileIdentifiers.yml new file mode 100644 index 0000000000..2e6c78d1f8 --- /dev/null +++ b/doc/data/api/ttn.lorawan.v3/messages/LoRaAllianceProfileIdentifiers.yml @@ -0,0 +1,10 @@ +name: LoRaAllianceProfileIdentifiers +fields: +- name: vendor_id + comment: VendorID managed by the LoRa Alliance, as defined in TR005. + type: uint32 + default: 0 +- name: vendor_profile_id + comment: ID of the LoRaWAN end device profile assigned by the vendor. + type: uint32 + default: 0 diff --git a/doc/data/commands/ttn-lw-cli.json b/doc/data/commands/ttn-lw-cli.json index d829023f50..d4bbd84353 100644 --- a/doc/data/commands/ttn-lw-cli.json +++ b/doc/data/commands/ttn-lw-cli.json @@ -993,6 +993,10 @@ "short": "Get a tenant", "path": "ttn-lw-cli tenants get" }, + "get-identifiers-for-billing-identifiers": { + "short": "Get tenant identifiers for billing identifiers", + "path": "ttn-lw-cli tenants get-identifiers-for-billing-identifiers" + }, "get-identifiers-for-end-device-euis": { "short": "Get tenant identifiers for Device EUIs", "path": "ttn-lw-cli tenants get-identifiers-for-end-device-euis"