REST API documentation version v1
VPN Clients
Operations on VPN clients.
Creates a new VPN client.
Retrieves a page of VPN clients based on search criteria.
post /vpnclient
Creates a new VPN client.
- vpnclient:create
VPMS supports OAuth 2.0 for authenticating all API requests.
Body
Media type: application/json
Type: object
Properties- name: required(string - maxLength: 64 - pattern: ^[a-zA-Z0-9_-]+$)
The name of the VPN client. Must contain only latin letters, digits, hyphens and underscores (no spaces). Maximum length is 64 characters.
- endpointId: (string)
The endpoint ID associated with the VPN client.
- description: (string)
A description of the VPN client.
- type: required(one of admin, device)
The type of the VPN client.
- username: (string)
The gateway username for the VPN client.
- sshKey: (string)
SSH key for the VPN client.
- protocol: (one of tcp, udp)
The protocol used by the VPN client.
Example:
{
"name": "vpn-client",
"endpointId": "5a67aa97-1f5c-41eb-a066-8e004157062b",
"description": "vpn client description",
"type": "device",
"username": "admin",
"sshKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLj95+zZK1171Jz9T5234+00...",
"protocol": "tcp"
}
HTTP status code 201
VPN client created successfully.
Headers
- Location: required(string)
URI in format
{schema}://{host}/api/v1/vpnclient/{vpnclientID}Example:
https://cloud.kaaiot.com/vpms/api/v1/vpnclient/a2FhX3Zwbi1jbGllbnQ=
Body
Media type: application/json
Type: object
Properties- data: required(object)
- id: required(string)
The unique identifier of the VPN client.
- name: required(string)
The name of the VPN client.
- endpointId: (string)
The endpoint ID associated with the VPN client.
- application: (string)
Application name that endpoint belongs to.
- description: required(string)
A description of the VPN client.
- state: required(one of active, revoked)
The state of the VPN client (active or revoked).
- type: required(string)
The type of the VPN client.
- subnet: required(string)
The subnet associated with the VPN client.
- username: (string)
The gateway username for the VPN client.
- sshKey: (boolean)
Whether SSH key is set for the VPN client.
- protocol: required(one of tcp, udp)
The protocol used by the VPN client.
- created: required(string)
The timestamp when the VPN client was created.
- id: required(string)
Example:
{
"data": {
"id": "a2FhX3Zwbi1jbGllbnQ=",
"name": "vpn-client",
"endpointId": "5a67aa97-1f5c-41eb-a066-8e004157062b",
"application": "bqa46oeg14m0thoh7g0l",
"description": "vpn client description",
"state": "active",
"type": "device",
"ipAddress": "10.0.1.10",
"subnet": "10.0.0.0/24",
"username": "admin",
"sshKey": true,
"protocol": "tcp",
"created": "2025-04-20T15:01:12.144Z"
}
}
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
get /vpnclient
Retrieves a page of VPN clients based on search criteria.
- vpnclient:read
VPMS supports OAuth 2.0 for authenticating all API requests.
Query Parameters
- ids: required(array of )
A list of VPN client IDs to filter by.
- name: (string)
The name of the VPN client.
- endpointId: (string)
The endpoint ID associated with the VPN client.
- state: (one of active, revoked)
The state of the VPN client (active or revoked).
- ipAddress: (string)
The IP address assigned to the VPN client.
- page: (integer - default: 1)
The page number to retrieve.
- pageSize: (integer - default: 100)
The number of items per page.
HTTP status code 200
Successful retrieval of VPN clients.
Body
Media type: application/json
Type: object
Properties- data: required(array of vpn.VPNClientResponse)
Items: VPNClientResponse
- id: required(string)
The unique identifier of the VPN client.
- name: required(string)
The name of the VPN client.
- endpointId: (string)
The endpoint ID associated with the VPN client.
- application: (string)
Application name that endpoint belongs to.
- description: required(string)
A description of the VPN client.
- state: required(one of active, revoked)
The state of the VPN client (active or revoked).
- type: required(string)
The type of the VPN client.
- subnet: required(string)
The subnet associated with the VPN client.
- username: (string)
The gateway username for the VPN client.
- sshKey: (boolean)
Whether SSH key is set for the VPN client.
- protocol: required(one of tcp, udp)
The protocol used by the VPN client.
- created: required(string)
The timestamp when the VPN client was created.
- id: required(string)
- count: required(integer)
The total number of VPN clients.
- page: required(integer)
The current page number.
- pageSize: required(integer)
The number of VPN clients per page.
Example:
{
"data": [
{
"id": "a2FhX3Zwbi1jbGllbnQ=",
"name": "vpn-client",
"endpointId": "5a67aa97-1f5c-41eb-a066-8e004157062b",
"application": "bqa46oeg14m0thoh7g0l",
"description": "vpn client description",
"state": "active",
"type": "device",
"ipAddress": "10.0.1.10",
"subnet": "10.0.0.0/24",
"username": "admin",
"sshKey": true,
"protocol": "tcp",
"created": "2025-04-20T15:01:12.144Z"
}
],
"count": 1,
"page": 1,
"pageSize": 100
}
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Retrieves a specific VPN client by ID.
Deletes VPN client.
get /vpnclient/{vpnclientID}
Retrieves a specific VPN client by ID.
- vpnclient:read
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
HTTP status code 200
Successful retrieval of the VPN client.
Body
Media type: application/json
Type: object
Properties- data: required(object)
- id: required(string)
The unique identifier of the VPN client.
- name: required(string)
The name of the VPN client.
- endpointId: (string)
The endpoint ID associated with the VPN client.
- application: (string)
Application name that endpoint belongs to.
- description: required(string)
A description of the VPN client.
- state: required(one of active, revoked)
The state of the VPN client (active or revoked).
- type: required(string)
The type of the VPN client.
- subnet: required(string)
The subnet associated with the VPN client.
- username: (string)
The gateway username for the VPN client.
- sshKey: (boolean)
Whether SSH key is set for the VPN client.
- protocol: required(one of tcp, udp)
The protocol used by the VPN client.
- created: required(string)
The timestamp when the VPN client was created.
- id: required(string)
Example:
{
"data": {
"id": "a2FhX3Zwbi1jbGllbnQ=",
"name": "vpn-client",
"endpointId": "5a67aa97-1f5c-41eb-a066-8e004157062b",
"application": "bqa46oeg14m0thoh7g0l",
"description": "vpn client description",
"state": "active",
"type": "device",
"ipAddress": "10.0.1.10",
"subnet": "10.0.0.0/24",
"username": "admin",
"sshKey": true,
"protocol": "tcp",
"created": "2025-04-20T15:01:12.144Z"
}
}
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
delete /vpnclient/{vpnclientID}
Deletes VPN client.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
HTTP status code 204
VPN client is successfully deleted.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by
Get VPN client configuration file
get /vpnclient/{vpnclientID}/config
Get VPN client configuration file
- vpnclient:read
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
HTTP status code 200
Successful retrieval of the VPN client configuration file.
Headers
- Content-Disposition: required(string)
The filename of the configuration file.
Example:
attachment; filename="vpnclient.ovpn"
Body
Media type: application/octet-stream
Type: string
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Update SSH key for VPN client.
put /vpnclient/{vpnclientID}/ssh-key
Update SSH key for VPN client.
- vpnclient:update
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
Body
Media type: application/json
Type: object
Properties- sshKey: required(string)
The gateway SSH key for the VPN client.
Example:
{
"sshKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLj95+zZK1171Jz9T5234+00..."
}
HTTP status code 204
SSH key is successfully updated.
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Update username for VPN client.
put /vpnclient/{vpnclientID}/username
Update username for VPN client.
- vpnclient:update
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
Body
Media type: application/json
Type: object
Properties- username: required(string)
The gateway username for the VPN client.
Example:
{
"username": "admin"
}
HTTP status code 204
Username is successfully updated.
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Update description for VPN client.
put /vpnclient/{vpnclientID}/description
Update description for VPN client.
- vpnclient:update
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
Body
Media type: application/json
Type: object
Properties- description: required(string)
A description of the VPN client.
Example:
{
"description": "New description"
}
HTTP status code 204
Description is successfully updated.
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Revoke VPN client.
put /vpnclient/{vpnclientID}/revoke
Revoke VPN client.
- vpnclient:update
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
HTTP status code 204
VPN client is successfully revoked.
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Assign endpoint to the VPN client
put /vpnclient/{vpnclientID}/assign
Assign endpoint to the VPN client
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
Body
Media type: application/json
Type: object
Properties- endpointId: required(string)
Endpoint unique identifier.
Example:
{
"endpointId": "52d44498-e240-43ba-959b-84152fe54b8d"
}HTTP status code 204
Endpoint is successfully assigned to the VPN client.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by
Unassign endpoint from the VPN client
put /vpnclient/{vpnclientID}/unassign
Unassign endpoint from the VPN client
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
HTTP status code 204
Endpoint is successfully unassigned from the VPN client.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by
Creates a new proxy configuration.
get /vpnclient/{vpnclientID}/proxyconfig
- vpnclient:read
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
Query Parameters
- type: (string)
Filter by proxy type (HTTP or TCP).
- page: (integer - default: 1)
The page number to retrieve.
- pageSize: (integer - default: 100)
The number of items per page.
HTTP status code 200
Successful retrieval of proxy configurations.
Body
Media type: application/json
Type: object
Properties- data: required(array of proxy.ProxyConfigResponse)
Items: ProxyConfigResponse
- id: required(string)
The ID of the proxy configuration.
- vpnClientId: required(string)
The ID of the VPN client associated with the proxy configuration.
- proxyPort: required(integer)
The port number of the proxy server.
- name: required(string)
The name of the proxy configuration.
- domain: required(string)
The domain name of the proxy server.
- description: (string)
A description of the proxy configuration.
- type: required(one of HTTP, TCP)
The type of proxy configuration.
- id: required(string)
- count: required(integer)
The total number of VPN clients.
- page: required(integer)
The current page number.
- pageSize: required(integer)
The number of VPN clients per page.
Example:
{
"data": [
{
"id": "d638b5a4-428d-4300-8725-6a90a739e040",
"vpnClientId": "a2FhX3Zwbi1jbGllbnQ=",
"proxyPort": "80",
"name": "proxy-config",
"domain": "example.com",
"description": "proxy config description",
"type": "HTTP",
"customHeaders": {
"X-Custom-Header": "custom-header-value"
}
}
],
"count": 1,
"page": 1,
"pageSize": 100
}
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
post /vpnclient/{vpnclientID}/proxyconfig
Creates a new proxy configuration.
- vpnclient:update
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
Body
Media type: application/json
Type: proxy.UsertProxyConfigRequest
Example:
{
"proxyPort": "80",
"name": "proxy-config",
"description": "proxy config description",
"type": "HTTP",
"customHeaders": {
"X-Api-Key": "test-api-key",
"Authorization": "Bearer token123"
}
}
HTTP status code 201
Proxy configuration created successfully.
Headers
- Location: required(string)
URI in format
{schema}://{host}/api/v1/vpnclient/{vpnclientID}/proxyconfig/{proxyconfigID}Example:
https://cloud.kaaiot.com/vpms/api/v1/vpnclient/a2FhX3Zwbi1jbGllbnQ/proxyconfig/d638b5a4-428d-4300-8725-6a90a739e040
Body
Media type: application/json
Type: object
Properties- data: required(object)
- id: required(string)
The ID of the proxy configuration.
- vpnClientId: required(string)
The ID of the VPN client associated with the proxy configuration.
- proxyPort: required(integer)
The port number of the proxy server.
- name: required(string)
The name of the proxy configuration.
- domain: required(string)
The domain name of the proxy server.
- description: (string)
A description of the proxy configuration.
- type: required(one of HTTP, TCP)
The type of proxy configuration.
- id: required(string)
Example:
{
"data": {
"id": "d638b5a4-428d-4300-8725-6a90a739e040",
"vpnClientId": "a2FhX3Zwbi1jbGllbnQ=",
"proxyPort": "80",
"name": "proxy-config",
"domain": "example.com",
"description": "proxy config description",
"type": "HTTP",
"customHeaders": {
"X-Custom-Header": "custom-header-value"
}
}
}
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Retrieves a specific proxy configuration by ID.
Updates a proxy configuration.
Deletes proxy config client.
get /vpnclient/{vpnclientID}/proxyconfig/{proxyconfigID}
Retrieves a specific proxy configuration by ID.
- vpnclient:read
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ= - proxyconfigID: required(string)
Proxy configuration ID.
Example:
d638b5a4-428d-4300-8725-6a90a739e040
HTTP status code 200
Successful retrieval of the proxy configuration.
Body
Media type: application/json
Type: object
Properties- data: required(object)
- id: required(string)
The ID of the proxy configuration.
- vpnClientId: required(string)
The ID of the VPN client associated with the proxy configuration.
- proxyPort: required(integer)
The port number of the proxy server.
- name: required(string)
The name of the proxy configuration.
- domain: required(string)
The domain name of the proxy server.
- description: (string)
A description of the proxy configuration.
- type: required(one of HTTP, TCP)
The type of proxy configuration.
- id: required(string)
Example:
{
"data": {
"id": "d638b5a4-428d-4300-8725-6a90a739e040",
"vpnClientId": "a2FhX3Zwbi1jbGllbnQ=",
"proxyPort": "80",
"name": "proxy-config",
"domain": "example.com",
"description": "proxy config description",
"type": "HTTP",
"customHeaders": {
"X-Custom-Header": "custom-header-value"
}
}
}
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
put /vpnclient/{vpnclientID}/proxyconfig/{proxyconfigID}
Updates a proxy configuration.
- vpnclient:update
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ= - proxyconfigID: required(string)
Proxy configuration ID.
Example:
d638b5a4-428d-4300-8725-6a90a739e040
Body
Media type: application/json
Type: object
Properties- proxyPort: required(integer)
The port number of the proxy server.
- name: required(string)
The name of the proxy configuration.
- description: (string)
A description of the proxy configuration.
- type: (one of HTTP, HTTPS - default: HTTP)
The type of proxy configuration.
- customHeaders: required(object)
A map of custom headers to be sent to the proxy server.
Example:
{
"proxyPort": "80",
"name": "proxy-config",
"description": "proxy config description",
"type": "HTTP",
"customHeaders": {
"X-Api-Key": "test-api-key",
"Authorization": "Bearer token123"
}
}
HTTP status code 204
Proxy configuration updated successfully.
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
delete /vpnclient/{vpnclientID}/proxyconfig/{proxyconfigID}
Deletes proxy config client.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ= - proxyconfigID: required(string)
Proxy configuration ID.
Example:
d638b5a4-428d-4300-8725-6a90a739e040
HTTP status code 204
Proxy config is successfully deleted.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by
Creates a new proxy configuration.
Retrieves a page of the VNC remotes.
post /vpnclient/{vpnclientID}/vnc
Creates a new proxy configuration.
- vpnclient:update
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
Body
Media type: application/json
Type: object
Properties- deviceIp: required(string)
The IP address of the VNC device.
- devicePort: required(integer)
The port number of the VNC device.
Example:
{
"deviceIp": "192.168.1.1",
"devicePort": 5900
}
HTTP status code 201
VNC remote access created successfully.
Headers
- Location: required(string)
URI in format
{schema}://{host}/api/v1/vpnclient/{vpnclientID}/vnc/{proxyconfigID}Example:
https://cloud.kaaiot.com/vpms/api/v1/vpnclient/a2FhX3Zwbi1jbGllbnQ/vnc/d638b5a4-428d-4300-8725-6a90a739e040
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
get /vpnclient/{vpnclientID}/vnc
Retrieves a page of the VNC remotes.
- vpnclient:read
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ=
Query Parameters
- page: (integer - default: 1)
The page number to retrieve.
- pageSize: (integer - default: 100)
The number of items per page.
HTTP status code 200
Successful retrieval of the VNC remotes.
Body
Media type: application/json
Type: object
Properties- data: required(array of vnc.VNCResponse)
Items: VNCResponse
- id: required(string)
The unique identifier of the VNC.
- stage: required(one of UNDEFINED, INITIALIZED, SSH_TUNNEL_CREATED, VNC_SERVER_CREATED, VNC_PROXY_CREATED)
The stage of the VNC.
- UNDEFINED: The VNC is not yet initialized.
- INITIALIZED: The VNC is being created.
- SSH_TUNNEL_CREATED: The SSH tunnel is being created.
- VNC_SERVER_CREATED: The VNC server is being created.
- VNC_PROXY_CREATED: The VNC proxy is being created.
- state: required(one of UNDEFINED, PENDING, ERROR, FATAL_ERROR, RUNNING, RECOVERING)
The state of the VNC.
- UNDEFINED: The VNC is not yet created.
- PENDING: The VNC is being created.
- ERROR: The VNC has failed to start and can be recovered.
- FATAL_ERROR: The VNC has failed to start and cannot be recovered automatically.
- RUNNING: The VNC is running.
- RECOVERING: The VNC is recovering.
- deviceIp: required(string)
The IP address of the VNC device.
- devicePort: required(integer)
The port number of the VNC device.
- proxyUrl: (string)
The URL of the VNC proxy. This field is only present if the VNC is in the RUNNING state.
- created: required(string)
The timestamp when the VNC was created.
- id: required(string)
- count: required(integer)
The total number of VPN clients.
- page: required(integer)
The current page number.
- pageSize: required(integer)
The number of VPN clients per page.
Example:
{
"data": [
{
"id": "d638b5a4-428d-4300-8725-6a90a739e040",
"state": "RUNNING",
"stage": "VNC_PROXY_CREATED",
"deviceIp": "192.168.1.1",
"devicePort": 5900,
"proxyUrl": "example.com",
"created": "2023-03-29T12:34:56Z"
}
],
"count": 1,
"page": 1,
"pageSize": 100
}
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Retrieves a page of the VNC remotes.
Updates a VNC remote and restarts the remote connection with the new device IP and Port.
Deletes VNC remote.
get /vpnclient/{vpnclientID}/vnc/{vncID}
Retrieves a page of the VNC remotes.
- vpnclient:read
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ= - vncID: required(string)
VNC remote ID.
Example:
d638b5a4-428d-4300-8725-6a90a739e040
HTTP status code 200
Successful retrieval of the VNC remote by ID.
Body
Media type: application/json
Type: object
Properties- data: required(object)
The VNC response data.
- id: required(string)
The unique identifier of the VNC.
- stage: required(one of UNDEFINED, INITIALIZED, SSH_TUNNEL_CREATED, VNC_SERVER_CREATED, VNC_PROXY_CREATED)
The stage of the VNC.
- UNDEFINED: The VNC is not yet initialized.
- INITIALIZED: The VNC is being created.
- SSH_TUNNEL_CREATED: The SSH tunnel is being created.
- VNC_SERVER_CREATED: The VNC server is being created.
- VNC_PROXY_CREATED: The VNC proxy is being created.
- state: required(one of UNDEFINED, PENDING, ERROR, FATAL_ERROR, RUNNING, RECOVERING)
The state of the VNC.
- UNDEFINED: The VNC is not yet created.
- PENDING: The VNC is being created.
- ERROR: The VNC has failed to start and can be recovered.
- FATAL_ERROR: The VNC has failed to start and cannot be recovered automatically.
- RUNNING: The VNC is running.
- RECOVERING: The VNC is recovering.
- deviceIp: required(string)
The IP address of the VNC device.
- devicePort: required(integer)
The port number of the VNC device.
- proxyUrl: (string)
The URL of the VNC proxy. This field is only present if the VNC is in the RUNNING state.
- created: required(string)
The timestamp when the VNC was created.
- id: required(string)
Example:
{
"data": {
"id": "d638b5a4-428d-4300-8725-6a90a739e040",
"state": "RUNNING",
"stage": "VNC_PROXY_CREATED",
"deviceIp": "192.168.1.1",
"devicePort": 5900,
"proxyUrl": "example.com",
"created": "2023-03-29T12:34:56Z"
}
}
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
put /vpnclient/{vpnclientID}/vnc/{vncID}
Updates a VNC remote and restarts the remote connection with the new device IP and Port.
- vpnclient:update
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ= - vncID: required(string)
VNC remote ID.
Example:
d638b5a4-428d-4300-8725-6a90a739e040
Body
Media type: application/json
Type: object
Properties- deviceIp: required(string)
The IP address of the VNC device.
- devicePort: required(integer)
The port number of the VNC device.
Example:
{
"deviceIp": "192.168.1.1",
"devicePort": 5900
}
HTTP status code 204
VNC remote updated successfully.
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
delete /vpnclient/{vpnclientID}/vnc/{vncID}
Deletes VNC remote.
- vpnclient:update
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ= - vncID: required(string)
VNC remote ID.
Example:
d638b5a4-428d-4300-8725-6a90a739e040
HTTP status code 204
VNC remote is successfully deleted.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Restarts the VNC remote.
get /vpnclient/{vpnclientID}/vnc/{vncID}/restart
Restarts the VNC remote.
- vpnclient:update
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ= - vncID: required(string)
VNC remote ID.
Example:
d638b5a4-428d-4300-8725-6a90a739e040
HTTP status code 204
VNC remote restarted successfully.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Retrieves a page of the VNC remote traces.
get /vpnclient/{vpnclientID}/vnc/{vncID}/traces
Retrieves a page of the VNC remote traces.
- vpnclient:read
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- vpnclientID: required(string)
VPN client ID.
Example:
a2FhX3Zwbi1jbGllbnQ= - vncID: required(string)
VNC remote ID.
Example:
d638b5a4-428d-4300-8725-6a90a739e040
HTTP status code 200
Successful retrieval of the VNC remote traces.
Body
Media type: application/json
Type: object
Properties- data: required(array of trace.TraceResponse)
Items: TraceResponse
- id: required(string)
The unique identifier of the trace.
- type: required(one of success, error)
The type of the trace.
- entityId: required(string)
The unique identifier of the entity associated with the trace.
- entityType: required(string)
The type of the entity associated with the trace.
- message: required(string)
The message associated with the trace.
- created: required(string)
The timestamp when the trace was created.
- id: required(string)
- count: required(integer)
The total number of VPN clients.
- page: required(integer)
The current page number.
- pageSize: required(integer)
The number of VPN clients per page.
Example:
{
"data": [
{
"id": "5a67aa97-1f5c-41eb-a066-8e004157062b",
"type": "success",
"entityId": "a2FhX3Zwbi1jbGllbnQ=",
"entityType": "VNC Tunnel",
"message": "VNC Tunnel created",
"created": "2025-04-20T15:01:12.144Z"
}
],
"count": 1,
"page": 1,
"pageSize": 100
}
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Mikrotik Devices
Operations on mikrotik devices.
Registers a Mikrotik device.
post /mikrotik/{serialNumber}/register
Registers a Mikrotik device.
- vpnclient:create
- endpoint:create
VPMS supports OAuth 2.0 for authenticating all API requests.
URI Parameters
- serialNumber: required(string)
mikrotik serial number.
Example:
N9TT-9G0A-B7FQ-RANC
Body
Media type: application/json
Type: object
Properties- applicationVersion: required(string)
The name of the application version.
Example:
{
"applicationVersion": "bqa46oeg14m0thoh7g0l-v1"
}
HTTP status code 204
Mikrotik device registered successfully.
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 401
Request is not authenticated.
HTTP status code 403
Principal does not have sufficient permissions to perform this operation.
HTTP status code 404
Resource not found or querying user is not authorized for it.
Secured by oauth_2_0
Headers
- Authorization: (string)
Used to send a valid OAuth 2 access token. Example: "Authorization: Bearer 'access_token'" where 'access_token' must be replaced by a valid OAuth access token. This header is needed only if API authentication is enabled for the service.
Retrieves the configuration of a Mikrotik device.
get /mikrotik/{serialNumber}/config
Retrieves the configuration of a Mikrotik device.
URI Parameters
- serialNumber: required(string)
mikrotik serial number.
Example:
N9TT-9G0A-B7FQ-RANC
HTTP status code 200
Successful retrieval of the configuration.
Body
Media type: application/json
Type: object
Properties- data: required(object)
- endpointId: required(string)
The Mikrotik serial number.
- endpointToken: required(string)
The endpoint token associated with the device.
- application: required(string)
The application associated with the device.
- applicationVersion: required(string)
The version of the application associated with the device.
- configFile: required(string)
he BASE64-encoded VPN configuration file for the device.
- pubKey: required(string)
Remote access public key.
- endpointId: required(string)
Example:
{
"data": {
"serialNumber": "N9TT-9G0A-B7FQ-RANC",
"endpointId": "5a67aa97-1f5c-41eb-a066-8e004157062b",
"endpointToken": "02226466-e744-48ac-8f0c-a57fe4e77de4",
"application": "bqa46oeg14m0thoh7g0l",
"applicationVersion": "bqa46oeg14m0thoh7g0l-v1",
"configFile": "dnBuLWNvbmZpZy1maWxl",
"configName": "my-config.ovpn",
"publicKey": "my-pubKey"
}
}
HTTP status code 400
Invalid request.
Body
Media type: application/json
Type: object
Properties- message: required(string)
Detailed error description.
HTTP status code 404
Resource not found or querying user is not authorized for it.