openapi: 3.0.3 info: title: ESP Thread Border Router REST API version: 2.0.0 description: Thread REST endpoints compatible with the ot-br-posix REST API 0.6.0 contract. Enable CONFIG_OPENTHREAD_BR_START_WEB to serve these endpoints on port 80. Structured JSON uses lower camel case. Request bodies are limited to 16 KiB; each volatile collection holds up to 200 items. license: name: Apache-2.0 url: https://github.com/espressif/esp-thread-br/blob/main/LICENSE servers: - url: http://esp-ot-br.local:80 paths: /node: get: summary: Read /node responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Node' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' delete: summary: Erase persistent Thread configuration and restart responses: '200': description: Success '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/ba-id: get: summary: Read /node/ba-id responses: '200': description: Success content: application/json: schema: &id005 type: string pattern: ^[0-9a-fA-F]{32}$ '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/rloc: get: summary: Read /node/rloc responses: '200': description: Success content: application/json: schema: type: string format: ipv6 '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/rloc16: get: summary: Read /node/rloc16 responses: '200': description: Success content: application/json: schema: type: integer '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/ext-address: get: summary: Read /node/ext-address responses: '200': description: Success content: application/json: schema: &id001 type: string pattern: ^[0-9a-fA-F]{16}$ '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/network-name: get: summary: Read /node/network-name responses: '200': description: Success content: application/json: schema: type: string '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/leader-data: get: summary: Read /node/leader-data responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/LeaderData' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/num-of-router: get: summary: Read /node/num-of-router responses: '200': description: Success content: application/json: schema: type: integer '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/ext-panid: get: summary: Read /node/ext-panid responses: '200': description: Success content: application/json: schema: *id001 '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/coprocessor/version: get: summary: Read /node/coprocessor/version responses: '200': description: Success content: application/json: schema: type: string '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/state: get: summary: Read /node/state responses: '200': description: Success content: application/json: schema: type: string enum: - disabled - detached - child - router - leader '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' put: summary: Set /node/state responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' requestBody: required: true content: application/json: schema: type: string enum: - enable - disable options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/dataset/active: get: summary: Read /node/dataset/active responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ActiveDataset' text/plain: schema: $ref: '#/components/schemas/DatasetTlvs' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' '204': description: Dataset is absent. put: summary: Set /node/dataset/active responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' '201': description: Created a dataset. '412': description: Precondition Failed content: application/json: schema: $ref: '#/components/schemas/Error' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ActiveDataset' text/plain: schema: $ref: '#/components/schemas/DatasetTlvs' parameters: - name: If-None-Match in: header schema: type: string enum: - '*' description: Write only when no dataset exists. options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/dataset/pending: get: summary: Read /node/dataset/pending responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PendingDataset' text/plain: schema: $ref: '#/components/schemas/DatasetTlvs' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' '204': description: Dataset is absent. put: summary: Set /node/dataset/pending responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' '201': description: Created a dataset. '412': description: Precondition Failed content: application/json: schema: $ref: '#/components/schemas/Error' '504': description: Gateway Timeout content: application/json: schema: $ref: '#/components/schemas/Error' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PendingDataset' text/plain: schema: $ref: '#/components/schemas/DatasetTlvs' parameters: - name: If-None-Match in: header schema: type: string enum: - '*' description: Write only when no dataset exists. description: Register with the Thread leader. JSON requires activeDataset and delay. The HTTP request waits up to 30 seconds for the leader response. options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/commissioner/state: get: summary: Read /node/commissioner/state responses: '200': description: Success content: application/json: schema: type: string enum: - disabled - petitioning - active '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' put: summary: Set /node/commissioner/state responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' requestBody: required: true content: application/json: schema: type: string enum: - enable - disable options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/commissioner/joiner: get: summary: List commissioner joiners responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Joiner' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' post: summary: Add a commissioner joiner responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' '507': description: Insufficient Storage content: application/json: schema: $ref: '#/components/schemas/Error' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Joiner' delete: summary: Remove a joiner by ID, EUI-64, discerner, or wildcard responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' requestBody: required: true content: application/json: schema: type: string options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/ba-epskc/state: get: summary: Read /node/ba-epskc/state responses: '200': description: Success content: application/json: schema: type: string enum: - enabled - disabled '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' put: summary: Set /node/ba-epskc/state responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' requestBody: required: true content: application/json: schema: type: string enum: - enable - disable options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /node/ba-epskc/key: get: summary: Read the ephemeral key session responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/EpskcStatus' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' post: summary: Activate an ephemeral key session responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/EpskcKey' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/Error' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/EpskcActivation' delete: summary: Stop the ephemeral key session responses: '200': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /api/actions: get: summary: Read the actions collection responses: '200': description: Success content: application/vnd.api+json: schema: $ref: '#/components/schemas/CollectionDocument' application/json: schema: type: array items: type: object additionalProperties: true '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' parameters: &id002 - name: fields[type] in: query schema: type: string description: Comma-separated attributes for a resource type. Nested attributes use a dot. delete: summary: Clear the actions collection responses: '204': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' post: summary: Queue Thread actions responses: '200': description: Success content: application/vnd.api+json: schema: $ref: '#/components/schemas/CollectionDocument' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/Error' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/Error' '415': description: Unsupported Media Type content: application/json: schema: $ref: '#/components/schemas/Error' '422': description: Unprocessable Content content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' '503': description: Service Unavailable content: application/json: schema: $ref: '#/components/schemas/Error' requestBody: required: true content: application/vnd.api+json: schema: $ref: '#/components/schemas/ActionRequest' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /api/actions/{id}: parameters: - name: id in: path required: true schema: type: string get: summary: Read one actions item responses: '200': description: Success content: application/vnd.api+json: schema: $ref: '#/components/schemas/ResourceDocument' application/json: schema: type: object additionalProperties: true '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' parameters: *id002 delete: summary: Remove one actions item responses: '204': description: Success '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /api/devices: get: summary: Read the devices collection responses: '200': description: Success content: application/vnd.api+json: schema: $ref: '#/components/schemas/CollectionDocument' application/json: schema: type: array items: type: object additionalProperties: true '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' parameters: &id003 - name: fields[type] in: query schema: type: string description: Comma-separated attributes for a resource type. Nested attributes use a dot. delete: summary: Clear the devices collection responses: '204': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /api/devices/{id}: parameters: - name: id in: path required: true schema: type: string get: summary: Read one devices item responses: '200': description: Success content: application/vnd.api+json: schema: $ref: '#/components/schemas/ResourceDocument' application/json: schema: type: object additionalProperties: true '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' parameters: *id003 delete: summary: Remove one devices item responses: '204': description: Success '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /api/diagnostics: get: summary: Read the diagnostics collection responses: '200': description: Success content: application/vnd.api+json: schema: $ref: '#/components/schemas/CollectionDocument' application/json: schema: type: array items: type: object additionalProperties: true '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' parameters: &id004 - name: fields[type] in: query schema: type: string description: Comma-separated attributes for a resource type. Nested attributes use a dot. delete: summary: Clear the diagnostics collection responses: '204': description: Success '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /api/diagnostics/{id}: parameters: - name: id in: path required: true schema: type: string get: summary: Read one diagnostics item responses: '200': description: Success content: application/vnd.api+json: schema: $ref: '#/components/schemas/ResourceDocument' application/json: schema: type: object additionalProperties: true '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' parameters: *id004 delete: summary: Remove one diagnostics item responses: '204': description: Success '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /api/node: get: summary: Read this border router as a device resource responses: '200': description: Success content: application/vnd.api+json: schema: $ref: '#/components/schemas/ResourceDocument' application/json: schema: type: object additionalProperties: true '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /.well-known/thread/br-rest: get: summary: Read /.well-known/thread/br-rest responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Discovery' '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' options: summary: List supported methods responses: '200': description: Allowed methods. headers: Allow: schema: type: string '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' /diagnostics: get: summary: Read /diagnostics responses: '200': description: Success content: application/json: schema: type: array items: type: object additionalProperties: true '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' /.well-known/thread/esp-br-rest: get: summary: Read /.well-known/thread/esp-br-rest responses: '200': description: Success content: application/json: schema: type: object additionalProperties: true '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: Error: type: object properties: status: type: integer title: type: string detail: type: string required: - status - title Timestamp: type: object properties: seconds: type: integer minimum: 0 maximum: 281474976710655 ticks: type: integer minimum: 0 maximum: 32767 authoritative: type: boolean SecurityPolicy: type: object properties: rotationTime: type: integer minimum: 0 maximum: 65535 obtainNetworkKey: type: boolean nativeCommissioning: type: boolean routers: type: boolean externalCommissioning: type: boolean commercialCommissioning: type: boolean autonomousEnrollment: type: boolean networkKeyProvisioning: type: boolean tobleLink: type: boolean nonCcmRouters: type: boolean ActiveDataset: type: object properties: activeTimestamp: $ref: '#/components/schemas/Timestamp' networkKey: *id005 networkName: type: string maxLength: 16 extPanId: *id001 meshLocalPrefix: type: string example: fd00::/64 panId: type: integer minimum: 0 maximum: 65535 channel: type: integer pskc: *id005 securityPolicy: $ref: '#/components/schemas/SecurityPolicy' channelMask: type: integer minimum: 0 maximum: 4294967295 PendingDataset: type: object properties: activeDataset: oneOf: - $ref: '#/components/schemas/ActiveDataset' - $ref: '#/components/schemas/DatasetTlvs' pendingTimestamp: $ref: '#/components/schemas/Timestamp' delay: type: integer minimum: 0 maximum: 4294967295 required: - activeDataset - delay DatasetTlvs: type: string pattern: ^([0-9a-fA-F]{2})*$ LeaderData: type: object properties: partitionId: type: integer weighting: type: integer dataVersion: type: integer stableDataVersion: type: integer leaderRouterId: type: integer Node: type: object properties: baId: *id005 baState: type: string state: type: string enum: - disabled - detached - child - router - leader routerCount: type: integer rlocAddress: type: string format: ipv6 extAddress: *id001 networkName: type: string rloc16: type: string pattern: ^0x[0-9a-f]{4}$ routerId: type: integer leaderData: $ref: '#/components/schemas/LeaderData' extPanId: *id001 Mode: type: object properties: rxOnWhenIdle: type: boolean fullThreadDevice: type: boolean fullNetworkData: type: boolean Joiner: type: object properties: pskd: type: string minLength: 6 maxLength: 32 joinerId: type: string eui: *id001 discerner: type: string example: 0x0000000000000001/16 timeout: type: integer default: 60 required: - pskd EpskcStatus: type: object properties: state: type: string enum: - disabled - stopped - started - connected - accepted port: type: integer required: - state - port EpskcActivation: type: object properties: lifetime: type: integer minimum: 0 maximum: 600000 description: Milliseconds; zero selects the OpenThread default. port: type: integer minimum: 0 maximum: 65535 default: 0 EpskcKey: type: object properties: tap: type: string pattern: ^[0-9]{9}$ port: type: integer required: - tap - port Discovery: type: object properties: api: type: object properties: version: type: string base: type: string required: - version - base links: type: array items: type: object properties: href: type: string rel: type: string type: type: array items: type: string required: - href - rel - type required: - api - links CollectionMeta: type: object properties: collection: type: object properties: offset: type: integer limit: type: integer total: type: integer pending: type: integer addThreadDeviceTask: type: object properties: type: type: string enum: - addThreadDeviceTask attributes: $ref: '#/components/schemas/Joiner' required: - type - attributes updateDeviceCollectionTask: type: object properties: type: type: string enum: - updateDeviceCollectionTask attributes: type: object properties: maxAge: type: number maxRetries: type: integer deviceCount: type: integer timeout: &id006 type: number description: Action deadline in seconds. required: - maxAge - maxRetries - deviceCount - timeout required: - type - attributes getNetworkDiagnosticTask: type: object properties: type: type: string enum: - getNetworkDiagnosticTask attributes: type: object properties: destination: &id007 type: string description: Extended address, ML-EID IID, or RLOC16. destinationType: &id008 type: string enum: - extended - mleid - rloc types: type: array items: type: string enum: - extAddress - rloc16 - mode - timeout - connectivity - route - leaderData - networkData - ipv6Addresses - macCounters - batteryLevel - supplyVoltage - childTable - channelPages - maxChildTimeout - lDevIdSubject - iDevIdCert - eui - threadVersion - vendorName - vendorModel - vendorSwVersion - threadStackVersion - children - childIpv6Addresses - routerNeighbors - mleCounters timeout: *id006 required: - destination - types - timeout required: - type - attributes resetNetworkDiagCounterTask: type: object properties: type: type: string enum: - resetNetworkDiagCounterTask attributes: type: object properties: destination: *id007 destinationType: *id008 types: type: array items: type: string enum: - macCounters - mleCounters timeout: *id006 required: - types - timeout required: - type - attributes getEnergyScanTask: type: object properties: type: type: string enum: - getEnergyScanTask attributes: type: object properties: destination: *id007 destinationType: *id008 channelMask: type: array items: type: integer minimum: 11 maximum: 26 count: type: integer period: type: integer scanDuration: type: integer timeout: *id006 required: - destination - channelMask - count - period - scanDuration - timeout required: - type - attributes ActionRequest: type: object properties: data: type: array items: oneOf: - $ref: '#/components/schemas/addThreadDeviceTask' - $ref: '#/components/schemas/updateDeviceCollectionTask' - $ref: '#/components/schemas/getNetworkDiagnosticTask' - $ref: '#/components/schemas/resetNetworkDiagCounterTask' - $ref: '#/components/schemas/getEnergyScanTask' required: - data Resource: type: object properties: id: type: string type: type: string attributes: type: object additionalProperties: true relationships: type: object additionalProperties: true required: - id - type - attributes ResourceDocument: type: object properties: data: $ref: '#/components/schemas/Resource' required: - data CollectionDocument: type: object properties: data: type: array items: $ref: '#/components/schemas/Resource' meta: $ref: '#/components/schemas/CollectionMeta' required: - data