The Things Network / The Things Stack Pba API

The Pba API from The Things Network / The Things Stack — 12 operation(s) for pba.

Operations 24

GET /pba/forwarders/policies List the routing policies that Forwarders configured with Packet Broker Agent as Home Network. Listing routing policies requires administrative access. #
GET /pba/home-networks List the listed home networks for which routing policies can be configured. Listing home networks requires administrative access. #
GET /pba/home-networks/gateway-visibilities/default Get the default gateway visibility. Getting gateway visibilities requires administrative access. #
DELETE /pba/home-networks/gateway-visibilities/default Deletes the default gateway visibility. Deleting gateway visibilities requires administrative access. #
POST /pba/home-networks/gateway-visibilities/default Set the default gateway visibility. Setting gateway visibilities requires administrative access. #
PUT /pba/home-networks/gateway-visibilities/default Set the default gateway visibility. Setting gateway visibilities requires administrative access. #
GET /pba/home-networks/policies List the routing policies that Packet Broker Agent as Forwarder configured with Home Networks. Listing routing policies requires administrative access. #
GET /pba/home-networks/policies/default Get the default routing policy. Getting routing policies requires administrative access. #
DELETE /pba/home-networks/policies/default Deletes the default routing policy. Deleting routing policies requires administrative access. #
POST /pba/home-networks/policies/default Set the default routing policy. Setting routing policies requires administrative access. #
PUT /pba/home-networks/policies/default Set the default routing policy. Setting routing policies requires administrative access. #
POST /pba/home-networks/policies/{home_network_id.net_id} Set the routing policy for the given Home Network. Setting routing policies requires administrative access. #
PUT /pba/home-networks/policies/{home_network_id.net_id} Set the routing policy for the given Home Network. Setting routing policies requires administrative access. #
POST /pba/home-networks/policies/{home_network_id.net_id}/{home_network_id.tenant_id} Set the routing policy for the given Home Network. Setting routing policies requires administrative access. #
PUT /pba/home-networks/policies/{home_network_id.net_id}/{home_network_id.tenant_id} Set the routing policy for the given Home Network. Setting routing policies requires administrative access. #
GET /pba/home-networks/policies/{net_id} Get the routing policy for the given Home Network. Getting routing policies requires administrative access. #
DELETE /pba/home-networks/policies/{net_id} Delete the routing policy for the given Home Network. Deleting routing policies requires administrative access. #
GET /pba/home-networks/policies/{net_id}/{tenant_id} Get the routing policy for the given Home Network. Getting routing policies requires administrative access. #
DELETE /pba/home-networks/policies/{net_id}/{tenant_id} Delete the routing policy for the given Home Network. Deleting routing policies requires administrative access. #
GET /pba/info Get information about the Packet Broker registration. Viewing Packet Packet information requires administrative access. #
GET /pba/networks List all listed networks. Listing networks requires administrative access. #
DELETE /pba/registration Deregister from Packet Broker. Packet Broker deregistration requires administrative access. Packet Broker deregistration is only supported for tenants and requires Packet Broker Ag #
POST /pba/registration 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 fr #
PUT /pba/registration 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 fr #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/the-things-network-pba-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

the-things-network-pba-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Things Stack — Application Server AppAs Pba API
  version: v3.36
  description: The Things Stack is an open-source LoRaWAN Network Server implementation. This OpenAPI was derived from the upstream gRPC-Gateway generated api.swagger.json published by TheThingsNetwork/lorawan-stack v3.36.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  contact:
    name: The Things Industries
    url: https://www.thethingsindustries.com
servers:
- url: https://eu1.cloud.thethings.industries/api/v3
security:
- ApiKeyAuth: []
tags:
- name: Pba
paths:
  /pba/forwarders/policies:
    get:
      summary: 'List the routing policies that Forwarders configured with Packet Broker Agent as Home Network.

        Listing routing policies requires administrative access.'
      operationId: Pba_ListForwarderRoutingPolicies
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerRoutingPolicies'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: home_network_id.net_id
        description: LoRa Alliance NetID.
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: home_network_id.tenant_id
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
        in: query
        required: false
        schema:
          type: string
      - name: limit
        description: Limit the number of results per page.
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: page
        description: Page number for pagination. 0 is interpreted as 1.
        in: query
        required: false
        schema:
          type: integer
          format: int64
      tags:
      - Pba
  /pba/home-networks:
    get:
      summary: 'List the listed home networks for which routing policies can be configured.

        Listing home networks requires administrative access.'
      operationId: Pba_ListHomeNetworks
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerNetworks'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: limit
        description: Limit the number of results per page.
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: page
        description: Page number for pagination. 0 is interpreted as 1.
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: tenant_id_contains
        description: Filter by tenant ID.
        in: query
        required: false
        schema:
          type: string
      - name: name_contains
        description: Filter by name.
        in: query
        required: false
        schema:
          type: string
      tags:
      - Pba
  /pba/home-networks/gateway-visibilities/default:
    get:
      summary: 'Get the default gateway visibility.

        Getting gateway visibilities requires administrative access.'
      operationId: Pba_GetHomeNetworkDefaultGatewayVisibility
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerDefaultGatewayVisibility'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
    delete:
      summary: 'Deletes the default gateway visibility.

        Deleting gateway visibilities requires administrative access.'
      operationId: Pba_DeleteHomeNetworkDefaultGatewayVisibility
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
    post:
      summary: 'Set the default gateway visibility.

        Setting gateway visibilities requires administrative access.'
      operationId: Pba_SetHomeNetworkDefaultGatewayVisibility2
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v3SetPacketBrokerDefaultGatewayVisibilityRequest'
        required: true
    put:
      summary: 'Set the default gateway visibility.

        Setting gateway visibilities requires administrative access.'
      operationId: Pba_SetHomeNetworkDefaultGatewayVisibility
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v3SetPacketBrokerDefaultGatewayVisibilityRequest'
        required: true
  /pba/home-networks/policies:
    get:
      summary: 'List the routing policies that Packet Broker Agent as Forwarder configured with Home Networks.

        Listing routing policies requires administrative access.'
      operationId: Pba_ListHomeNetworkRoutingPolicies
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerRoutingPolicies'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: limit
        description: Limit the number of results per page.
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: page
        description: Page number for pagination. 0 is interpreted as 1.
        in: query
        required: false
        schema:
          type: integer
          format: int64
      tags:
      - Pba
  /pba/home-networks/policies/default:
    get:
      summary: 'Get the default routing policy.

        Getting routing policies requires administrative access.'
      operationId: Pba_GetHomeNetworkDefaultRoutingPolicy
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerDefaultRoutingPolicy'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
    delete:
      summary: 'Deletes the default routing policy.

        Deleting routing policies requires administrative access.'
      operationId: Pba_DeleteHomeNetworkDefaultRoutingPolicy
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
    post:
      summary: 'Set the default routing policy.

        Setting routing policies requires administrative access.'
      operationId: Pba_SetHomeNetworkDefaultRoutingPolicy2
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v3SetPacketBrokerDefaultRoutingPolicyRequest'
        required: true
    put:
      summary: 'Set the default routing policy.

        Setting routing policies requires administrative access.'
      operationId: Pba_SetHomeNetworkDefaultRoutingPolicy
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v3SetPacketBrokerDefaultRoutingPolicyRequest'
        required: true
  /pba/home-networks/policies/{home_network_id.net_id}:
    post:
      summary: 'Set the routing policy for the given Home Network.

        Setting routing policies requires administrative access.'
      operationId: Pba_SetHomeNetworkRoutingPolicy2
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: home_network_id.net_id
        description: LoRa Alliance NetID.
        in: path
        required: true
        schema:
          type: integer
          format: int64
      tags:
      - Pba
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbaSetHomeNetworkRoutingPolicyBody'
        required: true
    put:
      summary: 'Set the routing policy for the given Home Network.

        Setting routing policies requires administrative access.'
      operationId: Pba_SetHomeNetworkRoutingPolicy
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: home_network_id.net_id
        description: LoRa Alliance NetID.
        in: path
        required: true
        schema:
          type: integer
          format: int64
      tags:
      - Pba
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbaSetHomeNetworkRoutingPolicyBody'
        required: true
  /pba/home-networks/policies/{home_network_id.net_id}/{home_network_id.tenant_id}:
    post:
      summary: 'Set the routing policy for the given Home Network.

        Setting routing policies requires administrative access.'
      operationId: Pba_SetHomeNetworkRoutingPolicy4
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: home_network_id.net_id
        description: LoRa Alliance NetID.
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: home_network_id.tenant_id
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
        in: path
        required: true
        schema:
          type: string
      tags:
      - Pba
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbaSetHomeNetworkRoutingPolicyBody'
        required: true
    put:
      summary: 'Set the routing policy for the given Home Network.

        Setting routing policies requires administrative access.'
      operationId: Pba_SetHomeNetworkRoutingPolicy3
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: home_network_id.net_id
        description: LoRa Alliance NetID.
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: home_network_id.tenant_id
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
        in: path
        required: true
        schema:
          type: string
      tags:
      - Pba
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbaSetHomeNetworkRoutingPolicyBody'
        required: true
  /pba/home-networks/policies/{net_id}:
    get:
      summary: 'Get the routing policy for the given Home Network.

        Getting routing policies requires administrative access.'
      operationId: Pba_GetHomeNetworkRoutingPolicy
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerRoutingPolicy'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: net_id
        description: LoRa Alliance NetID.
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tenant_id
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
        in: query
        required: false
        schema:
          type: string
      tags:
      - Pba
    delete:
      summary: 'Delete the routing policy for the given Home Network.

        Deleting routing policies requires administrative access.'
      operationId: Pba_DeleteHomeNetworkRoutingPolicy
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: net_id
        description: LoRa Alliance NetID.
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tenant_id
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
        in: query
        required: false
        schema:
          type: string
      tags:
      - Pba
  /pba/home-networks/policies/{net_id}/{tenant_id}:
    get:
      summary: 'Get the routing policy for the given Home Network.

        Getting routing policies requires administrative access.'
      operationId: Pba_GetHomeNetworkRoutingPolicy2
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerRoutingPolicy'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: net_id
        description: LoRa Alliance NetID.
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tenant_id
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
        in: path
        required: true
        schema:
          type: string
      tags:
      - Pba
    delete:
      summary: 'Delete the routing policy for the given Home Network.

        Deleting routing policies requires administrative access.'
      operationId: Pba_DeleteHomeNetworkRoutingPolicy2
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: net_id
        description: LoRa Alliance NetID.
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tenant_id
        description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
        in: path
        required: true
        schema:
          type: string
      tags:
      - Pba
  /pba/info:
    get:
      summary: 'Get information about the Packet Broker registration.

        Viewing Packet Packet information requires administrative access.'
      operationId: Pba_GetInfo
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerInfo'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
  /pba/networks:
    get:
      summary: 'List all listed networks.

        Listing networks requires administrative access.'
      operationId: Pba_ListNetworks
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerNetworks'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      parameters:
      - name: limit
        description: Limit the number of results per page.
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: page
        description: Page number for pagination. 0 is interpreted as 1.
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: with_routing_policy
        description: If true, list only the Forwarders and Home Networks with whom a routing policy has been defined in either direction.
        in: query
        required: false
        schema:
          type: boolean
      - name: tenant_id_contains
        description: Filter by tenant ID.
        in: query
        required: false
        schema:
          type: string
      - name: name_contains
        description: Filter by name.
        in: query
        required: false
        schema:
          type: string
      tags:
      - Pba
  /pba/registration:
    delete:
      summary: '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.'
      operationId: Pba_Deregister
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
    post:
      summary: '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.'
      operationId: Pba_Register2
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerNetwork'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v3PacketBrokerRegisterRequest'
        required: true
    put:
      summary: '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.'
      operationId: Pba_Register
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3PacketBrokerNetwork'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      tags:
      - Pba
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v3PacketBrokerRegisterRequest'
        required: true
components:
  schemas:
    v3PacketBrokerDefaultRoutingPolicy:
      type: object
      properties:
        updated_at:
          type: string
          format: date-time
          description: Timestamp when the policy got last updated.
        uplink:
          $ref: '#/components/schemas/v3PacketBrokerRoutingPolicyUplink'
          description: Uplink policy.
        downlink:
          $ref: '#/components/schemas/v3PacketBrokerRoutingPolicyDownlink'
          description: Downlink policy.
    v3DevAddrPrefix:
      type: object
      properties:
        dev_addr:
          type: string
          format: string
          example: 2600ABCD
          description: DevAddr base.
        length:
          type: integer
          format: int64
          description: Number of most significant bits from dev_addr that are used as prefix.
    v3PacketBrokerGatewayVisibility:
      type: object
      properties:
        location:
          type: boolean
          description: Show location.
        antenna_placement:
          type: boolean
          description: Show antenna placement (indoor/outdoor).
        antenna_count:
          type: boolean
          description: Show antenna count.
        fine_timestamps:
          type: boolean
          description: Show whether the gateway produces fine timestamps.
        contact_info:
          type: boolean
          description: Show contact information.
        status:
          type: boolean
          description: Show status (online/offline).
        frequency_plan:
          type: boolean
          description: Show frequency plan.
        packet_rates:
          type: boolean
          description: Show receive and transmission packet rates.
    v3ContactType:
      type: string
      enum:
      - CONTACT_TYPE_OTHER
      - CONTACT_TYPE_ABUSE
      - CONTACT_TYPE_BILLING
      - CONTACT_TYPE_TECHNICAL
      default: CONTACT_TYPE_OTHER
    v3PacketBrokerRoutingPolicyDownlink:
      type: object
      properties:
        join_accept:
          type: boolean
          description: Allow join-accept messages.
        mac_data:
          type: boolean
          description: Allow downlink messages with FPort of 0.
        application_data:
          type: boolean
          description: Allow downlink messages with FPort between 1 and 255.
    googlerpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/protobufAny'
    v3PacketBrokerRoutingPolicyUplink:
      type: object
      properties:
        join_request:
          type: boolean
          description: Forward join-request messages.
        mac_data:
          type: boolean
          description: Forward uplink messages with FPort of 0.
        application_data:
          type: boolean
          description: Forward uplink messages with FPort between 1 and 255.
        signal_quality:
          type: boolean
          description: Forward RSSI and SNR.
        localization:
          type: boolean
          description: Forward gateway location, RSSI, SNR and fine timestamp.
    v3PacketBrokerDevAddrBlock:
      type: object
      properties:
        dev_addr_prefix:
          $ref: '#/components/schemas/v3DevAddrPrefix'
        home_network_cluster_id:
          type: string
    v3PacketBrokerNetworkIdentifier:
      type: object
      properties:
        net_id:
          type: integer
          format: int64
          description: LoRa Alliance NetID.
        tenant_id:
          type: string
          description: Tenant identifier if the registration leases DevAddr blocks from a NetID.
    v3PacketBrokerRoutingPolicy:
      type: object
      properties:
        forwarder_id:
          $ref: '#/components/schemas/v3PacketBrokerNetworkIdentifier'
          description: Packet Broker identifier of the Forwarder.
        home_network_id:
          $ref: '#/components/schemas/v3PacketBrokerNetworkIdentifier'
          description: Packet Broker identifier of the Home Network.
        updated_at:
          type: string
          format: date-time
          description: Timestamp when the policy got last updated.
        uplink:
          $ref: '#/components/schemas/v3PacketBrokerRoutingPolicyUplink'
          description: Uplink policy.
        downlink:
          $ref: '#/components/schemas/v3PacketBrokerRoutingPolicyDownlink'
          description: Downlink policy.
    v3PacketBrokerNetworks:
      type: object
      properties:
        networks:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/v3PacketBrokerNetwork'
    v3ContactInfo:
      type: object
      properties:
        contact_type:
          $ref: '#/components/schemas/v3ContactType'
        contact_method:
          $ref: '#/components/schemas/v3ContactMethod'
        value:
          type: string
        public:
          type: boolean
        validated_at:
          type: string
          format: date-time
    v3ContactMethod:
      type: string
      enum:
      - CONTACT_METHOD_OTHER
      - CONTACT_METHOD_EMAIL
      - CONTACT_METHOD_PHONE
      default: CONTACT_METHOD_OTHER
    protobufAny:
      type: object
      properties:
        '@type':
          type: string
          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."
      additionalProperties: {}
      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(&foo)) {\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(

# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/the-things-network/refs/heads/main/openapi/the-things-network-pba-api-openapi.yml