{ "openapi": "3.0.2", "info": { "title": "hl2 Panorama API", "description": "# Introduction\n\nWelcome to the hl2 Panorama API specification. We will commit ourselves to support the library and maintain backwards compatibility in the future, but we reserve the right to make incompatible changes when necessary. If you experience any issues, please contact support.\n\n# Pagination\n\n## Parameters\n Some endpoints that return multiple items will be paginated to `10` items by default.You can change this limit with the `limit` parameter.\n\nYou can request further pages with the `page` parameter. Note that page numbering is 1-based and that omitting the page parameter will return the first page.\n## Link header\nThe `Link` response header, if returned, includes pagination information and one or more hypermedia link relations. The possible values are\n* `prev`: The link relation for the previous page of results\n* `next`: The link relation for the next page of results\n* `last`: The link relation for the last page of results\n## X-Total-Count header\nThe `X-Total-Count` response header, if returned, contains the total number of results in all pages for the current GET request. If it is not returned, the response contains all the possible results.\n\n# Requests Limits \n\n## Size Limiting\n The maximum payload size for each request is 1 MB. Once you go over the size limit you will receive an `HTTP/1.1 413 Payload too large` error response.\n## Rate Limiting\nYou can make up to `20` requests per second to each API endpoint.\n\nFor public endpoints, requests are associated with your IP address. Once you are authenticated, requests are associated with your API key\n\n You can check the returned HTTP headers of any API request to see your current rate limit status. Once you go over the rate limit you will receive an `HTTP/1.1 429 Too Many Requests` error response.\n\n* `X-RateLimit-Limit`: Number of requests that the consumer is permitted to make per second\n* `X-RateLimit-Remaining`: Number of requests remaining in the current rate limit window\n* `X-RateLimit-Reset`: Remaining time until the number of requests is reset", "version": "v1", "contact": { "name": "API support", "email": "support@hl2.com" }, "license": { "name": "Copyright (C) hl2", "url": "https://github.com/hl2/hl2-panorama-openapi/blob/master/LICENSE.md" } }, "servers": [ { "url": "https://api.hl2.com/panorama/v1" } ], "security": [{ "bearerAuth": [] }], "tags": [ { "name": "Accounts" }, { "name": "Organizations" }, { "name": "Teams" }, { "name": "Devices" }, { "name": "Products" }, { "name": "Applications" }, { "name": "Help" } ], "paths": { "/account": { "get": { "tags": ["Accounts"], "summary": "Get authenticated account", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Account" } } } }, "401": { "$ref": "#/components/responses/401" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "put": { "tags": ["Accounts"], "summary": "Update authenticated account", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["username"], "properties": { "name": { "type": "string" }, "username": { "type": "string" } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Account" } } } }, "401": { "$ref": "#/components/responses/401" }, "422": { "$ref": "#/components/responses/422" }, "500": { "$ref": "#/components/responses/500" } } } }, "/accounts": { "get": { "tags": ["Accounts"], "summary": "List accounts", "description": "List all the active accounts of the hl2 Panorama platform, or search for one using their `name` or `username`. This is useful to figure out their IDs to add them to your organization using the `Add member` endpoint.", "parameters": [ { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/q" }, { "$ref": "#/components/parameters/sort" }, { "$ref": "#/components/parameters/type" } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AccountInArray" } } } } }, "401": { "$ref": "#/components/responses/401" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" } ], "get": { "tags": ["Applications"], "summary": "Get an application", "description": "Get the details for one of your organization’s applications.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Application" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "put": { "tags": ["Applications"], "summary": "Update an application", "description": "Update one of your organization’s applications.", "requestBody": { "content": { "application/json": { "schema": { "required": ["name"], "properties": { "name": { "type": "string" }, "description": { "type": "string" } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Application" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Applications"], "summary": "Delete an application", "description": "Delete one of your organization’s applications.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}/devices": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" }, { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/sort" }, { "in": "query", "name": "productId", "description": "The device product ID.", "required": true, "schema": { "type": "string" } } ], "get": { "tags": ["Applications"], "summary": "List application devices", "description": "List the devices linked to one of your organization’s applications.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DeviceInArray" } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}/devices/{deviceId}": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" }, { "$ref": "#/components/parameters/deviceId" } ], "put": { "tags": ["Applications"], "summary": "Add application device", "description": "Add a device to one of your organization’s applications. If the device was already linked to the application, behaves as though it has just been added (no error, 204 response code).", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Applications"], "summary": "Remove application device", "description": "Remove a device from the specified application.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}/alerts": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" } ], "get": { "tags": ["Applications"], "summary": "List application alerts", "description": "List all the application alerts for one of your organization’s applications.", "parameters": [ { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/q" }, { "$ref": "#/components/parameters/sort" } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicationAlertInArray" } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "post": { "tags": ["Applications"], "summary": "Create an application alert", "description": "Create an application alert for one of your organization’s applications.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["description", "conditions"], "properties": { "title": { "type": "object", "properties": { "en": { "type": "string" }, "fr": { "type": "string" } } }, "description": { "type": "object", "properties": { "en": { "type": "string" }, "fr": { "type": "string" } } }, "conditions": { "type": "array", "items": { "type": "object", "required": ["type", "condition"], "properties": { "type": { "type": "string", "enum": ["bool", "number", "text"] }, "condition": { "type": "object", "required": ["deviceSerial", "variable"], "properties": { "deviceSerial": { "type": "string" }, "variable": { "type": "object", "required": ["name", "operator"], "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "operator": { "type": "string", "enum": [ "equal", "greaterThan", "greaterThanOrEqual", "lessThan", "lessThanOrEqual", "notEqual" ] } } } } } } } }, "email": { "type": "object", "properties": { "recipients": { "type": "array", "items": { "type": "string" } } } }, "disabled": { "type": "boolean", "default": false } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Device" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}/alerts/{alertId}": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" }, { "$ref": "#/components/parameters/alertId" } ], "get": { "tags": ["Applications"], "summary": "Get an application alert", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationAlert" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "put": { "tags": ["Applications"], "summary": "Update an application alert", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["description", "conditions"], "properties": { "title": { "type": "object", "properties": { "en": { "type": "string" }, "fr": { "type": "string" } } }, "description": { "type": "object", "properties": { "en": { "type": "string" }, "fr": { "type": "string" } } }, "conditions": { "type": "array", "items": { "type": "object", "required": ["type", "condition"], "properties": { "type": { "type": "string", "enum": ["bool", "number", "text"] }, "condition": { "type": "object", "required": ["deviceSerial", "variable"], "properties": { "deviceSerial": { "type": "string" }, "variable": { "type": "object", "required": ["name", "operator"], "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "operator": { "type": "string", "enum": [ "equal", "greaterThan", "greaterThanOrEqual", "lessThan", "lessThanOrEqual", "notEqual" ] } } } } } } } }, "email": { "type": "object", "properties": { "recipients": { "type": "array", "items": { "type": "string" } } } }, "disabled": { "type": "boolean", "default": false } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationHook" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Applications"], "summary": "Delete an application alert", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}/alerts/{alertId}/disabled": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" }, { "$ref": "#/components/parameters/alertId" } ], "put": { "tags": ["Applications"], "summary": "Disable an application alert", "responses": { "204": { "$ref": "#/components/responses/401" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Applications"], "summary": "Enable an application alert", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}/hooks": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" } ], "get": { "tags": ["Applications"], "summary": "List application hooks", "description": "List all the application hooks for one of your organization’s applications.", "parameters": [ { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/q" }, { "$ref": "#/components/parameters/sort" } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicationHookInArray" } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "post": { "tags": ["Applications"], "summary": "Create an application hook", "description": "Create an application hook for one of your organization’s applications.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["url"], "properties": { "allowUnverifiedSSLCert": { "type": "boolean", "default": false }, "authentication": { "type": "object", "properties": { "basic": { "type": "object", "required": ["user", "pass"], "properties": { "user": { "type": "string" }, "pass": { "type": "string" } } }, "header": { "type": "object", "required": ["name", "value"], "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } } }, "disabled": { "type": "boolean", "default": false }, "url": { "type": "string" } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Device" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}/hooks/{hookId}": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" }, { "$ref": "#/components/parameters/hookId" } ], "get": { "tags": ["Applications"], "summary": "Get an application hook", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationHook" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "put": { "tags": ["Applications"], "summary": "Update an application hook", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["url"], "properties": { "allowUnverifiedSSLCert": { "type": "boolean", "default": false }, "authentication": { "type": "object", "properties": { "basic": { "type": "object", "required": ["user", "pass"], "properties": { "user": { "type": "string" }, "pass": { "type": "string" } } }, "header": { "type": "object", "required": ["name", "value"], "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } } }, "disabled": { "type": "boolean", "default": false }, "url": { "type": "string" } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationHook" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Applications"], "summary": "Delete an application hook", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}/hooks/{hookId}/deliveries": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" }, { "$ref": "#/components/parameters/hookId" } ], "get": { "tags": ["Applications"], "summary": "List application hook deliveries", "description": "Get the list of “deliveries” for an application hook, that is the history of all the times the hook was called, with the payload sent to and the response received from the hook URL.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicationHookDelivery" } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}/hooks/{hookId}/disabled": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" }, { "$ref": "#/components/parameters/hookId" } ], "put": { "tags": ["Applications"], "summary": "Disable an application hook", "responses": { "204": { "$ref": "#/components/responses/401" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Applications"], "summary": "Enable an application hook", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/applications/{organizationId}/{applicationId}/hooks/{hookId}/ping": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/applicationId" }, { "$ref": "#/components/parameters/hookId" } ], "post": { "tags": ["Applications"], "summary": "Ping an application hook", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationHookDelivery" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/devices/{organizationId}/{deviceId}": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/deviceId" } ], "get": { "tags": ["Devices"], "summary": "Get a device", "description": "Get the details for a device registered with your organization.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Device" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "put": { "tags": ["Devices"], "summary": "Update a device", "description": "Update the details for a device registered with your organization.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "location": { "$ref": "#/components/schemas/Location" }, "name": { "type": "string" }, "product": { "type": "object", "properties": { "id": { "type": "string" }, "organizationId": { "type": "string" } } }, "tags": { "type": "array", "items": { "type": "string" } } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Device" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Devices"], "summary": "Remove a device", "description": "Remove the device from your organization. This will not be possible if the device is linked to any application, or if it has active routes.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/help/languages": { "get": { "tags": ["Help"], "summary": "List supported languages", "description": "Return the supported languages.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string" }, "name": { "type": "string" }, "nativeName": { "type": "string" } }, "example": { "code": "en", "name": "English", "nativeName": "English" } } } } } }, "401": { "$ref": "#/components/responses/401" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/help/timezones": { "get": { "tags": ["Help"], "summary": "List supported timezones", "description": "Return the supported timezones.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string", "example": "Africa/Abidjan" } } } } }, "401": { "$ref": "#/components/responses/401" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/organizations/{organizationId}": { "parameters": [{ "$ref": "#/components/parameters/organizationId" }], "get": { "tags": ["Organizations"], "summary": "Get your organization details", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "put": { "tags": ["Organizations"], "summary": "Update your organization details", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["username"], "properties": { "name": { "type": "string" }, "username": { "type": "string" } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Organization" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/organizations/{organizationId}/applications": { "parameters": [{ "$ref": "#/components/parameters/organizationId" }], "get": { "tags": ["Applications"], "summary": "List applications", "description": "List the applications for your organization.", "parameters": [ { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/q" }, { "$ref": "#/components/parameters/sort" } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/ApplicationInArray" }, { "$ref": "#/components/schemas/ApplicationPermission" } ] } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "post": { "tags": ["Applications"], "summary": "Create an application", "description": "Create a new application for your organization.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "description": { "type": "string" } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Application" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/organizations/{organizationId}/devices": { "get": { "tags": ["Devices"], "summary": "List devices", "description": "List all the devices registered with your organization.", "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/q" }, { "$ref": "#/components/parameters/sort" }, { "in": "query", "name": "productId", "description": "The device product ID to search for.", "schema": { "type": "string" } }, { "in": "query", "name": "hasProduct", "description": "Either `true` to filter devices with a product, or `false` to disable this filter.", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DeviceInArray" } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/organizations/{organizationId}/devices/{deviceSerial}": { "post": { "tags": ["Devices"], "summary": "Register a device", "description": "Register a device with your organization.", "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/deviceSerial" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } }, "product": { "type": "object", "properties": { "id": { "type": "string" }, "organizationId": { "type": "string" } } }, "location": { "$ref": "#/components/schemas/Location" } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Device" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/devices/{organizationId}/{deviceId}/routes/{routeId}/activate": { "post": { "tags": ["Devices"], "summary": "Activate a device route", "description": "Activate a route for one of your organization's devices. The device will be provisioned with the provider if necessary.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/devices/{organizationId}/{deviceId}/routes/{routeId}/deactivate": { "post": { "tags": ["Devices"], "summary": "Deactivate a device route", "description": "Deactivate a route for one of your organization's devices. The device will be deprovisioned with the provider if necessary.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/devices/{organizationId}/{deviceId}/renew-scap-keys": { "post": { "tags": ["Devices"], "summary": "Renew a device's SCAP keys", "description": "Generate new random SCAP keys for one of your organization's devices - to replace a set of compromised keys, for instance.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "downlink": { "type": "string" }, "uplink": { "type": "string" } } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/providers": { "get": { "tags": ["Devices"], "summary": "List providers", "description": "List all the configured LoRaWAN and Sigfox providers.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Provider" } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/providers/{providerId}": { "get": { "tags": ["Devices"], "summary": "Get a provider", "description": "Get the details for a provider given its ID.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Provider" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/organizations/{organizationId}/members": { "parameters": [{ "$ref": "#/components/parameters/organizationId" }], "get": { "tags": ["Organizations"], "summary": "List members", "description": "List all users who are members of your organization.", "parameters": [ { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/q" }, { "$ref": "#/components/parameters/sort" }, { "in": "query", "name": "role", "description": "Filter members by their role.", "schema": { "$ref": "#/components/schemas/OrganizationRole" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/Member" }, { "type": "object", "properties": { "role": { "$ref": "#/components/schemas/OrganizationRole" } } } ] } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/organizations/{organizationId}/members/{memberId}": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/memberId" } ], "put": { "tags": ["Organizations"], "summary": "Add or update a member", "description": "Add a member to your organization, or update an existing member.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "role": { "$ref": "#/components/schemas/OrganizationRole" } } } } } }, "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Organizations"], "summary": "Remove a member", "description": "Remove a member from your organization. This will also remove the member from all the organization’s teams and they will no longer have access to any of the organization’s resources.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/organizations/{organizationId}/products": { "parameters": [{ "$ref": "#/components/parameters/organizationId" }], "get": { "tags": ["Products"], "summary": "List products", "description": "List the products for your organization.", "parameters": [ { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/q" }, { "$ref": "#/components/parameters/sort" } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ProductInArray" } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "post": { "tags": ["Products"], "summary": "Create a product", "description": "Create a product for your organization.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["name", "version", "variables"], "properties": { "name": { "type": "string" }, "version": { "type": "string" }, "variables": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariable" } } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Product" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/organizations/{organizationId}/teams": { "parameters": [{ "$ref": "#/components/parameters/organizationId" }], "get": { "tags": ["Teams"], "summary": "List teams", "description": "List your organization’s teams.", "parameters": [ { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/q" }, { "$ref": "#/components/parameters/sort" } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TeamInArray" } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "post": { "tags": ["Teams"], "summary": "Create a team", "description": "Create a team for your organization.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "description": { "type": "string" } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Team" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "500": { "$ref": "#/components/responses/500" } } } }, "/products/{organizationId}/{productId}": { "parameters": [ { "$ref": "#/components/parameters/productId" }, { "$ref": "#/components/parameters/organizationId" } ], "get": { "tags": ["Products"], "summary": "Get a product", "description": "Get the details of one of your organization’s products.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Product" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "put": { "tags": ["Products"], "summary": "Update a product", "description": "Update one of your organization’s products.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["name", "variables", "version"], "properties": { "name": { "type": "string" }, "version": { "type": "string" }, "variables": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariable" } } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Product" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Products"], "summary": "Delete a product", "description": "Delete one of your organization’s products. This will only be possible if the product is not used by any device.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" } } } }, "/teams/{organizationId}/{teamId}": { "parameters": [ { "$ref": "#/components/parameters/teamId" }, { "$ref": "#/components/parameters/organizationId" } ], "get": { "tags": ["Teams"], "summary": "Get a team", "description": "Get the details of one of your organization’s teams.", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Team" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" } } }, "put": { "tags": ["Teams"], "summary": "Update a team", "description": "Update the details of one of your organization’s teams.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "description": { "type": "string" } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Team" } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Teams"], "summary": "Delete a team", "description": "Delete one of your organization’s teams.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/teams/{organizationId}/{teamId}/applications": { "parameters": [ { "$ref": "#/components/parameters/teamId" }, { "$ref": "#/components/parameters/organizationId" } ], "get": { "tags": ["Teams"], "summary": "List team applications", "description": "List the applications of one of your organization’s teams.", "parameters": [ { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/sort" } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/ApplicationInArray" }, { "$ref": "#/components/schemas/ApplicationPermission" } ] } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/teams/{organizationId}/{teamId}/applications/{applicationId}": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/teamId" }, { "$ref": "#/components/parameters/applicationId" } ], "put": { "tags": ["Teams"], "summary": "Add or update a team application", "description": "Add an application to one of your organization’s teams, or change the team application’s permission.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationPermission" } } } }, "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "422": { "$ref": "#/components/responses/422" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Teams"], "summary": "Remove a team application", "description": "Remove an application from one of your organization’s teams.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" } } } }, "/teams/{organizationId}/{teamId}/members": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/teamId" } ], "get": { "tags": ["Teams"], "summary": "List team members", "description": "List members of the specified team.", "parameters": [ { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/sort" } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Member" } } } } }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } }, "/teams/{organizationId}/{teamId}/members/{memberId}": { "parameters": [ { "$ref": "#/components/parameters/organizationId" }, { "$ref": "#/components/parameters/teamId" }, { "$ref": "#/components/parameters/memberId" } ], "put": { "tags": ["Teams"], "summary": "Add or update team application", "description": "Add a member to the team. If the member was already in the team, behaves as though it has just been added.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } }, "delete": { "tags": ["Teams"], "summary": "Remove a team application", "description": "Remove a member from one of your organization’s teams. The member is still part of your organization, but no longer has access to the resources shared by the team.", "responses": { "204": { "$ref": "#/components/responses/204" }, "401": { "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, "429": { "$ref": "#/components/responses/429" }, "500": { "$ref": "#/components/responses/500" } } } } }, "components": { "schemas": { "Account": { "allOf": [ { "$ref": "#/components/schemas/AccountInArray" }, { "$ref": "#/components/schemas/Timestamps" }, { "type": "object", "properties": { "email": { "type": "string" }, "type": { "type": "string" }, "disabled": { "type": "boolean" } } } ] }, "AccountInArray": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": ["organization", "user"] }, "name": { "type": "string" }, "username": { "type": "string" }, "gravatarURL": { "type": "string" } } }, "Application": { "allOf": [ { "$ref": "#/components/schemas/ApplicationInArray" }, { "$ref": "#/components/schemas/ApplicationPermission" }, { "$ref": "#/components/schemas/Timestamps" } ] }, "ApplicationInArray": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "organizationId": { "type": "string" }, "description": { "type": "string" } } }, "ApplicationAlertInArray": { "type": "object", "properties": { "id": { "type": "string" }, "description": { "type": "object", "properties": { "fr": { "type": "string" }, "en": { "type": "string" } } }, "disabled": { "type": "boolean" } } }, "ApplicationAlert": { "allOf": [ { "$ref": "#/components/schemas/ApplicationAlertInArray" }, { "$ref": "#/components/schemas/Timestamps" }, { "type": "object", "properties": { "id": { "type": "string" }, "title": { "type": "object", "properties": { "fr": { "type": "string" }, "en": { "type": "string" } } }, "email": { "type": "object", "properties": { "recipients": { "type": "array", "items": { "$ref": "#/components/schemas/AccountInArray" } } } }, "conditions": { "type": "array", "items": { "type": "object", "required": ["type", "condition"], "properties": { "type": { "type": "string", "enum": ["bool", "number", "text"] }, "condition": { "type": "object", "required": ["deviceSerial", "variable"], "properties": { "deviceSerial": { "type": "string" }, "variable": { "type": "object", "required": ["name", "operator"], "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "operator": { "type": "string", "enum": [ "equal", "greaterThan", "greaterThanOrEqual", "lessThan", "lessThanOrEqual", "notEqual" ] } } } } } } } } } } ] }, "ApplicationHookInArray": { "type": "object", "properties": { "id": { "type": "string" }, "url": { "type": "string" }, "disabled": { "type": "boolean" } } }, "ApplicationHook": { "allOf": [ { "$ref": "#/components/schemas/ApplicationHookInArray" }, { "$ref": "#/components/schemas/Timestamps" }, { "type": "object", "properties": { "allowUnverifiedSSLCert": { "type": "boolean" }, "authentication": { "type": "object", "properties": { "basic": { "type": "object", "required": ["user", "pass"], "properties": { "user": { "type": "string" }, "pass": { "type": "string" } } }, "header": { "type": "object", "required": ["name", "value"], "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } } }, "application": { "type": "object", "properties": { "id": { "type": "string" }, "organizationId": { "type": "string" } } } } } ] }, "ApplicationHookDelivery": { "allOf": [ { "$ref": "#/components/schemas/Timestamps" }, { "type": "object", "properties": { "id": { "type": "boolean" }, "applicationHookId": { "type": "boolean" }, "application": { "type": "object", "properties": { "id": { "type": "string" }, "organizationId": { "type": "string" } } }, "deviceId": { "type": "boolean" }, "ts": { "type": "number" }, "maxNumberAttempts": { "type": "number" }, "attemptsMade": { "type": "number" }, "successul": { "type": "boolean" }, "request": { "type": "object" }, "response": { "type": "object" } } } ] }, "ApplicationPermission": { "type": "object", "required": ["permission"], "properties": { "permission": { "type": "string", "enum": ["write", "read"] } } }, "Device": { "allOf": [ { "$ref": "#/components/schemas/DeviceInArray" }, { "$ref": "#/components/schemas/Timestamps" }, { "type": "object", "properties": { "location": { "$ref": "#/components/schemas/Location" }, "lpwan": { "type": "object", "properties": { "lorawan": { "type": "object", "properties": { "id": { "type": "string" } } }, "sigfox": { "type": "object", "properties": { "id": { "type": "string" }, "pac": { "type": "string" } } } } }, "routes": { "type": "array", "items": { "type": "object", "properties": { "appKey": { "type": "string" }, "id": { "type": "string" }, "providerId": { "type": "string" }, "status": { "type": "string" } } } }, "scapKeys": { "type": "object", "properties": { "uplink": { "type": "string" }, "downlink": { "type": "string" } } } } } ] }, "DeviceInArray": { "type": "object", "properties": { "activeRouteCount": { "type": "number" }, "applicationCount": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "organizationId": { "type": "string" }, "product": { "type": "object", "properties": { "id": { "type": "string" }, "organizationId": { "type": "string" } } }, "serial": { "type": "string" }, "slug": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } } } }, "Location": { "type": "object", "properties": { "lat": { "type": "number", "format": "float", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "format": "float", "minimum": -180, "maximum": 180 } } }, "Member": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string" }, "name": { "type": "string" }, "username": { "type": "string" }, "gravatarURL": { "type": "string" } } }, "Organization": { "allOf": [ { "$ref": "#/components/schemas/Account" }, { "type": "object", "properties": { "role": { "$ref": "#/components/schemas/OrganizationRole" }, "memberCount": { "type": "integer", "format": "int32" } } } ] }, "OrganizationRole": { "type": "string", "enum": ["member", "owner"] }, "Product": { "allOf": [ { "$ref": "#/components/schemas/ProductInArray" }, { "$ref": "#/components/schemas/Timestamps" }, { "type": "object", "properties": { "variables": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariable" } }, "deviceCount": { "type": "integer", "format": "int32" } } } ] }, "ProductInArray": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "version": { "type": "string" }, "organizationId": { "type": "string" } } }, "ProductVariable": { "type": "object", "properties": { "name": { "type": "string" }, "unit": { "type": "string" }, "type": { "type": "string", "enum": [ "BOOL", "TXT", "INT16", "INT64", "FLOAT32", "UNINT8", "UNINT16", "UNINT32" ] }, "mappings": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariableMapping" } } } }, "ProductVariableMapping": { "type": "object", "properties": { "streamId": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 16 }, "streamType": { "type": "string", "enum": ["BIN", "RAW", "TXT"] }, "varNumber": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 32 } } }, "Provider": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string" } } }, "Team": { "allOf": [ { "$ref": "#/components/schemas/TeamInArray" }, { "$ref": "#/components/schemas/Timestamps" } ] }, "TeamInArray": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "description": { "type": "string" }, "organizationId": { "type": "string" } } }, "Timestamps": { "type": "object", "properties": { "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } } }, "Error": { "type": "object", "properties": { "message": { "type": "string" } } } }, "parameters": { "alertId": { "in": "path", "name": "alertId", "description": "The application alert ID", "required": true, "schema": { "type": "string" } }, "applicationId": { "in": "path", "name": "applicationId", "description": "The application ID", "required": true, "schema": { "type": "string" } }, "deviceId": { "in": "path", "name": "deviceId", "description": "The device ID", "required": true, "schema": { "type": "string" } }, "deviceSerial": { "in": "path", "name": "deviceSerial", "description": "The device serial", "required": true, "schema": { "type": "string" } }, "hookId": { "in": "path", "name": "hookId", "description": "The hook ID", "required": true, "schema": { "type": "string" } }, "limit": { "in": "query", "name": "limit", "description": "The number of items to be returned by page", "schema": { "type": "integer", "default": 10 } }, "memberId": { "in": "path", "name": "memberId", "description": "The member account ID", "required": true, "schema": { "type": "string" } }, "organizationId": { "in": "path", "name": "organizationId", "description": "The organization ID", "required": true, "schema": { "type": "string" } }, "page": { "in": "query", "name": "page", "description": "The page number", "schema": { "type": "integer", "default": 1 } }, "providerId": { "in": "path", "name": "providerId", "description": "The provider ID", "required": true, "schema": { "type": "string" } }, "productId": { "in": "path", "name": "productId", "description": "The product ID", "required": true, "schema": { "type": "string" } }, "q": { "in": "query", "name": "q", "description": "The search regex", "schema": { "type": "string" } }, "sort": { "in": "query", "name": "sort", "description": "The sort order", "schema": { "type": "string" } }, "teamId": { "in": "path", "name": "teamId", "description": "The team ID", "required": true, "schema": { "type": "string" } }, "type": { "in": "query", "name": "type", "description": "The account type", "schema": { "type": "string", "enum": ["user", "organization"] } } }, "responses": { "204": { "description": "No Content" }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } } } }