# Connector Bindings

Connector Bindings define the configuration that enables a device to communicate with the Things platform through a specific connector.&#x20;

While connectors provide the communication interfaces themselves, a device typically needs connector-specific settings—such as credentials, shared secrets, or protocol parameters—to authenticate and exchange uplinks or downlinks. This per-device configuration is captured in a Connector Binding.&#x20;

The Things platform supports multiple binding types aligned with the available connectors:

* **http** for devices sending SenML or Streamline-protocol uplinks over HTTP(S)
* **lora** for devices using ThingPark LoRaWAN
* **mqtt** for devices exchanging messages via MQTT

Connector Bindings let you precisely define how each device connects and communicates through the Things platform.

***

### Lora Bindings

Download the [specification](https://api.kpnthings.com/openapi-specifications/lora-bindings).

## Retrieve LoRa bindings, filtered by query parameters.

> Retrieve all LoRa bindings that match the query parameters given.

```json
{"openapi":"3.1.0","info":{"title":"Things LoRa Bindings API","version":"1.0.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.read"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"cursor":{"name":"cursor","in":"query","description":"String that encodes all necessary information to retrieve a page.","style":"form","explode":true,"schema":{"type":"string","format":"cursor"}},"limit":{"name":"limit","in":"query","description":"Limit the number of results (per page).","style":"form","explode":true,"schema":{"type":"integer","default":50}},"sort":{"name":"sort","in":"query","description":"Sorting fields separated by comma. Default order is Ascending (ASC), minus(-) should be used in front of field name for Descending (DESC) order.","style":"form","explode":true,"schema":{"type":"string"}}},"schemas":{"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"PageOfLoraBindings":{"type":"object","allOf":[{"$ref":"#/components/schemas/Page"},{"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/LoraBinding"}}}}],"description":"A paginated list of LoRa bindings","title":"PageOfLoraBindings"},"Page":{"type":"object","description":"Page of items","properties":{"items":{"type":"array","items":{}},"next":{"type":"string","format":"uri","description":"Pagination link pointing to the next page. Only provided when not at the last page."},"prev":{"type":"string","format":"uri","description":"Pagination link pointing to the previous page. Only provided when not at the first page."}},"required":["items"],"title":"Page"},"LoraBinding":{"type":"object","description":"A binding of a device to the LoRa connector.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the LoRa connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"appEui":{"type":"string","description":"A globally unique identifier of the target application server. Must be a hex value with size 16 (8 bytes)","pattern":"^[0-9a-fA-F]{16}$"},"appKey":{"type":"string","description":"The encryption key used for messages during every over the air activation.","pattern":"^[0-9a-fA-F]{32}$","writeOnly":true},"connectivityPlan":{"$ref":"#/components/schemas/LoraConnectivityPlan"},"deviceProfile":{"$ref":"#/components/schemas/LoraDeviceProfile"},"status":{"$ref":"#/components/schemas/LoraBindingStatus"}},"required":["appEui","connectivityPlan","deviceId","deviceProfile","status"],"title":"LoraBinding"},"LoraConnectivityPlan":{"type":"object","description":"Plan that contains the specifications of the LoRa connectivity for a device.","properties":{"id":{"type":"string","default":"kpn-cs/kpn-things-channel-mask-tdoa","description":"The id of the LoRa connectivity plan."},"name":{"type":"string","description":"Human readable name of the LoRa connectivity plan.","readOnly":true}},"required":["id"],"title":"LoraConnectivityPlan"},"LoraDeviceProfile":{"type":"object","description":"Profile that contains the specifications of the device class and the movement speed of a LoRa device.","properties":{"id":{"type":"string","default":"Slow moving V 1.0 Class A","description":"Identifier of the LoRa device profile."},"name":{"type":"string","description":"Human readable name of the LoRa device profile.","readOnly":true}},"required":["id"],"title":"LoraDeviceProfile"},"LoraBindingStatus":{"type":"string","description":"The status of a LoRa binding. Known values include: INVENTORY and ACTIVE","title":"LoraBindingStatus"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/lora/bindings":{"get":{"summary":"Retrieve LoRa bindings, filtered by query parameters.","description":"Retrieve all LoRa bindings that match the query parameters given.","operationId":"searchLoraBindings","parameters":[{"$ref":"#/components/parameters/cursor"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/sort"},{"name":"clientId","in":"query","description":"Include only LoRa bindings for devices that are owned by the provided clientId.  If clientId is omitted, bindings from all devices owned by the calling client are included.","style":"form","explode":true,"schema":{"type":"string","format":"uuid"}},{"name":"deviceId","in":"query","description":"Include only LoRa bindings for the device identified by the provided deviceId.","style":"form","explode":true,"schema":{"$ref":"#/components/schemas/DeviceId"}},{"name":"createdBefore","in":"query","description":"Include only LoRa bindings created before the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}},{"name":"createdSince","in":"query","description":"Include only LoRa bindings created at or after the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}},{"name":"modifiedBefore","in":"query","description":"Include only LoRa bindings modified before the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}},{"name":"modifiedSince","in":"query","description":"Include only LoRa bindings modified at or after the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Page of filtered LoRa bindings. Only bindings that are accessible to the caller are returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageOfLoraBindings"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## Create a new LoRa binding.

> Create a new LoRa binding.

```json
{"openapi":"3.1.0","info":{"title":"Things LoRa Bindings API","version":"1.0.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.create"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"LoraBinding":{"type":"object","description":"A binding of a device to the LoRa connector.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the LoRa connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"appEui":{"type":"string","description":"A globally unique identifier of the target application server. Must be a hex value with size 16 (8 bytes)","pattern":"^[0-9a-fA-F]{16}$"},"appKey":{"type":"string","description":"The encryption key used for messages during every over the air activation.","pattern":"^[0-9a-fA-F]{32}$","writeOnly":true},"connectivityPlan":{"$ref":"#/components/schemas/LoraConnectivityPlan"},"deviceProfile":{"$ref":"#/components/schemas/LoraDeviceProfile"},"status":{"$ref":"#/components/schemas/LoraBindingStatus"}},"required":["appEui","connectivityPlan","deviceId","deviceProfile","status"],"title":"LoraBinding"},"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"LoraConnectivityPlan":{"type":"object","description":"Plan that contains the specifications of the LoRa connectivity for a device.","properties":{"id":{"type":"string","default":"kpn-cs/kpn-things-channel-mask-tdoa","description":"The id of the LoRa connectivity plan."},"name":{"type":"string","description":"Human readable name of the LoRa connectivity plan.","readOnly":true}},"required":["id"],"title":"LoraConnectivityPlan"},"LoraDeviceProfile":{"type":"object","description":"Profile that contains the specifications of the device class and the movement speed of a LoRa device.","properties":{"id":{"type":"string","default":"Slow moving V 1.0 Class A","description":"Identifier of the LoRa device profile."},"name":{"type":"string","description":"Human readable name of the LoRa device profile.","readOnly":true}},"required":["id"],"title":"LoraDeviceProfile"},"LoraBindingStatus":{"type":"string","description":"The status of a LoRa binding. Known values include: INVENTORY and ACTIVE","title":"LoraBindingStatus"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/lora/bindings":{"post":{"summary":"Create a new LoRa binding.","description":"Create a new LoRa binding.","operationId":"createLoraBinding","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoraBinding"}}},"required":true},"responses":{"201":{"description":"The newly created LoRa binding'.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoraBinding"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## GET /lora/bindings/{bindingId}

> Retrieve a LoRa binding by ID.

```json
{"openapi":"3.1.0","info":{"title":"Things LoRa Bindings API","version":"1.0.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.read"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"LoraBinding":{"type":"object","description":"A binding of a device to the LoRa connector.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the LoRa connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"appEui":{"type":"string","description":"A globally unique identifier of the target application server. Must be a hex value with size 16 (8 bytes)","pattern":"^[0-9a-fA-F]{16}$"},"appKey":{"type":"string","description":"The encryption key used for messages during every over the air activation.","pattern":"^[0-9a-fA-F]{32}$","writeOnly":true},"connectivityPlan":{"$ref":"#/components/schemas/LoraConnectivityPlan"},"deviceProfile":{"$ref":"#/components/schemas/LoraDeviceProfile"},"status":{"$ref":"#/components/schemas/LoraBindingStatus"}},"required":["appEui","connectivityPlan","deviceId","deviceProfile","status"],"title":"LoraBinding"},"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"LoraConnectivityPlan":{"type":"object","description":"Plan that contains the specifications of the LoRa connectivity for a device.","properties":{"id":{"type":"string","default":"kpn-cs/kpn-things-channel-mask-tdoa","description":"The id of the LoRa connectivity plan."},"name":{"type":"string","description":"Human readable name of the LoRa connectivity plan.","readOnly":true}},"required":["id"],"title":"LoraConnectivityPlan"},"LoraDeviceProfile":{"type":"object","description":"Profile that contains the specifications of the device class and the movement speed of a LoRa device.","properties":{"id":{"type":"string","default":"Slow moving V 1.0 Class A","description":"Identifier of the LoRa device profile."},"name":{"type":"string","description":"Human readable name of the LoRa device profile.","readOnly":true}},"required":["id"],"title":"LoraDeviceProfile"},"LoraBindingStatus":{"type":"string","description":"The status of a LoRa binding. Known values include: INVENTORY and ACTIVE","title":"LoraBindingStatus"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/lora/bindings/{bindingId}":{"get":{"summary":"Retrieve a LoRa binding by ID.","operationId":"getLoraBinding","parameters":[{"name":"bindingId","in":"path","description":"LoRa binding identifier.","required":true,"style":"simple","schema":{"type":"string","format":"uuid"}},{"name":"refresh","in":"query","description":"When true, synchronizes the latest state from Actility ThingPark to the binding","style":"form","explode":true,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"The LoRa binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoraBinding"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## PUT /lora/bindings/{bindingId}

> Update a LoRa binding.

```json
{"openapi":"3.1.0","info":{"title":"Things LoRa Bindings API","version":"1.0.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.update"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"LoraBinding":{"type":"object","description":"A binding of a device to the LoRa connector.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the LoRa connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"appEui":{"type":"string","description":"A globally unique identifier of the target application server. Must be a hex value with size 16 (8 bytes)","pattern":"^[0-9a-fA-F]{16}$"},"appKey":{"type":"string","description":"The encryption key used for messages during every over the air activation.","pattern":"^[0-9a-fA-F]{32}$","writeOnly":true},"connectivityPlan":{"$ref":"#/components/schemas/LoraConnectivityPlan"},"deviceProfile":{"$ref":"#/components/schemas/LoraDeviceProfile"},"status":{"$ref":"#/components/schemas/LoraBindingStatus"}},"required":["appEui","connectivityPlan","deviceId","deviceProfile","status"],"title":"LoraBinding"},"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"LoraConnectivityPlan":{"type":"object","description":"Plan that contains the specifications of the LoRa connectivity for a device.","properties":{"id":{"type":"string","default":"kpn-cs/kpn-things-channel-mask-tdoa","description":"The id of the LoRa connectivity plan."},"name":{"type":"string","description":"Human readable name of the LoRa connectivity plan.","readOnly":true}},"required":["id"],"title":"LoraConnectivityPlan"},"LoraDeviceProfile":{"type":"object","description":"Profile that contains the specifications of the device class and the movement speed of a LoRa device.","properties":{"id":{"type":"string","default":"Slow moving V 1.0 Class A","description":"Identifier of the LoRa device profile."},"name":{"type":"string","description":"Human readable name of the LoRa device profile.","readOnly":true}},"required":["id"],"title":"LoraDeviceProfile"},"LoraBindingStatus":{"type":"string","description":"The status of a LoRa binding. Known values include: INVENTORY and ACTIVE","title":"LoraBindingStatus"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/lora/bindings/{bindingId}":{"put":{"summary":"Update a LoRa binding.","operationId":"setLoraBinding","parameters":[{"name":"bindingId","in":"path","description":"LoRa binding identifier.","required":true,"style":"simple","schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoraBinding"}}},"required":true},"responses":{"200":{"description":"The updated LoRa binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoraBinding"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## DELETE /lora/bindings/{bindingId}

> Delete a LoRa binding.

```json
{"openapi":"3.1.0","info":{"title":"Things LoRa Bindings API","version":"1.0.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.delete"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/lora/bindings/{bindingId}":{"delete":{"summary":"Delete a LoRa binding.","operationId":"deleteLoraBinding","parameters":[{"name":"bindingId","in":"path","description":"LoRa Binding identifier.","required":true,"style":"simple","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"LoRa binding has been deleted successfully."}}}}}}
```

***

## HTTP Bindings

Download the [specification](https://api.kpnthings.com/openapi-specifications/http-bindings).

## Retrieve HTTP bindings, filtered by query parameters.

> Retrieve all HTTP bindings that match the query parameters given.

```json
{"openapi":"3.1.0","info":{"title":"Things HTTP Bindings API","version":"0.6.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.read"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"cursor":{"name":"cursor","in":"query","description":"String that encodes all necessary information to retrieve a page.","style":"form","explode":true,"schema":{"type":"string","format":"cursor"}},"limit":{"name":"limit","in":"query","description":"Limit the number of results (per page).","style":"form","explode":true,"schema":{"type":"integer","default":50}},"sort":{"name":"sort","in":"query","description":"Sorting fields separated by comma. Default order is Ascending (ASC), minus(-) should be used in front of field name for Descending (DESC) order.","style":"form","explode":true,"schema":{"type":"string"}}},"schemas":{"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"PageOfHttpBindings":{"type":"object","allOf":[{"$ref":"#/components/schemas/Page"},{"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/HttpBinding"}}}}],"description":"A paginated list of HTTP bindings","title":"PageOfHttpBindings"},"Page":{"type":"object","description":"Page of items","properties":{"items":{"type":"array","items":{}},"next":{"type":"string","format":"uri","description":"Pagination link pointing to the next page. Only provided when not at the last page."},"prev":{"type":"string","format":"uri","description":"Pagination link pointing to the previous page. Only provided when not at the first page."}},"required":["items"],"title":"Page"},"HttpBinding":{"type":"object","description":"A binding of a device to the HTTP connector, which configures that the device can connect to the Things Platform using HTTP","discriminator":{"propertyName":"type","mapping":{"http-streamline":"#/components/schemas/HttpStreamlineBinding","http-senml":"#/components/schemas/HttpSenmlBinding"}},"oneOf":[{"$ref":"#/components/schemas/HttpStreamlineBinding"},{"$ref":"#/components/schemas/HttpSenmlBinding"}],"properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of HTTP binding. Known values are: http-streamline and http-senml"},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true}},"required":["deviceId","type"],"title":"HttpBinding"},"HttpStreamlineBinding":{"type":"object","description":"A binding of a device to the HTTP connector using the streamline HTTP endpoint and message format.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of binding; must be 'http-streamline' for HttpStreamlineBinding."},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true}},"required":["deviceId","type"],"title":"HttpStreamlineBinding"},"HttpSenmlBinding":{"type":"object","description":"A binding of a device to the HTTP connector using the SenML HTTP endpoint and message format.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of binding; must be 'http-senml' for HttpSenmlBinding."},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"sharedSecret":{"type":"string","description":"The shared secret that the device will use to generate a Things-Message-Token signatures for SenML uplinks.","writeOnly":true}},"required":["deviceId","type"],"title":"HttpSenmlBinding"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/http/bindings":{"get":{"summary":"Retrieve HTTP bindings, filtered by query parameters.","description":"Retrieve all HTTP bindings that match the query parameters given.","operationId":"searchHttpBindings","parameters":[{"$ref":"#/components/parameters/cursor"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/sort"},{"name":"clientId","in":"query","description":"Include only HTTP bindings for devices that are owned by the provided clientId.  If clientId is omitted, bindings from all devices owned by the calling client are included.","style":"form","explode":true,"schema":{"type":"string","format":"uuid"}},{"name":"deviceId","in":"query","description":"Include only HTTP bindings for the device identified by the provided deviceId.","style":"form","explode":true,"schema":{"$ref":"#/components/schemas/DeviceId"}},{"name":"type","in":"query","description":"Include only HTTP bindings of the specified type. Currently supported values are http-streamline  and http-senml.","style":"form","explode":true,"schema":{"type":"string"}},{"name":"createdBefore","in":"query","description":"Include only HTTP bindings created before the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}},{"name":"createdSince","in":"query","description":"Include only HTTP bindings created at or after the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}},{"name":"modifiedBefore","in":"query","description":"Include only HTTP bindings modified before the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}},{"name":"modifiedSince","in":"query","description":"Include only HTTP bindings modified at or after the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Page of filtered HTTP bindings. Only bindings that are accessible to the caller are returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageOfHttpBindings"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## Create a new HTTP binding.

> Create a new HTTP binding.

```json
{"openapi":"3.1.0","info":{"title":"Things HTTP Bindings API","version":"0.6.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.create"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"HttpBinding":{"type":"object","description":"A binding of a device to the HTTP connector, which configures that the device can connect to the Things Platform using HTTP","discriminator":{"propertyName":"type","mapping":{"http-streamline":"#/components/schemas/HttpStreamlineBinding","http-senml":"#/components/schemas/HttpSenmlBinding"}},"oneOf":[{"$ref":"#/components/schemas/HttpStreamlineBinding"},{"$ref":"#/components/schemas/HttpSenmlBinding"}],"properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of HTTP binding. Known values are: http-streamline and http-senml"},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true}},"required":["deviceId","type"],"title":"HttpBinding"},"HttpStreamlineBinding":{"type":"object","description":"A binding of a device to the HTTP connector using the streamline HTTP endpoint and message format.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of binding; must be 'http-streamline' for HttpStreamlineBinding."},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true}},"required":["deviceId","type"],"title":"HttpStreamlineBinding"},"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"HttpSenmlBinding":{"type":"object","description":"A binding of a device to the HTTP connector using the SenML HTTP endpoint and message format.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of binding; must be 'http-senml' for HttpSenmlBinding."},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"sharedSecret":{"type":"string","description":"The shared secret that the device will use to generate a Things-Message-Token signatures for SenML uplinks.","writeOnly":true}},"required":["deviceId","type"],"title":"HttpSenmlBinding"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/http/bindings":{"post":{"summary":"Create a new HTTP binding.","description":"Create a new HTTP binding.","operationId":"createHttpBinding","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpBinding"}}},"required":true},"responses":{"201":{"description":"The newly created HTTP binding'.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpBinding"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## GET /http/bindings/{bindingId}

> Retrieve a HTTP binding by ID.

```json
{"openapi":"3.1.0","info":{"title":"Things HTTP Bindings API","version":"0.6.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.read"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"HttpBinding":{"type":"object","description":"A binding of a device to the HTTP connector, which configures that the device can connect to the Things Platform using HTTP","discriminator":{"propertyName":"type","mapping":{"http-streamline":"#/components/schemas/HttpStreamlineBinding","http-senml":"#/components/schemas/HttpSenmlBinding"}},"oneOf":[{"$ref":"#/components/schemas/HttpStreamlineBinding"},{"$ref":"#/components/schemas/HttpSenmlBinding"}],"properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of HTTP binding. Known values are: http-streamline and http-senml"},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true}},"required":["deviceId","type"],"title":"HttpBinding"},"HttpStreamlineBinding":{"type":"object","description":"A binding of a device to the HTTP connector using the streamline HTTP endpoint and message format.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of binding; must be 'http-streamline' for HttpStreamlineBinding."},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true}},"required":["deviceId","type"],"title":"HttpStreamlineBinding"},"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"HttpSenmlBinding":{"type":"object","description":"A binding of a device to the HTTP connector using the SenML HTTP endpoint and message format.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of binding; must be 'http-senml' for HttpSenmlBinding."},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"sharedSecret":{"type":"string","description":"The shared secret that the device will use to generate a Things-Message-Token signatures for SenML uplinks.","writeOnly":true}},"required":["deviceId","type"],"title":"HttpSenmlBinding"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/http/bindings/{bindingId}":{"get":{"summary":"Retrieve a HTTP binding by ID.","operationId":"getHttpBinding","parameters":[{"name":"bindingId","in":"path","description":"HTTP binding identifier.","required":true,"style":"simple","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The HTTP binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpBinding"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## PUT /http/bindings/{bindingId}

> Update a HTTP binding.

```json
{"openapi":"3.1.0","info":{"title":"Things HTTP Bindings API","version":"0.6.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.update"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"HttpBinding":{"type":"object","description":"A binding of a device to the HTTP connector, which configures that the device can connect to the Things Platform using HTTP","discriminator":{"propertyName":"type","mapping":{"http-streamline":"#/components/schemas/HttpStreamlineBinding","http-senml":"#/components/schemas/HttpSenmlBinding"}},"oneOf":[{"$ref":"#/components/schemas/HttpStreamlineBinding"},{"$ref":"#/components/schemas/HttpSenmlBinding"}],"properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of HTTP binding. Known values are: http-streamline and http-senml"},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true}},"required":["deviceId","type"],"title":"HttpBinding"},"HttpStreamlineBinding":{"type":"object","description":"A binding of a device to the HTTP connector using the streamline HTTP endpoint and message format.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of binding; must be 'http-streamline' for HttpStreamlineBinding."},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true}},"required":["deviceId","type"],"title":"HttpStreamlineBinding"},"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"HttpSenmlBinding":{"type":"object","description":"A binding of a device to the HTTP connector using the SenML HTTP endpoint and message format.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"type":{"type":"string","description":"The type of binding; must be 'http-senml' for HttpSenmlBinding."},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the HTTP connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"sharedSecret":{"type":"string","description":"The shared secret that the device will use to generate a Things-Message-Token signatures for SenML uplinks.","writeOnly":true}},"required":["deviceId","type"],"title":"HttpSenmlBinding"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/http/bindings/{bindingId}":{"put":{"summary":"Update a HTTP binding.","operationId":"setHttpBinding","parameters":[{"name":"bindingId","in":"path","description":"HTTP binding identifier.","required":true,"style":"simple","schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpBinding"}}},"required":true},"responses":{"200":{"description":"The updated HTTP binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpBinding"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## DELETE /http/bindings/{bindingId}

> Delete a HTTP binding.

```json
{"openapi":"3.1.0","info":{"title":"Things HTTP Bindings API","version":"0.6.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.delete"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/http/bindings/{bindingId}":{"delete":{"summary":"Delete a HTTP binding.","operationId":"deleteHttpBinding","parameters":[{"name":"bindingId","in":"path","description":"HTTP Binding identifier.","required":true,"style":"simple","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"HTTP binding has been deleted successfully."}}}}}}
```

***

## MQTT Bindings

Download the [specification](https://api.kpnthings.com/openapi-specifications/mqtt-bindings).

## Retrieve MQTT bindings, filtered by query parameters.

> Retrieve all MQTT bindings that match the query parameters given.

```json
{"openapi":"3.1.0","info":{"title":"Things MQTT Bindings API","version":"0.2.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.read"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"cursor":{"name":"cursor","in":"query","description":"String that encodes all necessary information to retrieve a page.","style":"form","explode":true,"schema":{"type":"string","format":"cursor"}},"limit":{"name":"limit","in":"query","description":"Limit the number of results (per page).","style":"form","explode":true,"schema":{"type":"integer","default":50}},"sort":{"name":"sort","in":"query","description":"Sorting fields separated by comma. Default order is Ascending (ASC), minus(-) should be used in front of field name for Descending (DESC) order.","style":"form","explode":true,"schema":{"type":"string"}}},"schemas":{"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"PageOfMqttBindings":{"type":"object","allOf":[{"$ref":"#/components/schemas/Page"},{"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/MqttBinding"}}}}],"description":"A paginated list of MQTT bindings","title":"PageOfMqttBindings"},"Page":{"type":"object","description":"Page of items","properties":{"items":{"type":"array","items":{}},"next":{"type":"string","format":"uri","description":"Pagination link pointing to the next page. Only provided when not at the last page."},"prev":{"type":"string","format":"uri","description":"Pagination link pointing to the previous page. Only provided when not at the first page."}},"required":["items"],"title":"Page"},"MqttBinding":{"type":"object","description":"A binding of a device to the MQTT connector.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the MQTT connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"username":{"type":"string","description":"The username the device uses when authenticating with the MQTT connector. This value is set to the device URN by the system when the binding is created.","readOnly":true},"password":{"type":"string","description":"The password the device uses when authenticating with the MQTT connector. Must be at least 24 characters, with at least one lower case letter, upper case letter, number and special character.","minLength":24,"writeOnly":true}},"required":["deviceId"],"title":"MqttBinding"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/mqtt/bindings":{"get":{"summary":"Retrieve MQTT bindings, filtered by query parameters.","description":"Retrieve all MQTT bindings that match the query parameters given.","operationId":"searchMqttBindings","parameters":[{"$ref":"#/components/parameters/cursor"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/sort"},{"name":"clientId","in":"query","description":"Include only MQTT bindings for devices that are owned by the provided clientId.  If clientId is omitted, bindings from all devices owned by the calling client are included.","style":"form","explode":true,"schema":{"type":"string","format":"uuid"}},{"name":"deviceId","in":"query","description":"Include only MQTT bindings for the device identified by the provided deviceId.","style":"form","explode":true,"schema":{"$ref":"#/components/schemas/DeviceId"}},{"name":"username","in":"query","description":"Include only MQTT bindings where the username equals the provided username.","style":"form","explode":true,"schema":{"type":"string"}},{"name":"createdBefore","in":"query","description":"Include only MQTT bindings created before the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}},{"name":"createdSince","in":"query","description":"Include only MQTT bindings created at or after the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}},{"name":"modifiedBefore","in":"query","description":"Include only MQTT bindings modified before the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}},{"name":"modifiedSince","in":"query","description":"Include only MQTT bindings modified at or after the provided date and time. The date-time must be in ISO 8601 format.","style":"form","explode":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Page of filtered MQTT bindings. Only bindings that are accessible to the caller are returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageOfMqttBindings"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## Create a new MQTT binding.

> Create a new MQTT binding.

```json
{"openapi":"3.1.0","info":{"title":"Things MQTT Bindings API","version":"0.2.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.create"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"MqttBinding":{"type":"object","description":"A binding of a device to the MQTT connector.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the MQTT connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"username":{"type":"string","description":"The username the device uses when authenticating with the MQTT connector. This value is set to the device URN by the system when the binding is created.","readOnly":true},"password":{"type":"string","description":"The password the device uses when authenticating with the MQTT connector. Must be at least 24 characters, with at least one lower case letter, upper case letter, number and special character.","minLength":24,"writeOnly":true}},"required":["deviceId"],"title":"MqttBinding"},"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/mqtt/bindings":{"post":{"summary":"Create a new MQTT binding.","description":"Create a new MQTT binding.","operationId":"createMqttBinding","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MqttBinding"}}},"required":true},"responses":{"201":{"description":"The newly created MQTT binding'.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MqttBinding"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## GET /mqtt/bindings/{bindingId}

> Retrieve a MQTT binding by ID.

```json
{"openapi":"3.1.0","info":{"title":"Things MQTT Bindings API","version":"0.2.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.read"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"MqttBinding":{"type":"object","description":"A binding of a device to the MQTT connector.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the MQTT connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"username":{"type":"string","description":"The username the device uses when authenticating with the MQTT connector. This value is set to the device URN by the system when the binding is created.","readOnly":true},"password":{"type":"string","description":"The password the device uses when authenticating with the MQTT connector. Must be at least 24 characters, with at least one lower case letter, upper case letter, number and special character.","minLength":24,"writeOnly":true}},"required":["deviceId"],"title":"MqttBinding"},"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/mqtt/bindings/{bindingId}":{"get":{"summary":"Retrieve a MQTT binding by ID.","operationId":"getMqttBinding","parameters":[{"name":"bindingId","in":"path","description":"MQTT binding identifier.","required":true,"style":"simple","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The MQTT binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MqttBinding"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## PUT /mqtt/bindings/{bindingId}

> Update a MQTT binding.

```json
{"openapi":"3.1.0","info":{"title":"Things MQTT Bindings API","version":"0.2.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.update"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"MqttBinding":{"type":"object","description":"A binding of a device to the MQTT connector.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the binding.","readOnly":true},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"The id of the device that is bound to the MQTT connector by the binding."},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is created in the system.","readOnly":true},"createdBy":{"type":"string","description":"The user who created the binding.","readOnly":true},"modifiedAt":{"type":"string","format":"date-time","description":"The timestamp when the binding is last modified in the system.","readOnly":true},"modifiedBy":{"type":"string","description":"The user who last modified the binding.","readOnly":true},"username":{"type":"string","description":"The username the device uses when authenticating with the MQTT connector. This value is set to the device URN by the system when the binding is created.","readOnly":true},"password":{"type":"string","description":"The password the device uses when authenticating with the MQTT connector. Must be at least 24 characters, with at least one lower case letter, upper case letter, number and special character.","minLength":24,"writeOnly":true}},"required":["deviceId"],"title":"MqttBinding"},"DeviceId":{"type":"string","format":"device-id","description":"A device identifier in one of several supported formats.","oneOf":[{"$ref":"#/components/schemas/DeviceId-uuid"},{"$ref":"#/components/schemas/DeviceId-imei"},{"$ref":"#/components/schemas/DeviceId-deveui"},{"$ref":"#/components/schemas/DeviceId-dvnuuid"},{"$ref":"#/components/schemas/DeviceUrn-imei"},{"$ref":"#/components/schemas/DeviceUrn-deveui"},{"$ref":"#/components/schemas/DeviceUrn-dvnuuid"}],"title":"DeviceId"},"DeviceId-uuid":{"type":"string","format":"uuid","description":"Things Device UUID","title":"UuidDeviceId"},"DeviceId-imei":{"type":"string","description":"IMEI-based device ID","pattern":"(?i)^imei:[0-9]{15,16}$","title":"ImeiDeviceId"},"DeviceId-deveui":{"type":"string","description":"LoRaWAN DevEUI device ID","pattern":"(?i)^deveui:[a-f0-9]{16}$","title":"DevEuiDeviceId"},"DeviceId-dvnuuid":{"type":"string","description":"DVNUUID-based device ID","pattern":"(?i)^dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}?$","title":"DvnUuidDeviceId"},"DeviceUrn-imei":{"type":"string","description":"IMEI-based device URN","pattern":"(?i)^urn:dev:imei:[0-9]{15,16}:?$","title":"ImeiDeviceUrn"},"DeviceUrn-deveui":{"type":"string","description":"LoRaWAN DevEUI device URN","pattern":"(?i)^urn:dev:deveui:[a-f0-9]{16}:?$","title":"DevEuiDeviceUrn"},"DeviceUrn-dvnuuid":{"type":"string","description":"DVNUUID-based device URN","pattern":"(?i)^urn:dev:dvnuuid:[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}:?$","title":"DvnUuidDeviceUrn"},"Problem":{"type":"object","description":"Error information details","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank","description":"A URI reference that uniquely identifies the problem type only in the\ncontext of the provided API. Opposed to the specification in RFC-9457,\nit is neither recommended to be dereferenceable and point to a\nhuman-readable documentation nor globally unique for the problem type."},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable\nfor engineers, usually not suited for non technical stakeholders and\nnot localized."},"status":{"type":"integer","format":"int32","description":"The HTTP status code generated by the origin server for this occurrence\nof the problem.","exclusiveMaximum":600,"minimum":100},"detail":{"type":"string","description":"A human readable explanation specific to this occurrence of the\nproblem that is helpful to locate the problem and give advice on how\nto proceed. Written in English and readable for engineers, usually not\nsuited for non technical stakeholders and not localized."},"instance":{"type":"string","format":"uri-reference","description":"A URI reference that identifies the specific occurrence of the problem,\ne.g. by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code."}},"title":"Problem"}},"responses":{"badRequest":{"description":"Request is missing required information or invalid","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/mqtt/bindings/{bindingId}":{"put":{"summary":"Update a MQTT binding.","operationId":"setMqttBinding","parameters":[{"name":"bindingId","in":"path","description":"MQTT binding identifier.","required":true,"style":"simple","schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MqttBinding"}}},"required":true},"responses":{"200":{"description":"The updated MQTT binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MqttBinding"}}}},"400":{"$ref":"#/components/responses/badRequest"}}}}}}
```

## DELETE /mqtt/bindings/{bindingId}

> Delete a MQTT binding.

```json
{"openapi":"3.1.0","info":{"title":"Things MQTT Bindings API","version":"0.2.0"},"servers":[{"url":"https://api.kpnthings.com","description":"Things API Environment"}],"security":[{"BearerAuth":["connector-binding.delete"]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/mqtt/bindings/{bindingId}":{"delete":{"summary":"Delete a MQTT binding.","operationId":"deleteMqttBinding","parameters":[{"name":"bindingId","in":"path","description":"MQTT Binding identifier.","required":true,"style":"simple","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"MQTT binding has been deleted successfully."}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.kpnthings.com/kpn-things/general-functions/apis/connector-bindings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
