The Things Stack End Device Registry

EndDeviceRegistry, EndDeviceBatchRegistry, EndDeviceTemplateConverter, EndDeviceQRCodeGenerator, EndDeviceClaimingServer/BatchClaimingServer, and the DeviceRepository (LoRaWAN Device Repository search across vendors, models, firmware versions, profiles, and payload codecs).

The Things Stack End Device Registry is one of 9 APIs that The Things Network / The Things Stack publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include End Devices, Device Repository, Claiming, QR Codes, and Templates. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, sample payloads, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

the-things-stack-end-device-registry-openapi.yml Raw ↑
swagger: '2.0'
info:
  title: The Things Stack — End Device Registry
  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
host: eu1.cloud.thethings.industries
basePath: /api/v3
schemes:
- https
consumes:
- application/json
produces:
- application/json
securityDefinitions:
  ApiKeyAuth:
    type: apiKey
    in: header
    name: Authorization
    description: 'Bearer API key. Set Authorization: Bearer NNSXS.xxxxxxxxxx.'
security:
- ApiKeyAuth: []
tags:
- name: EndDeviceRegistry
- name: EndDeviceBatchRegistry
- name: EndDeviceTemplateConverter
- name: EndDeviceQRCodeGenerator
- name: EndDeviceClaimingServer
- name: EndDeviceBatchClaimingServer
- name: DeviceRepository
paths:
  /applications/{application_ids.application_id}/devices:
    get:
      summary: 'List end devices in the given application.

        Similar to Get, this selects the fields given by the field mask.

        More or less fields may be returned, depending on the rights of the caller.'
      operationId: EndDeviceRegistry_List
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDevices'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: field_mask
        description: 'The names of the end device fields that should be returned.

          See the API reference for which fields can be returned by the different services.'
        in: query
        required: false
        type: string
      - name: order
        description: 'Order the results by this field path (must be present in the field mask).

          Default ordering is by ID. Prepend with a minus (-) to reverse the order.'
        in: query
        required: false
        type: string
      - name: limit
        description: Limit the number of results per page.
        in: query
        required: false
        type: integer
        format: int64
      - name: page
        description: Page number for pagination. 0 is interpreted as 1.
        in: query
        required: false
        type: integer
        format: int64
      tags:
      - EndDeviceRegistry
  /applications/{application_ids.application_id}/devices/batch:
    get:
      summary: 'Get a batch of end devices with the given identifiers, selecting the fields specified

        in the field mask.

        More or less fields may be returned, depending on the rights of the caller.

        Devices not found are skipped and no error is returned.'
      operationId: EndDeviceBatchRegistry_Get
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDevices'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: device_ids
        in: query
        required: false
        type: array
        items:
          type: string
        collectionFormat: multi
      - name: field_mask
        description: 'The names of the end device fields that should be returned.

          This mask is applied on all the end devices in the result.

          See the API reference for which fields can be returned by the different services.'
        in: query
        required: false
        type: string
      tags:
      - EndDeviceBatchRegistry
    delete:
      summary: Delete a batch of end devices with the given IDs.
      description: 'This operation is atomic; either all devices are deleted or none.

        Devices not found are skipped and no error is returned.

        Before calling this RPC, use the corresponding BatchDelete RPCs

        of NsEndDeviceRegistry, AsEndDeviceRegistry and

        optionally the JsEndDeviceRegistry to delete the end devices.

        If the devices were claimed on a Join Server, use the BatchUnclaim RPC

        of the DeviceClaimingServer.

        This is NOT done automatically.'
      operationId: EndDeviceBatchRegistry_Delete
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: device_ids
        in: query
        required: false
        type: array
        items:
          type: string
        collectionFormat: multi
      tags:
      - EndDeviceBatchRegistry
  /applications/{application_ids.application_id}/devices/count:
    get:
      summary: Count end devices in the given application.
      operationId: EndDeviceRegistry_Count
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3CountEndDevicesResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      tags:
      - EndDeviceRegistry
  /applications/{application_ids.application_id}/devices/filter:
    post:
      summary: 'List end devices in the given application.

        Similar to Get, this selects the fields given by the field mask.

        More or less fields may be returned, depending on the rights of the caller.'
      operationId: EndDeviceRegistry_List2
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDevices'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/v3EndDeviceRegistryListBody'
      tags:
      - EndDeviceRegistry
  /applications/{application_ids.application_id}/devices/{device_id}:
    delete:
      summary: Delete the end device with the given IDs.
      description: 'Before deleting an end device it first needs to be deleted from the

        NsEndDeviceRegistry, the AsEndDeviceRegistry and the JsEndDeviceRegistry.

        In addition, if the device claimed on a Join Server, it also needs to be

        unclaimed via the DeviceClaimingServer so it can be claimed in the future.

        This is NOT done automatically.'
      operationId: EndDeviceRegistry_Delete
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: device_id
        in: path
        required: true
        type: string
      - name: dev_eui
        description: The LoRaWAN DevEUI.
        in: query
        required: false
        type: string
        format: string
      - name: join_eui
        description: The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
        in: query
        required: false
        type: string
        format: string
      - name: dev_addr
        description: The LoRaWAN DevAddr.
        in: query
        required: false
        type: string
        format: string
      tags:
      - EndDeviceRegistry
  /applications/{end_device.ids.application_ids.application_id}/devices:
    post:
      summary: Create a new end device within an application.
      description: 'After registering an end device, it also needs to be registered in

        the NsEndDeviceRegistry that is exposed by the Network Server,

        the AsEndDeviceRegistry that is exposed by the Application Server,

        and the JsEndDeviceRegistry that is exposed by the Join Server.'
      operationId: EndDeviceRegistry_Create
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDevice'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: end_device.ids.application_ids.application_id
        in: path
        required: true
        type: string
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/v3EndDeviceRegistryCreateBody'
      tags:
      - EndDeviceRegistry
  /applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}:
    put:
      summary: Update the end device, changing the fields specified by the field mask to the provided values.
      operationId: EndDeviceRegistry_Update
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDevice'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: end_device.ids.application_ids.application_id
        in: path
        required: true
        type: string
      - name: end_device.ids.device_id
        in: path
        required: true
        type: string
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/v3EndDeviceRegistryUpdateBody'
      tags:
      - EndDeviceRegistry
  /applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}:
    get:
      summary: 'Get the end device with the given identifiers, selecting the fields specified

        in the field mask.

        More or less fields may be returned, depending on the rights of the caller.'
      operationId: EndDeviceRegistry_Get
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDevice'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: end_device_ids.application_ids.application_id
        in: path
        required: true
        type: string
      - name: end_device_ids.device_id
        in: path
        required: true
        type: string
      - name: end_device_ids.dev_eui
        description: The LoRaWAN DevEUI.
        in: query
        required: false
        type: string
        format: string
      - name: end_device_ids.join_eui
        description: The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
        in: query
        required: false
        type: string
        format: string
      - name: end_device_ids.dev_addr
        description: The LoRaWAN DevAddr.
        in: query
        required: false
        type: string
        format: string
      - name: field_mask
        description: 'The names of the end device fields that should be returned.

          See the API reference for which fields can be returned by the different services.'
        in: query
        required: false
        type: string
      tags:
      - EndDeviceRegistry
  /dr/applications/{application_ids.application_id}/brands:
    get:
      operationId: DeviceRepository_ListBrands2
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3ListEndDeviceBrandsResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: limit
        description: Limit the number of results per page.
        in: query
        required: false
        type: integer
        format: int64
      - name: page
        description: Page number for pagination. 0 is interpreted as 1.
        in: query
        required: false
        type: integer
        format: int64
      - name: order_by
        description: Order (for pagination)
        in: query
        required: false
        type: string
      - name: search
        description: Search for brands matching a query string.
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  /dr/applications/{application_ids.application_id}/brands/{brand_id}:
    get:
      operationId: DeviceRepository_GetBrand2
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDeviceBrand'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: brand_id
        description: Brand identifier, as defined in the Device Repository.
        in: path
        required: true
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  /dr/applications/{application_ids.application_id}/brands/{brand_id}/models:
    get:
      operationId: DeviceRepository_ListModels4
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3ListEndDeviceModelsResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: brand_id
        description: List end devices from a specific brand.
        in: path
        required: true
        type: string
      - name: limit
        description: Limit the number of results per page.
        in: query
        required: false
        type: integer
        format: int64
      - name: page
        description: Page number for pagination. 0 is interpreted as 1.
        in: query
        required: false
        type: integer
        format: int64
      - name: order_by
        description: Order end devices
        in: query
        required: false
        type: string
      - name: search
        description: List end devices matching a query string.
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  /dr/applications/{application_ids.application_id}/brands/{brand_id}/models/{model_id}:
    get:
      operationId: DeviceRepository_GetModel2
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDeviceModel'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: brand_id
        description: Brand identifier, as defined in the Device Repository.
        in: path
        required: true
        type: string
      - name: model_id
        description: Model identifier, as defined in the Device Repository.
        in: path
        required: true
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  ? /dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/decoder
  : get:
      operationId: DeviceRepository_GetDownlinkDecoder2
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3MessagePayloadDecoder'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: version_ids.brand_id
        in: path
        required: true
        type: string
      - name: version_ids.model_id
        in: path
        required: true
        type: string
      - name: version_ids.firmware_version
        in: path
        required: true
        type: string
      - name: version_ids.band_id
        in: path
        required: true
        type: string
      - name: version_ids.hardware_version
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  ? /dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/encoder
  : get:
      operationId: DeviceRepository_GetDownlinkEncoder2
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3MessagePayloadEncoder'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: version_ids.brand_id
        in: path
        required: true
        type: string
      - name: version_ids.model_id
        in: path
        required: true
        type: string
      - name: version_ids.firmware_version
        in: path
        required: true
        type: string
      - name: version_ids.band_id
        in: path
        required: true
        type: string
      - name: version_ids.hardware_version
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  ? /dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/uplink/decoder
  : get:
      operationId: DeviceRepository_GetUplinkDecoder2
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3MessagePayloadDecoder'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: version_ids.brand_id
        in: path
        required: true
        type: string
      - name: version_ids.model_id
        in: path
        required: true
        type: string
      - name: version_ids.firmware_version
        in: path
        required: true
        type: string
      - name: version_ids.band_id
        in: path
        required: true
        type: string
      - name: version_ids.hardware_version
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  ? /dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/template
  : get:
      operationId: DeviceRepository_GetTemplate3
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDeviceTemplate'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: version_ids.brand_id
        in: path
        required: true
        type: string
      - name: version_ids.model_id
        in: path
        required: true
        type: string
      - name: version_ids.firmware_version
        in: path
        required: true
        type: string
      - name: version_ids.band_id
        in: path
        required: true
        type: string
      - name: version_ids.hardware_version
        in: query
        required: false
        type: string
      - name: end_device_profile_ids.vendor_id
        description: VendorID managed by the LoRa Alliance, as defined in TR005.
        in: query
        required: false
        type: integer
        format: int64
      - name: end_device_profile_ids.vendor_profile_id
        description: ID of the LoRaWAN end device profile assigned by the vendor.
        in: query
        required: false
        type: integer
        format: int64
      tags:
      - DeviceRepository
  /dr/applications/{application_ids.application_id}/models:
    get:
      operationId: DeviceRepository_ListModels3
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3ListEndDeviceModelsResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: brand_id
        description: List end devices from a specific brand.
        in: query
        required: false
        type: string
      - name: limit
        description: Limit the number of results per page.
        in: query
        required: false
        type: integer
        format: int64
      - name: page
        description: Page number for pagination. 0 is interpreted as 1.
        in: query
        required: false
        type: integer
        format: int64
      - name: order_by
        description: Order end devices
        in: query
        required: false
        type: string
      - name: search
        description: List end devices matching a query string.
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  ? /dr/applications/{application_ids.application_id}/vendors/{end_device_profile_ids.vendor_id}/profiles/{end_device_profile_ids.vendor_profile_id}/template
  : get:
      operationId: DeviceRepository_GetTemplate4
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDeviceTemplate'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: path
        required: true
        type: string
      - name: end_device_profile_ids.vendor_id
        description: VendorID managed by the LoRa Alliance, as defined in TR005.
        in: path
        required: true
        type: integer
        format: int64
      - name: end_device_profile_ids.vendor_profile_id
        description: ID of the LoRaWAN end device profile assigned by the vendor.
        in: path
        required: true
        type: integer
        format: int64
      - name: version_ids.brand_id
        in: query
        required: false
        type: string
      - name: version_ids.model_id
        in: query
        required: false
        type: string
      - name: version_ids.hardware_version
        in: query
        required: false
        type: string
      - name: version_ids.firmware_version
        in: query
        required: false
        type: string
      - name: version_ids.band_id
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  /dr/brands:
    get:
      operationId: DeviceRepository_ListBrands
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3ListEndDeviceBrandsResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: application_ids.application_id
        in: query
        required: false
        type: string
      - name: limit
        description: Limit the number of results per page.
        in: query
        required: false
        type: integer
        format: int64
      - name: page
        description: Page number for pagination. 0 is interpreted as 1.
        in: query
        required: false
        type: integer
        format: int64
      - name: order_by
        description: Order (for pagination)
        in: query
        required: false
        type: string
      - name: search
        description: Search for brands matching a query string.
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  /dr/brands/{brand_id}:
    get:
      operationId: DeviceRepository_GetBrand
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDeviceBrand'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: brand_id
        description: Brand identifier, as defined in the Device Repository.
        in: path
        required: true
        type: string
      - name: application_ids.application_id
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  /dr/brands/{brand_id}/models:
    get:
      operationId: DeviceRepository_ListModels2
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3ListEndDeviceModelsResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: brand_id
        description: List end devices from a specific brand.
        in: path
        required: true
        type: string
      - name: application_ids.application_id
        in: query
        required: false
        type: string
      - name: limit
        description: Limit the number of results per page.
        in: query
        required: false
        type: integer
        format: int64
      - name: page
        description: Page number for pagination. 0 is interpreted as 1.
        in: query
        required: false
        type: integer
        format: int64
      - name: order_by
        description: Order end devices
        in: query
        required: false
        type: string
      - name: search
        description: List end devices matching a query string.
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  /dr/brands/{brand_id}/models/{model_id}:
    get:
      operationId: DeviceRepository_GetModel
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3EndDeviceModel'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: brand_id
        description: Brand identifier, as defined in the Device Repository.
        in: path
        required: true
        type: string
      - name: model_id
        description: Model identifier, as defined in the Device Repository.
        in: path
        required: true
        type: string
      - name: application_ids.application_id
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  ? /dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/decoder
  : get:
      operationId: DeviceRepository_GetDownlinkDecoder
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3MessagePayloadDecoder'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: version_ids.brand_id
        in: path
        required: true
        type: string
      - name: version_ids.model_id
        in: path
        required: true
        type: string
      - name: version_ids.firmware_version
        in: path
        required: true
        type: string
      - name: version_ids.band_id
        in: path
        required: true
        type: string
      - name: application_ids.application_id
        in: query
        required: false
        type: string
      - name: version_ids.hardware_version
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  ? /dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/encoder
  : get:
      operationId: DeviceRepository_GetDownlinkEncoder
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3MessagePayloadEncoder'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: version_ids.brand_id
        in: path
        required: true
        type: string
      - name: version_ids.model_id
        in: path
        required: true
        type: string
      - name: version_ids.firmware_version
        in: path
        required: true
        type: string
      - name: version_ids.band_id
        in: path
        required: true
        type: string
      - name: application_ids.application_id
        in: query
        required: false
        type: string
      - name: version_ids.hardware_version
        in: query
        required: false
        type: string
      - name: field_mask
        description: Field mask paths.
        in: query
        required: false
        type: string
      tags:
      - DeviceRepository
  ? /dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{

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