swagger: '2.0' info: title: The Things Stack — Application Server AppAs ApplicationWebhookRegistry 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 host: eu1.cloud.thethings.industries basePath: /api/v3 schemes: - https consumes: - application/json produces: - application/json security: - ApiKeyAuth: [] tags: - name: ApplicationWebhookRegistry paths: /as/webhook-formats: get: operationId: ApplicationWebhookRegistry_GetFormats responses: '200': description: A successful response. schema: $ref: '#/definitions/v3ApplicationWebhookFormats' default: description: An unexpected error response. schema: $ref: '#/definitions/googlerpcStatus' tags: - ApplicationWebhookRegistry /as/webhook-templates: get: operationId: ApplicationWebhookRegistry_ListTemplates responses: '200': description: A successful response. schema: $ref: '#/definitions/v3ApplicationWebhookTemplates' default: description: An unexpected error response. schema: $ref: '#/definitions/googlerpcStatus' parameters: - name: field_mask in: query required: false type: string tags: - ApplicationWebhookRegistry /as/webhook-templates/{ids.template_id}: get: operationId: ApplicationWebhookRegistry_GetTemplate responses: '200': description: A successful response. schema: $ref: '#/definitions/v3ApplicationWebhookTemplate' default: description: An unexpected error response. schema: $ref: '#/definitions/googlerpcStatus' parameters: - name: ids.template_id in: path required: true type: string - name: field_mask in: query required: false type: string tags: - ApplicationWebhookRegistry /as/webhooks/{application_ids.application_id}: get: operationId: ApplicationWebhookRegistry_List responses: '200': description: A successful response. schema: $ref: '#/definitions/v3ApplicationWebhooks' 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 in: query required: false type: string - name: limit in: query required: false type: integer format: int64 - name: page in: query required: false type: integer format: int64 tags: - ApplicationWebhookRegistry /as/webhooks/{application_ids.application_id}/{webhook_id}: delete: operationId: ApplicationWebhookRegistry_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: webhook_id in: path required: true type: string tags: - ApplicationWebhookRegistry /as/webhooks/{ids.application_ids.application_id}/{ids.webhook_id}: get: operationId: ApplicationWebhookRegistry_Get responses: '200': description: A successful response. schema: $ref: '#/definitions/v3ApplicationWebhook' default: description: An unexpected error response. schema: $ref: '#/definitions/googlerpcStatus' parameters: - name: ids.application_ids.application_id in: path required: true type: string - name: ids.webhook_id in: path required: true type: string - name: field_mask in: query required: false type: string tags: - ApplicationWebhookRegistry /as/webhooks/{webhook.ids.application_ids.application_id}: post: operationId: ApplicationWebhookRegistry_Set2 responses: '200': description: A successful response. schema: $ref: '#/definitions/v3ApplicationWebhook' default: description: An unexpected error response. schema: $ref: '#/definitions/googlerpcStatus' parameters: - name: webhook.ids.application_ids.application_id in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/v3ApplicationWebhookRegistrySetBody' tags: - ApplicationWebhookRegistry /as/webhooks/{webhook.ids.application_ids.application_id}/{webhook.ids.webhook_id}: put: operationId: ApplicationWebhookRegistry_Set responses: '200': description: A successful response. schema: $ref: '#/definitions/v3ApplicationWebhook' default: description: An unexpected error response. schema: $ref: '#/definitions/googlerpcStatus' parameters: - name: webhook.ids.application_ids.application_id in: path required: true type: string - name: webhook.ids.webhook_id in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/v3ApplicationWebhookRegistrySetBody' tags: - ApplicationWebhookRegistry definitions: v3ApplicationWebhookMessage: type: object properties: path: type: string description: Path to append to the base URL. v3ApplicationWebhookIdentifiers: type: object properties: application_ids: $ref: '#/definitions/v3ApplicationIdentifiers' webhook_id: type: string v3ApplicationWebhookTemplate: type: object properties: ids: $ref: '#/definitions/v3ApplicationWebhookTemplateIdentifiers' name: type: string description: type: string logo_url: type: string info_url: type: string documentation_url: type: string base_url: type: string description: The base URL of the template. Can contain template fields, in RFC 6570 format. headers: type: object additionalProperties: type: string description: The HTTP headers used by the template. Both the key and the value can contain template fields. format: type: string fields: type: array items: type: object $ref: '#/definitions/v3ApplicationWebhookTemplateField' create_downlink_api_key: type: boolean description: Control the creation of the downlink queue operations API key. uplink_message: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' uplink_normalized: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' join_accept: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' downlink_ack: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' downlink_nack: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' downlink_sent: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' downlink_failed: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' downlink_queued: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' downlink_queue_invalidated: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' location_solved: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' service_data: $ref: '#/definitions/v3ApplicationWebhookTemplateMessage' field_mask: type: string ApplicationWebhookHealthWebhookHealthStatusHealthy: type: object v3ApplicationWebhookTemplateField: type: object properties: id: type: string name: type: string description: type: string secret: type: boolean description: Secret decides if the field should be shown in plain-text or should stay hidden. default_value: type: string optional: type: boolean description: 'ApplicationWebhookTemplateField represents a custom field that needs to be filled by the user in order to use the template. A field can be an API key, an username or password, or any custom platform specific field (such as region). The fields are meant to be replaced inside the URLs and headers when the webhook is created.' v3ApplicationWebhookHealth: type: object properties: healthy: $ref: '#/definitions/ApplicationWebhookHealthWebhookHealthStatusHealthy' unhealthy: $ref: '#/definitions/ApplicationWebhookHealthWebhookHealthStatusUnhealthy' googlerpcStatus: type: object properties: code: type: integer format: int32 message: type: string details: type: array items: type: object $ref: '#/definitions/protobufAny' v3ApplicationWebhookFormats: type: object properties: formats: type: object additionalProperties: type: string description: Format and description. v3ApplicationWebhook: type: object properties: ids: $ref: '#/definitions/v3ApplicationWebhookIdentifiers' created_at: type: string format: date-time updated_at: type: string format: date-time base_url: type: string description: Base URL to which the message's path is appended. headers: type: object additionalProperties: type: string description: HTTP headers to use. format: type: string description: 'The format to use for the body. Supported values depend on the Application Server configuration.' template_ids: $ref: '#/definitions/v3ApplicationWebhookTemplateIdentifiers' description: The ID of the template that was used to create the Webhook. template_fields: type: object additionalProperties: type: string description: The value of the fields used by the template. Maps field.id to the value. downlink_api_key: type: string description: 'The API key to be used for downlink queue operations. The field is provided for convenience reasons, and can contain API keys with additional rights (albeit this is discouraged).' uplink_message: $ref: '#/definitions/v3ApplicationWebhookMessage' uplink_normalized: $ref: '#/definitions/v3ApplicationWebhookMessage' join_accept: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_ack: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_nack: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_sent: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_failed: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_queued: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_queue_invalidated: $ref: '#/definitions/v3ApplicationWebhookMessage' location_solved: $ref: '#/definitions/v3ApplicationWebhookMessage' service_data: $ref: '#/definitions/v3ApplicationWebhookMessage' health_status: $ref: '#/definitions/v3ApplicationWebhookHealth' field_mask: type: string paused: type: boolean description: Set to temporarily pause forwarding uplink data to this end point and receiving downlinks from this end point. v3ApplicationIdentifiers: type: object properties: application_id: type: string v3ApplicationWebhookTemplateMessage: type: object properties: path: type: string description: Path to append to the base URL. Can contain template fields, in RFC 6570 format. v3ApplicationWebhookTemplates: type: object properties: templates: type: array items: type: object $ref: '#/definitions/v3ApplicationWebhookTemplate' v3ApplicationWebhooks: type: object properties: webhooks: type: array items: type: object $ref: '#/definitions/v3ApplicationWebhook' v3ApplicationWebhookRegistrySetBody: type: object properties: webhook: type: object properties: ids: type: object properties: application_ids: type: object webhook_id: type: string created_at: type: string format: date-time updated_at: type: string format: date-time base_url: type: string description: Base URL to which the message's path is appended. headers: type: object additionalProperties: type: string description: HTTP headers to use. format: type: string description: 'The format to use for the body. Supported values depend on the Application Server configuration.' template_ids: $ref: '#/definitions/v3ApplicationWebhookTemplateIdentifiers' description: The ID of the template that was used to create the Webhook. template_fields: type: object additionalProperties: type: string description: The value of the fields used by the template. Maps field.id to the value. downlink_api_key: type: string description: 'The API key to be used for downlink queue operations. The field is provided for convenience reasons, and can contain API keys with additional rights (albeit this is discouraged).' uplink_message: $ref: '#/definitions/v3ApplicationWebhookMessage' uplink_normalized: $ref: '#/definitions/v3ApplicationWebhookMessage' join_accept: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_ack: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_nack: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_sent: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_failed: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_queued: $ref: '#/definitions/v3ApplicationWebhookMessage' downlink_queue_invalidated: $ref: '#/definitions/v3ApplicationWebhookMessage' location_solved: $ref: '#/definitions/v3ApplicationWebhookMessage' service_data: $ref: '#/definitions/v3ApplicationWebhookMessage' health_status: $ref: '#/definitions/v3ApplicationWebhookHealth' field_mask: type: string paused: type: boolean description: Set to temporarily pause forwarding uplink data to this end point and receiving downlinks from this end point. field_mask: type: string ApplicationWebhookHealthWebhookHealthStatusUnhealthy: type: object properties: failed_attempts: type: string format: uint64 last_failed_attempt_at: type: string format: date-time last_failed_attempt_details: $ref: '#/definitions/v3ErrorDetails' 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(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" v3ApplicationWebhookTemplateIdentifiers: type: object properties: template_id: type: string v3ErrorDetails: type: object properties: namespace: type: string description: Namespace of the error (typically the package name in The Things Stack). name: type: string description: Name of the error. message_format: type: string description: 'The default (fallback) message format that should be used for the error. This is also used if the client does not have a translation for the error.' attributes: type: object description: 'Attributes that should be filled into the message format. Any extra attributes can be displayed as error details.' correlation_id: type: string description: 'The correlation ID of the error can be used to correlate the error to stack traces the network may (or may not) store about recent errors.' cause: $ref: '#/definitions/v3ErrorDetails' description: The error that caused this error. code: type: integer format: int64 description: The status code of the error. details: type: array items: type: object $ref: '#/definitions/protobufAny' description: The details of the error. description: 'Error details that are communicated over gRPC (and HTTP) APIs. The messages (for translation) are stored as "error::".' securityDefinitions: ApiKeyAuth: type: apiKey in: header name: Authorization description: 'Bearer API key. Set Authorization: Bearer NNSXS.xxxxxxxxxx.'