SmartLockConnection
Returns a list of smart lock connection entries.
GET/api/event/smart_lock_connection
Query parameters
idinteger | |
deletedboolean | This property is used to mark an entity as deleted / archived |
namestring | |
providerstring | |
modestring | |
bridgeHoststring | |
bridgePortstring | |
webClientIdstring | |
loqedLockIdstring | |
searchStringstring | text to search for in the list |
orderFieldNamestring | name of the order field |
orderFieldSortstring | sorting modeAllowed: DESCASC |
pageinteger | page of the list |
pageSizeinteger | number of entries for each page |
withMaxPageNumberstring | returns the number of pages available as a header if this is set |
Responses
200Returns a list of SmartLockConnectionsarray<SmartLockConnection>
Show fields (18)
scan_webhook_tokenstringThe token the provider authenticates its scan webhook requests with (Comydo: bearer token, basic auth password or "Auth-Key" header). The admin hands it to the provider.
scan_webhook_pathstringPath of the scan webhook of this connection's provider, relative to the API host.
scan_webhook_signing_secret_setbooleanidintegerPrimary key of the smart lock connection. Internal ID.
providerstringProvider of the smart lock, for example LOQED or a bridge.
modestringMode of the connection, for example bridge or web.
bridge_hoststringHost name of the bridge that talks to the lock.
bridge_portintegerPort of the bridge.
web_client_idstringClient ID for the web connection to the provider.
access_token_expires_atstring (date-time)Time the access token expires.
loqed_lock_idstringID of the LOQED lock at the provider.
ha_instance_idstringInstance that offers its locks through this connection: the Home Assistant core uuid or the id of a Node-RED lock bridge or n8n lock trigger. The ha_* fields are shared by these providers.
ha_webhook_urlstringWebhook of the Home Assistant integration (or of a Node-RED instance in push mode) that receives the signed lock commands.
scan_device_idsstringIds of the scanners of a scan webhook connection (Comydo: 12 hex digits each), separated by comma, space or new line. Every id becomes one smart lock when the connection is synced.
namestringName of the entity.
deletedbooleanThis property is used to mark an entity as deleted / archived
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/smart_lock_connection \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/smart_lock_connection', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/smart_lock_connection"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://your-instance.iw-erp.de/api/event/smart_lock_connection', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/smart_lock_connection"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/smart_lock_connection")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/smart_lock_connection"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/smart_lock_connection_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await SmartLockConnectionController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"ha_webhook_url": "https://vynst.de",
"name": "Beispiel",
"scan_webhook_token": "string",
"scan_webhook_path": "string",
"scan_webhook_signing_secret_set": true,
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1
}
]Creates a new smart lock connection entry.
POST/api/event/smart_lock_connection
Request body application/json
dataSmartLockConnection2Show fields (8)
providerstringProvider of the smart lock, for example LOQED or a bridge.
modestringMode of the connection, for example bridge or web.
bridge_hoststringHost name of the bridge that talks to the lock.
bridge_portintegerPort of the bridge.
web_client_idstringClient ID for the web connection to the provider.
loqed_lock_idstringID of the LOQED lock at the provider.
scan_device_idsstringIds of the scanners of a scan webhook connection (Comydo: 12 hex digits each), separated by comma, space or new line. Every id becomes one smart lock when the connection is synced.
deletedbooleanThis property is used to mark an entity as deleted / archived
Responses
200Add a new SmartLockConnectionSmartLockConnection
Show fields (18)
scan_webhook_tokenstringThe token the provider authenticates its scan webhook requests with (Comydo: bearer token, basic auth password or "Auth-Key" header). The admin hands it to the provider.
scan_webhook_pathstringPath of the scan webhook of this connection's provider, relative to the API host.
scan_webhook_signing_secret_setbooleanidintegerPrimary key of the smart lock connection. Internal ID.
providerstringProvider of the smart lock, for example LOQED or a bridge.
modestringMode of the connection, for example bridge or web.
bridge_hoststringHost name of the bridge that talks to the lock.
bridge_portintegerPort of the bridge.
web_client_idstringClient ID for the web connection to the provider.
access_token_expires_atstring (date-time)Time the access token expires.
loqed_lock_idstringID of the LOQED lock at the provider.
ha_instance_idstringInstance that offers its locks through this connection: the Home Assistant core uuid or the id of a Node-RED lock bridge or n8n lock trigger. The ha_* fields are shared by these providers.
ha_webhook_urlstringWebhook of the Home Assistant integration (or of a Node-RED instance in push mode) that receives the signed lock commands.
scan_device_idsstringIds of the scanners of a scan webhook connection (Comydo: 12 hex digits each), separated by comma, space or new line. Every id becomes one smart lock when the connection is synced.
namestringName of the entity.
deletedbooleanThis property is used to mark an entity as deleted / archived
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/smart_lock_connection \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1,
"web_client_id": "42",
"loqed_lock_id": "42"
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
provider: 'string',
mode: 'string',
bridge_host: 'string',
bridge_port: 1,
web_client_id: '42',
loqed_lock_id: '42'
}
})
};
fetch('https://your-instance.iw-erp.de/api/event/smart_lock_connection', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/smart_lock_connection"
payload = { "data": {
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1,
"web_client_id": "42",
"loqed_lock_id": "42"
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://your-instance.iw-erp.de/api/event/smart_lock_connection', [
'body' => '{"data":{"provider":"string","mode":"string","bridge_host":"string","bridge_port":1,"web_client_id":"42","loqed_lock_id":"42"}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/smart_lock_connection"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"provider\":\"string\",\"mode\":\"string\",\"bridge_host\":\"string\",\"bridge_port\":1,\"web_client_id\":\"42\",\"loqed_lock_id\":\"42\"}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"provider\":\"string\",\"mode\":\"string\",\"bridge_host\":\"string\",\"bridge_port\":1,\"web_client_id\":\"42\",\"loqed_lock_id\":\"42\"}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/smart_lock_connection")
.post(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/smart_lock_connection"
payload := strings.NewReader("{\"data\":{\"provider\":\"string\",\"mode\":\"string\",\"bridge_host\":\"string\",\"bridge_port\":1,\"web_client_id\":\"42\",\"loqed_lock_id\":\"42\"}}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/smart_lock_connection_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/smart_lock_connection.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await SmartLockConnectionController.post(SmartLockConnection.fromJson({
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1,
"web_client_id": "42",
"loqed_lock_id": "42"
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"ha_webhook_url": "https://vynst.de",
"name": "Beispiel",
"scan_webhook_token": "string",
"scan_webhook_path": "string",
"scan_webhook_signing_secret_set": true,
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1
}Returns a single smart lock connection entry.
GET/api/event/smart_lock_connection/{identifier}
Path parameters
identifierrequiredstring |
Responses
200Returns a single SmartLockConnectionSmartLockConnection
Show fields (18)
scan_webhook_tokenstringThe token the provider authenticates its scan webhook requests with (Comydo: bearer token, basic auth password or "Auth-Key" header). The admin hands it to the provider.
scan_webhook_pathstringPath of the scan webhook of this connection's provider, relative to the API host.
scan_webhook_signing_secret_setbooleanidintegerPrimary key of the smart lock connection. Internal ID.
providerstringProvider of the smart lock, for example LOQED or a bridge.
modestringMode of the connection, for example bridge or web.
bridge_hoststringHost name of the bridge that talks to the lock.
bridge_portintegerPort of the bridge.
web_client_idstringClient ID for the web connection to the provider.
access_token_expires_atstring (date-time)Time the access token expires.
loqed_lock_idstringID of the LOQED lock at the provider.
ha_instance_idstringInstance that offers its locks through this connection: the Home Assistant core uuid or the id of a Node-RED lock bridge or n8n lock trigger. The ha_* fields are shared by these providers.
ha_webhook_urlstringWebhook of the Home Assistant integration (or of a Node-RED instance in push mode) that receives the signed lock commands.
scan_device_idsstringIds of the scanners of a scan webhook connection (Comydo: 12 hex digits each), separated by comma, space or new line. Every id becomes one smart lock when the connection is synced.
namestringName of the entity.
deletedbooleanThis property is used to mark an entity as deleted / archived
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/smart_lock_connection/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/smart_lock_connection/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/smart_lock_connection/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://your-instance.iw-erp.de/api/event/smart_lock_connection/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/smart_lock_connection/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/smart_lock_connection/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/smart_lock_connection/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/smart_lock_connection_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await SmartLockConnectionController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"ha_webhook_url": "https://vynst.de",
"name": "Beispiel",
"scan_webhook_token": "string",
"scan_webhook_path": "string",
"scan_webhook_signing_secret_set": true,
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1
}Updates an existing smart lock connection entry.
PUT/api/event/smart_lock_connection/{identifier}
Path parameters
identifierrequiredstring |
Request body application/json
dataSmartLockConnection2Show fields (8)
providerstringProvider of the smart lock, for example LOQED or a bridge.
modestringMode of the connection, for example bridge or web.
bridge_hoststringHost name of the bridge that talks to the lock.
bridge_portintegerPort of the bridge.
web_client_idstringClient ID for the web connection to the provider.
loqed_lock_idstringID of the LOQED lock at the provider.
scan_device_idsstringIds of the scanners of a scan webhook connection (Comydo: 12 hex digits each), separated by comma, space or new line. Every id becomes one smart lock when the connection is synced.
deletedbooleanThis property is used to mark an entity as deleted / archived
Responses
200Update a SmartLockConnectionSmartLockConnection
Show fields (18)
scan_webhook_tokenstringThe token the provider authenticates its scan webhook requests with (Comydo: bearer token, basic auth password or "Auth-Key" header). The admin hands it to the provider.
scan_webhook_pathstringPath of the scan webhook of this connection's provider, relative to the API host.
scan_webhook_signing_secret_setbooleanidintegerPrimary key of the smart lock connection. Internal ID.
providerstringProvider of the smart lock, for example LOQED or a bridge.
modestringMode of the connection, for example bridge or web.
bridge_hoststringHost name of the bridge that talks to the lock.
bridge_portintegerPort of the bridge.
web_client_idstringClient ID for the web connection to the provider.
access_token_expires_atstring (date-time)Time the access token expires.
loqed_lock_idstringID of the LOQED lock at the provider.
ha_instance_idstringInstance that offers its locks through this connection: the Home Assistant core uuid or the id of a Node-RED lock bridge or n8n lock trigger. The ha_* fields are shared by these providers.
ha_webhook_urlstringWebhook of the Home Assistant integration (or of a Node-RED instance in push mode) that receives the signed lock commands.
scan_device_idsstringIds of the scanners of a scan webhook connection (Comydo: 12 hex digits each), separated by comma, space or new line. Every id becomes one smart lock when the connection is synced.
namestringName of the entity.
deletedbooleanThis property is used to mark an entity as deleted / archived
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
curl --request PUT \
--url https://your-instance.iw-erp.de/api/event/smart_lock_connection/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1,
"web_client_id": "42",
"loqed_lock_id": "42"
}
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
provider: 'string',
mode: 'string',
bridge_host: 'string',
bridge_port: 1,
web_client_id: '42',
loqed_lock_id: '42'
}
})
};
fetch('https://your-instance.iw-erp.de/api/event/smart_lock_connection/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/smart_lock_connection/42"
payload = { "data": {
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1,
"web_client_id": "42",
"loqed_lock_id": "42"
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PUT', 'https://your-instance.iw-erp.de/api/event/smart_lock_connection/42', [
'body' => '{"data":{"provider":"string","mode":"string","bridge_host":"string","bridge_port":1,"web_client_id":"42","loqed_lock_id":"42"}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/smart_lock_connection/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"provider\":\"string\",\"mode\":\"string\",\"bridge_host\":\"string\",\"bridge_port\":1,\"web_client_id\":\"42\",\"loqed_lock_id\":\"42\"}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"provider\":\"string\",\"mode\":\"string\",\"bridge_host\":\"string\",\"bridge_port\":1,\"web_client_id\":\"42\",\"loqed_lock_id\":\"42\"}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/smart_lock_connection/42")
.put(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/smart_lock_connection/42"
payload := strings.NewReader("{\"data\":{\"provider\":\"string\",\"mode\":\"string\",\"bridge_host\":\"string\",\"bridge_port\":1,\"web_client_id\":\"42\",\"loqed_lock_id\":\"42\"}}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/smart_lock_connection_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/smart_lock_connection.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await SmartLockConnectionController.put(SmartLockConnection.fromJson({
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1,
"web_client_id": "42",
"loqed_lock_id": "42"
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"ha_webhook_url": "https://vynst.de",
"name": "Beispiel",
"scan_webhook_token": "string",
"scan_webhook_path": "string",
"scan_webhook_signing_secret_set": true,
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1
}Updates an existing smart lock connection entry.
PATCH/api/event/smart_lock_connection/{identifier}
Path parameters
identifierrequiredstring |
Request body application/json
dataSmartLockConnection2Show fields (8)
providerstringProvider of the smart lock, for example LOQED or a bridge.
modestringMode of the connection, for example bridge or web.
bridge_hoststringHost name of the bridge that talks to the lock.
bridge_portintegerPort of the bridge.
web_client_idstringClient ID for the web connection to the provider.
loqed_lock_idstringID of the LOQED lock at the provider.
scan_device_idsstringIds of the scanners of a scan webhook connection (Comydo: 12 hex digits each), separated by comma, space or new line. Every id becomes one smart lock when the connection is synced.
deletedbooleanThis property is used to mark an entity as deleted / archived
Responses
200Update a SmartLockConnectionSmartLockConnection
Show fields (18)
scan_webhook_tokenstringThe token the provider authenticates its scan webhook requests with (Comydo: bearer token, basic auth password or "Auth-Key" header). The admin hands it to the provider.
scan_webhook_pathstringPath of the scan webhook of this connection's provider, relative to the API host.
scan_webhook_signing_secret_setbooleanidintegerPrimary key of the smart lock connection. Internal ID.
providerstringProvider of the smart lock, for example LOQED or a bridge.
modestringMode of the connection, for example bridge or web.
bridge_hoststringHost name of the bridge that talks to the lock.
bridge_portintegerPort of the bridge.
web_client_idstringClient ID for the web connection to the provider.
access_token_expires_atstring (date-time)Time the access token expires.
loqed_lock_idstringID of the LOQED lock at the provider.
ha_instance_idstringInstance that offers its locks through this connection: the Home Assistant core uuid or the id of a Node-RED lock bridge or n8n lock trigger. The ha_* fields are shared by these providers.
ha_webhook_urlstringWebhook of the Home Assistant integration (or of a Node-RED instance in push mode) that receives the signed lock commands.
scan_device_idsstringIds of the scanners of a scan webhook connection (Comydo: 12 hex digits each), separated by comma, space or new line. Every id becomes one smart lock when the connection is synced.
namestringName of the entity.
deletedbooleanThis property is used to mark an entity as deleted / archived
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
curl --request PATCH \
--url https://your-instance.iw-erp.de/api/event/smart_lock_connection/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1,
"web_client_id": "42",
"loqed_lock_id": "42"
}
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
provider: 'string',
mode: 'string',
bridge_host: 'string',
bridge_port: 1,
web_client_id: '42',
loqed_lock_id: '42'
}
})
};
fetch('https://your-instance.iw-erp.de/api/event/smart_lock_connection/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/smart_lock_connection/42"
payload = { "data": {
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1,
"web_client_id": "42",
"loqed_lock_id": "42"
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://your-instance.iw-erp.de/api/event/smart_lock_connection/42', [
'body' => '{"data":{"provider":"string","mode":"string","bridge_host":"string","bridge_port":1,"web_client_id":"42","loqed_lock_id":"42"}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Patch,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/smart_lock_connection/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"provider\":\"string\",\"mode\":\"string\",\"bridge_host\":\"string\",\"bridge_port\":1,\"web_client_id\":\"42\",\"loqed_lock_id\":\"42\"}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"provider\":\"string\",\"mode\":\"string\",\"bridge_host\":\"string\",\"bridge_port\":1,\"web_client_id\":\"42\",\"loqed_lock_id\":\"42\"}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/smart_lock_connection/42")
.patch(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/smart_lock_connection/42"
payload := strings.NewReader("{\"data\":{\"provider\":\"string\",\"mode\":\"string\",\"bridge_host\":\"string\",\"bridge_port\":1,\"web_client_id\":\"42\",\"loqed_lock_id\":\"42\"}}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with package:http (no controller in the iw_erp_api package)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.patch(
Uri.parse('https://your-instance.iw-erp.de/api/event/smart_lock_connection/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1,
"web_client_id": "42",
"loqed_lock_id": "42"
}
}),
);
print(response.body);{
"id": 42,
"ha_webhook_url": "https://vynst.de",
"name": "Beispiel",
"scan_webhook_token": "string",
"scan_webhook_path": "string",
"scan_webhook_signing_secret_set": true,
"provider": "string",
"mode": "string",
"bridge_host": "string",
"bridge_port": 1
}Starts the OAuth login with an external provider.
POST/api/event/smart_lock_connection/{identifier}/oauth_login
Path parameters
identifierrequiredstring |
Responses
default
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/oauth_login \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/oauth_login', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/oauth_login"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/oauth_login', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/oauth_login"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/oauth_login")
.post(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/oauth_login"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/smart_lock_connection_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await SmartLockConnectionController.oauthLogin('42');
if (result.success) {
print(result.data);
}Synchronizes the devices.
POST/api/event/smart_lock_connection/{identifier}/sync_devices
Path parameters
identifierrequiredstring |
Responses
default
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/sync_devices \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'POST', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/sync_devices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/sync_devices"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.post(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/sync_devices', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/sync_devices"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/sync_devices")
.post(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/smart_lock_connection/42/sync_devices"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/smart_lock_connection_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await SmartLockConnectionController.syncDevices('42');
if (result.success) {
print(result.data);
}