Fahrtenbuch

Admin

List users

GET
/admin/users

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Benutzer

application/json
  1. response
[index: integer]?
Example Request
curl -X GET 'https://example.com/api/v1/admin/users'
Example Response200
[  {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "email": "user@example.com",    "loginName": "string",    "displayName": "string",    "firstName": "string",    "lastName": "string",    "role": "user",    "status": "active",    "locale": "de",    "timezone": "Europe/Berlin",    "themeMode": "light",    "totpEnabled": true,    "totpRequired": true,    "passkeyEnabled": true,    "hasPassword": true,    "forcePasswordChange": true,    "onboardingCompleted": true,    "lastLoginAt": "2019-08-24T14:15:22Z",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z"  }]

Create user

POST
/admin/users

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body
email*string
Formatemail
loginName?|
Length3 <= length <= 64
password*string
Formatpassword
Length8 <= length
displayName?|
Lengthlength <= 120
firstName?|
Lengthlength <= 80
lastName?|
Lengthlength <= 80
role?string
Default"user"
Value in"user""admin"
status?string
Default"active"
Value in"active""disabled"
locale?string
Default"de"
timezone?string
Default"Europe/Berlin"
themeMode?string
Default"system"
Value in"light""dark""system"
forcePasswordChange?boolean
Defaulttrue
totpRequired?boolean
Defaultfalse
passkeyEnabled?boolean
Defaulttrue

Response Body

Benutzer angelegt

application/json
  1. response
id*string
Formatuuid
email*string
Formatemail
loginName?string|null
displayName?string|null
firstName?|
Lengthlength <= 80
lastName?|
Lengthlength <= 80
role*string
Value in"user""admin"
status*string
Value in"active""disabled"
locale?string
Default"de"
timezone?string
Default"Europe/Berlin"
themeMode?string
Value in"light""dark""system"
totpEnabled?boolean
totpRequired?boolean
passkeyEnabled?boolean
hasPassword?boolean
forcePasswordChange?boolean
onboardingCompleted?boolean

false: beim Login den Einrichtungsassistenten zeigen

lastLoginAt?|
Formatdate-time
createdAt*string
Formatdate-time
updatedAt?string
Formatdate-time
Example Request
curl -X POST 'https://example.com/api/v1/admin/users' \  -H 'Content-Type: application/json' \  -d '{  "email": "user@example.com",  "password": "pa$$word"}'
Example Response201
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "email": "user@example.com",  "loginName": "string",  "displayName": "string",  "firstName": "string",  "lastName": "string",  "role": "user",  "status": "active",  "locale": "de",  "timezone": "Europe/Berlin",  "themeMode": "light",  "totpEnabled": true,  "totpRequired": true,  "passkeyEnabled": true,  "hasPassword": true,  "forcePasswordChange": true,  "onboardingCompleted": true,  "lastLoginAt": "2019-08-24T14:15:22Z",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z"}

Get user

GET
/admin/users/{id}

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Path Parameters

id*string
Formatuuid

Response Body

Benutzer

application/json
  1. response
id*string
Formatuuid
email*string
Formatemail
loginName?string|null
displayName?string|null
firstName?|
Lengthlength <= 80
lastName?|
Lengthlength <= 80
role*string
Value in"user""admin"
status*string
Value in"active""disabled"
locale?string
Default"de"
timezone?string
Default"Europe/Berlin"
themeMode?string
Value in"light""dark""system"
totpEnabled?boolean
totpRequired?boolean
passkeyEnabled?boolean
hasPassword?boolean
forcePasswordChange?boolean
onboardingCompleted?boolean

false: beim Login den Einrichtungsassistenten zeigen

lastLoginAt?|
Formatdate-time
createdAt*string
Formatdate-time
updatedAt?string
Formatdate-time
passkeyCount?integer
Range0 <= value
activeDeviceCount?integer
Range0 <= value
vehicleCount?integer
Range0 <= value
tripCount?integer
Range0 <= value
passkeys?array<>
Example Request
curl -X GET 'https://example.com/api/v1/admin/users/497f6eca-6276-4993-bfeb-53cbbbba6f08'
Example Response200
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "email": "user@example.com",  "loginName": "string",  "displayName": "string",  "firstName": "string",  "lastName": "string",  "role": "user",  "status": "active",  "locale": "de",  "timezone": "Europe/Berlin",  "themeMode": "light",  "totpEnabled": true,  "totpRequired": true,  "passkeyEnabled": true,  "hasPassword": true,  "forcePasswordChange": true,  "onboardingCompleted": true,  "lastLoginAt": "2019-08-24T14:15:22Z",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "passkeyCount": 0,  "activeDeviceCount": 0,  "vehicleCount": 0,  "tripCount": 0,  "passkeys": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "name": "string",      "transports": [        "string"      ],      "backedUp": true,      "deviceType": "string",      "lastUsedAt": "2019-08-24T14:15:22Z",      "createdAt": "2019-08-24T14:15:22Z"    }  ]}

Delete user

DELETE
/admin/users/{id}

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Path Parameters

id*string
Formatuuid

Response Body

Benutzer gelöscht

Example Request
curl -X DELETE 'https://example.com/api/v1/admin/users/497f6eca-6276-4993-bfeb-53cbbbba6f08'
Example Response204
Empty

Update user

PUT
/admin/users/{id}

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Path Parameters

id*string
Formatuuid

Request Body

application/json
  1. body
[key: string]?any

Response Body

Benutzer aktualisiert

Example Request
curl -X PUT 'https://example.com/api/v1/admin/users/497f6eca-6276-4993-bfeb-53cbbbba6f08' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response200
Empty

Disable TOTP for a user

DELETE
/admin/users/{id}/totp

Entfernt das verschlüsselte TOTP-Secret und widerruft andere Sitzungen.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Path Parameters

id*string
Formatuuid

Response Body

Aktualisierter Benutzer

application/json
  1. response
id*string
Formatuuid
email*string
Formatemail
loginName?string|null
displayName?string|null
firstName?|
Lengthlength <= 80
lastName?|
Lengthlength <= 80
role*string
Value in"user""admin"
status*string
Value in"active""disabled"
locale?string
Default"de"
timezone?string
Default"Europe/Berlin"
themeMode?string
Value in"light""dark""system"
totpEnabled?boolean
totpRequired?boolean
passkeyEnabled?boolean
hasPassword?boolean
forcePasswordChange?boolean
onboardingCompleted?boolean

false: beim Login den Einrichtungsassistenten zeigen

lastLoginAt?|
Formatdate-time
createdAt*string
Formatdate-time
updatedAt?string
Formatdate-time
passkeyCount?integer
Range0 <= value
activeDeviceCount?integer
Range0 <= value
vehicleCount?integer
Range0 <= value
tripCount?integer
Range0 <= value
passkeys?array<>
Example Request
curl -X DELETE 'https://example.com/api/v1/admin/users/497f6eca-6276-4993-bfeb-53cbbbba6f08/totp'
Example Response200
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "email": "user@example.com",  "loginName": "string",  "displayName": "string",  "firstName": "string",  "lastName": "string",  "role": "user",  "status": "active",  "locale": "de",  "timezone": "Europe/Berlin",  "themeMode": "light",  "totpEnabled": true,  "totpRequired": true,  "passkeyEnabled": true,  "hasPassword": true,  "forcePasswordChange": true,  "onboardingCompleted": true,  "lastLoginAt": "2019-08-24T14:15:22Z",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "passkeyCount": 0,  "activeDeviceCount": 0,  "vehicleCount": 0,  "tripCount": 0,  "passkeys": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "name": "string",      "transports": [        "string"      ],      "backedUp": true,      "deviceType": "string",      "lastUsedAt": "2019-08-24T14:15:22Z",      "createdAt": "2019-08-24T14:15:22Z"    }  ]}
DELETE
/admin/users/{id}/passkeys

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Path Parameters

id*string
Formatuuid

Response Body

Aktualisierter Benutzer

application/json
  1. response
id*string
Formatuuid
email*string
Formatemail
loginName?string|null
displayName?string|null
firstName?|
Lengthlength <= 80
lastName?|
Lengthlength <= 80
role*string
Value in"user""admin"
status*string
Value in"active""disabled"
locale?string
Default"de"
timezone?string
Default"Europe/Berlin"
themeMode?string
Value in"light""dark""system"
totpEnabled?boolean
totpRequired?boolean
passkeyEnabled?boolean
hasPassword?boolean
forcePasswordChange?boolean
onboardingCompleted?boolean

false: beim Login den Einrichtungsassistenten zeigen

lastLoginAt?|
Formatdate-time
createdAt*string
Formatdate-time
updatedAt?string
Formatdate-time
passkeyCount?integer
Range0 <= value
activeDeviceCount?integer
Range0 <= value
vehicleCount?integer
Range0 <= value
tripCount?integer
Range0 <= value
passkeys?array<>
Example Request
curl -X DELETE 'https://example.com/api/v1/admin/users/497f6eca-6276-4993-bfeb-53cbbbba6f08/passkeys'
Example Response200
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "email": "user@example.com",  "loginName": "string",  "displayName": "string",  "firstName": "string",  "lastName": "string",  "role": "user",  "status": "active",  "locale": "de",  "timezone": "Europe/Berlin",  "themeMode": "light",  "totpEnabled": true,  "totpRequired": true,  "passkeyEnabled": true,  "hasPassword": true,  "forcePasswordChange": true,  "onboardingCompleted": true,  "lastLoginAt": "2019-08-24T14:15:22Z",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "passkeyCount": 0,  "activeDeviceCount": 0,  "vehicleCount": 0,  "tripCount": 0,  "passkeys": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "name": "string",      "transports": [        "string"      ],      "backedUp": true,      "deviceType": "string",      "lastUsedAt": "2019-08-24T14:15:22Z",      "createdAt": "2019-08-24T14:15:22Z"    }  ]}

Delete a user's passkey

DELETE
/admin/users/{id}/passkeys/{passkeyId}

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Path Parameters

id*string
Formatuuid
passkeyId*string
Formatuuid

Response Body

Aktualisierter Benutzer

application/json
  1. response
id*string
Formatuuid
email*string
Formatemail
loginName?string|null
displayName?string|null
firstName?|
Lengthlength <= 80
lastName?|
Lengthlength <= 80
role*string
Value in"user""admin"
status*string
Value in"active""disabled"
locale?string
Default"de"
timezone?string
Default"Europe/Berlin"
themeMode?string
Value in"light""dark""system"
totpEnabled?boolean
totpRequired?boolean
passkeyEnabled?boolean
hasPassword?boolean
forcePasswordChange?boolean
onboardingCompleted?boolean

false: beim Login den Einrichtungsassistenten zeigen

lastLoginAt?|
Formatdate-time
createdAt*string
Formatdate-time
updatedAt?string
Formatdate-time
passkeyCount?integer
Range0 <= value
activeDeviceCount?integer
Range0 <= value
vehicleCount?integer
Range0 <= value
tripCount?integer
Range0 <= value
passkeys?array<>
Example Request
curl -X DELETE 'https://example.com/api/v1/admin/users/497f6eca-6276-4993-bfeb-53cbbbba6f08/passkeys/497f6eca-6276-4993-bfeb-53cbbbba6f08'
Example Response200
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "email": "user@example.com",  "loginName": "string",  "displayName": "string",  "firstName": "string",  "lastName": "string",  "role": "user",  "status": "active",  "locale": "de",  "timezone": "Europe/Berlin",  "themeMode": "light",  "totpEnabled": true,  "totpRequired": true,  "passkeyEnabled": true,  "hasPassword": true,  "forcePasswordChange": true,  "onboardingCompleted": true,  "lastLoginAt": "2019-08-24T14:15:22Z",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "passkeyCount": 0,  "activeDeviceCount": 0,  "vehicleCount": 0,  "tripCount": 0,  "passkeys": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "name": "string",      "transports": [        "string"      ],      "backedUp": true,      "deviceType": "string",      "lastUsedAt": "2019-08-24T14:15:22Z",      "createdAt": "2019-08-24T14:15:22Z"    }  ]}

Revoke a user's sessions

DELETE
/admin/users/{id}/sessions

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Path Parameters

id*string
Formatuuid

Response Body

Anzahl widerrufener Sitzungen

application/json
  1. response
revokedSessions*integer
Range0 <= value
Example Request
curl -X DELETE 'https://example.com/api/v1/admin/users/497f6eca-6276-4993-bfeb-53cbbbba6f08/sessions'
Example Response200
{  "revokedSessions": 0}
GET
/admin/settings/services

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Interne Servicekonfiguration

application/json
  1. response
map*
photon*
overpass*
atlas?

Dawarich Atlas – bündelt Photon (Geocoding) und Valhalla (Routing/Map-Matching).

mapMatching?
Example Request
curl -X GET 'https://example.com/api/v1/admin/settings/services'
Example Response200
{  "map": {    "provider": "osm",    "type": "raster",    "tileUrl": "http://example.com",    "styleUrl": "http://example.com",    "attribution": "string",    "minZoom": 0,    "maxZoom": 0,    "tileSize": 256  },  "photon": {    "provider": "disabled",    "baseUrl": "string",    "timeoutMs": 10000  },  "overpass": {    "provider": "public",    "interpreterUrl": "string",    "timeoutMs": 30000,    "searchRadiusMeters": 2500,    "maxResults": 50  },  "atlas": {    "enabled": false,    "baseUrl": "string",    "timeoutMs": 10000  },  "mapMatching": {    "provider": "disabled",    "osrmUrl": "string",    "valhallaUrl": "string"  }}

Configure map source

PUT
/admin/settings/services/map

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body
provider*string
Value in"osm""maplibre""custom"
type*string
Value in"raster""vector""style"
tileUrl?|
Formaturi
styleUrl?|
Formaturi
attribution*string
minZoom*integer
maxZoom*integer
tileSize*integer
Value in256512

Response Body

Kartenquelle gespeichert

Example Request
curl -X PUT 'https://example.com/api/v1/admin/settings/services/map' \  -H 'Content-Type: application/json' \  -d '{  "provider": "osm",  "type": "raster",  "attribution": "string",  "minZoom": 0,  "maxZoom": 0,  "tileSize": 256}'
Example Response200
Empty

Configure Photon

PUT
/admin/settings/services/photon

Interne Server-URLs bleiben ausschließlich im Backend gespeichert.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body
provider*string

disabled schaltet die Adresssuche ab; atlas nutzt den Photon-Passthrough von Dawarich Atlas.

Value in"disabled""public""custom""atlas"
baseUrl?string|null
timeoutMs*integer
Range1000 <= value
Default10000

Response Body

Photon-Konfiguration gespeichert

Example Request
curl -X PUT 'https://example.com/api/v1/admin/settings/services/photon' \  -H 'Content-Type: application/json' \  -d '{  "provider": "disabled",  "timeoutMs": 10000}'
Example Response200
Empty

Configure Overpass

PUT
/admin/settings/services/overpass

Interne Server-URLs bleiben ausschließlich im Backend gespeichert.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body
provider*string
Value in"public""custom"
interpreterUrl?string|null
timeoutMs*integer
Range1000 <= value
Default30000
searchRadiusMeters*integer
Range1 <= value
Default2500
maxResults*integer
Range1 <= value <= 500
Default50

Response Body

Overpass-Konfiguration gespeichert

Example Request
curl -X PUT 'https://example.com/api/v1/admin/settings/services/overpass' \  -H 'Content-Type: application/json' \  -d '{  "provider": "public",  "timeoutMs": 30000,  "searchRadiusMeters": 2500,  "maxResults": 50}'
Example Response200
Empty

Configure Dawarich Atlas

PUT
/admin/settings/services/atlas

Interne Server-URLs bleiben ausschließlich im Backend gespeichert.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body

Dawarich Atlas – bündelt Photon (Geocoding) und Valhalla (Routing/Map-Matching).

enabled*boolean
Defaultfalse
baseUrl?string
timeoutMs*integer
Range1000 <= value <= 120000
Default10000

Response Body

Atlas-Konfiguration gespeichert

Example Request
curl -X PUT 'https://example.com/api/v1/admin/settings/services/atlas' \  -H 'Content-Type: application/json' \  -d '{  "enabled": false,  "timeoutMs": 10000}'
Example Response200
Empty
GET
/admin/settings/services/check

Prüft mit den gespeicherten Einstellungen, welche Funktionen (Atlas, Photon, Map-Matching) verfügbar sind.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Query Parameters

module?string
Value in"atlas""geocoding""mapMatching"

Response Body

Status je Modul

application/json
  1. response
checkedAt*string
Formatdate-time
modules*array<>
Example Request
curl -X GET 'https://example.com/api/v1/admin/settings/services/check'
Example Response200
{  "checkedAt": "2019-08-24T14:15:22Z",  "modules": [    {      "module": "atlas",      "label": "string",      "provider": "string",      "providerLabel": "string",      "state": "available",      "message": "string",      "details": {},      "responseTimeMs": 0    }  ]}
POST
/admin/settings/services/test

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body
category*string
Value in"map""photon""overpass""valhalla""osrm""atlas""geocoding""mapMatching"
config*

Response Body

Testergebnis

application/json
  1. response
success*boolean
responseTimeMs?integer|null
message?string
Example Request
curl -X POST 'https://example.com/api/v1/admin/settings/services/test' \  -H 'Content-Type: application/json' \  -d '{  "category": "map",  "config": {}}'
Example Response200
{  "success": true,  "responseTimeMs": 0,  "message": "string"}
GET
/admin/settings/ai

API-Schlüssel werden nie zurückgegeben, nur ob einer hinterlegt ist.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

KI-Konfiguration

application/json
  1. response
activeProvider*string
Value in"disabled""claude""openai""ollama"
timeoutMs*integer
providers*
Example Request
curl -X GET 'https://example.com/api/v1/admin/settings/ai'
Example Response200
{  "activeProvider": "disabled",  "timeoutMs": 0,  "providers": {    "claude": {      "baseUrl": "string",      "defaultBaseUrl": "string",      "model": "string",      "apiKeySet": true,      "apiKeyHint": "string"    },    "openai": {      "baseUrl": "string",      "defaultBaseUrl": "string",      "model": "string",      "apiKeySet": true,      "apiKeyHint": "string"    },    "ollama": {      "baseUrl": "string",      "defaultBaseUrl": "string",      "model": "string",      "apiKeySet": true,      "apiKeyHint": "string"    }  }}
PUT
/admin/settings/ai

Leeres oder fehlendes apiKey lässt den gespeicherten Schlüssel unverändert; clearApiKey entfernt ihn. Aktiviert werden kann nur ein vollständig eingerichteter Anbieter.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body
activeProvider?string
Value in"disabled""claude""openai""ollama"
timeoutMs?integer
Range5000 <= value <= 600000
providers?

Response Body

KI-Konfiguration gespeichert

application/json
  1. response
activeProvider*string
Value in"disabled""claude""openai""ollama"
timeoutMs*integer
providers*
Example Request
curl -X PUT 'https://example.com/api/v1/admin/settings/ai' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response200
{  "activeProvider": "disabled",  "timeoutMs": 0,  "providers": {    "claude": {      "baseUrl": "string",      "defaultBaseUrl": "string",      "model": "string",      "apiKeySet": true,      "apiKeyHint": "string"    },    "openai": {      "baseUrl": "string",      "defaultBaseUrl": "string",      "model": "string",      "apiKeySet": true,      "apiKeyHint": "string"    },    "ollama": {      "baseUrl": "string",      "defaultBaseUrl": "string",      "model": "string",      "apiKeySet": true,      "apiKeyHint": "string"    }  }}
POST
/admin/settings/ai/test

Nicht gespeicherte Angaben in config werden mit der gespeicherten Konfiguration zusammengeführt.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body
provider*string
Value in"claude""openai""ollama"
config?

Response Body

Testergebnis

application/json
  1. response
success*boolean
responseTimeMs?integer|null
message?string
models*array<string>
modelAvailable?|

Ob das eingetragene Modell beim Anbieter verfügbar ist

Example Request
curl -X POST 'https://example.com/api/v1/admin/settings/ai/test' \  -H 'Content-Type: application/json' \  -d '{  "provider": "claude"}'
Example Response200
{  "success": true,  "responseTimeMs": 0,  "message": "string",  "models": [    "string"  ],  "modelAvailable": true}

Create full backup

POST
/admin/backup

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Backup gestartet

Example Request
curl -X POST 'https://example.com/api/v1/admin/backup'
Example Response202
Empty

Get system information

GET
/admin/system

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Systeminformationen

Example Request
curl -X GET 'https://example.com/api/v1/admin/system'
Example Response200
Empty
GET
/admin/overview

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Successful response

Example Request
curl -X GET 'https://example.com/api/v1/admin/overview'
Example Response
Empty
GET
/admin/settings

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Successful response

Example Request
curl -X GET 'https://example.com/api/v1/admin/settings'
Example Response
Empty
PATCH
/admin/settings

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Successful response

Example Request
curl -X PATCH 'https://example.com/api/v1/admin/settings'
Example Response
Empty
GET
/admin/jobs/status

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Redis-Verbindung, Anzahl Jobs je Warteschlange und Redis-Insight-Adresse

application/json
  1. response
online?boolean
counts?
redisInsight?
Example Request
curl -X GET 'https://example.com/api/v1/admin/jobs/status'
Example Response
{  "online": true,  "counts": {    "property1": 0,    "property2": 0  },  "redisInsight": {    "url": "string",    "port": 0  }}

List background jobs

GET
/admin/jobs

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Successful response

Example Request
curl -X GET 'https://example.com/api/v1/admin/jobs'
Example Response
Empty

Retry a background job

POST
/admin/jobs/{id}/retry

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Path Parameters

id*string

Response Body

Successful response

Example Request
curl -X POST 'https://example.com/api/v1/admin/jobs/string/retry'
Example Response
Empty

Delete a background job

DELETE
/admin/jobs/{id}

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Path Parameters

id*string

Response Body

Successful response

Example Request
curl -X DELETE 'https://example.com/api/v1/admin/jobs/string'
Example Response
Empty

Map matching status

GET
/admin/jobs/map-matching

Ob Map-Matching konfiguriert ist und wie viele Fahrten gematcht, abgelehnt, fehlgeschlagen oder offen sind.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Status

application/json
  1. response
enabled*boolean
provider*string
Value in"disabled""valhalla""osrm""atlas"
reason?string|null
trips*
Example Request
curl -X GET 'https://example.com/api/v1/admin/jobs/map-matching'
Example Response200
{  "enabled": true,  "provider": "disabled",  "reason": "string",  "trips": {    "missing": 0,    "applied": 0,    "rejected": 0,    "failed": 0  }}

Start map matching job

POST
/admin/jobs/map-matching

Reiht abgeschlossene Fahrten zum Map-Matching ein. Fahrten in abgeschlossenen Zeiträumen werden übersprungen.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body
mode?string
Default"missing"
Value in"missing""failed""all"
limit?integer
Range1 <= value <= 1000
Default500

Response Body

Eingereiht

application/json
  1. response
queued*integer
selected*integer
mode*string
provider?string
Example Request
curl -X POST 'https://example.com/api/v1/admin/jobs/map-matching' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "queued": 0,  "selected": 0,  "mode": "string",  "provider": "string"}
GET
/admin/jobs/map-matching/issues

Die letzten 100 abgelehnten bzw. fehlgeschlagenen Fahrten mit Grund, über alle Benutzer.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Query Parameters

status?string
Value in"rejected""failed"

Response Body

Problemfahrten

application/json
  1. response
trips*array<>
Example Request
curl -X GET 'https://example.com/api/v1/admin/jobs/map-matching/issues'
Example Response200
{  "trips": [    {      "tripId": "ab93ac19-a7bf-4885-87b6-6dcba80ee2d5",      "startedAt": "2019-08-24T14:15:22Z",      "timeZone": "string",      "startAddress": "string",      "endAddress": "string",      "distanceMeters": 0,      "user": {        "username": "string",        "displayName": "string"      },      "status": "rejected",      "provider": "valhalla",      "message": "string",      "pointCount": 0,      "rawDistanceMeters": 0,      "matchedDistanceMeters": 0,      "matchedAt": "2019-08-24T14:15:22Z"    }  ]}
POST
/admin/jobs/reverse-geocode

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Successful response

Example Request
curl -X POST 'https://example.com/api/v1/admin/jobs/reverse-geocode'
Example Response
Empty
GET
/admin/data/export

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Successful response

Example Request
curl -X GET 'https://example.com/api/v1/admin/data/export'
Example Response
Empty
POST
/admin/data/import

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Successful response

Example Request
curl -X POST 'https://example.com/api/v1/admin/data/import'
Example Response
Empty
GET
/admin/setup

Stand der Ersteinrichtung plus Werte, die nur über die Docker-Umgebung einstellbar sind (öffentliche Adresse, OAuth-Anbieter, SMTP) als Status.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Einrichtungsstatus

application/json
  1. response
completed?boolean
completedAt?|
Formatdate-time
environment?
mail?

Aus SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASSWORD, SMTP_FROM, SMTP_FROM_NAME.

gravatar?
Example Request
curl -X GET 'https://example.com/api/v1/admin/setup'
Example Response
{  "completed": true,  "completedAt": "2019-08-24T14:15:22Z",  "environment": {    "publicBaseUrl": "string",    "publicBaseUrlConfigured": true,    "timezone": "string",    "oauth": {      "google": true,      "microsoft": true,      "redirectUriTemplate": "string"    },    "passkeys": {      "enabled": true,      "rpId": "string"    },    "channel": "dev"  },  "mail": {    "configured": true,    "host": "string",    "port": 0,    "security": "starttls",    "username": "string",    "passwordSet": true,    "fromAddress": "string",    "fromName": "string"  },  "gravatar": {    "enabled": true,    "source": "database"  }}
POST
/admin/setup/complete

Markiert die Ersteinrichtung als abgeschlossen; gilt auch als abgeschlossener Assistent des eigenen Kontos.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

Abgeschlossen

application/json
  1. response
completed?boolean
completedAt?|
Formatdate-time
user?
Example Request
curl -X POST 'https://example.com/api/v1/admin/setup/complete'
Example Response200
{  "completed": true,  "completedAt": "2019-08-24T14:15:22Z",  "user": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "email": "user@example.com",    "loginName": "string",    "displayName": "string",    "firstName": "string",    "lastName": "string",    "role": "user",    "status": "active",    "locale": "de",    "timezone": "Europe/Berlin",    "themeMode": "light",    "totpEnabled": true,    "totpRequired": true,    "passkeyEnabled": true,    "hasPassword": true,    "forcePasswordChange": true,    "onboardingCompleted": true,    "lastLoginAt": "2019-08-24T14:15:22Z",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z"  }}

Get SMTP status

GET
/admin/mail

SMTP wird ausschließlich über die SMTP_*-Umgebungsvariablen konfiguriert. Liefert die erkannten Werte ohne Passwort.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Response Body

SMTP-Status

application/json
  1. response

Aus SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASSWORD, SMTP_FROM, SMTP_FROM_NAME.

configured?boolean

SMTP_HOST und SMTP_FROM gesetzt

host?string
port?integer|null
security?|
Value in"starttls""tls"null
username?string
passwordSet?boolean
fromAddress?string
fromName?string
Example Request
curl -X GET 'https://example.com/api/v1/admin/mail'
Example Response200
{  "configured": true,  "host": "string",  "port": 0,  "security": "starttls",  "username": "string",  "passwordSet": true,  "fromAddress": "string",  "fromName": "string"}

Send a test e-mail

POST
/admin/mail/test

Sendet mit der SMTP-Konfiguration aus der Umgebung.

Authorization

bearerAuth
headerAuthorizationBearer <JWT>

Request Body

application/json
  1. body
to?string

Standard ist die Adresse des angemeldeten Admins

Formatemail

Response Body

Gesendet

application/json
  1. response
sent?boolean
to?string
Formatemail
Example Request
curl -X POST 'https://example.com/api/v1/admin/mail/test' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "sent": true,  "to": "user@example.com"}