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/NsGs internal interfaces. Supports Semtech UDP packet forwarder, Basic Station (LBS), and MQTT v2/v3.

The Things Stack Gateway Server 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 2 JSON Schema definitions.

Tagged areas include Gateway Server, LoRaWAN, Packet Forwarder, Managed Gateways, and LBS. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, sample payloads, 1 Naftiko capability spec, and 2 JSON Schemas.

OpenAPI Specification

the-things-stack-gateway-server-openapi.yml Raw ↑
swagger: '2.0'
info:
  title: The Things Stack — Gateway Server
  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: GatewayRegistry
- name: GatewayAccess
- name: GatewayBatchRegistry
- name: GatewayBatchAccess
- name: GatewayConfigurationService
- name: ManagedGatewayConfigurationService
- name: ManagedGatewayWiFiProfileConfigurationService
- name: ManagedGatewayEthernetProfileConfigurationService
- name: Gs
- name: GtwGs
- name: GatewayClaimingServer
- name: GatewayQRCodeGenerator
paths:
  /gateways:
    get:
      summary: 'List gateways where the given user or organization is a direct collaborator.

        If no user or organization is given, this returns the gateways the caller

        has access to.

        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: GatewayRegistry_List
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3Gateways'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: collaborator.organization_ids.organization_id
        description: This ID shares namespace with user IDs.
        in: query
        required: false
        type: string
      - name: collaborator.user_ids.user_id
        description: This ID shares namespace with organization IDs.
        in: query
        required: false
        type: string
      - name: collaborator.user_ids.email
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
      - name: field_mask
        description: The names of the gateway fields that should be returned.
        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
      - name: deleted
        description: Only return recently deleted gateways.
        in: query
        required: false
        type: boolean
      tags:
      - GatewayRegistry
  /gateways/batch:
    delete:
      summary: 'Delete a batch of gateways.

        This operation is atomic; either all gateways are deleted or none.

        The caller must have delete rights on all requested gateways.'
      operationId: GatewayBatchRegistry_Delete
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      tags:
      - GatewayBatchRegistry
  /gateways/filter:
    post:
      summary: 'List gateways where the given user or organization is a direct collaborator.

        If no user or organization is given, this returns the gateways the caller

        has access to.

        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: GatewayRegistry_List4
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3Gateways'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/v3ListGatewaysRequest'
      tags:
      - GatewayRegistry
  /gateways/rights/batch:
    get:
      summary: 'Assert that the caller has the requested rights on all the requested gateways.

        The check is successful if there are no errors.'
      operationId: GatewayBatchAccess_AssertRights
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: required.rights
        description: " - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to\
          \ edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right\
          \ to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE:\
          \ The right to delete user account.\n - RIGHT_USER_PURGE: The right to delete user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS:\
          \ The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to\
          \ list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application\
          \ under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n\
          \ - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST:\
          \ The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create\
          \ an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations\
          \ the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user\
          \ account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL:\
          \ The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application\
          \ information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS:\
          \ The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view\
          \ and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application\
          \ packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE:\
          \ The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n\
          \ - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS:\
          \ The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing\
          \ them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ:\
          \ The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right\
          \ to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application\
          \ traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\n\
          i.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\n\
          This right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n\
          \ - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL:\
          \ The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client\
          \ information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS:\
          \ The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE:\
          \ The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC:\
          \ The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway\
          \ API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE:\
          \ The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ:\
          \ The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n\
          \ - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink\
          \ and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n\
          \ - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view\
          \ view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n\
          \ - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL:\
          \ The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization\
          \ information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS:\
          \ The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and\
          \ edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE:\
          \ The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications\
          \ the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application\
          \ under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization\
          \ is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n\
          \ - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n\
          \ - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR:\
          \ The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right\
          \ for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\n\
          Note that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALL: The pseudo-right\
          \ for all (current and future) possible rights."
        in: query
        required: false
        type: array
        items:
          type: string
          enum:
          - right_invalid
          - RIGHT_USER_INFO
          - RIGHT_USER_SETTINGS_BASIC
          - RIGHT_USER_LIST
          - RIGHT_USER_CREATE
          - RIGHT_USER_SETTINGS_API_KEYS
          - RIGHT_USER_DELETE
          - RIGHT_USER_PURGE
          - RIGHT_USER_AUTHORIZED_CLIENTS
          - RIGHT_USER_APPLICATIONS_LIST
          - RIGHT_USER_APPLICATIONS_CREATE
          - RIGHT_USER_GATEWAYS_LIST
          - RIGHT_USER_GATEWAYS_CREATE
          - RIGHT_USER_CLIENTS_LIST
          - RIGHT_USER_CLIENTS_CREATE
          - RIGHT_USER_ORGANIZATIONS_LIST
          - RIGHT_USER_ORGANIZATIONS_CREATE
          - RIGHT_USER_NOTIFICATIONS_READ
          - RIGHT_USER_ALL
          - RIGHT_APPLICATION_INFO
          - RIGHT_APPLICATION_SETTINGS_BASIC
          - RIGHT_APPLICATION_SETTINGS_API_KEYS
          - RIGHT_APPLICATION_SETTINGS_COLLABORATORS
          - RIGHT_APPLICATION_SETTINGS_PACKAGES
          - RIGHT_APPLICATION_DELETE
          - RIGHT_APPLICATION_PURGE
          - RIGHT_APPLICATION_DEVICES_READ
          - RIGHT_APPLICATION_DEVICES_WRITE
          - RIGHT_APPLICATION_DEVICES_READ_KEYS
          - RIGHT_APPLICATION_DEVICES_WRITE_KEYS
          - RIGHT_APPLICATION_TRAFFIC_READ
          - RIGHT_APPLICATION_TRAFFIC_UP_WRITE
          - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE
          - RIGHT_APPLICATION_LINK
          - RIGHT_APPLICATION_ALL
          - RIGHT_CLIENT_ALL
          - RIGHT_CLIENT_INFO
          - RIGHT_CLIENT_SETTINGS_BASIC
          - RIGHT_CLIENT_SETTINGS_COLLABORATORS
          - RIGHT_CLIENT_DELETE
          - RIGHT_CLIENT_PURGE
          - RIGHT_GATEWAY_INFO
          - RIGHT_GATEWAY_SETTINGS_BASIC
          - RIGHT_GATEWAY_SETTINGS_API_KEYS
          - RIGHT_GATEWAY_SETTINGS_COLLABORATORS
          - RIGHT_GATEWAY_DELETE
          - RIGHT_GATEWAY_PURGE
          - RIGHT_GATEWAY_TRAFFIC_READ
          - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE
          - RIGHT_GATEWAY_LINK
          - RIGHT_GATEWAY_STATUS_READ
          - RIGHT_GATEWAY_LOCATION_READ
          - RIGHT_GATEWAY_WRITE_SECRETS
          - RIGHT_GATEWAY_READ_SECRETS
          - RIGHT_GATEWAY_ALL
          - RIGHT_ORGANIZATION_INFO
          - RIGHT_ORGANIZATION_SETTINGS_BASIC
          - RIGHT_ORGANIZATION_SETTINGS_API_KEYS
          - RIGHT_ORGANIZATION_SETTINGS_MEMBERS
          - RIGHT_ORGANIZATION_DELETE
          - RIGHT_ORGANIZATION_PURGE
          - RIGHT_ORGANIZATION_APPLICATIONS_LIST
          - RIGHT_ORGANIZATION_APPLICATIONS_CREATE
          - RIGHT_ORGANIZATION_GATEWAYS_LIST
          - RIGHT_ORGANIZATION_GATEWAYS_CREATE
          - RIGHT_ORGANIZATION_CLIENTS_LIST
          - RIGHT_ORGANIZATION_CLIENTS_CREATE
          - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR
          - RIGHT_ORGANIZATION_ALL
          - RIGHT_SEND_INVITES
          - RIGHT_ALL
        collectionFormat: multi
      tags:
      - GatewayBatchAccess
  /gateways/{gateway.ids.gateway_id}:
    put:
      summary: Update the gateway, changing the fields specified by the field mask to the provided values.
      operationId: GatewayRegistry_Update
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3Gateway'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway.ids.gateway_id
        in: path
        required: true
        type: string
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/v3GatewayRegistryUpdateBody'
      tags:
      - GatewayRegistry
  /gateways/{gateway_ids.gateway_id}:
    get:
      summary: 'Get the gateway 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: GatewayRegistry_Get
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3Gateway'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: gateway_ids.eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: string
      - name: field_mask
        description: The names of the gateway fields that should be returned.
        in: query
        required: false
        type: string
      tags:
      - GatewayRegistry
  /gateways/{gateway_ids.gateway_id}/api-keys:
    get:
      summary: List the API keys for this gateway.
      operationId: GatewayAccess_ListAPIKeys
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3APIKeys'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: gateway_ids.eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: string
      - name: order
        description: 'Order the results by this field path.

          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:
      - GatewayAccess
    post:
      summary: Create an API key scoped to this gateway.
      operationId: GatewayAccess_CreateAPIKey
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3APIKey'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/v3GatewayAccessCreateAPIKeyBody'
      tags:
      - GatewayAccess
  /gateways/{gateway_ids.gateway_id}/api-keys/{api_key.id}:
    put:
      summary: 'Update the rights of an API key of the gateway.

        This method can also be used to delete the API key, by giving it no rights.

        The caller is required to have all assigned or/and removed rights.'
      operationId: GatewayAccess_UpdateAPIKey
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3APIKey'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: api_key.id
        description: 'Immutable and unique public identifier for the API key.

          Generated by the Access Server.'
        in: path
        required: true
        type: string
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/v3GatewayAccessUpdateAPIKeyBody'
      tags:
      - GatewayAccess
  /gateways/{gateway_ids.gateway_id}/api-keys/{key_id}:
    get:
      summary: Get a single API key of this gateway.
      operationId: GatewayAccess_GetAPIKey
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3APIKey'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: key_id
        description: Unique public identifier for the API key.
        in: path
        required: true
        type: string
      - name: gateway_ids.eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: string
      tags:
      - GatewayAccess
    delete:
      summary: Delete a single API key of this gateway.
      operationId: GatewayAccess_DeleteAPIKey
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: key_id
        in: path
        required: true
        type: string
      - name: gateway_ids.eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: string
      tags:
      - GatewayAccess
  /gateways/{gateway_ids.gateway_id}/collaborator/organization/{collaborator.organization_ids.organization_id}:
    get:
      summary: 'Get the rights of a collaborator (member) of the gateway.

        Pseudo-rights in the response (such as the "_ALL" right) are not expanded.'
      operationId: GatewayAccess_GetCollaborator2
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3GetCollaboratorResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: collaborator.organization_ids.organization_id
        description: This ID shares namespace with user IDs.
        in: path
        required: true
        type: string
      - name: gateway_ids.eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: string
      - name: collaborator.user_ids.user_id
        description: This ID shares namespace with organization IDs.
        in: query
        required: false
        type: string
      - name: collaborator.user_ids.email
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
      tags:
      - GatewayAccess
  /gateways/{gateway_ids.gateway_id}/collaborator/user/{collaborator.user_ids.user_id}:
    get:
      summary: 'Get the rights of a collaborator (member) of the gateway.

        Pseudo-rights in the response (such as the "_ALL" right) are not expanded.'
      operationId: GatewayAccess_GetCollaborator
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3GetCollaboratorResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: collaborator.user_ids.user_id
        description: This ID shares namespace with organization IDs.
        in: path
        required: true
        type: string
      - name: gateway_ids.eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: string
      - name: collaborator.organization_ids.organization_id
        description: This ID shares namespace with user IDs.
        in: query
        required: false
        type: string
      - name: collaborator.user_ids.email
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
      tags:
      - GatewayAccess
  /gateways/{gateway_ids.gateway_id}/collaborators:
    get:
      summary: List the collaborators on this gateway.
      operationId: GatewayAccess_ListCollaborators
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/v3Collaborators'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: gateway_ids.eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: 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
        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
      tags:
      - GatewayAccess
    put:
      summary: 'Set the rights of a collaborator (member) on the gateway.

        This method can also be used to delete the collaborator, by giving them no rights.

        The caller is required to have all assigned or/and removed rights.'
      operationId: GatewayAccess_SetCollaborator
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/v3GatewayAccessSetCollaboratorBody'
      tags:
      - GatewayAccess
  /gateways/{gateway_ids.gateway_id}/collaborators/organization/{collaborator_ids.organization_ids.organization_id}:
    delete:
      summary: DeleteCollaborator removes a collaborator from a gateway.
      operationId: GatewayAccess_DeleteCollaborator2
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: collaborator_ids.organization_ids.organization_id
        description: This ID shares namespace with user IDs.
        in: path
        required: true
        type: string
      - name: gateway_ids.eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: string
      - name: collaborator_ids.user_ids.user_id
        description: This ID shares namespace with organization IDs.
        in: query
        required: false
        type: string
      - name: collaborator_ids.user_ids.email
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
      tags:
      - GatewayAccess
  /gateways/{gateway_ids.gateway_id}/collaborators/user/{collaborator_ids.user_ids.user_id}:
    delete:
      summary: DeleteCollaborator removes a collaborator from a gateway.
      operationId: GatewayAccess_DeleteCollaborator
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_ids.gateway_id
        in: path
        required: true
        type: string
      - name: collaborator_ids.user_ids.user_id
        description: This ID shares namespace with organization IDs.
        in: path
        required: true
        type: string
      - name: gateway_ids.eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: string
      - name: collaborator_ids.organization_ids.organization_id
        description: This ID shares namespace with user IDs.
        in: query
        required: false
        type: string
      - name: collaborator_ids.user_ids.email
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
      tags:
      - GatewayAccess
  /gateways/{gateway_id}:
    delete:
      summary: Delete the gateway. This may not release the gateway ID for reuse, but it does release the EUI.
      operationId: GatewayRegistry_Delete
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_id
        in: path
        required: true
        type: string
      - name: eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: string
      tags:
      - GatewayRegistry
  /gateways/{gateway_id}/purge:
    delete:
      summary: 'Purge the gateway. This will release both gateway ID and EUI for reuse.

        The gateway owner is responsible for clearing data from any (external) integrations

        that may store and expose data by gateway ID.'
      operationId: GatewayRegistry_Purge
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
      parameters:
      - name: gateway_id
        in: path
        required: true
        type: string
      - name: eui
        description: Secondary identifier, which can only be used in specific requests.
        in: query
        required: false
        type: string
        format: string
      tags:
      - GatewayRegistry
  /gateways/{gateway_id}/restore:
    post:
      summary: 'Restore a recently deleted gateway. This does not restore the EUI,

        as that was released when deleting the gateway.'
      description: 'Deployment configuration may specify if, and for how long after deletion,

        entities can be restored.'
      operationId: GatewayRegistry_Restore
      responses:
        '200':
          description: A successful response.
          schema:
            type: object
            properties: {}
        default:
          descr

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