The Things Network / The Things Stack website screenshot

The Things Network / The Things Stack

The Things Network (TTN) is a free, community-operated global LoRaWAN network with over 280,000 members and 21,000 gateways across 153 countries. It runs on The Things Stack, the open-source (Apache-2.0) LoRaWAN Network Server developed and maintained by The Things Industries. The Things Stack v3 implements the full LoRaWAN Network Reference Model — Identity Server, Application Server, Network Server, Gateway Server, Join Server, Device Repository, Packet Broker Agent — and exposes a unified HTTP REST and gRPC API plus MQTT, webhooks, and Pub/Sub integrations. The same software powers self-hosted deployments, the free The Things Network community network, The Things Stack Cloud (Discovery, Standard, Plus tiers), and The Things Stack Enterprise.

9 APIs 0 Features
LoRaWANIoTInternet Of ThingsOpen SourceNetwork ServerLPWANTelemetrySensorsGatewaysConnectivityApache 2.0

APIs

The Things Stack Identity Server

User, organization, OAuth client, API key, session, invitation, bookmark, notification, contact-info, and entity-search APIs. The Identity Server is the single source of truth f...

The Things Stack Application Server

Application registry, application access rights, AppAs uplink/downlink/queue APIs, AsEndDeviceRegistry, payload-formatter management, ApplicationUpStorage (storage integration),...

The Things Stack Network Server

NS-side end-device MAC state, ADR, MAC settings profiles, and the v1.1 LoRaWAN Relay configuration service (CtrlUplinkList, UpdateUplinkList, RelayForwardDownlinkReq). Handles d...

The Things Stack Gateway Server

Gateway registry, access, batch registry/access, Managed Gateway configuration (WiFi / Ethernet profiles), gateway claiming, gateway QR codes, Gs connection stats, and GtwGs/NsG...

The Things Stack Join Server

OTAA join handling, root-key registry, JsEndDeviceRegistry, AsJs/AppJs/NsJs internal interfaces, NetworkCryptoService and ApplicationCryptoService for external HSM-backed crypto...

The Things Stack End Device Registry

EndDeviceRegistry, EndDeviceBatchRegistry, EndDeviceTemplateConverter, EndDeviceQRCodeGenerator, EndDeviceClaimingServer/BatchClaimingServer, and the DeviceRepository (LoRaWAN D...

The Things Stack Integrations

Application Webhook and Application Pub/Sub registry APIs. Webhooks deliver uplink, join, ack/nack, queued, failed, location-solved, and service-data messages to HTTP(S) endpoin...

The Things Stack Packet Broker Agent

Packet Broker Agent (Pba) — info, register/deregister network, list networks/tenants/policies, set forwarder and home-network routing policies, manage gateway visibility. Enable...

The Things Stack Events

Real-time event stream across the Identity Server, Application Server, Network Server, Gateway Server, and Join Server. Subscribe to events on applications, gateways, devices, u...

Collections

Pricing Plans

Rate Limits

The Things Network Rate Limits

7 limits

RATE LIMITS

FinOps

Semantic Vocabularies

The Things Network Context

45 classes · 3 properties

JSON-LD

API Governance Rules

The Things Network / The Things Stack API Rules

5 rules · 1 errors 2 warnings

SPECTRAL

JSON Structure

The Things Network Structure

0 properties

JSON STRUCTURE

Example Payloads

Resources

🌐
Portal
Portal
🌐
Portal
Portal
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
CLI
CLI
💻
SourceCode
SourceCode
📄
ChangeLog
ChangeLog
💻
SourceCode
SourceCode
💻
SourceCode
SourceCode
💻
SourceCode
SourceCode
💻
SourceCode
SourceCode
📦
SDKs
SDKs
🔧
Tools
Tools
🔗
Community
Community
🔗
Community
Community
🌐
Portal
Portal
🔗
Events
Events
🔗
RateLimits
RateLimits
🔗
Documentation
Documentation
🟢
StatusPage
StatusPage
🔗
License
License
🔗
Plans
Plans
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
🔗
Vocabulary
Vocabulary
🔗
JSONLD
JSONLD
🔗
JSONStructure
JSONStructure
🔗
Spectral
Spectral
🔗
LinkedIn
LinkedIn
🔗
Twitter
Twitter
🔗
Standards
Standards

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: The Things Stack — Packet Broker Agent
  version: v3.36
items:
- info:
    name: Pba
    type: folder
  items:
  - info:
      name: 'List the routing policies that Forwarders configured with Packet Broker Agent as Home Network.

        Listing routing policies requires administrative access.'
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/pba/forwarders/policies'
      params:
      - name: home_network_id.net_id
        value: ''
        type: query
        description: LoRa Alliance NetID.
      - name: home_network_id.tenant_id
        value: ''
        type: query
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
      - name: limit
        value: ''
        type: query
        description: Limit the number of results per page.
      - name: page
        value: ''
        type: query
        description: Page number for pagination. 0 is interpreted as 1.
    docs: 'List the routing policies that Forwarders configured with Packet Broker Agent as Home Network.

      Listing routing policies requires administrative access.'
  - info:
      name: 'List the listed home networks for which routing policies can be configured.

        Listing home networks requires administrative access.'
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/pba/home-networks'
      params:
      - name: limit
        value: ''
        type: query
        description: Limit the number of results per page.
      - name: page
        value: ''
        type: query
        description: Page number for pagination. 0 is interpreted as 1.
      - name: tenant_id_contains
        value: ''
        type: query
        description: Filter by tenant ID.
      - name: name_contains
        value: ''
        type: query
        description: Filter by name.
    docs: 'List the listed home networks for which routing policies can be configured.

      Listing home networks requires administrative access.'
  - info:
      name: 'Get the default gateway visibility.

        Getting gateway visibilities requires administrative access.'
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/pba/home-networks/gateway-visibilities/default'
    docs: 'Get the default gateway visibility.

      Getting gateway visibilities requires administrative access.'
  - info:
      name: 'Set the default gateway visibility.

        Setting gateway visibilities requires administrative access.'
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/pba/home-networks/gateway-visibilities/default'
    docs: 'Set the default gateway visibility.

      Setting gateway visibilities requires administrative access.'
  - info:
      name: 'Set the default gateway visibility.

        Setting gateway visibilities requires administrative access.'
      type: http
    http:
      method: PUT
      url: '{{baseUrl}}/pba/home-networks/gateway-visibilities/default'
    docs: 'Set the default gateway visibility.

      Setting gateway visibilities requires administrative access.'
  - info:
      name: 'Deletes the default gateway visibility.

        Deleting gateway visibilities requires administrative access.'
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/pba/home-networks/gateway-visibilities/default'
    docs: 'Deletes the default gateway visibility.

      Deleting gateway visibilities requires administrative access.'
  - info:
      name: 'List the routing policies that Packet Broker Agent as Forwarder configured with Home Networks.

        Listing routing policies requires administrative access.'
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/pba/home-networks/policies'
      params:
      - name: limit
        value: ''
        type: query
        description: Limit the number of results per page.
      - name: page
        value: ''
        type: query
        description: Page number for pagination. 0 is interpreted as 1.
    docs: 'List the routing policies that Packet Broker Agent as Forwarder configured with Home Networks.

      Listing routing policies requires administrative access.'
  - info:
      name: 'Get the default routing policy.

        Getting routing policies requires administrative access.'
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/pba/home-networks/policies/default'
    docs: 'Get the default routing policy.

      Getting routing policies requires administrative access.'
  - info:
      name: 'Set the default routing policy.

        Setting routing policies requires administrative access.'
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/pba/home-networks/policies/default'
    docs: 'Set the default routing policy.

      Setting routing policies requires administrative access.'
  - info:
      name: 'Set the default routing policy.

        Setting routing policies requires administrative access.'
      type: http
    http:
      method: PUT
      url: '{{baseUrl}}/pba/home-networks/policies/default'
    docs: 'Set the default routing policy.

      Setting routing policies requires administrative access.'
  - info:
      name: 'Deletes the default routing policy.

        Deleting routing policies requires administrative access.'
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/pba/home-networks/policies/default'
    docs: 'Deletes the default routing policy.

      Deleting routing policies requires administrative access.'
  - info:
      name: 'Set the routing policy for the given Home Network.

        Setting routing policies requires administrative access.'
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/pba/home-networks/policies/:home_network_id.net_id'
      params:
      - name: home_network_id.net_id
        value: ''
        type: path
        description: LoRa Alliance NetID.
    docs: 'Set the routing policy for the given Home Network.

      Setting routing policies requires administrative access.'
  - info:
      name: 'Set the routing policy for the given Home Network.

        Setting routing policies requires administrative access.'
      type: http
    http:
      method: PUT
      url: '{{baseUrl}}/pba/home-networks/policies/:home_network_id.net_id'
      params:
      - name: home_network_id.net_id
        value: ''
        type: path
        description: LoRa Alliance NetID.
    docs: 'Set the routing policy for the given Home Network.

      Setting routing policies requires administrative access.'
  - info:
      name: 'Set the routing policy for the given Home Network.

        Setting routing policies requires administrative access.'
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/pba/home-networks/policies/:home_network_id.net_id/:home_network_id.tenant_id'
      params:
      - name: home_network_id.net_id
        value: ''
        type: path
        description: LoRa Alliance NetID.
      - name: home_network_id.tenant_id
        value: ''
        type: path
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
    docs: 'Set the routing policy for the given Home Network.

      Setting routing policies requires administrative access.'
  - info:
      name: 'Set the routing policy for the given Home Network.

        Setting routing policies requires administrative access.'
      type: http
    http:
      method: PUT
      url: '{{baseUrl}}/pba/home-networks/policies/:home_network_id.net_id/:home_network_id.tenant_id'
      params:
      - name: home_network_id.net_id
        value: ''
        type: path
        description: LoRa Alliance NetID.
      - name: home_network_id.tenant_id
        value: ''
        type: path
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
    docs: 'Set the routing policy for the given Home Network.

      Setting routing policies requires administrative access.'
  - info:
      name: 'Get the routing policy for the given Home Network.

        Getting routing policies requires administrative access.'
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/pba/home-networks/policies/:net_id'
      params:
      - name: net_id
        value: ''
        type: path
        description: LoRa Alliance NetID.
      - name: tenant_id
        value: ''
        type: query
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
    docs: 'Get the routing policy for the given Home Network.

      Getting routing policies requires administrative access.'
  - info:
      name: 'Delete the routing policy for the given Home Network.

        Deleting routing policies requires administrative access.'
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/pba/home-networks/policies/:net_id'
      params:
      - name: net_id
        value: ''
        type: path
        description: LoRa Alliance NetID.
      - name: tenant_id
        value: ''
        type: query
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
    docs: 'Delete the routing policy for the given Home Network.

      Deleting routing policies requires administrative access.'
  - info:
      name: 'Get the routing policy for the given Home Network.

        Getting routing policies requires administrative access.'
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/pba/home-networks/policies/:net_id/:tenant_id'
      params:
      - name: net_id
        value: ''
        type: path
        description: LoRa Alliance NetID.
      - name: tenant_id
        value: ''
        type: path
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
    docs: 'Get the routing policy for the given Home Network.

      Getting routing policies requires administrative access.'
  - info:
      name: 'Delete the routing policy for the given Home Network.

        Deleting routing policies requires administrative access.'
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/pba/home-networks/policies/:net_id/:tenant_id'
      params:
      - name: net_id
        value: ''
        type: path
        description: LoRa Alliance NetID.
      - name: tenant_id
        value: ''
        type: path
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
    docs: 'Delete the routing policy for the given Home Network.

      Deleting routing policies requires administrative access.'
  - info:
      name: 'Get information about the Packet Broker registration.

        Viewing Packet Packet information requires administrative access.'
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/pba/info'
    docs: 'Get information about the Packet Broker registration.

      Viewing Packet Packet information requires administrative access.'
  - info:
      name: 'List all listed networks.

        Listing networks requires administrative access.'
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/pba/networks'
      params:
      - name: limit
        value: ''
        type: query
        description: Limit the number of results per page.
      - name: page
        value: ''
        type: query
        description: Page number for pagination. 0 is interpreted as 1.
      - name: with_routing_policy
        value: ''
        type: query
        description: If true, list only the Forwarders and Home Networks with whom a routing policy has been defined in either
          direction.
      - name: tenant_id_contains
        value: ''
        type: query
        description: Filter by tenant ID.
      - name: name_contains
        value: ''
        type: query
        description: Filter by name.
    docs: 'List all listed networks.

      Listing networks requires administrative access.'
  - info:
      name: 'Register with Packet Broker. If no registration exists, it will be created. Any existing registration will be
        updated.

        Registration settings not in the request message are taken from Packet Broker Agent configuration and caller context.

        Packet Broker registration requires administrative access.

        Packet Broker registration is only supported for tenants and requires Packet Broker Agent to be configured with

        NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled.'
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/pba/registration'
    docs: 'Register with Packet Broker. If no registration exists, it will be created. Any existing registration will be updated.

      Registration settings not in the request message are taken from Packet Broker Agent configuration and caller context.

      Packet Broker registration requires administrative access.

      Packet Broker registration is only supported for tenants and requires Packet Broker Agent to be configured with

      NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this'
  - info:
      name: 'Register with Packet Broker. If no registration exists, it will be created. Any existing registration will be
        updated.

        Registration settings not in the request message are taken from Packet Broker Agent configuration and caller context.

        Packet Broker registration requires administrative access.

        Packet Broker registration is only supported for tenants and requires Packet Broker Agent to be configured with

        NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled.'
      type: http
    http:
      method: PUT
      url: '{{baseUrl}}/pba/registration'
    docs: 'Register with Packet Broker. If no registration exists, it will be created. Any existing registration will be updated.

      Registration settings not in the request message are taken from Packet Broker Agent configuration and caller context.

      Packet Broker registration requires administrative access.

      Packet Broker registration is only supported for tenants and requires Packet Broker Agent to be configured with

      NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this'
  - info:
      name: 'Deregister from Packet Broker.

        Packet Broker deregistration requires administrative access.

        Packet Broker deregistration is only supported for tenants and requires Packet Broker Agent to be configured with

        NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled.'
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/pba/registration'
    docs: 'Deregister from Packet Broker.

      Packet Broker deregistration requires administrative access.

      Packet Broker deregistration is only supported for tenants and requires Packet Broker Agent to be configured with

      NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled.'
bundled: true