Litmus Edge 4.4.x - System: Access Control

Get User Roles

GET {{edgeUrl}}/auth/v3/roles

Get User Roles

Returns every role defined on the device. Built-in roles (Administrator, Viewer) have system: true and cannot be deleted.

Endpoint

GET {{edgeUrl}}/auth/v3/roles

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

200 OK -- application/json

Field Type Description
id string Role ID. Built-in roles use default_*_role; custom roles use a UUID.
name string Display name.
system boolean true for built-in roles.
[
  { "id": "default_admin_role",  "name": "Administrator", "system": true },
  { "id": "default_viewer_role", "name": "Viewer",        "system": true }
]

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "id": "default_admin_role",
        "name": "Administrator",
        "system": true
    },
    {
        "id": "default_viewer_role",
        "name": "Viewer",
        "system": true
    }
]

Add New Role

POST {{edgeUrl}}/auth/v3/roles

Add New Role

Creates a new role with the supplied permission set. Permissions are grouped by service (access, analytics, auth, dm, lic, sysinfo, css, stats, dh, ...) and each is a list of action strings (View, Modify, ChangePassword, AcceptEula, ViewDevices, ...).

Endpoint

POST {{edgeUrl}}/auth/v3/roles

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{
  "role": {
    "name": "{{new-user-role}}",
    "permissions": {
      "access":    ["View"],
      "analytics": ["View", "Modify"],
      "auth":      ["View", "AcceptEula", "ChangePassword"],
      "dm":        ["View"],
      "lic":       ["View"],
      "sysinfo":   ["View"],
      "css":       ["View"],
      "stats":     ["View"],
      "dh":        ["View", "ViewDevices", "ViewDrivers", "ViewTags"]
    }
  }
}

Response

200 OK -- application/json

{ "id": "731afed4-7a94-47f9-ae93-205ad5b047f8" }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
  "role": {
    "name": "{{new-user-role}}",
    "permissions": {
      "access": [
        "View"
      ],
      "analytics": [
        "View",
        "Modify"
      ],
      "auth": [
        "View",
        "AcceptEula",
        "ChangePassword"
      ],
      "dm": [
        "View"
      ],
      "lic": [
        "View"
      ],
      "sysinfo": [
        "View"
      ],
      "css": [
        "View"
      ],
      "stats": [
        "View"
      ],
      "dh": [
        "View",
        "ViewDevices",
        "ViewDrivers",
        "ViewTags"
      ],
      "dt": [
        "View"
      ],
      "dl": [
        "Modify",
        "View"
      ],
      "events": [
        "Modify",
        "View"
      ],
      "ftp": [
        "View"
      ],
      "flows": [
        "Modify",
        "View"
      ],
      "cc": [
        "Modify",
        "View"
      ],
      "mp": [
        "Modify",
        "View"
      ],
      "nd": [
        "Modify",
        "View"
      ],
      "opcua": [
        "View"
      ]
    }
  }
}

Response

Status: 200 OK

{
    "id": "731afed4-7a94-47f9-ae93-205ad5b047f8"
}

Update User Role

PUT {{edgeUrl}}/auth/v3/roles/{{system-user-role-id}}

Update User Role

Updates an existing role's permissions. Send the full permission set -- omitted services are reset to empty.

Endpoint

PUT {{edgeUrl}}/auth/v3/roles/{{system-user-role-id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Path parameters

Location Name Required Description
Path {{system-user-role-id}} Yes Role ID from Get User Roles.

Request body

Same shape as Add New Role.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
  "role": {
    "name": "{{new-user-role}}",
    "permissions": {
      "access": [
        "View"
      ],
      "auth": [
        "View",
        "ChangePassword",
        "AcceptEula"
      ],
      "css": [
        "View"
      ],
      "dh": [
        "View",
        "ViewDevices",
        "ViewDrivers",
        "ViewTags"
      ],
      "dm": [
        "View",
        "Modify"
      ],
      "lic": [
        "View"
      ],
      "sysinfo": [
        "View"
      ],
      "analytics": [
        "View"
      ],
      "stats": [
        "View",
        "Modify"
      ],
      "dt": [
        "View"
      ],
      "dl": [
        "View"
      ],
      "events": [
        "View",
        "Modify"
      ],
      "ftp": [
        "View"
      ],
      "flows": [
        "View"
      ],
      "cc": [
        "View"
      ],
      "mp": [
        "View",
        "Modify"
      ],
      "nd": [
        "View",
        "Modify"
      ],
      "opcua": [
        "View",
        "Modify"
      ]
    }
  }
}

Response

Status: 204 No Content


Delete User Role

DELETE {{edgeUrl}}/auth/v3/roles/{{system-user-role-id}}

Delete User Role

Removes a role. Built-in roles (system: true) cannot be deleted.

Endpoint

DELETE {{edgeUrl}}/auth/v3/roles/{{system-user-role-id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


List Permissions

GET {{edgeUrl}}/auth/v3/permissions

List Permissions

Every permission a role can grant, grouped by the service (component) it applies to. The web UI builds the role editor from this list; use it to find valid values before Add New Role or Update User Role.

Endpoint

GET {{edgeUrl}}/auth/v3/permissions

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

200 OK -- application/json. An array with one entry per component:

Field Description
component.id Component key, for example dh, cc, opcua, mp.
component.label Display name.
component.desc Short description.
permissions Permission names for that component, for example View, Modify.

The order of components and of permissions within a component is not stable between calls.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "component": {
            "id": "cc",
            "label": "Integrations",
            "desc": "Integrations."
        },
        "permissions": [
            "Modify",
            "View"
        ]
    },
    {
        "component": {
            "id": "css",
            "label": "Cloud Storage Sync",
            "desc": "Cloud Storage Sync sync data between local mounted directories and different cloud storage providers."
        },
        "permissions": [
            "Modify",
            "View"
        ]
    },
    {
        "component": {
            "id": "flows",
            "label": "Flows Manager",
            "desc": "Flows Manager."
        },
        "permissions": [
            "View",
            "Modify"
        ]
    },
    {
        "component": {
            "id": "dl",
            "label": "Downloads",
            "desc": "Downloads."
        },
        "permissions": [
            "View"
        ]
    },
    {
        "component": {
            "id": "dt",
            "label": "Digital Twin",
            "desc": "Digital Twin is a service for managing virtual models designed to accurately reflect physical objects."
        },
        "permissions": [
            "Modify",
            "View"
        ]
    },
    {
        "component": {
            "id": "events",
            "label": "Events",
            "desc": "Events allows viewing of system events."
        },
        "permissions": [
            "Modify",
            "View"
        ]
    },
    {
        "component": {
            "id": "ftp",
            "label": "FTP Server",
            "desc": "Internal FTP server."
        },
        "permissions": [
            "Modify",
            "View"
        ]
    },
    {
        "component": {
            "id": "lic",
            "label": "Licensing",
            "desc": "Licensing component provides license management functionality."
        },
        "permissions": [
            "Modify"
        ]
    },
    {
        "component": {
            "id": "stats",
            "label": "DataHub",
            "desc": "Stats component manages historic data."
        },
        "permissions": [
            "Modify",
            "View"
        ]
    },
    {
        "component": {
            "id": "dh",
            "label": "DeviceHub",
            "desc": "Device Hub is responsible for data acquisition from equipment."
        },
        "permissions": [
            "View",
            "ViewDevices",
            "ViewDrivers",
            "ViewTags",
            "Modify",
            "ModifyDevices",
            "ModifyTags"
        ]
    },
    {
        "component": {
            "id": "mp",
            "label": "Marketplace",
            "desc": "Marketplace component manages execution environment for marketplace application."
        },
        "permissions": [
            "Update",
            "View",
            "Create",
            "Delete",
            "Modify",
            "ModifyPrivileged"
        ]
    },
    {
        "component": {
            "id": "nd",
            "label": "Network Discovery",
            "desc": "Network Discovery allows scanning local networks for connected devices."
        },
        "permissions": [
            "Modify",
            "View"
        ]
    },
    {
        "component": {
            "id": "nwutil",
            "label": "Network Util",
            "desc": "Network tools."
        },
        "permissions": [
            "Modify",
            "View"
        ]
    },
    {
        "component": {
            "id": "opcua",
            "label": "OPCUA Server",
            "desc": "OPCUA server."
        },
        "permissions": [
            "Modify",
            "View"
        ]
    },
    {
        "component": {
            "id": "access",
            "label": "Access",
            "desc": "Access provides access to data from external systems."
        },
        "permissions": [
            "View",
            "Modify"
        ]
    },
    {
        "component": {
            "id": "auth",
            "label": "Auth",
            "desc": "Authentication and Authorization component."
        },
        "permissions": [
            "Modify"
        ]
    },
    {
        "component": {
            "id": "dm",
            "label": "Device Management",
            "desc": "Device Management."
        },
        "permissions": [
            "Modify"
        ]
    },
    {
        "component": {
            "id": "support",
            "label": "Support Bundle",
            "desc": "Support Bundle."
        },
        "permissions": [
            "Modify"
        ]
    },
    {
        "component": {
            "id": "sysinfo",
            "label": "System Info",
            "desc": "System Info component reports system information and performance."
        },
        "permissions": [
            "Modify"
        ]
    },
    {
        "component": {
            "id": "analytics",
            "label": "Analytics",
            "desc": "Analytics."
        },
        "permissions": [
            "Modify",
            "View"
        ]
    }
]

Get User Groups

GET {{edgeUrl}}/auth/v3/groups

Get User Groups

Returns every user group on the device. Built-in groups (Administrators, Viewers) have isSystem: true.

Endpoint

GET {{edgeUrl}}/auth/v3/groups

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

[
  { "groupId": "default_admins_group",  "groupName": "Administrators", "isSystem": true },
  { "groupId": "default_viewers_group", "groupName": "Viewers",        "isSystem": true }
]

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "groupId": "cff71351-c16e-4a61-a07a-72f9365ce411",
        "groupName": "custom-group",
        "isSystem": false
    },
    {
        "groupId": "default_admins_group",
        "groupName": "Administrators",
        "isSystem": true
    },
    {
        "groupId": "default_viewers_group",
        "groupName": "Viewers",
        "isSystem": true
    }
]

Create User Group

POST {{edgeUrl}}/auth/v3/groups

Create User Group

Creates a new group. Use Add Users to Group to populate it.

Endpoint

POST {{edgeUrl}}/auth/v3/groups

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{ "group": { "groupName": "custom-group" } }

Response

{ "groupId": "814b108c-dbb0-4640-9018-6577c4540e16" }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
  "group": {
    "groupName": "custom-group"
  }
}

Response

Status: 200 OK

{
    "groupId": "814b108c-dbb0-4640-9018-6577c4540e16"
}

Get User Group Details

GET {{edgeUrl}}/auth/v3/groups/{{user-group}}

Get User Group Details

Returns one group plus its roles[] and users[] membership.

Endpoint

GET {{edgeUrl}}/auth/v3/groups/{{user-group}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

roles and users are null (not []) while the group is empty. Once populated, each entry carries both its ID and its display name:

{
  "groupId": "default_viewers_group",
  "groupName": "Viewers",
  "isSystem": true,
  "isAdmin": false,
  "roles": [
    { "roleId": "default_viewer_role", "roleName": "Viewer" }
  ],
  "users": null
}

Use Assign Roles to Group to change roles[] and Add Users to Group to change membership.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

{
    "groupId": "default_viewers_group",
    "groupName": "Viewers",
    "isSystem": true,
    "isAdmin": false,
    "roles": [
        {
            "roleId": "default_viewer_role",
            "roleName": "Viewer"
        }
    ],
    "users": null
}

Add Users to Group

PUT {{edgeUrl}}/auth/v3/users/{{user-id}}/groups

Add Users to Group

Assigns one user to one or more groups. The path identifies the user; the body lists the groups to add.

Endpoint

PUT {{edgeUrl}}/auth/v3/users/{{user-id}}/groups

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Path parameters

Location Name Required Description
Path {{user-id}} Yes User ID.

Request body

{ "groups": ["{{user-group}}"] }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "groups": [
        "{{user-group}}"
    ]
}

Response

Status: 204 No Content


Assign Roles to Group

PUT {{edgeUrl}}/auth/v3/groups/{{user-group}}/roles

Assign Roles to Group

Replaces the set of roles attached to a group. The path identifies the group; the body lists the role IDs it should hold.

This is a replace, not a merge: the roles array you send becomes the group's complete role set. Send the full list every time, and send an empty array to strip every role from the group.

Members of the group inherit the permissions of every role listed here. Use Get User Roles to look up the role IDs, and Get User Group Details to read back the result.

Endpoint

PUT {{edgeUrl}}/auth/v3/groups/{{user-group}}/roles

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Path parameters

Location Name Required Description
Path {{user-group}} Yes Group ID from Get User Groups.

Request body

{ "roles": ["default_viewer_role"] }
Field Type Required Description
roles string[] Yes Role IDs from Get User Roles. Replaces the whole set.

Response

204 No Content on success. The endpoint returns no body.

This endpoint resolves the caller's own user account before it applies the change. A bare API-credential token that is not bound to a user is rejected with 401 and {"error":{"Msg":"token doesn't contain a valid user id"}}. Call it with a user-bound session token.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "roles": [
        "{{system-user-role-id}}"
    ]
}

Response

Status: 204 No Content


Update Group Name

PUT {{edgeUrl}}/auth/v3/groups/{{user-group}}

Update Group Name

Renames an existing group. The group ID is preserved.

Endpoint

PUT {{edgeUrl}}/auth/v3/groups/{{user-group}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{ "group": { "groupName": "custom-group-1" } }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
  "group": {
    "groupName": "custom-group-1"
  }
}

Response

Status: 204 No Content


Delete User Group

DELETE {{edgeUrl}}/auth/v3/groups/{{user-group}}

Delete User Group

Deletes a user group. It is the call the web UI makes when you remove a group.

Endpoint

DELETE {{edgeUrl}}/auth/v3/groups/{{user-group}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Needs a user session token. An API token (Basic auth) is rejected with 401 {"error":{"Msg":"token doesn't contain a valid user id","MsgCode":""}}. Sign in as an administrator with POST {{edgeUrl}}/auth/v2/login (body {"username": "...", "password": "...", "providerId": "00000000-0000-0000-0000-000000000000"}, no Authorization header) and send the returned jwtAccess as Authorization: Bearer <jwtAccess>. Groups created with an API token therefore cannot be removed with that same token.

Path parameters

Name Required Description
{{user-group}} Yes groupId from Get User Groups.

Response

204 No Content on success (verified on LE 4.0.x with a bearer token). An unknown group ID returns 404 with {"error":{"Msg":"data not found","MsgCode":""}}.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


List Users

GET {{edgeUrl}}/auth/v3/users

List Users

Returns every local user on the device. Excludes users from federated auth providers (LDAP / OIDC).

Endpoint

GET {{edgeUrl}}/auth/v3/users

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

Field Type Description
userId string Immutable user UUID. Use this as the {{user-id}} path parameter.
username string Login name.
firstName / lastName string Display name.
disabled boolean true when the account is disabled.
isAdmin boolean true when the user holds administrator privileges.
mustChangePassword boolean true if the user must change password on next login.
mfaEnabled boolean true when multi-factor authentication is enabled for the user.
external boolean true for users backed by a federated provider (LDAP / OIDC).
eulaAcceptedTs string RFC 3339 timestamp of EULA acceptance; absent if not accepted.
createdAt string RFC 3339 timestamp of account creation.
modifiedAt string RFC 3339 timestamp of the last modification.

eulaAcceptedTs, createdAt and modifiedAt are RFC 3339 strings (for example "2025-07-14T12:21:22-07:00"), not numeric timestamps. The offset is the device's local timezone, so do not assume a Z suffix.

Response example

[
  {
    "userId": "f5ed6b65-746f-4933-9bc6-0c617818f09b",
    "username": "admin",
    "firstName": "System",
    "lastName": "Administrator",
    "mustChangePassword": false,
    "mfaEnabled": false,
    "disabled": false,
    "isAdmin": true,
    "eulaAcceptedTs": "2025-07-14T12:21:22-07:00",
    "external": false,
    "createdAt": "2026-02-19T11:41:39-08:00",
    "modifiedAt": "2026-02-19T11:41:39-08:00"
  }
]

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "userId": "f5ed6b65-746f-4933-9bc6-0c617818f09b",
        "username": "admin",
        "firstName": "System",
        "lastName": "Administrator",
        "mustChangePassword": false,
        "mfaEnabled": false,
        "disabled": false,
        "isAdmin": true,
        "eulaAcceptedTs": "2025-07-14T12:21:22-07:00",
        "external": false,
        "createdAt": "2026-02-19T11:41:39-08:00",
        "modifiedAt": "2026-02-19T11:41:39-08:00"
    },
    {
        "userId": "8c0752a5-c343-4fac-b9e8-aa0b5e876826",
        "username": "jcarter3",
        "firstName": "John",
        "lastName": "Carter",
        "mustChangePassword": false,
        "mfaEnabled": false,
        "disabled": false,
        "isAdmin": false,
        "eulaAcceptedTs": "2026-08-13T13:52:43Z",
        "external": false,
        "createdAt": "2026-08-01T09:14:02-07:00",
        "modifiedAt": "2026-08-13T13:52:43Z"
    }
]

Create an User

POST {{edgeUrl}}/auth/v3/users

Create an User

Creates a new local user. The password is set at create time; mustChangePassword: true forces the user to choose a new one at first login.

Endpoint

POST {{edgeUrl}}/auth/v3/users

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Assign a group before the user can sign in. This call creates the user with no groups, and any groups / groupIds field in the body (top level or inside user) is ignored. Until a group is set, sign-in fails with 403 {"msg":"user has no groups assigned"}. Follow the create with Groups > Add Users to Group (PUT {{edgeUrl}}/auth/v3/users/{{user-id}}/groups with {"groups": ["<groupId>"]}), as the web UI does. Verified on LE 4.0.x.

Request body

{
  "user": {
    "firstName": "John",
    "lastName": "Carter",
    "username": "jcarter3",
    "mustChangePassword": true,
    "password": "Litmus@1",
    "passwordConfirmation": "Litmus@1"
  }
}
Field Type Required Description
username string Yes Login name. Unique across local users.
firstName / lastName string Yes Display name.
password string Yes Initial password.
passwordConfirmation string Yes Must match password exactly.
mustChangePassword boolean No Force password change at first login.

Response

200 OK -- application/json. The new user's ID only; use it as {{user-id}} in Add Users to Group, Get User Details, Update an User and Remove an User.

{ "userId": "e2253950-b9dc-4c39-ae5f-dd75ecad76d8" }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "user": {
        "firstName": "John",
        "lastName": "Carter",
        "username": "jcarter3",
        "mustChangePassword": true,
        "password": "Litmus@1",
        "passwordConfirmation": "Litmus@1"
    }
}

Response

Status: 200 OK

{
    "userId": "e2253950-b9dc-4c39-ae5f-dd75ecad76d8"
}

Update an User

PUT {{edgeUrl}}/auth/v3/users/{{user-id}}

Update an User

Updates a local user, addressed by user ID. This replaces the earlier PUT /auth/v2/users/{username} example, which is not served on LE 4.0.x or later (the route answers 404 with an empty body). It is the call the web UI makes from the user edit dialog and from the enable / disable toggle.

Endpoint

PUT {{edgeUrl}}/auth/v3/users/{{user-id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Path parameters

Name Required Description
{{user-id}} Yes userId from List Users.

Request body

The user record wrapped in a user object. Send the whole record as returned by Get User Details with your changes applied; to disable an account, flip disabled. Add password and passwordConfirmation only when changing the password.

{
  "user": {
    "userId": "{{user-id}}",
    "username": "jcarter3",
    "firstName": "John",
    "lastName": "Carter",
    "mustChangePassword": false,
    "disabled": false
  }
}

Group membership is not changed by this call. Set it with Groups > Add Users to Group (PUT /auth/v3/users/{{user-id}}/groups), which is what the web UI does after saving the user.

Response

204 No Content on success, with an empty body; read the record back with Get User Details. An unknown {{user-id}} returns 404 with {"error":{"Msg":"data not found","MsgCode":""}}. Works with an API token (verified on LE 4.0.x).

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "user": {
        "userId": "{{user-id}}",
        "username": "jcarter3",
        "firstName": "John",
        "lastName": "Carter",
        "mustChangePassword": false,
        "disabled": false
    }
}

Remove an User

DELETE {{edgeUrl}}/auth/v3/users/{{user-id}}

Remove an User

Deletes a local user, addressed by user ID. This replaces the earlier DELETE /auth/v2/users/{username} example, which is not served on LE 4.0.x or later (the route answers 404 with an empty body). It is the call the web UI makes when you remove a user.

Endpoint

DELETE {{edgeUrl}}/auth/v3/users/{{user-id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Path parameters

Name Required Description
{{user-id}} Yes userId from List Users.

Response

204 No Content on success, with an empty body; read the record back with Get User Details. An unknown {{user-id}} returns 404 with {"error":{"Msg":"data not found","MsgCode":""}}. Works with an API token (verified on LE 4.0.x).

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


Get User Details

GET {{edgeUrl}}/auth/v3/users/{{user-id}}

Get User Details

Full detail for one user, by user ID. Use List Users to obtain the userId.

Endpoint

GET {{edgeUrl}}/auth/v3/users/{{user-id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

200 OK -- application/json.

Field Meaning
userId, username Identity
firstName, lastName Display name
roles Assigned roles, each with id and name
isAdmin Whether the user holds administrator rights
disabled, external Account state, and whether it came from an external provider
mfaEnabled, mustChangePassword Security state
eulaAcceptedTs, createdAt, modifiedAt Timestamps

external tells a locally managed account apart from one projected from LDAP, AD or OIDC. An unknown ID returns 404 with {"error":{"Msg":"data not found","MsgCode":""}}.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

{
    "userId": "f5ed6b65-746f-4933-9bc6-0c617818f09b",
    "username": "admin",
    "firstName": "System",
    "lastName": "Administrator",
    "mustChangePassword": false,
    "mfaEnabled": false,
    "disabled": false,
    "isAdmin": true,
    "eulaAcceptedTs": "2025-07-14T12:21:22-07:00",
    "roles": [
        {
            "id": "default_admin_role",
            "name": "Administrator"
        }
    ],
    "external": false,
    "createdAt": "2026-02-19T11:41:39-08:00",
    "modifiedAt": "2026-02-19T11:41:39-08:00"
}

Active Online Users

GET {{edgeUrl}}/auth/v3/users/active

Active Online Users

Returns the users currently authenticated to the LE UI. Same payload as Dashboard > Active Online Users.

Endpoint

GET {{edgeUrl}}/auth/v3/users/active

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

[ { "userId": "admin", "username": "admin", "firstName": "System", "lastName": "Administrator" } ]

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "userId": "admin",
        "username": "admin",
        "firstName": "System",
        "lastName": "Administrator"
    }
]

Enable NATS Proxy

PUT {{edgeUrl}}/access/proxy/enable

Enable NATS Proxy

Enables the on-device NATS proxy, which lets external clients reach the device's internal NATS message bus. Access accounts (see Tokens > Access Accounts) restrict what topics each client can read or write.

Endpoint

PUT {{edgeUrl}}/access/proxy/enable

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


Disable NATS Proxy

PUT {{edgeUrl}}/access/proxy/disable

Disable NATS Proxy

Disables the on-device NATS proxy. External NATS clients are disconnected.

Endpoint

PUT {{edgeUrl}}/access/proxy/disable

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


Get NATS Proxy State

GET {{edgeUrl}}/access/proxy/state

Get NATS Proxy State

Whether the NATS proxy is enabled. Pairs with Enable NATS Proxy and Disable NATS Proxy.

Endpoint

GET {{edgeUrl}}/access/proxy/state

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Parameters

None.

Response

200 OK -- application/json. A bare JSON string: "enabled" or "disabled".

"enabled"

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

enabled

Get NATS Access Configuration

POST {{edgeUrl}}/access/v2

Get NATS Access Configuration

Returns the whole Access configuration in one call: whether the NATS proxy is on, the leafnode mode with its leaf and hub settings, and the state of the service CA. The web UI loads it for the NATS access page.

Part of the Access service GraphQL API at /access/v2, which manages the device's NATS proxy and NATS leafnode links (this device as a leaf of a remote hub, as a hub for remote leafs, or both). For connecting a NATS client to the device, see the How-To: Authenticate a NATS / DataHub Client section.

Endpoint

POST {{edgeUrl}}/access/v2

Authentication

HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.

Query

query AccessNATSConfig {
  accessNATSConfig {
    proxyEnabled
    leafnodeConfig {
      mode
      leafSettings {
        streamConfigurations { accountName connectUrl hostname token topics tlsEnabled createdAt updatedAt }
      }
      hubSettings {
        listenAddress
        listenPort
        accounts { name token hostname enabled topicPrefix topics password createdAt updatedAt }
        tlsEnabled
      }
    }
    serviceCAStatus { status daysUntilExpiry statusMessage }
  }
}

No variables.

Response

data.accessNATSConfig:

Field Type Description
proxyEnabled Boolean! NATS proxy (local access control) is on. Same flag as Get NATS Proxy State.
leafnodeConfig.mode LeafNodeMode! NONE, LEAF, HUB or HYBRID.
leafnodeConfig.leafSettings object As a leaf: streamConfigurations, the links to remote hubs (see List Stream Configurations).
leafnodeConfig.hubSettings object As a hub: listenAddress, listenPort, tlsEnabled and accounts, one per remote leaf (name, token, hostname, enabled, topicPrefix, topics, password, createdAt, updatedAt). null when the device is not a hub.
serviceCAStatus object! status, daysUntilExpiry, statusMessage of the leafnode service CA.

Sensitive: hub accounts are returned with their token and password in clear text. Treat the response as a secret. The example below comes from a device in LEAF mode with no links, so it shows none.

Errors

GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:

{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code Meaning
UNAUTHENTICATED Missing or invalid API token.
FORBIDDEN Token lacks permission for this operation.
BAD_USER_INPUT Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.).
NOT_FOUND The targeted entity does not exist.
INTERNAL_SERVER_ERROR DeviceHub fault. Retry, then escalate via System > Support.

A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

GraphQL Query

query AccessNATSConfig {
  accessNATSConfig {
    proxyEnabled
    leafnodeConfig {
      mode
      leafSettings {
        streamConfigurations { accountName connectUrl hostname token topics tlsEnabled createdAt updatedAt }
      }
      hubSettings {
        listenAddress
        listenPort
        accounts { name token hostname enabled topicPrefix topics password createdAt updatedAt }
        tlsEnabled
      }
    }
    serviceCAStatus { status daysUntilExpiry statusMessage }
  }
}

Response

Status: 200 OK

{
    "data": {
        "accessNATSConfig": {
            "proxyEnabled": true,
            "leafnodeConfig": {
                "mode": "LEAF",
                "leafSettings": {
                    "streamConfigurations": []
                },
                "hubSettings": null
            },
            "serviceCAStatus": {
                "status": "VALID",
                "daysUntilExpiry": 3415,
                "statusMessage": "Valid"
            }
        }
    }
}

Get Leafnode Status

POST {{edgeUrl}}/access/v2

Get Leafnode Status

Reports the state of the NATS leafnode feature and whether pending configuration needs a NATS reload or restart to take effect.

Part of the Access service GraphQL API at /access/v2, which manages the device's NATS proxy and NATS leafnode links (this device as a leaf of a remote hub, as a hub for remote leafs, or both). For connecting a NATS client to the device, see the How-To: Authenticate a NATS / DataHub Client section.

Endpoint

POST {{edgeUrl}}/access/v2

Authentication

HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.

Query

query LeafNodeStatus {
  leafNodeStatus {
    status
    changeType
    natsHealthy
    message
    backupExists
    backupTimestamp
    lastAppliedAt
    configMatchesDB
    validationErrors
    restartNeeded
    reloadRequired
  }
}

No variables.

Response

data.leafNodeStatus:

Field Type Description
status LeafNodeConnectionStatus CONNECTED, NOT_CONNECTED, RESTARTING, ERROR or FAILED.
changeType NATSChangeType Pending change: NONE, RELOAD or RESTART.
natsHealthy Boolean NATS is up and accepting connections.
message String Status or error detail.
backupExists Boolean A backup of the previous NATS configuration exists.
backupTimestamp Time When that backup was written.
lastAppliedAt Time When configuration was last applied successfully.
configMatchesDB Boolean The NATS config file matches the stored configuration.
validationErrors [String!] Validation errors or warnings.
restartNeeded Boolean Deprecated, use changeType.
reloadRequired Boolean Deprecated, use changeType.

Errors

GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:

{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code Meaning
UNAUTHENTICATED Missing or invalid API token.
FORBIDDEN Token lacks permission for this operation.
BAD_USER_INPUT Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.).
NOT_FOUND The targeted entity does not exist.
INTERNAL_SERVER_ERROR DeviceHub fault. Retry, then escalate via System > Support.

A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

GraphQL Query

query LeafNodeStatus {
  leafNodeStatus {
    status
    changeType
    natsHealthy
    message
    backupExists
    backupTimestamp
    lastAppliedAt
    configMatchesDB
    validationErrors
    restartNeeded
    reloadRequired
  }
}

Response

Status: 200 OK

{
    "data": {
        "leafNodeStatus": {
            "status": "NOT_CONNECTED",
            "changeType": "RESTART",
            "natsHealthy": true,
            "message": "LeafNode feature is disabled (NATS restart required to enable)",
            "backupExists": true,
            "backupTimestamp": "2026-03-17T15:28:44.07609656-07:00",
            "lastAppliedAt": "2026-03-17T15:28:44.298380235-07:00",
            "configMatchesDB": false,
            "validationErrors": [],
            "restartNeeded": true,
            "reloadRequired": false
        }
    }
}

List Stream Configurations

POST {{edgeUrl}}/access/v2

List Stream Configurations

Lists the links this device holds to remote NATS hubs as a leaf. Each link is created from a token issued by the hub.

Part of the Access service GraphQL API at /access/v2, which manages the device's NATS proxy and NATS leafnode links (this device as a leaf of a remote hub, as a hub for remote leafs, or both). For connecting a NATS client to the device, see the How-To: Authenticate a NATS / DataHub Client section.

Endpoint

POST {{edgeUrl}}/access/v2

Authentication

HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.

Query

query ListStreamConfigurations {
  listStreamConfigurations { accountName connectUrl hostname token topics tlsEnabled createdAt updatedAt }
}

No variables.

Response

data.listStreamConfigurations is a list (empty when the device has no links):

Field Type Description
accountName String! Account name, taken from the hub token.
connectUrl String! host:port of the hub, taken from the token.
hostname String Hostname for TLS validation; empty for older tokens.
token String! The token issued by the hub (host, port and public NKey).
topics String! Topic patterns the hub exposes through this link.
tlsEnabled Boolean! Whether the link uses TLS.
createdAt Time! Creation time.
updatedAt Time! Last update time.

Errors

GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:

{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code Meaning
UNAUTHENTICATED Missing or invalid API token.
FORBIDDEN Token lacks permission for this operation.
BAD_USER_INPUT Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.).
NOT_FOUND The targeted entity does not exist.
INTERNAL_SERVER_ERROR DeviceHub fault. Retry, then escalate via System > Support.

A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

GraphQL Query

query ListStreamConfigurations {
  listStreamConfigurations { accountName connectUrl hostname token topics tlsEnabled createdAt updatedAt }
}

Response

Status: 200 OK

{
    "data": {
        "listStreamConfigurations": []
    }
}

Get Leafnode Service CA

POST {{edgeUrl}}/access/v2

Get Leafnode Service CA

Returns the device's leafnode service CA certificate and its status. Remote leafs install this certificate to trust the device when it acts as a hub. The web UI uses it for the CA download button.

Part of the Access service GraphQL API at /access/v2, which manages the device's NATS proxy and NATS leafnode links (this device as a leaf of a remote hub, as a hub for remote leafs, or both). For connecting a NATS client to the device, see the How-To: Authenticate a NATS / DataHub Client section.

Endpoint

POST {{edgeUrl}}/access/v2

Authentication

HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.

Query

query LeafnodeServiceCA {
  leafnodeServiceCA { certificatePEM status daysUntilExpiry statusMessage affectedHubAccounts fingerprint subject }
}

No variables.

Response

data.leafnodeServiceCA (certificatePEM shortened in the example):

Field Type Description
certificatePEM String PEM-encoded CA certificate.
status CertificateStatus Certificate status.
daysUntilExpiry Int Days left; negative once expired.
statusMessage String Human-readable status.
affectedHubAccounts Int Hub accounts that a regeneration of the CA would affect.
fingerprint String SHA-256 fingerprint.
subject String Certificate subject.

CertificateStatus is one of VALID, EXPIRING_SOON, EXPIRED_WARNING, EXPIRED_ERROR, MISSING.

Errors

GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:

{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code Meaning
UNAUTHENTICATED Missing or invalid API token.
FORBIDDEN Token lacks permission for this operation.
BAD_USER_INPUT Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.).
NOT_FOUND The targeted entity does not exist.
INTERNAL_SERVER_ERROR DeviceHub fault. Retry, then escalate via System > Support.

A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

GraphQL Query

query LeafnodeServiceCA {
  leafnodeServiceCA { certificatePEM status daysUntilExpiry statusMessage affectedHubAccounts fingerprint subject }
}

Response

Status: 200 OK

{
    "data": {
        "leafnodeServiceCA": {
            "certificatePEM": "-----BEGIN CERTIFICATE-----\nMIIDzDCCArSgAwIBAgIRAJNuLHTaM9EiwHyErpLE7vkwDQYJKoZIhvcNAQELBQAw\n...\n-----END CERTIFICATE-----\n",
            "status": "VALID",
            "daysUntilExpiry": 3415,
            "statusMessage": "Valid",
            "affectedHubAccounts": 1,
            "fingerprint": "b763d44e74586b53c56e5b1cea49e8139f54d9e4a1d93f9b139e6ae3448b359c",
            "subject": "CN=LoopEdge Access Leafnode CA (litmus-edge-005056b9b678),O=Litmus Automation"
        }
    }
}

List Installed Hub CAs

POST {{edgeUrl}}/access/v2

List Installed Hub CAs

Lists the CA certificates of remote hubs installed on this device, which it uses to trust those hubs when it connects as a leaf.

Part of the Access service GraphQL API at /access/v2, which manages the device's NATS proxy and NATS leafnode links (this device as a leaf of a remote hub, as a hub for remote leafs, or both). For connecting a NATS client to the device, see the How-To: Authenticate a NATS / DataHub Client section.

Endpoint

POST {{edgeUrl}}/access/v2

Authentication

HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.

Query

query InstalledLeafnodeCAs {
  installedLeafnodeCAs { hubHostname status daysUntilExpiry statusMessage fingerprint }
}

No variables.

Response

data.installedLeafnodeCAs is a list (empty when none are installed):

Field Type Description
hubHostname String Hub hostname; identifies the CA.
status CertificateStatus Certificate status.
daysUntilExpiry Int Days left; negative once expired.
statusMessage String Human-readable status.
fingerprint String SHA-256 fingerprint.

CertificateStatus is one of VALID, EXPIRING_SOON, EXPIRED_WARNING, EXPIRED_ERROR, MISSING.

Errors

GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:

{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code Meaning
UNAUTHENTICATED Missing or invalid API token.
FORBIDDEN Token lacks permission for this operation.
BAD_USER_INPUT Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.).
NOT_FOUND The targeted entity does not exist.
INTERNAL_SERVER_ERROR DeviceHub fault. Retry, then escalate via System > Support.

A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

GraphQL Query

query InstalledLeafnodeCAs {
  installedLeafnodeCAs { hubHostname status daysUntilExpiry statusMessage fingerprint }
}

Response

Status: 200 OK

{
    "data": {
        "installedLeafnodeCAs": []
    }
}

Get API Keys

GET {{edgeUrl}}/auth/v2/apikeys

Get API Keys

Returns every API key on the device. The value field is the secret the key holder uses to authenticate -- treat this response as sensitive.

Endpoint

GET {{edgeUrl}}/auth/v2/apikeys

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

[
  {
    "id": "a1b2c3d4-a1b2-c3d4-a1b2-a1b2c3d4a1b2",
    "name": "testKey",
    "readOnly": false,
    "value": "abcdabcdabcdabcdabcdabcdabcdabcd"
  }
]

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "id": "a1b2c3d4-a1b2-c3d4-a1b2-a1b2c3d4a1b2",
        "name": "testKey",
        "readOnly": false,
        "value": "abcdabcdabcdabcdabcdabcdabcdabcd"
    },    
    {
        "id": "system_api_key",
        "name": "System API key (read only)",
        "readOnly": true,
        "value": "abcdabcdabcdabcdabcdabcdabcdabcd"
    }
]

Create API Key

POST {{edgeUrl}}/auth/v2/apikeys

Create API Key

Creates a new API key with the given name. The key value is generated server-side and returned in the response. Save it immediately -- it cannot be retrieved later.

Endpoint

POST {{edgeUrl}}/auth/v2/apikeys

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{ "name": "testAPIKey" }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "name": "testAPIKey"
}

Response

Status: 204 No Content


Validate API Key

POST {{edgeUrl}}/auth/v2/apikeys/validate

Validate API Key

Tests whether a key value is valid. Useful from a custom UI to preview a key before storing it.

Endpoint

POST {{edgeUrl}}/auth/v2/apikeys/validate

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{ "value": "testAPIKey" }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "value":"testAPIKey"
}

Response

Status: 204 No Content


Show API Key by ID

GET {{edgeUrl}}/auth/v2/apikeys/{{api_key_id}}

Show API Key by ID

Returns a single API key by its UUID. Same shape as one element of Get API Keys. The secret value is returned -- treat as sensitive.

Endpoint

GET {{edgeUrl}}/auth/v2/apikeys/{{api_key_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

{
    "id": "a1b2c3d4-a1b2-c3d4-a1b2-a1b2c3d4a1b2",
    "name": "testKey",
    "readOnly": false,
    "value": "abcdabcdabcdabcdabcdabcdabcdabcd"
}

Update API Key

PUT {{edgeUrl}}/auth/v2/apikeys/{{api_key_id}}

Update API Key

Renames an existing API key. The key value is not rotated by this endpoint.

Endpoint

PUT {{edgeUrl}}/auth/v2/apikeys/{{api_key_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{ "name": "renameTestAPIKey" }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "name": "renameTestAPIKey"
}

Response

Status: 204 No Content


Delete API Key

DELETE {{edgeUrl}}/auth/v2/apikeys/{{api_key_id}}

Delete API Key

Deletes an API key. Subsequent API calls using that key fail with 401 Unauthorized.

Endpoint

DELETE {{edgeUrl}}/auth/v2/apikeys/{{api_key_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


List OAuth2 Clients

GET {{edgeUrl}}/auth/v3/oauth/client

List OAuth2 Clients

Lists the OAuth2 client-credentials clients defined on the device. A client exchanges its ID and secret for a short-lived bearer token; see How-To: Use OAuth2 Authorization.

Endpoint

GET {{edgeUrl}}/auth/v3/oauth/client

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

200 OK -- application/json. One entry per client:

Field Description
clientName Display name.
clientID Client ID used in the token request.
clientSecret Always empty here; the secret is shown only when the client is created.
groups Groups whose roles the issued tokens carry.
tokenTTLMinutes Lifetime of each issued token.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "clientName": "codex",
        "clientID": "0eb3360d-0f65-4a46-83ff-f0e48ec6bfd2",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "litmus-cli-cd303318c74a-1783639596",
        "clientID": "21571a9f-a2d1-4a5d-bed1-538544bc087a",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "litmus-cli-134e7f11cb31-1791501363",
        "clientID": "28b9db5f-0fb8-43a2-930f-70ae4f5d8573",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "PlantBrain2",
        "clientID": "2b83232b-35e2-4432-96f2-a8bef15bc63b",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "plugin2",
        "clientID": "311a17ec-1e2f-4963-a946-b1bfde01cbf9",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "litmus-sdk-cli-f7b0585688b6-1783632585",
        "clientID": "31a4bfdb-25c0-40b0-9d6f-c6cddb155fa4",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "PlantBrain",
        "clientID": "3b43b0be-025f-4ded-abac-0cbceada2a49",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "litmus-cli-a15717ee469f-1783646477",
        "clientID": "52d99fb2-2930-432e-a81e-ba9e123b799b",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "claw",
        "clientID": "52e84614-64a3-4e84-bb75-783c175ed2ce",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "sdk",
        "clientID": "52f32c4f-6b65-4b59-972e-16b4ece0dc43",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "litmus-cli-9361254c330c-1783645595",
        "clientID": "5926a9cc-0ea2-4132-9279-82fa199de816",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "ubuntuvm",
        "clientID": "61d16499-eadf-4377-941f-eb7d04e42c6f",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "litmus-cli-073c696c87cc-1784072348",
        "clientID": "68bc4f12-247f-43e8-8d38-dd9358e2948f",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "hello",
        "clientID": "6dd1d8ef-6d47-4d7e-b327-c0bcb2da03cb",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "litmussdk",
        "clientID": "6f288543-46b9-4dda-a55c-b43c886ee9e9",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "litmus-cli-0c0624539c52-1783978757",
        "clientID": "843c377f-1010-4b04-aaa5-ecf9e042e768",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "plugin",
        "clientID": "954eb555-8125-4311-8b00-df17d5aec2b0",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "parth2",
        "clientID": "9f01f081-14cd-459f-bf57-4a21529d597f",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    },
    {
        "clientName": "litmus-cli-a15717ee469f-1783646512",
        "clientID": "c8b2d48b-b0fd-4a33-9ae1-0ccf5051b71d",
        "clientSecret": "",
        "groups": [
            "Administrators"
        ],
        "tokenTTLMinutes": 5
    }
]

Create Access Account

POST {{edgeUrl}}/access/accounts

Create Access Account

Creates a NATS access account with a server-generated API key. Use Add Read Topic / Add Write Topic afterwards to grant topic-level access.

Endpoint

POST {{edgeUrl}}/access/accounts

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{
  "name": "api_access_account",
  "enabled": true
}

Response

{
  "id": "31391416-4162-4df5-855e-9b2e0e09536b",
  "name": "api_access_account",
  "enabled": true,
  "apikey": "2936b9f4-2928-494c-8eb4-cdc8bd93b770"
}
Field Type Description
id string Account UUID. Use as {{access_account_id}}.
apikey string API key the account uses to authenticate to NATS. Use as {{access_account_api_key}}.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "name": "api_access_account",
    "enabled": true
}

Response

Status: 200 OK

{
    "id": "31391416-4162-4df5-855e-9b2e0e09536b",
    "name": "api_access_account",
    "enabled": true,
    "apikey": "2936b9f4-2928-494c-8eb4-cdc8bd93b770"
}

Get Access Accounts

GET {{edgeUrl}}/access/accounts

Get Access Accounts

Returns every access account. The apikey is omitted; use Get Access Account API Key to retrieve it for a specific account.

Endpoint

GET {{edgeUrl}}/access/accounts

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "id": "fcf5e5e4-0951-44c1-987a-a021495115b4",
        "name": "accessAccount",
        "enabled": true
    }
]

Get Access Account API Key

GET {{edgeUrl}}/access/accounts/{{access_account_id}}

Get Access Account API Key

Returns one access account, including its current apikey. Treat the response as sensitive.

Endpoint

GET {{edgeUrl}}/access/accounts/{{access_account_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

{
    "id": "fcf5e5e4-0951-44c1-987a-a021495115b4",
    "name": "accessAccount",
    "enabled": true,
    "apikey": "a5775c6d-762f-4d05-9118-b9ed8110fcc8"
}

Enable Access Account

PUT {{edgeUrl}}/access/accounts/{{access_account_id}}/enable

Enable Access Account

Enables a previously-disabled access account.

Endpoint

PUT {{edgeUrl}}/access/accounts/{{access_account_id}}/enable

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


Disable Access Account

PUT {{edgeUrl}}/access/accounts/{{access_account_id}}/disable

Disable Access Account

Disables an access account without deleting it. Clients using its API key are disconnected.

Endpoint

PUT {{edgeUrl}}/access/accounts/{{access_account_id}}/disable

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


Reset Access Account

PUT {{edgeUrl}}/access/accounts/{{access_account_id}}/reset

Reset Access Account

Rotates the account's apikey. The new key is returned in the response; the old key stops working immediately.

Endpoint

PUT {{edgeUrl}}/access/accounts/{{access_account_id}}/reset

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

{
  "id": "fcf5e5e4-0951-44c1-987a-a021495115b4",
  "name": "accessAccount",
  "enabled": true,
  "apikey": "3fae4dcf-9852-4a15-adc8-a07f703af9f6"
}

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

{
    "id": "fcf5e5e4-0951-44c1-987a-a021495115b4",
    "name": "accessAccount",
    "enabled": true,
    "apikey": "3fae4dcf-9852-4a15-adc8-a07f703af9f6"
}

Delete Access Account

DELETE {{edgeUrl}}/access/accounts/{{access_account_id}}

Delete Access Account

Permanently deletes an access account. All topic grants are also removed.

Endpoint

DELETE {{edgeUrl}}/access/accounts/{{access_account_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


Account Current Access

GET {{edgeUrl}}/access/accounts/access/{{access_account_api_key}}

Account Current Access

Returns the topic-level access grants associated with an API key (rather than an account UUID). The response lists read[] and write[] topic patterns -- ">" is the NATS wildcard meaning "any topic".

Endpoint

GET {{edgeUrl}}/access/accounts/access/{{access_account_api_key}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

{ "read": [">"], "write": null }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

{
    "read": [
        ">"
    ],
    "write": null
}

Add Read Topic

PUT {{edgeUrl}}/access/accounts/access/{{access_account_api_key}}?accessType=read&topics={{access_read_topic}}

Add Read Topic

Requires: the account's API key, not its id. The key is the apikey field of the Create Access Account response (or of Get Access Account API Key). Using the account id in the path returns 404.

Grants the account read access to one NATS topic pattern.

Endpoint

PUT {{edgeUrl}}/access/accounts/access/{{access_account_api_key}}?accessType=read&topics={{access_read_topic}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Query parameters

Parameter Type Required Description
accessType string Yes Must be read.
topics string Yes NATS topic pattern (devicehub.alias.>, analytics.publish.>, etc.).

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


Remove Read Topic

DELETE {{edgeUrl}}/access/accounts/access/{{access_account_api_key}}?accessType=read&topics={{access_read_topic}}

Remove Read Topic

Revokes a previously-granted read topic from the account.

Endpoint

DELETE {{edgeUrl}}/access/accounts/access/{{access_account_api_key}}?accessType=read&topics={{access_read_topic}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


Add Write Topic

PUT {{edgeUrl}}/access/accounts/access/{{access_account_api_key}}?accessType=write&topics={{access_write_topic}}

Add Write Topic

Requires: the account's API key, not its id. The key is the apikey field of the Create Access Account response (or of Get Access Account API Key). Using the account id in the path returns 404.

Grants the account write access to one NATS topic pattern.

Endpoint

PUT {{edgeUrl}}/access/accounts/access/{{access_account_api_key}}?accessType=write&topics={{access_write_topic}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


Remove Write Topic

DELETE {{edgeUrl}}/access/accounts/access/{{access_account_api_key}}?accessType=write&topics={{access_write_topic}}

Remove Write Topic

Revokes a previously-granted write topic from the account.

Endpoint

DELETE {{edgeUrl}}/access/accounts/access/{{access_account_api_key}}?accessType=write&topics={{access_write_topic}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


List Auth Providers

GET {{edgeUrl}}/auth/v2/providers

List Auth Providers

Returns every LDAP / Active Directory auth provider configured on the device. Bind credentials are masked.

Endpoint

GET {{edgeUrl}}/auth/v2/providers

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

200 OK -- application/json. Array of provider objects. Key fields:

Field Type Description
id string Provider UUID.
name string Display name.
host / port mixed LDAP server address.
tls boolean Whether to use LDAPS.
bindDN / bindDNPassword string Service account credentials (password masked).
groupSearchBaseDN / groupSearchScope / groupFilter string Group lookup config.
groupAttr* string Attribute names for group membership traversal.
tlsRootCA string Optional PEM CA chain for TLS verification.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "bindDN": "cn=Manager,dc=example,dc=com",
        "bindDNPassword": "*******",
        "groupAttrGroup": "member",
        "groupAttrName": "cn",
        "groupAttrUser": "DN",
        "groupFilter": "(&(objectClass=top)(objectClass=posixGroup))",
        "groupSearchBaseDN": "ou=Groups,dc=example,dc=com",
        "groupSearchScope": "sub",
        "host": "example.com",
        "id": "822a584e-09f9-46f7-a99c-52f3ea2a2dc3",
        "name": "Company LDAP",
        "port": 389,
        "tls": true,
        "tlsRootCA": "-----BEGIN CERTIFICATE-----SOMETHING HERE-----END CERTIFICATE-----",
        "type": "ldap2307",
        "userAttrFirstName": "givenName",
        "userAttrID": "uidNumber",
        "userAttrLastName": "sn",
        "userAttrUsername": "uid",
        "userFilter": "(&(objectClass=top)(objectClass=inetOrgPerson)(objectClass=posixAccount))",
        "userSearchBaseDN": "ou=People,dc=example,dc=com",
        "userSearchScope": "sub"
    }
]

Create New Auth Provider

POST {{edgeUrl}}/auth/v2/providers

Create New Auth Provider

Creates a new LDAP / Active Directory provider. Test with Test Configuration first to verify connectivity before persisting.

Endpoint

POST {{edgeUrl}}/auth/v2/providers

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

The body carries the same fields as List Auth Providers returns (minus id), plus groupsToRoles which maps LDAP group DN to LE role name:

{
  "name": "Company LDAP",
  "host": "example.com",
  "port": 389,
  "tls": true,
  "bindDN": "cn=Manager,dc=example,dc=com",
  "bindDNPassword": "*******",
  "groupSearchBaseDN": "ou=Groups,dc=example,dc=com",
  "groupSearchScope": "sub",
  "groupFilter": "(&(objectClass=top)(objectClass=posixGroup))",
  "groupAttrName": "cn",
  "groupAttrGroup": "member",
  "groupAttrUser": "DN",
  "groupsToRoles": { "CN=loopedge-admins": "Administrator" },
  "tlsRootCA": "-----BEGIN CERTIFICATE-----..."
}

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "bindDN": "cn=Manager,dc=example,dc=com",
    "bindDNPassword": "*******",
    "groupAttrGroup": "member",
    "groupAttrName": "cn",
    "groupAttrUser": "DN",
    "groupFilter": "(&(objectClass=top)(objectClass=posixGroup))",
    "groupSearchBaseDN": "ou=Groups,dc=example,dc=com",
    "groupSearchScope": "sub",
    "groupsToRoles": {
        "Aut mollitia non consectetur error.": "Delectus aut."
    },
    "host": "example.com",
    "name": "Company LDAP",
    "port": 389,
    "tls": true,
    "tlsRootCA": "-----BEGIN CERTIFICATE-----\nMIIGDjCCA/agAwIBAgIQNoJef7WkgZN+9tFza7k8pjANBgkqhkiG9w0BAQwFADCB\nhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G\nADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRV\nHSAAMAgGBmeBDAECAjBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9k\nb2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggr\n...\n4J6ijvyxFnlcIdNFgZoMOWxtKNcl0rcRkND23m9e9Pqki2Z3ci+bkEAsUhJg+f+1\ncC6JmnkJiYEt7Fx4b4GH8fxV\n-----END CERTIFICATE-----",
    "type": "generic",
    "userAttrFirstName": "givenName",
    "userAttrID": "uidNumber",
    "userAttrLastName": "sn",
    "userAttrUsername": "uid",
    "userFilter": "(&(objectClass=top)(objectClass=inetOrgPerson)(objectClass=posixAccount))",
    "userSearchBaseDN": "ou=People,dc=example,dc=com",
    "userSearchScope": "sub"
}

Response

Status: 200 OK

{
    "bindDN": "cn=Manager,dc=example,dc=com",
    "bindDNPassword": "*******",
    "groupAttrGroup": "member",
    "groupAttrName": "cn",
    "groupAttrUser": "DN",
    "groupFilter": "(&(objectClass=top)(objectClass=posixGroup))",
    "groupSearchBaseDN": "ou=Groups,dc=example,dc=com",
    "groupSearchScope": "sub",
    "host": "example.com",
    "id": "2130913a-0060-4861-914b-4693a22132d6",
    "name": "Company LDAP",
    "port": 389,
    "tls": true,
    "tlsRootCA": "-----BEGIN CERTIFICATE-----\nMIIGDjCCA/agAwIBAgIQNoJef7WkgZN+9tFza7k8pjANBgkqhkiG9w0BAQwFADCB\nhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G\nADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRV\nHSAAMAgGBmeBDAECAjBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9k\nb2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggr\n...\n4J6ijvyxFnlcIdNFgZoMOWxtKNcl0rcRkND23m9e9Pqki2Z3ci+bkEAsUhJg+f+1\ncC6JmnkJiYEt7Fx4b4GH8fxV\n-----END CERTIFICATE-----",
    "type": "generic",
    "userAttrFirstName": "givenName",
    "userAttrID": "uidNumber",
    "userAttrLastName": "sn",
    "userAttrUsername": "uid",
    "userFilter": "(&(objectClass=top)(objectClass=inetOrgPerson)(objectClass=posixAccount))",
    "userSearchBaseDN": "ou=People,dc=example,dc=com",
    "userSearchScope": "sub"
}

Test Configuration

POST {{edgeUrl}}/auth/v2/providers/config/test

Test Configuration

Tests an LDAP / Active Directory configuration without persisting it. Returns success when the bind succeeds and a group search returns results.

Endpoint

POST {{edgeUrl}}/auth/v2/providers/config/test

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

Same shape as Create New Auth Provider.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "bindDN": "cn=Manager,dc=example,dc=com",
    "bindDNPassword": "*******",
    "groupAttrGroup": "member",
    "groupAttrName": "cn",
    "groupAttrUser": "DN",
    "groupFilter": "(&(objectClass=top)(objectClass=posixGroup))",
    "groupSearchBaseDN": "ou=Groups,dc=example,dc=com",
    "groupSearchScope": "sub",
    "groupsToRoles": {
        "Aut mollitia non consectetur error.": "Delectus aut."
    },
    "host": "example.com",
    "name": "Company LDAP",
    "port": 389,
    "tls": true,
    "tlsRootCA": "-----BEGIN CERTIFICATE-----\nMIIGDjCCA/agAwIBAgIQNoJef7WkgZN+9tFza7k8pjANBgkqhkiG9w0BAQwFADCB\nhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G\nADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRV\nHSAAMAgGBmeBDAECAjBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9k\nb2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggr\n...\n4J6ijvyxFnlcIdNFgZoMOWxtKNcl0rcRkND23m9e9Pqki2Z3ci+bkEAsUhJg+f+1\ncC6JmnkJiYEt7Fx4b4GH8fxV\n-----END CERTIFICATE-----",
    "type": "generic",
    "userAttrFirstName": "givenName",
    "userAttrID": "uidNumber",
    "userAttrLastName": "sn",
    "userAttrUsername": "uid",
    "userFilter": "(&(objectClass=top)(objectClass=inetOrgPerson)(objectClass=posixAccount))",
    "userSearchBaseDN": "ou=People,dc=example,dc=com",
    "userSearchScope": "sub"
}

Get Provider Details

GET {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}

Get Provider Details

Returns the configuration of one provider by UUID. Same shape as one element of List Auth Providers.

Endpoint

GET {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

{
    "bindDN": "cn=Manager,dc=example,dc=com",
    "bindDNPassword": "*******",
    "groupAttrGroup": "member",
    "groupAttrName": "cn",
    "groupAttrUser": "DN",
    "groupFilter": "(&(objectClass=top)(objectClass=posixGroup))",
    "groupSearchBaseDN": "ou=Groups,dc=example,dc=com",
    "groupSearchScope": "sub",
    "host": "example.com",
    "id": "2130913a-0060-4861-914b-4693a22132d6",
    "name": "Company LDAP",
    "port": 389,
    "tls": true,
    "tlsRootCA": "-----BEGIN CERTIFICATE-----\nMIIGDjCCA/agAwIBAgIQNoJef7WkgZN+9tFza7k8pjANBgkqhkiG9w0BAQwFADCB\nhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G\nADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRV\nHSAAMAgGBmeBDAECAjBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9k\nb2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggr\n...\n4J6ijvyxFnlcIdNFgZoMOWxtKNcl0rcRkND23m9e9Pqki2Z3ci+bkEAsUhJg+f+1\ncC6JmnkJiYEt7Fx4b4GH8fxV\n-----END CERTIFICATE-----",
    "type": "generic",
    "userAttrFirstName": "givenName",
    "userAttrID": "uidNumber",
    "userAttrLastName": "sn",
    "userAttrUsername": "uid",
    "userFilter": "(&(objectClass=top)(objectClass=inetOrgPerson)(objectClass=posixAccount))",
    "userSearchBaseDN": "ou=People,dc=example,dc=com",
    "userSearchScope": "sub"
}

Update Provider

PUT {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}

Update Provider

Updates one provider in place. Send the full configuration; omitted fields are reset.

Endpoint

PUT {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "bindDN": "cn=Manager,dc=example,dc=com",
    "bindDNPassword": "*******",
    "groupAttrGroup": "member",
    "groupAttrName": "cn",
    "groupAttrUser": "DN",
    "groupFilter": "(&(objectClass=top)(objectClass=posixGroup))",
    "groupSearchBaseDN": "ou=Groups,dc=example,dc=com",
    "groupSearchScope": "sub",
    "groupsToRoles": {
        "Aut mollitia non consectetur error.": "Delectus aut."
        },
    "host": "example.com",
    "name": "Company LDAP",
    "port": 389,
    "tls": true,
    "tlsRootCA": "-----BEGIN CERTIFICATE-----\nMIIGDjCCA/agAwIBAgIQNoJef7WkgZN+9tFza7k8pjANBgkqhkiG9w0BAQwFADCB\nhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G\nADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRV\nHSAAMAgGBmeBDAECAjBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9k\nb2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggr\n...\n4J6ijvyxFnlcIdNFgZoMOWxtKNcl0rcRkND23m9e9Pqki2Z3ci+bkEAsUhJg+f+1\ncC6JmnkJiYEt7Fx4b4GH8fxV\n-----END CERTIFICATE-----",
    "type": "generic",
    "userAttrFirstName": "givenName",
    "userAttrID": "uidNumber",
    "userAttrLastName": "sn",
    "userAttrUsername": "uid",
    "userFilter": "(&(objectClass=top)(objectClass=inetOrgPerson)(objectClass=posixAccount))",
    "userSearchBaseDN": "ou=People,dc=example,dc=com",
    "userSearchScope": "sub"
}

List Provider User Groups

GET {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}/groups

List Provider User Groups

Lists the LDAP groups discovered by one provider and which LE role each is mapped to (role). Mappings come from the provider's groupsToRoles configuration.

Endpoint

GET {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}/groups

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

[
  {
    "dn": "CN=loopedge-observer,CN=Users,DC=l4d,DC=win",
    "id": "...",
    "name": "...",
    "role": "Viewer"
  }
]

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "dn": "CN=loopedge-observer,CN=Users,DC=l4d,DC=win",
        "id": "822a584e-09f9-46f7-a99c-52f3ea2a2dc3",
        "name": "Et suscipit.",
        "role": "Molestiae occaecati aspernatur."
    },
    {
        "dn": "CN=loopedge-observer,CN=Users,DC=l4d,DC=win",
        "id": "822a584e-09f9-46f7-a99c-52f3ea2a2dc3",
        "name": "Et suscipit.",
        "role": "Molestiae occaecati aspernatur."
    }
]

Unmap a Provider to User Group

DELETE {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}/groups/{{auth_provider_groupId}}

Unmap a Provider to User Group

Removes one provider-group -> LE-role mapping. The LDAP group remains in the provider's discovered list but no longer grants any LE role.

Endpoint

DELETE {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}/groups/{{auth_provider_groupId}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{ "roleName": "administrator" }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "roleName": "administrator"
}

Get Provider Status

GET {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}/status

Get Provider Status

Returns the current connection status of one provider.

Endpoint

GET {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}/status

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

{ "status": "OK" }

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

{
    "status": "OK"
}

Delete Provider

DELETE {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}

Delete Provider

Removes an LDAP / Active Directory provider. Users who could only authenticate via this provider can no longer log in.

Endpoint

DELETE {{edgeUrl}}/auth/v2/providers/{{auth_provider_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


List Authentication Providers

GET {{edgeUrl}}/auth/v2/login

List Authentication Providers

The authentication providers a client can log in against, as the login screen renders them.

Endpoint

GET {{edgeUrl}}/auth/v2/login

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

200 OK -- application/json. One id and name per provider. The all-zero UUID 00000000-0000-0000-0000-000000000000 is local authentication and carries an empty name; every other entry is a configured LDAP, AD or OIDC provider.

Unlike List Auth Providers, this returns no provider configuration, so it is the safe call for building a login picker.

The POST on the same path is the browser login and is not used by token-based clients, which present the API token directly.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "id": "00000000-0000-0000-0000-000000000000",
        "name": ""
    },
    {
        "id": "b33adbc4-f8ce-4fec-85ed-29c4bb3c5fa0",
        "name": "ad"
    }
]

List Directory Groups

GET {{edgeUrl}}/auth/v3/providers/{{auth_provider_id}}/groups

List Directory Groups

Lists the groups found in an LDAP / AD provider's directory, for mapping them to internal user groups. The web UI calls it when you open a provider's group mapping. Unlike List Provider User Groups (/auth/v2), the device queries the directory live on every call.

Endpoint

GET {{edgeUrl}}/auth/v3/providers/{{auth_provider_id}}/groups

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Path parameters

Name Required Description
{{auth_provider_id}} Yes Provider id from List Auth Providers.

Response

200 OK -- application/json, the directory's groups. Because the directory is contacted on each call, a provider the device cannot reach or whose certificate it does not trust returns 500, for example {"error":{"Msg":"failed to connect: LDAP Result Code 200 \"Network Error\": tls: failed to verify certificate: x509: certificate signed by unknown authority","MsgCode":""}}. Run Test Configuration first if this happens. An unknown provider ID returns 404 with {"error":{"Msg":"provider not found","MsgCode":""}}.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


List of Possible Actions by User

GET {{edgeUrl}}/dm/dsmonitoring/actions/user

List of Possible Actions by User

Returns the legal action strings for the user-level disk-space threshold in Device Management > Disk Space Policy. Despite living under Password Policy, this is a disk-space helper.

Endpoint

GET {{edgeUrl}}/dm/dsmonitoring/actions/user

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

[
  { "alias": "none",               "name": "None" },
  { "alias": "warning",            "name": "Warning" },
  { "alias": "stopDataCollection", "name": "Stop data collection" }
]

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "alias": "none",
        "name": "None"
    },
    {
        "alias": "warning",
        "name": "Warning"
    },
    {
        "alias": "stopDataCollection",
        "name": "Stop data collection"
    }
]

List of Possible Actions by System

GET {{edgeUrl}}/dm/dsmonitoring/actions/system

List of Possible Actions by System

Returns the legal action strings for the system-level disk-space threshold (more severe than the user-level set).

Endpoint

GET {{edgeUrl}}/dm/dsmonitoring/actions/system

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

[
  { "alias": "stopDataCollection", "name": "Stop data collection" },
  { "alias": "shutdown",           "name": "Shutdown" }
]

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "alias": "stopDataCollection",
        "name": "Stop data collection"
    },
    {
        "alias": "shutdown",
        "name": "Shutdown"
    }
]

Show Current or Default Password Policy

GET {{edgeUrl}}/auth/v2/password/policy/{{default}}

Show Current or Default Password Policy

Returns the password policy. The last path segment is a boolean: true returns the factory default, false returns the current (possibly customized) policy.

Endpoint

GET {{edgeUrl}}/auth/v2/password/policy/{{default}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Path parameters

Location Name Required Description
Path {{default}} Yes true for the factory default policy, false for the current one.

Response

{
  "genCharacterLength": 12,
  "maxCharacterLength": 256,
  "minCharacterLength": 8,
  "minDigits": 1,
  "minLowercaseChars": 1,
  "minSpecialChars": 1,
  "minUppercaseChars": 1,
  "specialChars": "~!@#$%^&*()_-{}[]|;:,.<>?/"
}
Field Type Description
genCharacterLength integer Length of server-generated passwords (e.g. FTP user create).
min/maxCharacterLength integer Hard length bounds.
minDigits / minLowercaseChars / minSpecialChars / minUppercaseChars integer Composition requirements.
specialChars string Set of characters classified as "special".

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

{
    "genCharacterLength": 12,
    "maxCharacterLength": 256,
    "minCharacterLength": 8,
    "minDigits": 1,
    "minLowercaseChars": 1,
    "minSpecialChars": 1,
    "minUppercaseChars": 1,
    "specialChars": "~!@#$%^&*()_-{}[]|;:,.<>?/"
}

Password Strength Checker

POST {{edgeUrl}}/auth/v2/password

Password Strength Checker

Evaluates whether a candidate password satisfies the current policy. Useful for previewing strength in a custom UI before submitting a Change Password request.

Endpoint

POST {{edgeUrl}}/auth/v2/password

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{ "password": "123" }

Response

200 OK -- application/json. Reports isSufficient plus a per-requirement breakdown.

{
  "isSufficient": false,
  "requirements": {
    "length":         { "actual": 3, "min": 8, "ok": false },
    "lowercaseChars": { "actual": 0, "min": 1, "ok": false },
    "specialChars":   { "actual": 0, "min": 1, "ok": false },
    "uppercaseChars": { "actual": 0, "min": 1, "ok": false }
  },
  "score": 0
}

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "password": "123"
}

Response

Status: 200 OK

{
    "isSufficient": false,
    "requirements": {
        "length": {
            "actual": 3,
            "min": 8,
            "ok": false
        },
        "lowercaseChars": {
            "actual": 0,
            "min": 1,
            "ok": false
        },
        "specialChars": {
            "actual": 0,
            "min": 1,
            "ok": false
        },
        "uppercaseChars": {
            "actual": 0,
            "min": 1,
            "ok": false
        }
    },
    "score": 0
}

Change Password

PUT {{edgeUrl}}/auth/v2/password

Change Password

Changes the authenticated user's password. Subject to the policy returned by Show Current or Default Password Policy.

Endpoint

PUT {{edgeUrl}}/auth/v2/password

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{
  "currentPassword": "************",
  "newPassword":     "************"
}

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "currentPassword": "************",
    "newPassword": "************"
}

Update Non-Default Password Policy

PUT {{edgeUrl}}/auth/v2/password/policy

Update Non-Default Password Policy

Overrides the device's password policy. The non-default policy is persistent and applies to all subsequent password changes.

Endpoint

PUT {{edgeUrl}}/auth/v2/password/policy

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{
  "genCharacterLength": 12,
  "maxCharacterLength": 20,
  "minCharacterLength": 8,
  "minDigits": 1,
  "minLowercaseChars": 1,
  "minSpecialChars": 1,
  "minUppercaseChars": 1,
  "specialChars": "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
}

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "genCharacterLength": 12,
    "maxCharacterLength": 20,
    "minCharacterLength": 8,
    "minDigits": 1,
    "minLowercaseChars": 1,
    "minSpecialChars": 1,
    "minUppercaseChars": 1,
    "specialChars": "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
}

Remove Non-Default Password Policy

DELETE {{edgeUrl}}/auth/v2/password/policy

Remove Non-Default Password Policy

Reverts to the factory-default password policy.

Endpoint

DELETE {{edgeUrl}}/auth/v2/password/policy

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


Create OIDC Provider

POST {{edgeUrl}}/auth/v3/oidc/client

Create OIDC Provider

Creates a new OpenID Connect (OIDC) authentication provider. Supports Dynamic Client Registration (DCR) when the upstream provider exposes the standard DCR endpoint.

Endpoint

POST {{edgeUrl}}/auth/v3/oidc/client

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

{
  "providerName": "{{oidc_provider_name}}",
  "clientName":   "{{oidc_client_name}}",
  "clientID":     "{{oidc_client_id}}",
  "clientSecret": "{{oidc_client_secret}}",
  "redirectURI":  "https://{{edgeUrl}}/auth/v3/oidc/callback",
  "url":          "{{well_known_url}}",
  "dcr": {
    "accessToken": "{{oidc_access_token}}",
    "url":         "{{oidc_dcr_url}}"
  },
  "groups": ["default_admins_group"]
}
Field Type Required Description
providerName string Yes Display name shown on the login page.
clientName string Yes OAuth client name.
clientID string Yes OAuth client ID issued by the provider.
clientSecret string Yes OAuth client secret.
redirectURI string Yes Must match a redirect URI registered with the provider. Default: https://<edgeUrl>/auth/v3/oidc/callback.
url string Yes The provider's /.well-known/openid-configuration URL.
dcr.url / dcr.accessToken string No Dynamic Client Registration endpoint + token. Omit for manual registration.
groups string[] Yes LE group IDs to grant successfully-authenticated users.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "providerName": "{{oidc_provider_name}}",
    "clientName": "{{oidc_client_name}}",
    "clientID": "{{oidc_client_id}}",
    "clientSecret": "{{oidc_client_secret}}",
    "redirectURI": "https://{{edgeUrl}}/auth/v3/oidc/callback",
    "dcr": {
        "accessToken": "{{oidc_access_token}}",
        "url": "{{oidc_dcr_url}}"
    },
    "url": "{{well_known_url}}",
    "groups": ["default_admins_group"]
}

Response

Status: 200 OK

{
    "id": "128073b0-e6e1-4892-80f2-e53b58c9f654",
    "providerName": "Provider",
    "clientName": "Client",
    "clientID": "*******",
    "clientSecret": "Litmus@1",
    "groups": [
        "default_admins_group"
    ],
    "redirectURI": "https://{{edgeUrl}}/auth/v3/oidc/callback",
    "url": "http://{oidc_address}/realms/master/.well-known/openid-configuration"
}

Get OIDC Provider

GET {{edgeUrl}}/auth/v3/oidc/client/{{oidc_id}}

Get OIDC Provider

Returns the configuration of one OIDC provider by UUID. clientSecret is masked.

Endpoint

GET {{edgeUrl}}/auth/v3/oidc/client/{{oidc_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

{
    "id": "254d0e6f-39a3-4863-aaf3-bf35662b0ab6",
    "providerName": "Provider",
    "clientName": "Client",
    "clientID": "admin",
    "clientSecret": "*******",
    "groups": [
        "default_admins_group"
    ],
    "redirectURI": "https://{{edgeUrl}}/auth/v3/oidc/callback",
    "url": "{{well_known_url}}"
}

Update OIDC Provider

PATCH {{edgeUrl}}/auth/v3/oidc/client/{{oidc_id}}

Update OIDC Provider

Updates an OIDC provider's configuration. Uses HTTP PATCH -- only fields present in the body are changed.

Endpoint

PATCH {{edgeUrl}}/auth/v3/oidc/client/{{oidc_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

Same shape as Create OIDC Provider. Include only fields you want to update.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "providerName": "{{oidc_provider_name}}",
    "clientName": "{{oidc_client_name}}",
    "clientID": "{{oidc_client_id}}",
    "clientSecret": "{{oidc_client_secret}}",
    "redirectURI": "https://{{edgeUrl}}/auth/v3/oidc/callback",
    "url": "{{well_known_url}}",
    "groups": [
        "default_admins_group"
    ]
}

Response

Status: 200 OK

{
    "id": "254d0e6f-39a3-4863-aaf3-bf35662b0ab6",
    "providerName": "Provider2",
    "clientName": "Client",
    "clientID": "admin",
    "clientSecret": "******",
    "groups": [
        "default_admins_group"
    ],
    "redirectURI": "https://{{edgeUrl}}/auth/v3/oidc/callback",
    "url": "http://{oidc_address}/realms/master/.well-known/openid-configuration"
}

List OIDC Providers

GET {{edgeUrl}}/auth/v3/oidc/client

List OIDC Providers

Returns every configured OIDC provider.

Endpoint

GET {{edgeUrl}}/auth/v3/oidc/client

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 200 OK

[
    {
        "id": "254d0e6f-39a3-4863-aaf3-bf35662b0ab6",
        "clientName": "Client",
        "clientID": "admin",
        "groups": [
            "default_admins_group"
        ],
        "providerName": "Provider",
        "redirectURI": "https://{{edgeUrl}}/auth/v3/oidc/callback",
        "url": "http://{oidc_url}/realms/master/.well-known/openid-configuration"
    }
]

Delete OIDC Provider

DELETE {{edgeUrl}}/auth/v3/oidc/client/{{oidc_id}}

Delete OIDC Provider

Deletes an OIDC provider. Users who could only authenticate via this provider can no longer log in.

Endpoint

DELETE {{edgeUrl}}/auth/v3/oidc/client/{{oidc_id}}

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Response

204 No Content on success.

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Response

Status: 204 No Content


Validate OIDC Discovery URL

POST {{edgeUrl}}/auth/v3/oidc/discover

Validate OIDC Discovery URL

Fetches an OpenID Connect discovery document from the device and returns the issuer it declares. The web UI calls it when you enter the well-known URL in the OIDC provider form, and only enables the Client ID and Client Secret fields once it succeeds. Nothing is saved.

Endpoint

POST {{edgeUrl}}/auth/v3/oidc/discover

Authentication

HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.

Request body

Field Type Required Description
url string Yes The provider's discovery URL, ending in /.well-known/openid-configuration.
{ "url": "https://accounts.google.com/.well-known/openid-configuration" }

Response

200 OK -- application/json.

Field Description
issuer Issuer declared by the discovery document.
registration Dynamic client registration endpoint, empty when the provider has none.
warnIssuerMismatch true when the issuer does not match the URL it was fetched from.

The request is made from the device, so the device needs network access to the provider. An unreachable host returns 500 with {"error":{"Msg":"failed to send dicovery request: ...","MsgCode":""}}. A missing url returns a missing_field error (500 on 4.0.x, 400 on 4.3.x).

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.

Request Body

{
    "url": "{{oidc_well_known_url}}"
}

Response

Status: 200 OK

{
    "registration": "",
    "issuer": "https://accounts.google.com",
    "warnIssuerMismatch": false
}

View this page as Markdown