Download OpenAPI specification:
API to manipulate groups, rules, policies and retrieve information about peers and users
Returns a list of all users
| service_user | boolean Filters users and returns either regular users or service users |
[- {
- "id": "google-oauth2|277474792786460067937",
- "email": "demo@nexusremotesolutions.com",
- "password": "super_secure_password",
- "name": "Tom Schulz",
- "role": "admin",
- "status": "active",
- "last_login": "2023-05-05T09:00:35.477782Z",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "is_current": true,
- "is_service_user": false,
- "is_blocked": false,
- "pending_approval": false,
- "issued": "api",
- "idp_id": "okta-abc123",
- "permissions": {
- "is_restricted": true,
- "modules": {
- "networks": {
- "read": true,
- "create": false,
- "update": false,
- "delete": false
}, - "peers": {
- "read": false,
- "create": false,
- "update": false,
- "delete": false
}
}
}
}
]Creates a new service user or sends an invite to a regular user
User invite information
string User's Email to send invite to | |
| name | string User's full name |
| role required | string User's NexusLink account role |
| auto_groups required | Array of strings Group IDs to auto-assign to peers registered by this user |
| is_service_user required | boolean Is true if this user is a service user |
{- "email": "demo@nexusremotesolutions.com",
- "name": "Tom Schulz",
- "role": "admin",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "is_service_user": false
}{- "id": "google-oauth2|277474792786460067937",
- "email": "demo@nexusremotesolutions.com",
- "password": "super_secure_password",
- "name": "Tom Schulz",
- "role": "admin",
- "status": "active",
- "last_login": "2023-05-05T09:00:35.477782Z",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "is_current": true,
- "is_service_user": false,
- "is_blocked": false,
- "pending_approval": false,
- "issued": "api",
- "idp_id": "okta-abc123",
- "permissions": {
- "is_restricted": true,
- "modules": {
- "networks": {
- "read": true,
- "create": false,
- "update": false,
- "delete": false
}, - "peers": {
- "read": false,
- "create": false,
- "update": false,
- "delete": false
}
}
}
}Update information about a User
| userId required | string The unique identifier of a user |
User update
| role required | string User's NexusLink account role |
| auto_groups required | Array of strings Group IDs to auto-assign to peers registered by this user |
| is_blocked required | boolean If set to true then user is blocked and can't use the system |
{- "role": "admin",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "is_blocked": false
}{- "id": "google-oauth2|277474792786460067937",
- "email": "demo@nexusremotesolutions.com",
- "password": "super_secure_password",
- "name": "Tom Schulz",
- "role": "admin",
- "status": "active",
- "last_login": "2023-05-05T09:00:35.477782Z",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "is_current": true,
- "is_service_user": false,
- "is_blocked": false,
- "pending_approval": false,
- "issued": "api",
- "idp_id": "okta-abc123",
- "permissions": {
- "is_restricted": true,
- "modules": {
- "networks": {
- "read": true,
- "create": false,
- "update": false,
- "delete": false
}, - "peers": {
- "read": false,
- "create": false,
- "update": false,
- "delete": false
}
}
}
}Approve a user that is pending approval
| userId required | string The unique identifier of a user |
{- "id": "google-oauth2|277474792786460067937",
- "email": "demo@nexusremotesolutions.com",
- "password": "super_secure_password",
- "name": "Tom Schulz",
- "role": "admin",
- "status": "active",
- "last_login": "2023-05-05T09:00:35.477782Z",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "is_current": true,
- "is_service_user": false,
- "is_blocked": false,
- "pending_approval": false,
- "issued": "api",
- "idp_id": "okta-abc123",
- "permissions": {
- "is_restricted": true,
- "modules": {
- "networks": {
- "read": true,
- "create": false,
- "update": false,
- "delete": false
}, - "peers": {
- "read": false,
- "create": false,
- "update": false,
- "delete": false
}
}
}
}Change the password for a user. Only available when embedded IdP is enabled. Users can only change their own password.
| userId required | string The unique identifier of a user |
Password change request
| old_password required | string The current password |
| new_password required | string The new password to set |
{- "old_password": "currentPassword123",
- "new_password": "newSecurePassword456"
}Get information about the current user
{- "id": "google-oauth2|277474792786460067937",
- "email": "demo@nexusremotesolutions.com",
- "password": "super_secure_password",
- "name": "Tom Schulz",
- "role": "admin",
- "status": "active",
- "last_login": "2023-05-05T09:00:35.477782Z",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "is_current": true,
- "is_service_user": false,
- "is_blocked": false,
- "pending_approval": false,
- "issued": "api",
- "idp_id": "okta-abc123",
- "permissions": {
- "is_restricted": true,
- "modules": {
- "networks": {
- "read": true,
- "create": false,
- "update": false,
- "delete": false
}, - "peers": {
- "read": false,
- "create": false,
- "update": false,
- "delete": false
}
}
}
}Lists all pending invites for the account. Only available when embedded IdP is enabled.
[- {
- "id": "d5p7eedra0h0lt6f59hg",
- "email": "user@example.com",
- "name": "John Doe",
- "role": "user",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "expires_at": "2024-01-25T10:00:00Z",
- "created_at": "2024-01-22T10:00:00Z",
- "expired": false,
- "invite_token": "nbi_Xk5Lz9mP2vQwRtYu1aN3bC4dE5fGh0ABC123"
}
]Creates an invite link for a new user. Only available when embedded IdP is enabled. The user is not created until they accept the invite.
User invite information
| email required | string User's email address |
| name required | string User's full name |
| role required | string User's NexusLink account role |
| auto_groups required | Array of strings Group IDs to auto-assign to peers registered by this user |
| expires_in | integer Invite expiration time in seconds (default 72 hours) |
{- "email": "user@example.com",
- "name": "John Doe",
- "role": "user",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "expires_in": 259200
}{- "id": "d5p7eedra0h0lt6f59hg",
- "email": "user@example.com",
- "name": "John Doe",
- "role": "user",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "expires_at": "2024-01-25T10:00:00Z",
- "created_at": "2024-01-22T10:00:00Z",
- "expired": false,
- "invite_token": "nbi_Xk5Lz9mP2vQwRtYu1aN3bC4dE5fGh0ABC123"
}Regenerates an invite link for an existing invite. Invalidates the previous token and creates a new one.
| inviteId required | string The ID of the invite to regenerate |
Regenerate options
| expires_in | integer Invite expiration time in seconds (default 72 hours) |
{- "expires_in": 259200
}{- "invite_token": "nbi_Xk5Lz9mP2vQwRtYu1aN3bC4dE5fGh0ABC123",
- "invite_expires_at": "2024-01-28T10:00:00Z"
}Retrieves public information about an invite. This endpoint is unauthenticated and protected by the token itself.
| token required | string The invite token |
{- "email": "user@example.com",
- "name": "John Doe",
- "expires_at": "2024-01-25T10:00:00Z",
- "valid": true,
- "invited_by": "Admin User"
}Accepts an invite and creates the user with the provided password. This endpoint is unauthenticated and protected by the token itself.
| token required | string The invite token |
Password to set for the new user
| password required | string <password> >= 8 characters ^(?=.*[0-9])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,... The password the user wants to set. Must be at least 8 characters long and contain at least one uppercase letter, one digit, and one special character (any character that is not a letter or digit, including spaces). |
{- "password": "SecurePass123!"
}{- "success": true
}Returns a list of all tokens for a user
| userId required | string The unique identifier of a user |
[- {
- "id": "ch8i54g6lnn4g9hqv7n0",
- "name": "My first token",
- "expiration_date": "2023-05-05T14:38:28.977616Z",
- "created_by": "google-oauth2|277474792786460067937",
- "created_at": "2023-05-02T14:48:20.465209Z",
- "last_used": "2023-05-04T12:45:25.9723616Z"
}
]Create a new token for a user
| userId required | string The unique identifier of a user |
PersonalAccessToken create parameters
| name required | string Name of the token |
| expires_in required | integer [ 1 .. 365 ] Expiration in days |
{- "name": "My first token",
- "expires_in": 30
}{- "plain_token": "2023-05-02T14:48:20.465209Z",
- "personal_access_token": {
- "id": "ch8i54g6lnn4g9hqv7n0",
- "name": "My first token",
- "expiration_date": "2023-05-05T14:38:28.977616Z",
- "created_by": "google-oauth2|277474792786460067937",
- "created_at": "2023-05-02T14:48:20.465209Z",
- "last_used": "2023-05-04T12:45:25.9723616Z"
}
}Returns a specific token for a user
| userId required | string The unique identifier of a user |
| tokenId required | string The unique identifier of a token |
{- "id": "ch8i54g6lnn4g9hqv7n0",
- "name": "My first token",
- "expiration_date": "2023-05-05T14:38:28.977616Z",
- "created_by": "google-oauth2|277474792786460067937",
- "created_at": "2023-05-02T14:48:20.465209Z",
- "last_used": "2023-05-04T12:45:25.9723616Z"
}Returns a list of all peers
| name | string Filter peers by name |
| ip | string Filter peers by IP address |
[- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1",
- "created_at": "2023-05-05T09:00:35.477782Z",
- "ip": "10.64.0.1",
- "ipv6": "fd00:4e42:ab12::1",
- "connection_ip": "35.64.0.1",
- "connected": true,
- "last_seen": "2023-05-05T10:05:26.420578Z",
- "os": "Darwin 13.2.1",
- "kernel_version": "23.2.0",
- "geoname_id": 2643743,
- "version": "0.14.0",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "ssh_enabled": true,
- "user_id": "google-oauth2|277474792786460067937",
- "hostname": "stage-host-1",
- "ui_version": "0.14.0",
- "dns_label": "stage-host-1.nexuslink.cloud",
- "login_expiration_enabled": false,
- "login_expired": false,
- "last_login": "2023-05-05T09:00:35.477782Z",
- "inactivity_expiration_enabled": false,
- "approval_required": true,
- "disapproval_reason": "string",
- "country_code": "DE",
- "city_name": "Berlin",
- "serial_number": "C02XJ0J0JGH7",
- "extra_dns_labels": [
- "stage-host-1"
], - "ephemeral": false,
- "local_flags": {
- "rosenpass_enabled": true,
- "rosenpass_permissive": false,
- "server_ssh_allowed": true,
- "remote_jobs_allowed": true,
- "disable_client_routes": false,
- "disable_server_routes": false,
- "disable_dns": false,
- "disable_firewall": false,
- "block_lan_access": false,
- "block_inbound": false,
- "lazy_connection_enabled": false
}, - "accessible_peers_count": 5
}
]Get information about a peer
| peerId required | string The unique identifier of a peer |
{- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1",
- "created_at": "2023-05-05T09:00:35.477782Z",
- "ip": "10.64.0.1",
- "ipv6": "fd00:4e42:ab12::1",
- "connection_ip": "35.64.0.1",
- "connected": true,
- "last_seen": "2023-05-05T10:05:26.420578Z",
- "os": "Darwin 13.2.1",
- "kernel_version": "23.2.0",
- "geoname_id": 2643743,
- "version": "0.14.0",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "ssh_enabled": true,
- "user_id": "google-oauth2|277474792786460067937",
- "hostname": "stage-host-1",
- "ui_version": "0.14.0",
- "dns_label": "stage-host-1.nexuslink.cloud",
- "login_expiration_enabled": false,
- "login_expired": false,
- "last_login": "2023-05-05T09:00:35.477782Z",
- "inactivity_expiration_enabled": false,
- "approval_required": true,
- "disapproval_reason": "string",
- "country_code": "DE",
- "city_name": "Berlin",
- "serial_number": "C02XJ0J0JGH7",
- "extra_dns_labels": [
- "stage-host-1"
], - "ephemeral": false,
- "local_flags": {
- "rosenpass_enabled": true,
- "rosenpass_permissive": false,
- "server_ssh_allowed": true,
- "remote_jobs_allowed": true,
- "disable_client_routes": false,
- "disable_server_routes": false,
- "disable_dns": false,
- "disable_firewall": false,
- "block_lan_access": false,
- "block_inbound": false,
- "lazy_connection_enabled": false
}
}Update information about a peer
| peerId required | string The unique identifier of a peer |
update a peer
| name required | string |
| ssh_enabled required | boolean |
| login_expiration_enabled required | boolean |
| inactivity_expiration_enabled required | boolean |
| approval_required | boolean (Cloud only) Indicates whether peer needs approval |
| ip | string <ipv4> Peer's IP address |
| ipv6 | string <ipv6> Peer's IPv6 overlay address. Omitted if IPv6 is not enabled for the account. |
{- "name": "stage-host-1",
- "ssh_enabled": true,
- "login_expiration_enabled": false,
- "inactivity_expiration_enabled": false,
- "approval_required": true,
- "ip": "100.64.0.15",
- "ipv6": "fd00:4e42:ab12::1"
}{- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1",
- "created_at": "2023-05-05T09:00:35.477782Z",
- "ip": "10.64.0.1",
- "ipv6": "fd00:4e42:ab12::1",
- "connection_ip": "35.64.0.1",
- "connected": true,
- "last_seen": "2023-05-05T10:05:26.420578Z",
- "os": "Darwin 13.2.1",
- "kernel_version": "23.2.0",
- "geoname_id": 2643743,
- "version": "0.14.0",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "ssh_enabled": true,
- "user_id": "google-oauth2|277474792786460067937",
- "hostname": "stage-host-1",
- "ui_version": "0.14.0",
- "dns_label": "stage-host-1.nexuslink.cloud",
- "login_expiration_enabled": false,
- "login_expired": false,
- "last_login": "2023-05-05T09:00:35.477782Z",
- "inactivity_expiration_enabled": false,
- "approval_required": true,
- "disapproval_reason": "string",
- "country_code": "DE",
- "city_name": "Berlin",
- "serial_number": "C02XJ0J0JGH7",
- "extra_dns_labels": [
- "stage-host-1"
], - "ephemeral": false,
- "local_flags": {
- "rosenpass_enabled": true,
- "rosenpass_permissive": false,
- "server_ssh_allowed": true,
- "remote_jobs_allowed": true,
- "disable_client_routes": false,
- "disable_server_routes": false,
- "disable_dns": false,
- "disable_firewall": false,
- "block_lan_access": false,
- "block_inbound": false,
- "lazy_connection_enabled": false
}
}Returns a list of peers that the specified peer can connect to within the network.
| peerId required | string The unique identifier of a peer |
[- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1",
- "ip": "10.64.0.1",
- "ipv6": "fd00:4e42:ab12::1",
- "dns_label": "stage-host-1.nexuslink.cloud",
- "user_id": "google-oauth2|277474792786460067937",
- "os": "linux",
- "country_code": "DE",
- "city_name": "Berlin",
- "geoname_id": 2643743,
- "connected": true,
- "last_seen": "2023-05-05T10:05:26.420578Z"
}
]Creates a temporary access peer that can be used to access this peer and this peer only. The temporary access peer and its access policies will be automatically deleted after it disconnects.
| peerId required | string The unique identifier of a peer |
Temporary Access Peer create request
| name required | string Peer's hostname |
| wg_pub_key required | string Peer's WireGuard public key |
| rules required | Array of strings List of temporary access rules |
{- "name": "temp-host-1",
- "wg_pub_key": "n0r3pL4c3h0ld3rK3y==",
- "rules": [
- "tcp/80"
]
}{- "name": "temp-host-1",
- "id": "chacbco6lnnbn6cg5s90",
- "rules": [
- "tcp/80"
]
}[- {
- "id": 2531583362,
- "name": "Default key",
- "expires": "2023-06-01T14:47:22.291057Z",
- "type": "reusable",
- "valid": true,
- "revoked": false,
- "used_times": 2,
- "last_used": "2023-05-05T09:00:35.477782Z",
- "state": "valid",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "updated_at": "2023-05-05T09:00:35.477782Z",
- "usage_limit": 0,
- "ephemeral": true,
- "allow_extra_dns_labels": true,
- "key": "A6160****"
}
]Creates a setup key
New Setup Key request
| name required | string Setup Key name |
| type required | string Setup key type, one-off for single time usage and reusable |
| expires_in required | integer [ 86400 .. 31536000 ] Expiration time in seconds |
| auto_groups required | Array of strings List of group IDs to auto-assign to peers registered with this key |
| usage_limit required | integer A number of times this key can be used. The value of 0 indicates the unlimited usage. |
| ephemeral | boolean Indicate that the peer will be ephemeral or not |
| allow_extra_dns_labels | boolean Allow extra DNS labels to be added to the peer |
{- "name": "Default key",
- "type": "reusable",
- "expires_in": 86400,
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "usage_limit": 0,
- "ephemeral": true,
- "allow_extra_dns_labels": true
}{- "id": 2531583362,
- "name": "Default key",
- "expires": "2023-06-01T14:47:22.291057Z",
- "type": "reusable",
- "valid": true,
- "revoked": false,
- "used_times": 2,
- "last_used": "2023-05-05T09:00:35.477782Z",
- "state": "valid",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "updated_at": "2023-05-05T09:00:35.477782Z",
- "usage_limit": 0,
- "ephemeral": true,
- "allow_extra_dns_labels": true,
- "key": "A616097E-FCF0-48FA-9354-CA4A61142761"
}Get information about a setup key
| keyId required | string The unique identifier of a setup key |
{- "id": 2531583362,
- "name": "Default key",
- "expires": "2023-06-01T14:47:22.291057Z",
- "type": "reusable",
- "valid": true,
- "revoked": false,
- "used_times": 2,
- "last_used": "2023-05-05T09:00:35.477782Z",
- "state": "valid",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "updated_at": "2023-05-05T09:00:35.477782Z",
- "usage_limit": 0,
- "ephemeral": true,
- "allow_extra_dns_labels": true,
- "key": "A6160****"
}Update information about a setup key
| keyId required | string The unique identifier of a setup key |
update to Setup Key
| revoked required | boolean Setup key revocation status |
| auto_groups required | Array of strings List of group IDs to auto-assign to peers registered with this key |
{- "revoked": false,
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}{- "id": 2531583362,
- "name": "Default key",
- "expires": "2023-06-01T14:47:22.291057Z",
- "type": "reusable",
- "valid": true,
- "revoked": false,
- "used_times": 2,
- "last_used": "2023-05-05T09:00:35.477782Z",
- "state": "valid",
- "auto_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "updated_at": "2023-05-05T09:00:35.477782Z",
- "usage_limit": 0,
- "ephemeral": true,
- "allow_extra_dns_labels": true,
- "key": "A6160****"
}Returns a list of all groups
| name | string Example: name=devs Filter groups by name (exact match) |
[- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
]Creates a group
New Group request
| name required | string Group name identifier |
| peers | Array of strings List of peers ids |
Array of objects (Resource) |
{- "name": "devs",
- "peers": [
- "ch8i4ug6lnn4g9hqv7m1"
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}Get information about a group
| groupId required | string The unique identifier of a group |
{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}Update/Replace a group
| groupId required | string The unique identifier of a group |
Update Group request
| name required | string Group name identifier |
| peers | Array of strings List of peers ids |
Array of objects (Resource) |
{- "name": "devs",
- "peers": [
- "ch8i4ug6lnn4g9hqv7m1"
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}[- {
- "name": "ch8i4ug6lnn4g9hqv7mg",
- "description": "This is a default policy that allows connections between all the resources",
- "enabled": true,
- "id": "ch8i4ug6lnn4g9hqv7mg",
- "source_posture_checks": [
- "chacdk86lnnboviihd70"
], - "rules": [
- {
- "name": "Default",
- "description": "This is a default rule that allows connections between all the resources",
- "enabled": true,
- "action": "accept",
- "bidirectional": true,
- "protocol": "tcp",
- "ports": [
- "80"
], - "port_ranges": [
- {
- "start": 80,
- "end": 320
}
], - "authorized_groups": {
- "property1": [
- "group1"
], - "property2": [
- "group1"
]
}, - "id": "ch8i4ug6lnn4g9hqv7mg",
- "sources": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "sourceResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}, - "destinations": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "destinationResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
}
]
}
]Creates a policy
New Policy request
| name required | string Policy name identifier |
| description | string Policy friendly description |
| enabled required | boolean Policy status |
| source_posture_checks | Array of strings Posture checks ID's applied to policy source groups |
required | Array of objects (PolicyRuleUpdate) Policy rule object for policy UI editor |
{- "name": "ch8i4ug6lnn4g9hqv7mg",
- "description": "This is a default policy that allows connections between all the resources",
- "enabled": true,
- "source_posture_checks": [
- "chacdk86lnnboviihd70"
], - "rules": [
- {
- "name": "Default",
- "description": "This is a default rule that allows connections between all the resources",
- "enabled": true,
- "action": "accept",
- "bidirectional": true,
- "protocol": "tcp",
- "ports": [
- "80"
], - "port_ranges": [
- {
- "start": 80,
- "end": 320
}
], - "authorized_groups": {
- "property1": [
- "group1"
], - "property2": [
- "group1"
]
}, - "id": "ch8i4ug6lnn4g9hqv7mg",
- "sources": [
- "ch8i4ug6lnn4g9hqv797"
], - "sourceResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}, - "destinations": [
- "ch8i4ug6lnn4g9h7v7m0"
], - "destinationResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
}
]
}{- "name": "ch8i4ug6lnn4g9hqv7mg",
- "description": "This is a default policy that allows connections between all the resources",
- "enabled": true,
- "id": "ch8i4ug6lnn4g9hqv7mg",
- "source_posture_checks": [
- "chacdk86lnnboviihd70"
], - "rules": [
- {
- "name": "Default",
- "description": "This is a default rule that allows connections between all the resources",
- "enabled": true,
- "action": "accept",
- "bidirectional": true,
- "protocol": "tcp",
- "ports": [
- "80"
], - "port_ranges": [
- {
- "start": 80,
- "end": 320
}
], - "authorized_groups": {
- "property1": [
- "group1"
], - "property2": [
- "group1"
]
}, - "id": "ch8i4ug6lnn4g9hqv7mg",
- "sources": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "sourceResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}, - "destinations": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "destinationResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
}
]
}Get information about a Policies
| policyId required | string The unique identifier of a policy |
{- "name": "ch8i4ug6lnn4g9hqv7mg",
- "description": "This is a default policy that allows connections between all the resources",
- "enabled": true,
- "id": "ch8i4ug6lnn4g9hqv7mg",
- "source_posture_checks": [
- "chacdk86lnnboviihd70"
], - "rules": [
- {
- "name": "Default",
- "description": "This is a default rule that allows connections between all the resources",
- "enabled": true,
- "action": "accept",
- "bidirectional": true,
- "protocol": "tcp",
- "ports": [
- "80"
], - "port_ranges": [
- {
- "start": 80,
- "end": 320
}
], - "authorized_groups": {
- "property1": [
- "group1"
], - "property2": [
- "group1"
]
}, - "id": "ch8i4ug6lnn4g9hqv7mg",
- "sources": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "sourceResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}, - "destinations": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "destinationResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
}
]
}Update/Replace a Policy
| policyId required | string The unique identifier of a policy |
Update Policy request
| name required | string Policy name identifier |
| description | string Policy friendly description |
| enabled required | boolean Policy status |
| source_posture_checks | Array of strings Posture checks ID's applied to policy source groups |
required | Array of objects (PolicyRuleUpdate) Policy rule object for policy UI editor |
{- "name": "ch8i4ug6lnn4g9hqv7mg",
- "description": "This is a default policy that allows connections between all the resources",
- "enabled": true,
- "source_posture_checks": [
- "chacdk86lnnboviihd70"
], - "rules": [
- {
- "name": "Default",
- "description": "This is a default rule that allows connections between all the resources",
- "enabled": true,
- "action": "accept",
- "bidirectional": true,
- "protocol": "tcp",
- "ports": [
- "80"
], - "port_ranges": [
- {
- "start": 80,
- "end": 320
}
], - "authorized_groups": {
- "property1": [
- "group1"
], - "property2": [
- "group1"
]
}, - "id": "ch8i4ug6lnn4g9hqv7mg",
- "sources": [
- "ch8i4ug6lnn4g9hqv797"
], - "sourceResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}, - "destinations": [
- "ch8i4ug6lnn4g9h7v7m0"
], - "destinationResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
}
]
}{- "name": "ch8i4ug6lnn4g9hqv7mg",
- "description": "This is a default policy that allows connections between all the resources",
- "enabled": true,
- "id": "ch8i4ug6lnn4g9hqv7mg",
- "source_posture_checks": [
- "chacdk86lnnboviihd70"
], - "rules": [
- {
- "name": "Default",
- "description": "This is a default rule that allows connections between all the resources",
- "enabled": true,
- "action": "accept",
- "bidirectional": true,
- "protocol": "tcp",
- "ports": [
- "80"
], - "port_ranges": [
- {
- "start": 80,
- "end": 320
}
], - "authorized_groups": {
- "property1": [
- "group1"
], - "property2": [
- "group1"
]
}, - "id": "ch8i4ug6lnn4g9hqv7mg",
- "sources": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "sourceResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}, - "destinations": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "destinationResource": {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
}
]
}Returns a list of all posture checks
[- {
- "id": "ch8i4ug6lnn4g9hqv7mg",
- "name": "Default",
- "description": "This checks if the peer is running required NexusLink's version",
- "checks": {
- "nb_version_check": {
- "min_version": "14.3"
}, - "os_version_check": {
- "android": {
- "min_version": "13"
}, - "ios": {
- "min_version": "17.3.1"
}, - "darwin": {
- "min_version": "14.2.1"
}, - "linux": {
- "min_kernel_version": "5.3.3"
}, - "windows": {
- "min_kernel_version": "10.0.1234"
}
}, - "geo_location_check": {
- "locations": [
- {
- "country_code": "DE",
- "city_name": "Berlin"
}
], - "action": "allow"
}, - "peer_network_range_check": {
- "ranges": [
- "192.168.1.0/24",
- "10.0.0.0/8",
- "1.0.0.0/24",
- "2.2.2.2/32",
- "2001:db8:1234:1a00::/56"
], - "action": "allow"
}, - "process_check": {
- "processes": [
- {
- "linux_path": "/usr/local/bin/nexuslink",
- "mac_path": "/Applications/NexusLink.app/Contents/MacOS/nexuslink",
- "windows_path": "C:
rogramData
exusLink\nexuslink.exe"
}
]
}
}
}
]Creates a posture check
New posture check request
| name required | string Posture check name identifier |
| description required | string Posture check friendly description |
object (Checks) List of objects that perform the actual checks |
{- "name": "Default",
- "description": "This checks if the peer is running required NexusLink's version",
- "checks": {
- "nb_version_check": {
- "min_version": "14.3"
}, - "os_version_check": {
- "android": {
- "min_version": "13"
}, - "ios": {
- "min_version": "17.3.1"
}, - "darwin": {
- "min_version": "14.2.1"
}, - "linux": {
- "min_kernel_version": "5.3.3"
}, - "windows": {
- "min_kernel_version": "10.0.1234"
}
}, - "geo_location_check": {
- "locations": [
- {
- "country_code": "DE",
- "city_name": "Berlin"
}
], - "action": "allow"
}, - "peer_network_range_check": {
- "ranges": [
- "192.168.1.0/24",
- "10.0.0.0/8",
- "1.0.0.0/24",
- "2.2.2.2/32",
- "2001:db8:1234:1a00::/56"
], - "action": "allow"
}, - "process_check": {
- "processes": [
- {
- "linux_path": "/usr/local/bin/nexuslink",
- "mac_path": "/Applications/NexusLink.app/Contents/MacOS/nexuslink",
- "windows_path": "C:
rogramData
exusLink\nexuslink.exe"
}
]
}
}
}{- "id": "ch8i4ug6lnn4g9hqv7mg",
- "name": "Default",
- "description": "This checks if the peer is running required NexusLink's version",
- "checks": {
- "nb_version_check": {
- "min_version": "14.3"
}, - "os_version_check": {
- "android": {
- "min_version": "13"
}, - "ios": {
- "min_version": "17.3.1"
}, - "darwin": {
- "min_version": "14.2.1"
}, - "linux": {
- "min_kernel_version": "5.3.3"
}, - "windows": {
- "min_kernel_version": "10.0.1234"
}
}, - "geo_location_check": {
- "locations": [
- {
- "country_code": "DE",
- "city_name": "Berlin"
}
], - "action": "allow"
}, - "peer_network_range_check": {
- "ranges": [
- "192.168.1.0/24",
- "10.0.0.0/8",
- "1.0.0.0/24",
- "2.2.2.2/32",
- "2001:db8:1234:1a00::/56"
], - "action": "allow"
}, - "process_check": {
- "processes": [
- {
- "linux_path": "/usr/local/bin/nexuslink",
- "mac_path": "/Applications/NexusLink.app/Contents/MacOS/nexuslink",
- "windows_path": "C:
rogramData
exusLink\nexuslink.exe"
}
]
}
}
}Get information about a posture check
| postureCheckId required | string The unique identifier of a posture check |
{- "id": "ch8i4ug6lnn4g9hqv7mg",
- "name": "Default",
- "description": "This checks if the peer is running required NexusLink's version",
- "checks": {
- "nb_version_check": {
- "min_version": "14.3"
}, - "os_version_check": {
- "android": {
- "min_version": "13"
}, - "ios": {
- "min_version": "17.3.1"
}, - "darwin": {
- "min_version": "14.2.1"
}, - "linux": {
- "min_kernel_version": "5.3.3"
}, - "windows": {
- "min_kernel_version": "10.0.1234"
}
}, - "geo_location_check": {
- "locations": [
- {
- "country_code": "DE",
- "city_name": "Berlin"
}
], - "action": "allow"
}, - "peer_network_range_check": {
- "ranges": [
- "192.168.1.0/24",
- "10.0.0.0/8",
- "1.0.0.0/24",
- "2.2.2.2/32",
- "2001:db8:1234:1a00::/56"
], - "action": "allow"
}, - "process_check": {
- "processes": [
- {
- "linux_path": "/usr/local/bin/nexuslink",
- "mac_path": "/Applications/NexusLink.app/Contents/MacOS/nexuslink",
- "windows_path": "C:
rogramData
exusLink\nexuslink.exe"
}
]
}
}
}Update/Replace a posture check
| postureCheckId required | string The unique identifier of a posture check |
Update Rule request
| name required | string Posture check name identifier |
| description required | string Posture check friendly description |
object (Checks) List of objects that perform the actual checks |
{- "name": "Default",
- "description": "This checks if the peer is running required NexusLink's version",
- "checks": {
- "nb_version_check": {
- "min_version": "14.3"
}, - "os_version_check": {
- "android": {
- "min_version": "13"
}, - "ios": {
- "min_version": "17.3.1"
}, - "darwin": {
- "min_version": "14.2.1"
}, - "linux": {
- "min_kernel_version": "5.3.3"
}, - "windows": {
- "min_kernel_version": "10.0.1234"
}
}, - "geo_location_check": {
- "locations": [
- {
- "country_code": "DE",
- "city_name": "Berlin"
}
], - "action": "allow"
}, - "peer_network_range_check": {
- "ranges": [
- "192.168.1.0/24",
- "10.0.0.0/8",
- "1.0.0.0/24",
- "2.2.2.2/32",
- "2001:db8:1234:1a00::/56"
], - "action": "allow"
}, - "process_check": {
- "processes": [
- {
- "linux_path": "/usr/local/bin/nexuslink",
- "mac_path": "/Applications/NexusLink.app/Contents/MacOS/nexuslink",
- "windows_path": "C:
rogramData
exusLink\nexuslink.exe"
}
]
}
}
}{- "id": "ch8i4ug6lnn4g9hqv7mg",
- "name": "Default",
- "description": "This checks if the peer is running required NexusLink's version",
- "checks": {
- "nb_version_check": {
- "min_version": "14.3"
}, - "os_version_check": {
- "android": {
- "min_version": "13"
}, - "ios": {
- "min_version": "17.3.1"
}, - "darwin": {
- "min_version": "14.2.1"
}, - "linux": {
- "min_kernel_version": "5.3.3"
}, - "windows": {
- "min_kernel_version": "10.0.1234"
}
}, - "geo_location_check": {
- "locations": [
- {
- "country_code": "DE",
- "city_name": "Berlin"
}
], - "action": "allow"
}, - "peer_network_range_check": {
- "ranges": [
- "192.168.1.0/24",
- "10.0.0.0/8",
- "1.0.0.0/24",
- "2.2.2.2/32",
- "2001:db8:1234:1a00::/56"
], - "action": "allow"
}, - "process_check": {
- "processes": [
- {
- "linux_path": "/usr/local/bin/nexuslink",
- "mac_path": "/Applications/NexusLink.app/Contents/MacOS/nexuslink",
- "windows_path": "C:
rogramData
exusLink\nexuslink.exe"
}
]
}
}
}[- {
- "id": "chacdk86lnnboviihd7g",
- "network_type": "IPv4",
- "description": "My first route",
- "network_id": "Route 1",
- "enabled": true,
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "network": "10.64.0.0/24",
- "domains": [
- "example.com"
], - "metric": 9999,
- "masquerade": true,
- "groups": [
- "chacdk86lnnboviihd70"
], - "keep_route": true,
- "access_control_groups": [
- "chacbco6lnnbn6cg5s91"
], - "skip_auto_apply": false
}
]Creates a Route
New Routes request
| description required | string Route description |
| network_id required | string [ 1 .. 40 ] characters Route network identifier, to group HA routes |
| enabled required | boolean Route status |
| peer | string Peer Identifier associated with route. This property can not be set together with |
| peer_groups | Array of strings Peers Group Identifier associated with route. This property can not be set together with |
| network | string Network range in CIDR format, Conflicts with domains |
| domains | Array of strings[ items [ 1 .. 32 ] characters ] Domain list to be dynamically resolved. Max of 32 domains can be added per route configuration. Conflicts with network |
| metric required | integer [ 1 .. 9999 ] Route metric number. Lowest number has higher priority |
| masquerade required | boolean Indicate if peer should masquerade traffic to this route's prefix |
| groups required | Array of strings Group IDs containing routing peers |
| keep_route required | boolean Indicate if the route should be kept after a domain doesn't resolve that IP anymore |
| access_control_groups | Array of strings Access control group identifier associated with route. |
| skip_auto_apply | boolean Indicate if this exit node route (0.0.0.0/0) should skip auto-application for client routing |
{- "description": "My first route",
- "network_id": "Route 1",
- "enabled": true,
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "network": "10.64.0.0/24",
- "domains": [
- "example.com"
], - "metric": 9999,
- "masquerade": true,
- "groups": [
- "chacdk86lnnboviihd70"
], - "keep_route": true,
- "access_control_groups": [
- "chacbco6lnnbn6cg5s91"
], - "skip_auto_apply": false
}{- "id": "chacdk86lnnboviihd7g",
- "network_type": "IPv4",
- "description": "My first route",
- "network_id": "Route 1",
- "enabled": true,
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "network": "10.64.0.0/24",
- "domains": [
- "example.com"
], - "metric": 9999,
- "masquerade": true,
- "groups": [
- "chacdk86lnnboviihd70"
], - "keep_route": true,
- "access_control_groups": [
- "chacbco6lnnbn6cg5s91"
], - "skip_auto_apply": false
}Get information about a Routes
| routeId required | string The unique identifier of a route |
{- "id": "chacdk86lnnboviihd7g",
- "network_type": "IPv4",
- "description": "My first route",
- "network_id": "Route 1",
- "enabled": true,
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "network": "10.64.0.0/24",
- "domains": [
- "example.com"
], - "metric": 9999,
- "masquerade": true,
- "groups": [
- "chacdk86lnnboviihd70"
], - "keep_route": true,
- "access_control_groups": [
- "chacbco6lnnbn6cg5s91"
], - "skip_auto_apply": false
}Update/Replace a Route
| routeId required | string The unique identifier of a route |
Update Route request
| description required | string Route description |
| network_id required | string [ 1 .. 40 ] characters Route network identifier, to group HA routes |
| enabled required | boolean Route status |
| peer | string Peer Identifier associated with route. This property can not be set together with |
| peer_groups | Array of strings Peers Group Identifier associated with route. This property can not be set together with |
| network | string Network range in CIDR format, Conflicts with domains |
| domains | Array of strings[ items [ 1 .. 32 ] characters ] Domain list to be dynamically resolved. Max of 32 domains can be added per route configuration. Conflicts with network |
| metric required | integer [ 1 .. 9999 ] Route metric number. Lowest number has higher priority |
| masquerade required | boolean Indicate if peer should masquerade traffic to this route's prefix |
| groups required | Array of strings Group IDs containing routing peers |
| keep_route required | boolean Indicate if the route should be kept after a domain doesn't resolve that IP anymore |
| access_control_groups | Array of strings Access control group identifier associated with route. |
| skip_auto_apply | boolean Indicate if this exit node route (0.0.0.0/0) should skip auto-application for client routing |
{- "description": "My first route",
- "network_id": "Route 1",
- "enabled": true,
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "network": "10.64.0.0/24",
- "domains": [
- "example.com"
], - "metric": 9999,
- "masquerade": true,
- "groups": [
- "chacdk86lnnboviihd70"
], - "keep_route": true,
- "access_control_groups": [
- "chacbco6lnnbn6cg5s91"
], - "skip_auto_apply": false
}{- "id": "chacdk86lnnboviihd7g",
- "network_type": "IPv4",
- "description": "My first route",
- "network_id": "Route 1",
- "enabled": true,
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "network": "10.64.0.0/24",
- "domains": [
- "example.com"
], - "metric": 9999,
- "masquerade": true,
- "groups": [
- "chacdk86lnnboviihd70"
], - "keep_route": true,
- "access_control_groups": [
- "chacbco6lnnbn6cg5s91"
], - "skip_auto_apply": false
}Returns a list of all Nameserver Groups
[- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "Google DNS",
- "description": "Google DNS servers",
- "nameservers": [
- {
- "ip": "8.8.8.8",
- "ns_type": "udp",
- "port": 53
}
], - "enabled": true,
- "groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "primary": true,
- "domains": [
- "example.com"
], - "search_domains_enabled": true
}
]Creates a Nameserver Group
New Nameserver Groups request
| name required | string [ 1 .. 40 ] characters Name of nameserver group name |
| description required | string Description of the nameserver group |
required | Array of objects (Nameserver) [ 1 .. 3 ] characters Nameserver list |
| enabled required | boolean Nameserver group status |
| groups required | Array of strings Distribution group IDs that defines group of peers that will use this nameserver group |
| primary required | boolean Defines if a nameserver group is primary that resolves all domains. It should be true only if domains list is empty. |
| domains required | Array of strings[ items [ 1 .. 255 ] characters ] Match domain list. It should be empty only if primary is true. |
| search_domains_enabled required | boolean Search domain status for match domains. It should be true only if domains list is not empty. |
{- "name": "Google DNS",
- "description": "Google DNS servers",
- "nameservers": [
- {
- "ip": "8.8.8.8",
- "ns_type": "udp",
- "port": 53
}
], - "enabled": true,
- "groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "primary": true,
- "domains": [
- "example.com"
], - "search_domains_enabled": true
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "Google DNS",
- "description": "Google DNS servers",
- "nameservers": [
- {
- "ip": "8.8.8.8",
- "ns_type": "udp",
- "port": 53
}
], - "enabled": true,
- "groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "primary": true,
- "domains": [
- "example.com"
], - "search_domains_enabled": true
}Get information about a Nameserver Groups
| nsgroupId required | string The unique identifier of a Nameserver Group |
{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "Google DNS",
- "description": "Google DNS servers",
- "nameservers": [
- {
- "ip": "8.8.8.8",
- "ns_type": "udp",
- "port": 53
}
], - "enabled": true,
- "groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "primary": true,
- "domains": [
- "example.com"
], - "search_domains_enabled": true
}Update/Replace a Nameserver Group
| nsgroupId required | string The unique identifier of a Nameserver Group |
Update Nameserver Group request
| name required | string [ 1 .. 40 ] characters Name of nameserver group name |
| description required | string Description of the nameserver group |
required | Array of objects (Nameserver) [ 1 .. 3 ] characters Nameserver list |
| enabled required | boolean Nameserver group status |
| groups required | Array of strings Distribution group IDs that defines group of peers that will use this nameserver group |
| primary required | boolean Defines if a nameserver group is primary that resolves all domains. It should be true only if domains list is empty. |
| domains required | Array of strings[ items [ 1 .. 255 ] characters ] Match domain list. It should be empty only if primary is true. |
| search_domains_enabled required | boolean Search domain status for match domains. It should be true only if domains list is not empty. |
{- "name": "Google DNS",
- "description": "Google DNS servers",
- "nameservers": [
- {
- "ip": "8.8.8.8",
- "ns_type": "udp",
- "port": 53
}
], - "enabled": true,
- "groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "primary": true,
- "domains": [
- "example.com"
], - "search_domains_enabled": true
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "Google DNS",
- "description": "Google DNS servers",
- "nameservers": [
- {
- "ip": "8.8.8.8",
- "ns_type": "udp",
- "port": 53
}
], - "enabled": true,
- "groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "primary": true,
- "domains": [
- "example.com"
], - "search_domains_enabled": true
}Updates a DNS settings object
A DNS settings object
| disabled_management_groups required | Array of strings Groups whose DNS management is disabled |
{- "disabled_management_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}{- "disabled_management_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}Returns a list of all custom DNS zones
[- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "records": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "www.example.com",
- "type": "A",
- "content": "192.168.1.1",
- "ttl": 300
}
], - "name": "Office Zone",
- "domain": "example.com",
- "enabled": true,
- "enable_search_domain": false,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}
]Creates a new custom DNS zone
A DNS zone object
| name required | string [ 1 .. 255 ] characters Zone name identifier |
| domain required | string Zone domain (FQDN) |
| enabled | boolean Default: true Zone status |
| enable_search_domain required | boolean Enable this zone as a search domain |
| distribution_groups required | Array of strings Group IDs that defines groups of peers that will resolve this zone |
{- "name": "Office Zone",
- "domain": "example.com",
- "enabled": true,
- "enable_search_domain": false,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "records": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "www.example.com",
- "type": "A",
- "content": "192.168.1.1",
- "ttl": 300
}
], - "name": "Office Zone",
- "domain": "example.com",
- "enabled": true,
- "enable_search_domain": false,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}Returns information about a specific DNS zone
| zoneId required | string Example: chacbco6lnnbn6cg5s91 The unique identifier of a zone |
{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "records": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "www.example.com",
- "type": "A",
- "content": "192.168.1.1",
- "ttl": 300
}
], - "name": "Office Zone",
- "domain": "example.com",
- "enabled": true,
- "enable_search_domain": false,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}Updates a custom DNS zone
| zoneId required | string Example: chacbco6lnnbn6cg5s91 The unique identifier of a zone |
A DNS zone object
| name required | string [ 1 .. 255 ] characters Zone name identifier |
| domain required | string Zone domain (FQDN) |
| enabled | boolean Default: true Zone status |
| enable_search_domain required | boolean Enable this zone as a search domain |
| distribution_groups required | Array of strings Group IDs that defines groups of peers that will resolve this zone |
{- "name": "Office Zone",
- "domain": "example.com",
- "enabled": true,
- "enable_search_domain": false,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "records": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "www.example.com",
- "type": "A",
- "content": "192.168.1.1",
- "ttl": 300
}
], - "name": "Office Zone",
- "domain": "example.com",
- "enabled": true,
- "enable_search_domain": false,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}Returns a list of all DNS records in a zone
| zoneId required | string Example: chacbco6lnnbn6cg5s91 The unique identifier of a zone |
[- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "www.example.com",
- "type": "A",
- "content": "192.168.1.1",
- "ttl": 300
}
]Creates a new DNS record in a zone
| zoneId required | string Example: chacbco6lnnbn6cg5s91 The unique identifier of a zone |
A DNS record object
| name required | string FQDN for the DNS record. Must be a subdomain within or match the zone's domain. |
| type required | string (DNSRecordType) Enum: "A" "AAAA" "CNAME" DNS record type |
| content required | string [ 1 .. 255 ] characters DNS record content (IP address for A/AAAA, domain for CNAME) |
| ttl required | integer >= 0 Time to live in seconds |
{- "name": "www.example.com",
- "type": "A",
- "content": "192.168.1.1",
- "ttl": 300
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "www.example.com",
- "type": "A",
- "content": "192.168.1.1",
- "ttl": 300
}Returns information about a specific DNS record
| zoneId required | string Example: chacbco6lnnbn6cg5s91 The unique identifier of a zone |
| recordId required | string Example: chacbco6lnnbn6cg5s92 The unique identifier of a DNS record |
{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "www.example.com",
- "type": "A",
- "content": "192.168.1.1",
- "ttl": 300
}Updates a DNS record in a zone
| zoneId required | string Example: chacbco6lnnbn6cg5s91 The unique identifier of a zone |
| recordId required | string Example: chacbco6lnnbn6cg5s92 The unique identifier of a DNS record |
A DNS record object
| name required | string FQDN for the DNS record. Must be a subdomain within or match the zone's domain. |
| type required | string (DNSRecordType) Enum: "A" "AAAA" "CNAME" DNS record type |
| content required | string [ 1 .. 255 ] characters DNS record content (IP address for A/AAAA, domain for CNAME) |
| ttl required | integer >= 0 Time to live in seconds |
{- "name": "www.example.com",
- "type": "A",
- "content": "192.168.1.1",
- "ttl": 300
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "www.example.com",
- "type": "A",
- "content": "192.168.1.1",
- "ttl": 300
}Returns a list of all audit events
[- {
- "id": 10,
- "timestamp": "2023-05-05T10:04:37.473542Z",
- "activity": "Route created",
- "activity_code": "route.add",
- "initiator_id": "google-oauth2|123456789012345678901",
- "initiator_name": "John Doe",
- "initiator_email": "demo@nexusremotesolutions.com",
- "target_id": "chad9d86lnnc59g18ou0",
- "meta": {
- "name": "my route",
- "network_range": "10.64.0.0/24",
- "peer_id": "chacbco6lnnbn6cg5s91"
}
}
]Returns a list of all network traffic events
| page | integer >= 1 Default: 1 Page number |
| page_size | integer [ 1 .. 50000 ] Default: 1000 Number of items per page |
| user_id | string Filter by user ID |
| reporter_id | string Filter by reporter ID |
| source_id | string Filter by source endpoint ID |
| destination_id | string Filter by destination endpoint ID |
| protocol | integer Filter by protocol |
| type | string Enum: "TYPE_UNKNOWN" "TYPE_START" "TYPE_END" "TYPE_DROP" Filter by event type |
| connection_type | string Enum: "P2P" "ROUTED" Filter by connection type |
| direction | string Enum: "INGRESS" "EGRESS" "DIRECTION_UNKNOWN" Filter by direction |
| search | string Case-insensitive partial match on user email, source/destination names, and source/destination addresses |
| start_date | string <date-time> Start date for filtering events (ISO 8601 format, e.g., 2024-01-01T00:00:00Z). |
| end_date | string <date-time> End date for filtering events (ISO 8601 format, e.g., 2024-01-31T23:59:59Z). |
{- "data": [
- {
- "flow_id": "61092452-b17c-4b14-b7cf-a2158c549826",
- "reporter_id": "ch8i4ug6lnn4g9hqv7m0",
- "source": {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "type": "PEER",
- "name": "My Peer",
- "geo_location": {
- "city_name": "Berlin",
- "country_code": "DE"
}, - "os": "Linux",
- "address": "100.64.0.10:51820",
- "dns_label": "*.mydomain.com"
}, - "destination": {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "type": "PEER",
- "name": "My Peer",
- "geo_location": {
- "city_name": "Berlin",
- "country_code": "DE"
}, - "os": "Linux",
- "address": "100.64.0.10:51820",
- "dns_label": "*.mydomain.com"
}, - "user": {
- "id": "google-oauth2|123456789012345678901",
- "email": "alice@nexusremotesolutions.com",
- "name": "Alice Smith"
}, - "policy": {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "All to All"
}, - "icmp": {
- "type": 8,
- "code": 0
}, - "protocol": 6,
- "direction": "INGRESS",
- "rx_bytes": 1234,
- "rx_packets": 5,
- "tx_bytes": 1234,
- "tx_packets": 5,
- "num_of_starts": 3,
- "num_of_ends": 4,
- "num_of_drops": 5,
- "window_start": "2025-03-20T16:23:58.125397Z",
- "window_end": "2025-03-20T16:23:58.125397Z",
- "events": [
- {
- "type": "TYPE_START",
- "timestamp": "2025-03-20T16:23:58.125397Z"
}
]
}
], - "page": 0,
- "page_size": 0,
- "total_records": 0,
- "total_pages": 0
}Returns a paginated list of all reverse proxy access log entries
| page | integer >= 1 Default: 1 Page number for pagination (1-indexed) |
| page_size | integer [ 1 .. 100 ] Default: 50 Number of items per page (max 100) |
| sort_by | string Default: "timestamp" Enum: "timestamp" "url" "host" "path" "method" "status_code" "duration" "source_ip" "user_id" "auth_method" "reason" Field to sort by (url sorts by host then path) |
| sort_order | string Default: "desc" Enum: "asc" "desc" Sort order (ascending or descending) |
| search | string General search across request ID, host, path, source IP, user email, and user name |
| source_ip | string Filter by source IP address |
| host | string Filter by host header |
| path | string Filter by request path (supports partial matching) |
| user_id | string Filter by authenticated user ID |
| user_email | string Filter by user email (partial matching) |
| user_name | string Filter by user name (partial matching) |
| method | string Enum: "GET" "POST" "PUT" "PATCH" "DELETE" "HEAD" "OPTIONS" Filter by HTTP method |
| status | string Enum: "success" "failed" Filter by status (success = 2xx/3xx, failed = 1xx/4xx/5xx) |
| status_code | integer [ 100 .. 599 ] Filter by HTTP status code |
| start_date | string <date-time> Filter by timestamp >= start_date (RFC3339 format) |
| end_date | string <date-time> Filter by timestamp <= end_date (RFC3339 format) |
{- "data": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "service_id": "ch8i4ug6lnn4g9hqv7m0",
- "timestamp": "2024-01-31T15:30:00Z",
- "method": "GET",
- "host": "example.com",
- "path": "/api/users",
- "duration_ms": 150,
- "status_code": 200,
- "source_ip": "192.168.1.100",
- "reason": "Authentication failed",
- "user_id": "user-123",
- "auth_method_used": "oidc",
- "country_code": "US",
- "city_name": "San Francisco",
- "subdivision_code": "CA",
- "bytes_upload": 1024,
- "bytes_download": 8192,
- "protocol": "http",
- "metadata": {
- "property1": "string",
- "property2": "string"
}
}
], - "page": 1,
- "page_size": 50,
- "total_records": 523,
- "total_pages": 11
}Returns a list of accounts of a user. Always returns a list of one account.
[- {
- "id": "ch8i4ug6lnn4g9hqv7l0",
- "settings": {
- "peer_login_expiration_enabled": true,
- "peer_login_expiration": 43200,
- "peer_inactivity_expiration_enabled": true,
- "peer_inactivity_expiration": 43200,
- "regular_users_view_blocked": true,
- "groups_propagation_enabled": true,
- "jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles",
- "jwt_allow_groups": [
- "Administrators"
], - "routing_peer_dns_resolution_enabled": true,
- "dns_domain": "my-organization.org",
- "network_range": "string",
- "network_range_v6": "fd00:1234:5678::/64",
- "peer_expose_enabled": false,
- "peer_expose_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "extra": {
- "peer_approval_enabled": true,
- "user_approval_required": false,
- "network_traffic_logs_enabled": true,
- "network_traffic_logs_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "network_traffic_packet_counter_enabled": true
}, - "lazy_connection_enabled": true,
- "auto_update_version": "0.51.2",
- "auto_update_always": false,
- "metrics_push_enabled": false,
- "agent_network_only": false,
- "dashboard_features": {
- "agent_network": true
}, - "embedded_idp_enabled": false,
- "local_auth_disabled": false,
- "local_mfa_enabled": false,
- "ipv6_enabled_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}, - "domain": "nexusremotesolutions.com",
- "domain_category": "private",
- "created_at": "2023-05-05T09:00:35.477782Z",
- "created_by": "google-oauth2|277474792786460067937",
- "onboarding": {
- "signup_form_pending": true,
- "onboarding_flow_pending": false
}
}
]Update information about an account
| accountId required | string The unique identifier of an account |
update an account
required | object (AccountSettings) |
object (AccountOnboarding) |
{- "settings": {
- "peer_login_expiration_enabled": true,
- "peer_login_expiration": 43200,
- "peer_inactivity_expiration_enabled": true,
- "peer_inactivity_expiration": 43200,
- "regular_users_view_blocked": true,
- "groups_propagation_enabled": true,
- "jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles",
- "jwt_allow_groups": [
- "Administrators"
], - "routing_peer_dns_resolution_enabled": true,
- "dns_domain": "my-organization.org",
- "network_range": "string",
- "network_range_v6": "fd00:1234:5678::/64",
- "peer_expose_enabled": false,
- "peer_expose_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "extra": {
- "peer_approval_enabled": true,
- "user_approval_required": false,
- "network_traffic_logs_enabled": true,
- "network_traffic_logs_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "network_traffic_packet_counter_enabled": true
}, - "lazy_connection_enabled": true,
- "auto_update_version": "0.51.2",
- "auto_update_always": false,
- "metrics_push_enabled": false,
- "agent_network_only": false,
- "dashboard_features": {
- "agent_network": true
}, - "local_mfa_enabled": false,
- "ipv6_enabled_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}, - "onboarding": {
- "signup_form_pending": true,
- "onboarding_flow_pending": false
}
}{- "id": "ch8i4ug6lnn4g9hqv7l0",
- "settings": {
- "peer_login_expiration_enabled": true,
- "peer_login_expiration": 43200,
- "peer_inactivity_expiration_enabled": true,
- "peer_inactivity_expiration": 43200,
- "regular_users_view_blocked": true,
- "groups_propagation_enabled": true,
- "jwt_groups_enabled": true,
- "jwt_groups_claim_name": "roles",
- "jwt_allow_groups": [
- "Administrators"
], - "routing_peer_dns_resolution_enabled": true,
- "dns_domain": "my-organization.org",
- "network_range": "string",
- "network_range_v6": "fd00:1234:5678::/64",
- "peer_expose_enabled": false,
- "peer_expose_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "extra": {
- "peer_approval_enabled": true,
- "user_approval_required": false,
- "network_traffic_logs_enabled": true,
- "network_traffic_logs_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "network_traffic_packet_counter_enabled": true
}, - "lazy_connection_enabled": true,
- "auto_update_version": "0.51.2",
- "auto_update_always": false,
- "metrics_push_enabled": false,
- "agent_network_only": false,
- "dashboard_features": {
- "agent_network": true
}, - "embedded_idp_enabled": false,
- "local_auth_disabled": false,
- "local_mfa_enabled": false,
- "ipv6_enabled_groups": [
- "ch8i4ug6lnn4g9hqv7m0"
]
}, - "domain": "nexusremotesolutions.com",
- "domain_category": "private",
- "created_at": "2023-05-05T09:00:35.477782Z",
- "created_by": "google-oauth2|277474792786460067937",
- "onboarding": {
- "signup_form_pending": true,
- "onboarding_flow_pending": false
}
}Returns a list of all ingress port allocations for a peer
| peerId required | string The unique identifier of a peer |
| name | string Filters ingress port allocations by name |
[- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "Ingress Peer Allocation 1",
- "ingress_peer_id": "x7p3kqf2rdd8j5zxw4n9",
- "region": "germany",
- "enabled": true,
- "ingress_ip": "192.34.0.123",
- "port_range_mappings": [
- {
- "translated_start": 80,
- "translated_end": 320,
- "ingress_start": 1080,
- "ingress_end": 1320,
- "protocol": "tcp"
}
]
}
]Creates a new ingress port allocation for a peer
| peerId required | string The unique identifier of a peer |
New Ingress Port Allocation request
| name required | string Name of the ingress port allocation |
| enabled required | boolean Indicates if an ingress port allocation is enabled |
Array of objects (IngressPortAllocationRequestPortRange) List of port ranges that are forwarded by the ingress peer | |
object (IngressPortAllocationRequestDirectPort) Direct port allocation |
{- "name": "Ingress Port Allocation 1",
- "enabled": true,
- "port_ranges": [
- {
- "start": 80,
- "end": 320,
- "protocol": "tcp"
}
], - "direct_port": {
- "count": 5,
- "protocol": "udp"
}
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "Ingress Peer Allocation 1",
- "ingress_peer_id": "x7p3kqf2rdd8j5zxw4n9",
- "region": "germany",
- "enabled": true,
- "ingress_ip": "192.34.0.123",
- "port_range_mappings": [
- {
- "translated_start": 80,
- "translated_end": 320,
- "ingress_start": 1080,
- "ingress_end": 1320,
- "protocol": "tcp"
}
]
}Get information about an ingress port allocation
| peerId required | string The unique identifier of a peer |
| allocationId required | string The unique identifier of an ingress port allocation |
{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "Ingress Peer Allocation 1",
- "ingress_peer_id": "x7p3kqf2rdd8j5zxw4n9",
- "region": "germany",
- "enabled": true,
- "ingress_ip": "192.34.0.123",
- "port_range_mappings": [
- {
- "translated_start": 80,
- "translated_end": 320,
- "ingress_start": 1080,
- "ingress_end": 1320,
- "protocol": "tcp"
}
]
}Update information about an ingress port allocation
| peerId required | string The unique identifier of a peer |
| allocationId required | string The unique identifier of an ingress port allocation |
update an ingress port allocation
| name required | string Name of the ingress port allocation |
| enabled required | boolean Indicates if an ingress port allocation is enabled |
Array of objects (IngressPortAllocationRequestPortRange) List of port ranges that are forwarded by the ingress peer | |
object (IngressPortAllocationRequestDirectPort) Direct port allocation |
{- "name": "Ingress Port Allocation 1",
- "enabled": true,
- "port_ranges": [
- {
- "start": 80,
- "end": 320,
- "protocol": "tcp"
}
], - "direct_port": {
- "count": 5,
- "protocol": "udp"
}
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "Ingress Peer Allocation 1",
- "ingress_peer_id": "x7p3kqf2rdd8j5zxw4n9",
- "region": "germany",
- "enabled": true,
- "ingress_ip": "192.34.0.123",
- "port_range_mappings": [
- {
- "translated_start": 80,
- "translated_end": 320,
- "ingress_start": 1080,
- "ingress_end": 1320,
- "protocol": "tcp"
}
]
}Returns a list of all ingress peers
[- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "peer_id": "x7p3kqf2rdd8j5zxw4n9",
- "ingress_ip": "192.34.0.123",
- "available_ports": {
- "tcp": 45765,
- "udp": 50000
}, - "enabled": true,
- "connected": true,
- "fallback": true,
- "region": "germany"
}
]Creates a new ingress peer
New Ingress Peer request
| peer_id required | string ID of the peer that is used as an ingress peer |
| enabled required | boolean Defines if an ingress peer is enabled |
| fallback required | boolean Defines if an ingress peer can be used as a fallback if no ingress peer can be found in the region of the forwarded peer |
{- "peer_id": "ch8i4ug6lnn4g9hqv7m0",
- "enabled": true,
- "fallback": true
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "peer_id": "x7p3kqf2rdd8j5zxw4n9",
- "ingress_ip": "192.34.0.123",
- "available_ports": {
- "tcp": 45765,
- "udp": 50000
}, - "enabled": true,
- "connected": true,
- "fallback": true,
- "region": "germany"
}Get information about an ingress peer
| ingressPeerId required | string The unique identifier of an ingress peer |
{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "peer_id": "x7p3kqf2rdd8j5zxw4n9",
- "ingress_ip": "192.34.0.123",
- "available_ports": {
- "tcp": 45765,
- "udp": 50000
}, - "enabled": true,
- "connected": true,
- "fallback": true,
- "region": "germany"
}Update information about an ingress peer
| ingressPeerId required | string The unique identifier of an ingress peer |
update an ingress peer
| enabled required | boolean Defines if an ingress peer is enabled |
| fallback required | boolean Defines if an ingress peer can be used as a fallback if no ingress peer can be found in the region of the forwarded peer |
{- "enabled": true,
- "fallback": true
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "peer_id": "x7p3kqf2rdd8j5zxw4n9",
- "ingress_ip": "192.34.0.123",
- "available_ports": {
- "tcp": 45765,
- "udp": 50000
}, - "enabled": true,
- "connected": true,
- "fallback": true,
- "region": "germany"
}Returns a list of all identity providers configured for the account
[- {
- "id": "ch8i4ug6lnn4g9hqv7l0",
- "type": "oidc",
- "name": "My OIDC Provider",
- "client_id": "123456789.apps.googleusercontent.com"
}
]Creates a new identity provider configuration
Identity provider configuration
| type required | string (IdentityProviderType) Enum: "oidc" "zitadel" "entra" "google" "okta" "pocketid" "microsoft" "adfs" Type of identity provider |
| name required | string Human-readable name for the identity provider |
| issuer required | string OIDC issuer URL |
| client_id required | string OAuth2 client ID |
| client_secret required | string OAuth2 client secret |
{- "type": "oidc",
- "name": "My OIDC Provider",
- "client_id": "123456789.apps.googleusercontent.com",
- "client_secret": "secret123"
}{- "id": "ch8i4ug6lnn4g9hqv7l0",
- "type": "oidc",
- "name": "My OIDC Provider",
- "client_id": "123456789.apps.googleusercontent.com"
}Get information about a specific identity provider
| idpId required | string The unique identifier of an identity provider |
{- "id": "ch8i4ug6lnn4g9hqv7l0",
- "type": "oidc",
- "name": "My OIDC Provider",
- "client_id": "123456789.apps.googleusercontent.com"
}Update an existing identity provider configuration
| idpId required | string The unique identifier of an identity provider |
Identity provider update
| type required | string (IdentityProviderType) Enum: "oidc" "zitadel" "entra" "google" "okta" "pocketid" "microsoft" "adfs" Type of identity provider |
| name required | string Human-readable name for the identity provider |
| issuer required | string OIDC issuer URL |
| client_id required | string OAuth2 client ID |
| client_secret required | string OAuth2 client secret |
{- "type": "oidc",
- "name": "My OIDC Provider",
- "client_id": "123456789.apps.googleusercontent.com",
- "client_secret": "secret123"
}{- "id": "ch8i4ug6lnn4g9hqv7l0",
- "type": "oidc",
- "name": "My OIDC Provider",
- "client_id": "123456789.apps.googleusercontent.com"
}Returns a list of available proxy clusters with their connection status
[- {
- "id": "chlfq4q5r8kc73b0qjpg",
- "address": "eu.proxy.nexuslink2.com",
- "type": "shared",
- "online": true,
- "connected_proxies": 3,
- "supports_custom_ports": true,
- "require_subdomain": false,
- "supports_crowdsec": false,
- "private": false
}
]Returns a list of all reverse proxy services
[- {
- "id": "cs8i4ug6lnn4g9hqv7mg",
- "name": "myapp.example.nexuslink.app",
- "domain": "myapp.example.nexuslink.app",
- "mode": "http",
- "listen_port": 8443,
- "port_auto_assigned": false,
- "proxy_cluster": "eu.proxy.nexuslink2.com",
- "targets": [
- {
- "target_id": "cs8i4ug6lnn4g9hqv7mg",
- "target_type": "subnet",
- "path": "/",
- "protocol": "http",
- "host": "10.10.0.1",
- "port": 8080,
- "enabled": true,
- "options": {
- "skip_tls_verify": false,
- "request_timeout": "30s",
- "path_rewrite": "preserve",
- "custom_headers": {
- "X-Custom-Header": "value"
}, - "proxy_protocol": false,
- "session_idle_timeout": "2m",
- "direct_upstream": false
}
}
], - "enabled": true,
- "terminated": false,
- "pass_host_header": false,
- "rewrite_redirects": false,
- "auth": {
- "password_auth": {
- "enabled": true,
- "password": "s3cret"
}, - "pin_auth": {
- "enabled": false,
- "pin": "1234"
}, - "bearer_auth": {
- "enabled": true,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7mg"
]
}, - "link_auth": {
- "enabled": false
}, - "header_auths": [
- {
- "enabled": true,
- "header": "X-API-Key",
- "value": "my-secret-api-key"
}
]
}, - "access_restrictions": {
- "allowed_cidrs": [
- "192.168.1.0/24"
], - "blocked_cidrs": [
- "10.0.0.0/8"
], - "allowed_countries": [
- "US"
], - "blocked_countries": [
- "DE"
], - "crowdsec_mode": "off"
}, - "meta": {
- "created_at": "2024-02-03T10:30:00Z",
- "certificate_issued_at": "2024-02-03T10:35:00Z",
- "status": "active"
}, - "private": false,
- "access_groups": [
- "group-engineering"
]
}
]Creates a new reverse proxy service
New service request
| name required | string Service name |
| domain required | string Domain for the service |
| mode | string Default: "http" Enum: "http" "tcp" "udp" "tls" Service mode. "http" for L7 reverse proxy, "tcp"/"udp"/"tls" for L4 passthrough. |
| listen_port | integer [ 0 .. 65535 ] Port the proxy listens on (L4/TLS only). Set to 0 for auto-assignment. |
Array of objects (ServiceTarget) List of target backends for this service | |
| enabled required | boolean Default: true Whether the service is enabled |
| pass_host_header | boolean When true, the original client Host header is passed through to the backend instead of being rewritten to the backend's address |
| rewrite_redirects | boolean When true, Location headers in backend responses are rewritten to replace the backend address with the public-facing domain |
object (ServiceAuthConfig) | |
object (AccessRestrictions) Connection-level access restrictions based on IP address or geography. Applies to both HTTP and L4 services. | |
| private | boolean Default: false When true, the service is NexusLink-only — its target points at a proxy cluster, inbound peers authenticate via their WireGuard tunnel identity (no OIDC), and an ACL policy is auto-generated from access_groups to the cluster's proxy-peer group. Requires mode=http. |
| access_groups | Array of strings NexusLink group IDs whose peers may reach this private service over the tunnel. Required when private=true; ignored otherwise. Mutually exclusive with bearer auth (SSO). |
{- "name": "myapp.example.nexuslink.app",
- "domain": "myapp.example.nexuslink.app",
- "mode": "http",
- "listen_port": 5432,
- "targets": [
- {
- "target_id": "cs8i4ug6lnn4g9hqv7mg",
- "target_type": "subnet",
- "path": "/",
- "protocol": "http",
- "host": "10.10.0.1",
- "port": 8080,
- "enabled": true,
- "options": {
- "skip_tls_verify": false,
- "request_timeout": "30s",
- "path_rewrite": "preserve",
- "custom_headers": {
- "X-Custom-Header": "value"
}, - "proxy_protocol": false,
- "session_idle_timeout": "2m",
- "direct_upstream": false
}
}
], - "enabled": true,
- "pass_host_header": false,
- "rewrite_redirects": false,
- "auth": {
- "password_auth": {
- "enabled": true,
- "password": "s3cret"
}, - "pin_auth": {
- "enabled": false,
- "pin": "1234"
}, - "bearer_auth": {
- "enabled": true,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7mg"
]
}, - "link_auth": {
- "enabled": false
}, - "header_auths": [
- {
- "enabled": true,
- "header": "X-API-Key",
- "value": "my-secret-api-key"
}
]
}, - "access_restrictions": {
- "allowed_cidrs": [
- "192.168.1.0/24"
], - "blocked_cidrs": [
- "10.0.0.0/8"
], - "allowed_countries": [
- "US"
], - "blocked_countries": [
- "DE"
], - "crowdsec_mode": "off"
}, - "private": false,
- "access_groups": [
- "group-engineering"
]
}{- "id": "cs8i4ug6lnn4g9hqv7mg",
- "name": "myapp.example.nexuslink.app",
- "domain": "myapp.example.nexuslink.app",
- "mode": "http",
- "listen_port": 8443,
- "port_auto_assigned": false,
- "proxy_cluster": "eu.proxy.nexuslink2.com",
- "targets": [
- {
- "target_id": "cs8i4ug6lnn4g9hqv7mg",
- "target_type": "subnet",
- "path": "/",
- "protocol": "http",
- "host": "10.10.0.1",
- "port": 8080,
- "enabled": true,
- "options": {
- "skip_tls_verify": false,
- "request_timeout": "30s",
- "path_rewrite": "preserve",
- "custom_headers": {
- "X-Custom-Header": "value"
}, - "proxy_protocol": false,
- "session_idle_timeout": "2m",
- "direct_upstream": false
}
}
], - "enabled": true,
- "terminated": false,
- "pass_host_header": false,
- "rewrite_redirects": false,
- "auth": {
- "password_auth": {
- "enabled": true,
- "password": "s3cret"
}, - "pin_auth": {
- "enabled": false,
- "pin": "1234"
}, - "bearer_auth": {
- "enabled": true,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7mg"
]
}, - "link_auth": {
- "enabled": false
}, - "header_auths": [
- {
- "enabled": true,
- "header": "X-API-Key",
- "value": "my-secret-api-key"
}
]
}, - "access_restrictions": {
- "allowed_cidrs": [
- "192.168.1.0/24"
], - "blocked_cidrs": [
- "10.0.0.0/8"
], - "allowed_countries": [
- "US"
], - "blocked_countries": [
- "DE"
], - "crowdsec_mode": "off"
}, - "meta": {
- "created_at": "2024-02-03T10:30:00Z",
- "certificate_issued_at": "2024-02-03T10:35:00Z",
- "status": "active"
}, - "private": false,
- "access_groups": [
- "group-engineering"
]
}Get information about a specific reverse proxy service
| serviceId required | string The unique identifier of a service |
{- "id": "cs8i4ug6lnn4g9hqv7mg",
- "name": "myapp.example.nexuslink.app",
- "domain": "myapp.example.nexuslink.app",
- "mode": "http",
- "listen_port": 8443,
- "port_auto_assigned": false,
- "proxy_cluster": "eu.proxy.nexuslink2.com",
- "targets": [
- {
- "target_id": "cs8i4ug6lnn4g9hqv7mg",
- "target_type": "subnet",
- "path": "/",
- "protocol": "http",
- "host": "10.10.0.1",
- "port": 8080,
- "enabled": true,
- "options": {
- "skip_tls_verify": false,
- "request_timeout": "30s",
- "path_rewrite": "preserve",
- "custom_headers": {
- "X-Custom-Header": "value"
}, - "proxy_protocol": false,
- "session_idle_timeout": "2m",
- "direct_upstream": false
}
}
], - "enabled": true,
- "terminated": false,
- "pass_host_header": false,
- "rewrite_redirects": false,
- "auth": {
- "password_auth": {
- "enabled": true,
- "password": "s3cret"
}, - "pin_auth": {
- "enabled": false,
- "pin": "1234"
}, - "bearer_auth": {
- "enabled": true,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7mg"
]
}, - "link_auth": {
- "enabled": false
}, - "header_auths": [
- {
- "enabled": true,
- "header": "X-API-Key",
- "value": "my-secret-api-key"
}
]
}, - "access_restrictions": {
- "allowed_cidrs": [
- "192.168.1.0/24"
], - "blocked_cidrs": [
- "10.0.0.0/8"
], - "allowed_countries": [
- "US"
], - "blocked_countries": [
- "DE"
], - "crowdsec_mode": "off"
}, - "meta": {
- "created_at": "2024-02-03T10:30:00Z",
- "certificate_issued_at": "2024-02-03T10:35:00Z",
- "status": "active"
}, - "private": false,
- "access_groups": [
- "group-engineering"
]
}Update an existing service
| serviceId required | string The unique identifier of a service |
Service update request
| name required | string Service name |
| domain required | string Domain for the service |
| mode | string Default: "http" Enum: "http" "tcp" "udp" "tls" Service mode. "http" for L7 reverse proxy, "tcp"/"udp"/"tls" for L4 passthrough. |
| listen_port | integer [ 0 .. 65535 ] Port the proxy listens on (L4/TLS only). Set to 0 for auto-assignment. |
Array of objects (ServiceTarget) List of target backends for this service | |
| enabled required | boolean Default: true Whether the service is enabled |
| pass_host_header | boolean When true, the original client Host header is passed through to the backend instead of being rewritten to the backend's address |
| rewrite_redirects | boolean When true, Location headers in backend responses are rewritten to replace the backend address with the public-facing domain |
object (ServiceAuthConfig) | |
object (AccessRestrictions) Connection-level access restrictions based on IP address or geography. Applies to both HTTP and L4 services. | |
| private | boolean Default: false When true, the service is NexusLink-only — its target points at a proxy cluster, inbound peers authenticate via their WireGuard tunnel identity (no OIDC), and an ACL policy is auto-generated from access_groups to the cluster's proxy-peer group. Requires mode=http. |
| access_groups | Array of strings NexusLink group IDs whose peers may reach this private service over the tunnel. Required when private=true; ignored otherwise. Mutually exclusive with bearer auth (SSO). |
{- "name": "myapp.example.nexuslink.app",
- "domain": "myapp.example.nexuslink.app",
- "mode": "http",
- "listen_port": 5432,
- "targets": [
- {
- "target_id": "cs8i4ug6lnn4g9hqv7mg",
- "target_type": "subnet",
- "path": "/",
- "protocol": "http",
- "host": "10.10.0.1",
- "port": 8080,
- "enabled": true,
- "options": {
- "skip_tls_verify": false,
- "request_timeout": "30s",
- "path_rewrite": "preserve",
- "custom_headers": {
- "X-Custom-Header": "value"
}, - "proxy_protocol": false,
- "session_idle_timeout": "2m",
- "direct_upstream": false
}
}
], - "enabled": true,
- "pass_host_header": false,
- "rewrite_redirects": false,
- "auth": {
- "password_auth": {
- "enabled": true,
- "password": "s3cret"
}, - "pin_auth": {
- "enabled": false,
- "pin": "1234"
}, - "bearer_auth": {
- "enabled": true,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7mg"
]
}, - "link_auth": {
- "enabled": false
}, - "header_auths": [
- {
- "enabled": true,
- "header": "X-API-Key",
- "value": "my-secret-api-key"
}
]
}, - "access_restrictions": {
- "allowed_cidrs": [
- "192.168.1.0/24"
], - "blocked_cidrs": [
- "10.0.0.0/8"
], - "allowed_countries": [
- "US"
], - "blocked_countries": [
- "DE"
], - "crowdsec_mode": "off"
}, - "private": false,
- "access_groups": [
- "group-engineering"
]
}{- "id": "cs8i4ug6lnn4g9hqv7mg",
- "name": "myapp.example.nexuslink.app",
- "domain": "myapp.example.nexuslink.app",
- "mode": "http",
- "listen_port": 8443,
- "port_auto_assigned": false,
- "proxy_cluster": "eu.proxy.nexuslink2.com",
- "targets": [
- {
- "target_id": "cs8i4ug6lnn4g9hqv7mg",
- "target_type": "subnet",
- "path": "/",
- "protocol": "http",
- "host": "10.10.0.1",
- "port": 8080,
- "enabled": true,
- "options": {
- "skip_tls_verify": false,
- "request_timeout": "30s",
- "path_rewrite": "preserve",
- "custom_headers": {
- "X-Custom-Header": "value"
}, - "proxy_protocol": false,
- "session_idle_timeout": "2m",
- "direct_upstream": false
}
}
], - "enabled": true,
- "terminated": false,
- "pass_host_header": false,
- "rewrite_redirects": false,
- "auth": {
- "password_auth": {
- "enabled": true,
- "password": "s3cret"
}, - "pin_auth": {
- "enabled": false,
- "pin": "1234"
}, - "bearer_auth": {
- "enabled": true,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7mg"
]
}, - "link_auth": {
- "enabled": false
}, - "header_auths": [
- {
- "enabled": true,
- "header": "X-API-Key",
- "value": "my-secret-api-key"
}
]
}, - "access_restrictions": {
- "allowed_cidrs": [
- "192.168.1.0/24"
], - "blocked_cidrs": [
- "10.0.0.0/8"
], - "allowed_countries": [
- "US"
], - "blocked_countries": [
- "DE"
], - "crowdsec_mode": "off"
}, - "meta": {
- "created_at": "2024-02-03T10:30:00Z",
- "certificate_issued_at": "2024-02-03T10:35:00Z",
- "status": "active"
}, - "private": false,
- "access_groups": [
- "group-engineering"
]
}Get information about domains that can be used for service endpoints.
[- {
- "id": "ds8i4ug6lnn4g9hqv7mg",
- "domain": "example.nexuslink.app",
- "validated": true,
- "type": "free",
- "target_cluster": "eu.proxy.nexuslink2.com",
- "supports_custom_ports": true,
- "require_subdomain": false,
- "supports_crowdsec": false,
- "supports_private": false
}
]Create a new Custom domain for use with service endpoints, this will trigger an initial validation check
Custom domain creation request
| domain required | string Domain name |
| target_cluster required | string The proxy cluster this domain should be validated against |
{- "domain": "myapp.example.com",
- "target_cluster": "eu.proxy.nexuslink2.com"
}{- "id": "cs8i4ug6lnn4g9hqv7mg",
- "name": "myapp.example.nexuslink.app",
- "domain": "myapp.example.nexuslink.app",
- "mode": "http",
- "listen_port": 8443,
- "port_auto_assigned": false,
- "proxy_cluster": "eu.proxy.nexuslink2.com",
- "targets": [
- {
- "target_id": "cs8i4ug6lnn4g9hqv7mg",
- "target_type": "subnet",
- "path": "/",
- "protocol": "http",
- "host": "10.10.0.1",
- "port": 8080,
- "enabled": true,
- "options": {
- "skip_tls_verify": false,
- "request_timeout": "30s",
- "path_rewrite": "preserve",
- "custom_headers": {
- "X-Custom-Header": "value"
}, - "proxy_protocol": false,
- "session_idle_timeout": "2m",
- "direct_upstream": false
}
}
], - "enabled": true,
- "terminated": false,
- "pass_host_header": false,
- "rewrite_redirects": false,
- "auth": {
- "password_auth": {
- "enabled": true,
- "password": "s3cret"
}, - "pin_auth": {
- "enabled": false,
- "pin": "1234"
}, - "bearer_auth": {
- "enabled": true,
- "distribution_groups": [
- "ch8i4ug6lnn4g9hqv7mg"
]
}, - "link_auth": {
- "enabled": false
}, - "header_auths": [
- {
- "enabled": true,
- "header": "X-API-Key",
- "value": "my-secret-api-key"
}
]
}, - "access_restrictions": {
- "allowed_cidrs": [
- "192.168.1.0/24"
], - "blocked_cidrs": [
- "10.0.0.0/8"
], - "allowed_countries": [
- "US"
], - "blocked_countries": [
- "DE"
], - "crowdsec_mode": "off"
}, - "meta": {
- "created_at": "2024-02-03T10:30:00Z",
- "certificate_issued_at": "2024-02-03T10:35:00Z",
- "status": "active"
}, - "private": false,
- "access_groups": [
- "group-engineering"
]
}Returns version information for NexusLink components including the current management server version and latest available versions from GitHub.
{- "management_current_version": "0.35.0",
- "dashboard_available_version": "2.10.0",
- "management_available_version": "0.35.0",
- "management_update_available": true
}Creates the initial admin user for the instance. This endpoint does not require authentication but only works when setup is required (no accounts exist and embedded IDP is enabled).
When the management server is started with NB_SETUP_PAT_ENABLED=true and the request includes create_pat: true, the endpoint also provisions the NexusLink account for the new owner user and returns the plain text Personal Access Token in personal_access_token. The optional pat_expire_in value applies only when create_pat is true and defaults to 1 day when omitted. If a post-user step fails, setup-created resources are rolled back when safe; if account cleanup fails, the owner user is left in place to avoid leaving an account without its admin user.
Initial admin user details
| email required | string Email address for the admin user |
| password required | string <password> >= 8 characters Password for the admin user (minimum 8 characters) |
| name required | string Display name for the admin user (defaults to email if not provided) |
| create_pat | boolean If true and the server has setup-time PAT issuance enabled (NB_SETUP_PAT_ENABLED=true), create a Personal Access Token for the new owner user and return it in the response. Ignored when the server feature is disabled. |
| pat_expire_in | integer [ 1 .. 365 ] Default: 1 Expiration of the Personal Access Token in days. Applies only when create_pat is true and the server feature is enabled. Defaults to 1 day when omitted. |
{- "email": "admin@example.com",
- "password": "securepassword123",
- "name": "Admin User",
- "create_pat": true,
- "pat_expire_in": 30
}{- "user_id": "abc123def456",
- "email": "admin@example.com",
- "personal_access_token": "nbp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}Retrieve all jobs for a given peer
| peerId required | string The unique identifier of a peer |
[- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "completed_at": "2019-08-24T14:15:22Z",
- "triggered_by": "string",
- "status": "pending",
- "failed_reason": "string",
- "workload": {
- "type": "bundle",
- "parameters": {
- "bundle_for": true,
- "bundle_for_time": 2,
- "log_file_count": 100,
- "anonymize": false,
- "anonymize_level": "strict",
}, - "result": {
- "upload_key": "upload_key_123"
}
}
}
]Create a new job for a given peer
| peerId required | string The unique identifier of a peer |
Create job request
required | object (WorkloadRequest) |
{- "workload": {
- "type": "bundle",
- "parameters": {
- "bundle_for": true,
- "bundle_for_time": 2,
- "log_file_count": 100,
- "anonymize": false,
- "anonymize_level": "strict",
}
}
}{- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "completed_at": "2019-08-24T14:15:22Z",
- "triggered_by": "string",
- "status": "pending",
- "failed_reason": "string",
- "workload": {
- "type": "bundle",
- "parameters": {
- "bundle_for": true,
- "bundle_for_time": 2,
- "log_file_count": 100,
- "anonymize": false,
- "anonymize_level": "strict",
}, - "result": {
- "upload_key": "upload_key_123"
}
}
}Retrieve details of a specific job
| peerId required | string The unique identifier of a peer |
| jobId required | string The unique identifier of a job |
{- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "completed_at": "2019-08-24T14:15:22Z",
- "triggered_by": "string",
- "status": "pending",
- "failed_reason": "string",
- "workload": {
- "type": "bundle",
- "parameters": {
- "bundle_for": true,
- "bundle_for_time": 2,
- "log_file_count": 100,
- "anonymize": false,
- "anonymize_level": "strict",
}, - "result": {
- "upload_key": "upload_key_123"
}
}
}{- "active": true,
- "plan_tier": "basic",
- "price_id": "price_1HhxOpBzq4JbCqRmJxkpzL2V",
- "remaining_trial": 3600,
- "features": [
- "free",
- "idp-sync",
- "audit-logs"
], - "currency": "USD",
- "price": 1000,
- "provider": [
- "stripe",
- "aws"
], - "updated_at": "2021-08-01T12:00:00Z"
}| priceID | string The Price ID to change the subscription to. |
| plan_tier | string The plan tier to change the subscription to. |
{- "priceID": "price_1HhxOpBzq4JbCqRmJxkpzL2V",
- "plan_tier": "business"
}[- {
- "name": "Basic Plan",
- "description": "This is the basic plan with limited features.",
- "features": [
- "5 free users",
- "Basic support"
], - "prices": [
- {
- "price_id": "price_H2KmRb4u1tP0sR7s",
- "currency": "USD",
- "price": 1000,
- "unit": "user"
}
], - "free": false
}
]| baseURL required | string The base URL for the redirect after checkout. |
| priceID required | string The Price ID for checkout. |
| enableTrial | boolean Enables a 14-day trial for the account. |
{- "priceID": "price_1HhxOpBzq4JbCqRmJxkpzL2V",
- "enableTrial": true
}{- "session_id": "cs_test_a1b2c3d4e5f6g7h8i9j0",
}[- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "My new tenant",
- "domain": "tenant.com",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "role": "admin"
}
], - "activated_at": "2021-08-01T12:00:00Z",
- "dns_challenge": "YXNkYSBkYXNhc2Rhc2RhIGFzZGFzZDJhc2QyNDUxNQ",
- "created_at": "2021-08-01T12:00:00Z",
- "updated_at": "2021-08-01T12:00:00Z",
- "invited_at": "2021-08-01T12:00:00Z",
- "status": "active"
}
]| name required | string The name for the MSP tenant |
| domain required | string The name for the MSP tenant |
required | Array of objects (TenantGroupResponse) MSP users Groups that can access the Tenant and Roles to assume |
{- "name": "My new tenant",
- "domain": "tenant.com",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "role": "admin"
}
]
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "My new tenant",
- "domain": "tenant.com",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "role": "admin"
}
], - "activated_at": "2021-08-01T12:00:00Z",
- "dns_challenge": "YXNkYSBkYXNhc2Rhc2RhIGFzZGFzZDJhc2QyNDUxNQ",
- "created_at": "2021-08-01T12:00:00Z",
- "updated_at": "2021-08-01T12:00:00Z",
- "invited_at": "2021-08-01T12:00:00Z",
- "status": "active"
}| id required | string The unique identifier of a tenant account |
| name required | string The name for the MSP tenant |
required | Array of objects (TenantGroupResponse) MSP users Groups that can access the Tenant and Roles to assume |
{- "name": "My new tenant",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "role": "admin"
}
]
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "My new tenant",
- "domain": "tenant.com",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "role": "admin"
}
], - "activated_at": "2021-08-01T12:00:00Z",
- "dns_challenge": "YXNkYSBkYXNhc2Rhc2RhIGFzZGFzZDJhc2QyNDUxNQ",
- "created_at": "2021-08-01T12:00:00Z",
- "updated_at": "2021-08-01T12:00:00Z",
- "invited_at": "2021-08-01T12:00:00Z",
- "status": "active"
}| id required | string The unique identifier of a tenant account |
| owner required | string The new owners user ID. |
{- "owner": "google-oauth2|123456789012345678901"
}| id required | string The unique identifier of a tenant account |
| priceID required | string The Price ID to change the subscription to. |
{- "priceID": "price_1HhxOpBzq4JbCqRmJxkpzL2V"
}| id required | string The unique identifier of an existing tenant account |
{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "My new tenant",
- "domain": "tenant.com",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "role": "admin"
}
], - "activated_at": "2021-08-01T12:00:00Z",
- "dns_challenge": "YXNkYSBkYXNhc2Rhc2RhIGFzZGFzZDJhc2QyNDUxNQ",
- "created_at": "2021-08-01T12:00:00Z",
- "updated_at": "2021-08-01T12:00:00Z",
- "invited_at": "2021-08-01T12:00:00Z",
- "status": "active"
}| id required | string The unique identifier of an existing tenant account |
| value required | string Enum: "accept" "decline" Accept or decline the invitation. |
{- "value": "accept"
}Creates a new SCIM integration
| group_prefixes | Array of strings List of start_with string patterns for groups to sync |
| user_group_prefixes | Array of strings List of start_with string patterns for groups which users to sync |
| connector_id | string DEX connector ID for embedded IDP setups |
| prefix required | string The connection prefix used for the SCIM provider |
| provider required | string Name of the SCIM identity provider |
{- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "prefix": "string",
- "provider": "string"
}{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 123,
- "prefix": "string",
- "provider": "string",
- "auth_token": "nbs_abc***********************************",
- "last_synced_at": "2023-05-15T10:30:00Z"
}Retrieves all SCIM IDP integrations for the authenticated account
[- {
- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 123,
- "prefix": "string",
- "provider": "string",
- "auth_token": "nbs_abc***********************************",
- "last_synced_at": "2023-05-15T10:30:00Z"
}
]Retrieves an SCIM IDP integration by ID.
| id required | integer <int64> Example: 1 The unique identifier of the SCIM IDP integration. |
{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 123,
- "prefix": "string",
- "provider": "string",
- "auth_token": "nbs_abc***********************************",
- "last_synced_at": "2023-05-15T10:30:00Z"
}Updates an existing SCIM IDP Integration.
| id required | integer <int64> Example: 1 The unique identifier of the SCIM IDP integration. |
| enabled | boolean Whether the integration is enabled |
| group_prefixes | Array of strings List of start_with string patterns for groups to sync |
| user_group_prefixes | Array of strings List of start_with string patterns for groups which users to sync |
| connector_id | string DEX connector ID for embedded IDP setups |
| prefix | string The connection prefix used for the SCIM provider |
{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "prefix": "string"
}{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 123,
- "prefix": "string",
- "provider": "string",
- "auth_token": "nbs_abc***********************************",
- "last_synced_at": "2023-05-15T10:30:00Z"
}Regenerates the SCIM API token for an SCIM IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the SCIM IDP integration. |
{- "auth_token": "nbs_F3f0d..."
}Retrieves synchronization logs for a SCIM IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the SCIM IDP integration. |
[- {
- "id": 123,
- "level": "info",
- "timestamp": "2023-05-15T10:30:00Z",
- "message": "Successfully synchronized users and groups"
}
]Manage Google Workspace identity provider integrations for user and group sync.
Creates a new Google Workspace IDP integration
| group_prefixes | Array of strings List of start_with string patterns for groups to sync |
| user_group_prefixes | Array of strings List of start_with string patterns for groups which users to sync |
| connector_id | string DEX connector ID for embedded IDP setups |
| service_account_key required | string Base64-encoded Google service account key |
| customer_id required | string Customer ID from Google Workspace Account Settings |
| sync_interval | integer >= 300 Sync interval in seconds (minimum 300). Defaults to 300 if not specified. |
{- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "service_account_key": "eyJ0eXBlIjoic2VydmljZV9hY2NvdW50Ii...",
- "customer_id": "C01234567",
- "sync_interval": 300
}{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "customer_id": "C01234567",
- "sync_interval": 300,
- "last_synced_at": "2023-05-15T10:30:00Z"
}Retrieves all Google Workspace IDP integrations for the authenticated account
[- {
- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "customer_id": "C01234567",
- "sync_interval": 300,
- "last_synced_at": "2023-05-15T10:30:00Z"
}
]Retrieves a Google IDP integration by ID.
| id required | integer <int64> Example: 1 The unique identifier of the Google IDP integration. |
{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "customer_id": "C01234567",
- "sync_interval": 300,
- "last_synced_at": "2023-05-15T10:30:00Z"
}Updates an existing Google Workspace IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the Google IDP integration. |
| enabled | boolean Whether the integration is enabled |
| group_prefixes | Array of strings List of start_with string patterns for groups to sync |
| user_group_prefixes | Array of strings List of start_with string patterns for groups which users to sync |
| connector_id | string DEX connector ID for embedded IDP setups |
| service_account_key | string Base64-encoded Google service account key |
| customer_id | string Customer ID from Google Workspace Account Settings |
| sync_interval | integer >= 300 Sync interval in seconds (minimum 300) |
{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "service_account_key": "string",
- "customer_id": "string",
- "sync_interval": 300
}{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "customer_id": "C01234567",
- "sync_interval": 300,
- "last_synced_at": "2023-05-15T10:30:00Z"
}Triggers a manual synchronization for a Google IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the Google IDP integration. |
{- "result": "ok"
}Retrieves synchronization logs for a Google IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the Google IDP integration. |
[- {
- "id": 123,
- "level": "info",
- "timestamp": "2023-05-15T10:30:00Z",
- "message": "Successfully synchronized users and groups"
}
]Creates a new Azure AD IDP integration
| group_prefixes | Array of strings List of start_with string patterns for groups to sync |
| user_group_prefixes | Array of strings List of start_with string patterns for groups which users to sync |
| connector_id | string DEX connector ID for embedded IDP setups |
| client_secret required | string Base64-encoded Azure AD client secret |
| client_id required | string Azure AD application (client) ID |
| tenant_id required | string Azure AD tenant ID |
| sync_interval | integer >= 300 Sync interval in seconds (minimum 300). Defaults to 300 if not specified. |
| host required | string Enum: "microsoft.com" "microsoft.us" Azure host domain for the Graph API |
{- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "client_secret": "c2VjcmV0...",
- "client_id": "12345678-1234-1234-1234-123456789012",
- "tenant_id": "87654321-4321-4321-4321-210987654321",
- "sync_interval": 300,
- "host": "microsoft.com"
}{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "client_id": "12345678-1234-1234-1234-123456789012",
- "tenant_id": "87654321-4321-4321-4321-210987654321",
- "sync_interval": 300,
- "host": "microsoft.com",
- "last_synced_at": "2023-05-15T10:30:00Z"
}Retrieves all Azure AD IDP integrations for the authenticated account
[- {
- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "client_id": "12345678-1234-1234-1234-123456789012",
- "tenant_id": "87654321-4321-4321-4321-210987654321",
- "sync_interval": 300,
- "host": "microsoft.com",
- "last_synced_at": "2023-05-15T10:30:00Z"
}
]Retrieves an Azure IDP integration by ID.
| id required | integer <int64> Example: 1 The unique identifier of the Azure IDP integration. |
{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "client_id": "12345678-1234-1234-1234-123456789012",
- "tenant_id": "87654321-4321-4321-4321-210987654321",
- "sync_interval": 300,
- "host": "microsoft.com",
- "last_synced_at": "2023-05-15T10:30:00Z"
}Updates an existing Azure AD IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the Azure IDP integration. |
| enabled | boolean Whether the integration is enabled |
| group_prefixes | Array of strings List of start_with string patterns for groups to sync |
| user_group_prefixes | Array of strings List of start_with string patterns for groups which users to sync |
| connector_id | string DEX connector ID for embedded IDP setups |
| client_secret | string Base64-encoded Azure AD client secret |
| client_id | string Azure AD application (client) ID |
| tenant_id | string Azure AD tenant ID |
| sync_interval | integer >= 300 Sync interval in seconds (minimum 300) |
{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "client_secret": "string",
- "client_id": "string",
- "tenant_id": "string",
- "sync_interval": 300
}{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "client_id": "12345678-1234-1234-1234-123456789012",
- "tenant_id": "87654321-4321-4321-4321-210987654321",
- "sync_interval": 300,
- "host": "microsoft.com",
- "last_synced_at": "2023-05-15T10:30:00Z"
}Triggers a manual synchronization for an Azure IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the Azure IDP integration. |
{- "result": "ok"
}Retrieves synchronization logs for an Azure IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the Azure IDP integration. |
[- {
- "id": 123,
- "level": "info",
- "timestamp": "2023-05-15T10:30:00Z",
- "message": "Successfully synchronized users and groups"
}
]Creates a new Okta SCIM IDP integration
| group_prefixes | Array of strings List of start_with string patterns for groups to sync |
| user_group_prefixes | Array of strings List of start_with string patterns for groups which users to sync |
| connector_id | string DEX connector ID for embedded IDP setups |
| connection_name required | string The Okta enterprise connection name on Auth0 |
{- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "connection_name": "my-okta-connection"
}{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "auth_token": "nbs_abc***********************************",
- "last_synced_at": "2023-05-15T10:30:00Z"
}Retrieves all Okta SCIM IDP integrations for the authenticated account
[- {
- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "auth_token": "nbs_abc***********************************",
- "last_synced_at": "2023-05-15T10:30:00Z"
}
]Retrieves an Okta SCIM IDP integration by ID.
| id required | integer <int64> Example: 1 The unique identifier of the Okta SCIM IDP integration. |
{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "auth_token": "nbs_abc***********************************",
- "last_synced_at": "2023-05-15T10:30:00Z"
}Updates an existing Okta SCIM IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the Okta SCIM IDP integration. |
| enabled | boolean Whether the integration is enabled |
| group_prefixes | Array of strings List of start_with string patterns for groups to sync |
| user_group_prefixes | Array of strings List of start_with string patterns for groups which users to sync |
| connector_id | string DEX connector ID for embedded IDP setups |
{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string"
}{- "enabled": true,
- "group_prefixes": [
- "Engineering",
- "Sales"
], - "user_group_prefixes": [
- "Users"
], - "connector_id": "string",
- "id": 1,
- "auth_token": "nbs_abc***********************************",
- "last_synced_at": "2023-05-15T10:30:00Z"
}Regenerates the SCIM API token for an Okta SCIM IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the Okta SCIM IDP integration. |
{- "auth_token": "nbs_F3f0d..."
}Retrieves synchronization logs for an Okta SCIM IDP integration.
| id required | integer <int64> Example: 1 The unique identifier of the Okta SCIM IDP integration. |
[- {
- "id": 123,
- "level": "info",
- "timestamp": "2023-05-15T10:30:00Z",
- "message": "Successfully synchronized users and groups"
}
]Creates a new EDR Intune integration for the authenticated account.
| client_id required | string The Azure application client id |
| tenant_id required | string The Azure tenant id |
| secret required | string The Azure application client secret |
| groups required | Array of strings The Groups this integrations applies to |
| last_synced_interval required | integer >= 24 The devices last sync requirement interval in hours. Minimum value is 24 hours. |
| enabled | boolean Default: true Indicates whether the integration is enabled |
{- "client_id": "string",
- "tenant_id": "string",
- "secret": "string",
- "groups": [
- "string"
], - "last_synced_interval": 24,
- "enabled": true
}{- "id": 123,
- "account_id": "acc_abcdef123456",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "client_id": "acc_abcdef123456",
- "tenant_id": "acc_abcdef123456",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "enabled": true
}Retrieves a specific EDR Intune integration by its ID.
{- "id": 123,
- "account_id": "acc_abcdef123456",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "client_id": "acc_abcdef123456",
- "tenant_id": "acc_abcdef123456",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "enabled": true
}Updates an existing EDR Intune Integration. The request body structure is EDRIntuneRequest.
| client_id required | string The Azure application client id |
| tenant_id required | string The Azure tenant id |
| secret required | string The Azure application client secret |
| groups required | Array of strings The Groups this integrations applies to |
| last_synced_interval required | integer >= 24 The devices last sync requirement interval in hours. Minimum value is 24 hours. |
| enabled | boolean Default: true Indicates whether the integration is enabled |
{- "client_id": "string",
- "tenant_id": "string",
- "secret": "string",
- "groups": [
- "string"
], - "last_synced_interval": 24,
- "enabled": true
}{- "id": 123,
- "account_id": "acc_abcdef123456",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "client_id": "acc_abcdef123456",
- "tenant_id": "acc_abcdef123456",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "enabled": true
}Creates a new EDR SentinelOne integration
| api_token required | string SentinelOne API token |
| api_url required | string The Base URL of SentinelOne API |
| groups required | Array of strings The Groups this integrations applies to |
| last_synced_interval required | integer >= 24 The devices last sync requirement interval in hours. Minimum value is 24 hours. |
| enabled | boolean Default: true Indicates whether the integration is enabled |
required | object (SentinelOneMatchAttributes) Attribute conditions to match when approving agents |
{- "api_token": "string",
- "api_url": "string",
- "groups": [
- "string"
], - "last_synced_interval": 24,
- "enabled": true,
- "match_attributes": {
- "active_threats": 0,
- "encrypted_applications": true,
- "firewall_enabled": true,
- "infected": true,
- "is_active": true,
- "is_up_to_date": true,
- "network_status": "connected",
- "operational_state": "string"
}
}{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "api_url": "string",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "match_attributes": {
- "active_threats": 0,
- "encrypted_applications": true,
- "firewall_enabled": true,
- "infected": true,
- "is_active": true,
- "is_up_to_date": true,
- "network_status": "connected",
- "operational_state": "string"
}, - "enabled": true
}Retrieves a specific EDR SentinelOne integration by its ID.
{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "api_url": "string",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "match_attributes": {
- "active_threats": 0,
- "encrypted_applications": true,
- "firewall_enabled": true,
- "infected": true,
- "is_active": true,
- "is_up_to_date": true,
- "network_status": "connected",
- "operational_state": "string"
}, - "enabled": true
}Updates an existing EDR SentinelOne Integration.
| api_token required | string SentinelOne API token |
| api_url required | string The Base URL of SentinelOne API |
| groups required | Array of strings The Groups this integrations applies to |
| last_synced_interval required | integer >= 24 The devices last sync requirement interval in hours. Minimum value is 24 hours. |
| enabled | boolean Default: true Indicates whether the integration is enabled |
required | object (SentinelOneMatchAttributes) Attribute conditions to match when approving agents |
{- "api_token": "string",
- "api_url": "string",
- "groups": [
- "string"
], - "last_synced_interval": 24,
- "enabled": true,
- "match_attributes": {
- "active_threats": 0,
- "encrypted_applications": true,
- "firewall_enabled": true,
- "infected": true,
- "is_active": true,
- "is_up_to_date": true,
- "network_status": "connected",
- "operational_state": "string"
}
}{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "api_url": "string",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "match_attributes": {
- "active_threats": 0,
- "encrypted_applications": true,
- "firewall_enabled": true,
- "infected": true,
- "is_active": true,
- "is_up_to_date": true,
- "network_status": "connected",
- "operational_state": "string"
}, - "enabled": true
}Creates a new EDR Falcon integration
| client_id required | string CrowdStrike API client ID |
| secret required | string CrowdStrike API client secret |
| cloud_id required | string CrowdStrike cloud identifier (e.g., "us-1", "us-2", "eu-1") |
| groups required | Array of strings The Groups this integration applies to |
| zta_score_threshold required | integer [ 0 .. 100 ] The minimum Zero Trust Assessment score required for agent approval (0-100) |
| enabled | boolean Default: true Indicates whether the integration is enabled |
{- "client_id": "string",
- "secret": "string",
- "cloud_id": "string",
- "groups": [
- "string"
], - "zta_score_threshold": 75,
- "enabled": true
}{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "cloud_id": "string",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "zta_score_threshold": 0,
- "enabled": true
}Retrieves a specific EDR Falcon integration by its ID.
{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "cloud_id": "string",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "zta_score_threshold": 0,
- "enabled": true
}Updates an existing EDR Falcon Integration.
| client_id required | string CrowdStrike API client ID |
| secret required | string CrowdStrike API client secret |
| cloud_id required | string CrowdStrike cloud identifier (e.g., "us-1", "us-2", "eu-1") |
| groups required | Array of strings The Groups this integration applies to |
| zta_score_threshold required | integer [ 0 .. 100 ] The minimum Zero Trust Assessment score required for agent approval (0-100) |
| enabled | boolean Default: true Indicates whether the integration is enabled |
{- "client_id": "string",
- "secret": "string",
- "cloud_id": "string",
- "groups": [
- "string"
], - "zta_score_threshold": 75,
- "enabled": true
}{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "cloud_id": "string",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "zta_score_threshold": 0,
- "enabled": true
}Creates a new EDR Huntress integration
| api_key required | string Huntress API key |
| api_secret required | string Huntress API secret |
| groups required | Array of strings The Groups this integrations applies to |
| last_synced_interval required | integer >= 24 The devices last sync requirement interval in hours. Minimum value is 24 hours |
| enabled | boolean Default: true Indicates whether the integration is enabled |
required | object (HuntressMatchAttributes) Attribute conditions to match when approving agents |
{- "api_key": "string",
- "api_secret": "string",
- "groups": [
- "string"
], - "last_synced_interval": 24,
- "enabled": true,
- "match_attributes": {
- "defender_policy_status": "Compliant",
- "defender_status": "Healthy",
- "defender_substatus": "Up to date",
- "firewall_status": "Enabled"
}
}{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "enabled": true,
- "match_attributes": {
- "defender_policy_status": "Compliant",
- "defender_status": "Healthy",
- "defender_substatus": "Up to date",
- "firewall_status": "Enabled"
}
}Retrieves a specific EDR Huntress integration by its ID.
{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "enabled": true,
- "match_attributes": {
- "defender_policy_status": "Compliant",
- "defender_status": "Healthy",
- "defender_substatus": "Up to date",
- "firewall_status": "Enabled"
}
}Updates an existing EDR Huntress Integration.
| api_key required | string Huntress API key |
| api_secret required | string Huntress API secret |
| groups required | Array of strings The Groups this integrations applies to |
| last_synced_interval required | integer >= 24 The devices last sync requirement interval in hours. Minimum value is 24 hours |
| enabled | boolean Default: true Indicates whether the integration is enabled |
required | object (HuntressMatchAttributes) Attribute conditions to match when approving agents |
{- "api_key": "string",
- "api_secret": "string",
- "groups": [
- "string"
], - "last_synced_interval": 24,
- "enabled": true,
- "match_attributes": {
- "defender_policy_status": "Compliant",
- "defender_status": "Healthy",
- "defender_substatus": "Up to date",
- "firewall_status": "Enabled"
}
}{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "enabled": true,
- "match_attributes": {
- "defender_policy_status": "Compliant",
- "defender_status": "Healthy",
- "defender_substatus": "Up to date",
- "firewall_status": "Enabled"
}
}Creates a new EDR FleetDM integration
| api_url required | string FleetDM server URL |
| api_token required | string FleetDM API token |
| groups required | Array of strings The Groups this integrations applies to |
| last_synced_interval required | integer >= 24 The devices last sync requirement interval in hours. Minimum value is 24 hours |
| enabled | boolean Default: true Indicates whether the integration is enabled |
required | object (FleetDMMatchAttributes) Attribute conditions to match when approving FleetDM hosts. Most attributes work with FleetDM's free/open source version. Premium-only attributes are marked accordingly |
{- "api_url": "string",
- "api_token": "string",
- "groups": [
- "string"
], - "last_synced_interval": 24,
- "enabled": true,
- "match_attributes": {
- "disk_encryption_enabled": true,
- "failing_policies_count_max": 0,
- "vulnerable_software_count_max": 0,
- "status_online": true,
- "required_policies": [
- 1,
- 5,
- 12
]
}
}{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "api_url": "string",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "enabled": true,
- "match_attributes": {
- "disk_encryption_enabled": true,
- "failing_policies_count_max": 0,
- "vulnerable_software_count_max": 0,
- "status_online": true,
- "required_policies": [
- 1,
- 5,
- 12
]
}
}Retrieves a specific EDR FleetDM integration by its ID.
{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "api_url": "string",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "enabled": true,
- "match_attributes": {
- "disk_encryption_enabled": true,
- "failing_policies_count_max": 0,
- "vulnerable_software_count_max": 0,
- "status_online": true,
- "required_policies": [
- 1,
- 5,
- 12
]
}
}Updates an existing EDR FleetDM Integration.
| api_url required | string FleetDM server URL |
| api_token required | string FleetDM API token |
| groups required | Array of strings The Groups this integrations applies to |
| last_synced_interval required | integer >= 24 The devices last sync requirement interval in hours. Minimum value is 24 hours |
| enabled | boolean Default: true Indicates whether the integration is enabled |
required | object (FleetDMMatchAttributes) Attribute conditions to match when approving FleetDM hosts. Most attributes work with FleetDM's free/open source version. Premium-only attributes are marked accordingly |
{- "api_url": "string",
- "api_token": "string",
- "groups": [
- "string"
], - "last_synced_interval": 24,
- "enabled": true,
- "match_attributes": {
- "disk_encryption_enabled": true,
- "failing_policies_count_max": 0,
- "vulnerable_software_count_max": 0,
- "status_online": true,
- "required_policies": [
- 1,
- 5,
- 12
]
}
}{- "id": 123,
- "account_id": "ch8i4ug6lnn4g9hqv7l0",
- "api_url": "string",
- "last_synced_at": "2023-05-15T10:30:00Z",
- "created_by": "string",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api",
- "peers": [
- {
- "id": "chacbco6lnnbn6cg5s90",
- "name": "stage-host-1"
}
], - "resources": [
- {
- "id": "chacdk86lnnboviihd7g",
- "type": "peer"
}
]
}
], - "last_synced_interval": 0,
- "enabled": true,
- "match_attributes": {
- "disk_encryption_enabled": true,
- "failing_policies_count_max": 0,
- "vulnerable_software_count_max": 0,
- "status_online": true,
- "required_policies": [
- 1,
- 5,
- 12
]
}
}Allows an admin to bypass EDR compliance checks for a specific peer. The peer will remain bypassed until the admin revokes it OR the device becomes naturally compliant in the EDR system.
| peer-id required | string The unique identifier of the peer |
{- "peer_id": "chacbco6lnnbn6cg5s91"
}Removes the compliance bypass, subjecting the peer to normal EDR validation.
| peer-id required | string The unique identifier of the peer |
{- "message": "couldn't parse JSON request"
}Creates a new event streaming integration for the authenticated account.
The request body should conform to CreateIntegrationRequest.
Note: Based on the provided Go code, the enabled field from the request is part of the CreateIntegrationRequest struct,
but the backend manager.CreateIntegration function signature shown does not directly use this enabled field.
The actual behavior for enabled during creation should be confirmed (e.g., it might have a server-side default or be handled by other logic).
| platform required | string Enum: "datadog" "s3" "firehose" "generic_http" The event streaming platform to integrate with (e.g., "datadog", "s3", "firehose"). This field is used for creation. For updates (PUT), this field, if sent, is ignored by the backend. |
required | object Platform-specific configuration as key-value pairs. For creation, all necessary credentials and settings must be provided. For updates, provide the fields to change or the entire new configuration. |
| enabled required | boolean Specifies whether the integration is enabled. During creation (POST), this value is sent by the client, but the provided backend manager function |
{- "platform": "s3",
- "config": {
- "bucket_name": "my-event-logs",
- "region": "us-east-1",
- "access_key_id": "AKIA...",
- "secret_access_key": "YOUR_SECRET_KEY"
}, - "enabled": true
}{- "id": 123,
- "account_id": "acc_abcdef123456",
- "enabled": true,
- "platform": "datadog",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "config": {
- "api_key": "****",
- "site": "datadoghq.com",
- "region": "us-east-1"
}
}Retrieves all event streaming integrations for the authenticated account.
[- {
- "id": 123,
- "account_id": "acc_abcdef123456",
- "enabled": true,
- "platform": "datadog",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "config": {
- "api_key": "****",
- "site": "datadoghq.com",
- "region": "us-east-1"
}
}
]Retrieves a specific event streaming integration by its ID.
| id required | integer Example: 123 The unique numeric identifier of the event streaming integration. |
{- "id": 123,
- "account_id": "acc_abcdef123456",
- "enabled": true,
- "platform": "datadog",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "config": {
- "api_key": "****",
- "site": "datadoghq.com",
- "region": "us-east-1"
}
}Updates an existing event streaming integration. The request body structure is CreateIntegrationRequest.
However, for updates:
platform field, if provided in the body, is ignored by the backend manager function, as the platform of an existing integration is typically immutable.enabled and config fields from the request body are used to update the integration.| id required | integer Example: 123 The unique numeric identifier of the event streaming integration. |
| platform required | string Enum: "datadog" "s3" "firehose" "generic_http" The event streaming platform to integrate with (e.g., "datadog", "s3", "firehose"). This field is used for creation. For updates (PUT), this field, if sent, is ignored by the backend. |
required | object Platform-specific configuration as key-value pairs. For creation, all necessary credentials and settings must be provided. For updates, provide the fields to change or the entire new configuration. |
| enabled required | boolean Specifies whether the integration is enabled. During creation (POST), this value is sent by the client, but the provided backend manager function |
{- "platform": "s3",
- "config": {
- "bucket_name": "my-event-logs",
- "region": "us-east-1",
- "access_key_id": "AKIA...",
- "secret_access_key": "YOUR_SECRET_KEY"
}, - "enabled": true
}{- "id": 123,
- "account_id": "acc_abcdef123456",
- "enabled": true,
- "platform": "datadog",
- "created_at": "2023-05-15T10:30:00Z",
- "updated_at": "2023-05-16T11:45:00Z",
- "config": {
- "api_key": "****",
- "site": "datadoghq.com",
- "region": "us-east-1"
}
}Deletes an event streaming integration by its ID.
| id required | integer Example: 123 The unique numeric identifier of the event streaming integration. |
{ }Returns a map of all supported activity event type codes to their
human-readable descriptions. Use these codes when configuring
event_types on notification channels.
{- "user.join": "User joined"
}Retrieves all notification channels configured for the authenticated account.
[- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "type": "email",
- "target": {
- "emails": [
- "admin@example.com",
- "ops@example.com"
]
}, - "event_types": [
- "user.join",
- "peer.user.add",
- "peer.login.expire"
], - "enabled": true
}
]Creates a new notification channel for the authenticated account.
Supported channel types are email and webhook.
| type required | string (NotificationChannelType) Enum: "email" "webhook" The type of notification channel. |
EmailTarget (object) or WebhookTarget (object) Channel-specific target configuration. The shape depends on the
| |
| event_types required | Array of strings (NotificationEventType) List of activity event type codes this channel subscribes to. |
| enabled required | boolean Whether this notification channel is active. |
{- "type": "email",
- "target": {
- "emails": [
- "admin@example.com",
- "ops@example.com"
]
}, - "event_types": [
- "user.join",
- "peer.user.add",
- "peer.login.expire"
], - "enabled": true
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "type": "email",
- "target": {
- "emails": [
- "admin@example.com",
- "ops@example.com"
]
}, - "event_types": [
- "user.join",
- "peer.user.add",
- "peer.login.expire"
], - "enabled": true
}Retrieves a specific notification channel by its ID.
| channelId required | string Example: ch8i4ug6lnn4g9hqv7m0 The unique identifier of the notification channel. |
{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "type": "email",
- "target": {
- "emails": [
- "admin@example.com",
- "ops@example.com"
]
}, - "event_types": [
- "user.join",
- "peer.user.add",
- "peer.login.expire"
], - "enabled": true
}Updates an existing notification channel.
| channelId required | string Example: ch8i4ug6lnn4g9hqv7m0 The unique identifier of the notification channel. |
| type required | string (NotificationChannelType) Enum: "email" "webhook" The type of notification channel. |
EmailTarget (object) or WebhookTarget (object) Channel-specific target configuration. The shape depends on the
| |
| event_types required | Array of strings (NotificationEventType) List of activity event type codes this channel subscribes to. |
| enabled required | boolean Whether this notification channel is active. |
{- "type": "email",
- "target": {
- "emails": [
- "admin@example.com",
- "ops@example.com"
]
}, - "event_types": [
- "user.join",
- "peer.user.add",
- "peer.login.expire"
], - "enabled": true
}{- "id": "ch8i4ug6lnn4g9hqv7m0",
- "type": "email",
- "target": {
- "emails": [
- "admin@example.com",
- "ops@example.com"
]
}, - "event_types": [
- "user.join",
- "peer.user.add",
- "peer.login.expire"
], - "enabled": true
}[- {
- "id": "chacdk86lnnboviihd7g",
- "routers": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "routing_peers_count": 2,
- "resources": [
- "ch8i4ug6lnn4g9hqv7m1"
], - "policies": [
- "ch8i4ug6lnn4g9hqv7m2"
], - "name": "Remote Network 1",
- "description": "A remote network that needs to be accessed"
}
]Creates a Network
New Network request
| name required | string Network name |
| description | string Network description |
{- "name": "Remote Network 1",
- "description": "A remote network that needs to be accessed"
}{- "id": "chacdk86lnnboviihd7g",
- "routers": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "routing_peers_count": 2,
- "resources": [
- "ch8i4ug6lnn4g9hqv7m1"
], - "policies": [
- "ch8i4ug6lnn4g9hqv7m2"
], - "name": "Remote Network 1",
- "description": "A remote network that needs to be accessed"
}Get information about a Network
| networkId required | string The unique identifier of a network |
{- "id": "chacdk86lnnboviihd7g",
- "routers": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "routing_peers_count": 2,
- "resources": [
- "ch8i4ug6lnn4g9hqv7m1"
], - "policies": [
- "ch8i4ug6lnn4g9hqv7m2"
], - "name": "Remote Network 1",
- "description": "A remote network that needs to be accessed"
}Update/Replace a Network
| networkId required | string The unique identifier of a network |
Update Network request
| name required | string Network name |
| description | string Network description |
{- "name": "Remote Network 1",
- "description": "A remote network that needs to be accessed"
}{- "id": "chacdk86lnnboviihd7g",
- "routers": [
- "ch8i4ug6lnn4g9hqv7m0"
], - "routing_peers_count": 2,
- "resources": [
- "ch8i4ug6lnn4g9hqv7m1"
], - "policies": [
- "ch8i4ug6lnn4g9hqv7m2"
], - "name": "Remote Network 1",
- "description": "A remote network that needs to be accessed"
}Returns a list of all resources in a network
| networkId required | string The unique identifier of a network |
[- {
- "id": "chacdk86lnnboviihd7g",
- "type": "host",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "name": "Remote Resource 1",
- "description": "A remote resource inside network 1",
- "address": "1.1.1.1",
- "enabled": true
}
]Creates a Network Resource
| networkId required | string The unique identifier of a network |
New Network Resource request
| name required | string Network resource name |
| description | string Network resource description |
| address required | string Network resource address (either a direct host like 1.1.1.1 or 1.1.1.1/32, or a subnet like 192.168.178.0/24, or domains like example.com and *.example.com) |
| enabled required | boolean Network resource status |
| groups required | Array of strings Group IDs containing the resource |
{- "name": "Remote Resource 1",
- "description": "A remote resource inside network 1",
- "address": "1.1.1.1",
- "enabled": true,
- "groups": [
- "chacdk86lnnboviihd70"
]
}{- "id": "chacdk86lnnboviihd7g",
- "type": "host",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "name": "Remote Resource 1",
- "description": "A remote resource inside network 1",
- "address": "1.1.1.1",
- "enabled": true
}Get information about a Network Resource
| networkId required | string The unique identifier of a network |
| resourceId required | string The unique identifier of a network resource |
{- "id": "chacdk86lnnboviihd7g",
- "type": "host",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "name": "Remote Resource 1",
- "description": "A remote resource inside network 1",
- "address": "1.1.1.1",
- "enabled": true
}Update a Network Resource
| networkId required | string The unique identifier of a network |
| resourceId required | string The unique identifier of a resource |
Update Network Resource request
| name required | string Network resource name |
| description | string Network resource description |
| address required | string Network resource address (either a direct host like 1.1.1.1 or 1.1.1.1/32, or a subnet like 192.168.178.0/24, or domains like example.com and *.example.com) |
| enabled required | boolean Network resource status |
| groups required | Array of strings Group IDs containing the resource |
{- "name": "Remote Resource 1",
- "description": "A remote resource inside network 1",
- "address": "1.1.1.1",
- "enabled": true,
- "groups": [
- "chacdk86lnnboviihd70"
]
}{- "id": "chacdk86lnnboviihd7g",
- "type": "host",
- "groups": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "name": "devs",
- "peers_count": 2,
- "resources_count": 5,
- "issued": "api"
}
], - "name": "Remote Resource 1",
- "description": "A remote resource inside network 1",
- "address": "1.1.1.1",
- "enabled": true
}Returns a list of all routers in a network
| networkId required | string The unique identifier of a network |
[- {
- "id": "chacdk86lnnboviihd7g",
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "metric": 9999,
- "masquerade": true,
- "enabled": true
}
]Creates a Network Router
| networkId required | string The unique identifier of a network |
New Network Router request
| peer | string Peer Identifier associated with route. This property can not be set together with |
| peer_groups | Array of strings Peers Group Identifier associated with route. This property can not be set together with |
| metric required | integer [ 1 .. 9999 ] Route metric number. Lowest number has higher priority |
| masquerade required | boolean Indicate if peer should masquerade traffic to this route's prefix |
| enabled required | boolean Network router status |
{- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "metric": 9999,
- "masquerade": true,
- "enabled": true
}{- "id": "chacdk86lnnboviihd7g",
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "metric": 9999,
- "masquerade": true,
- "enabled": true
}Get information about a Network Router
| networkId required | string The unique identifier of a network |
| routerId required | string The unique identifier of a router |
{- "id": "chacdk86lnnboviihd7g",
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "metric": 9999,
- "masquerade": true,
- "enabled": true
}Update a Network Router
| networkId required | string The unique identifier of a network |
| routerId required | string The unique identifier of a router |
Update Network Router request
| peer | string Peer Identifier associated with route. This property can not be set together with |
| peer_groups | Array of strings Peers Group Identifier associated with route. This property can not be set together with |
| metric required | integer [ 1 .. 9999 ] Route metric number. Lowest number has higher priority |
| masquerade required | boolean Indicate if peer should masquerade traffic to this route's prefix |
| enabled required | boolean Network router status |
{- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "metric": 9999,
- "masquerade": true,
- "enabled": true
}{- "id": "chacdk86lnnboviihd7g",
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "metric": 9999,
- "masquerade": true,
- "enabled": true
}Returns a list of all routers in a network
[- {
- "id": "chacdk86lnnboviihd7g",
- "peer": "chacbco6lnnbn6cg5s91",
- "peer_groups": [
- "chacbco6lnnbn6cg5s91"
], - "metric": 9999,
- "masquerade": true,
- "enabled": true
}
]Get a list of all English city names for a given country code
required | object (Country) Describe country geographical location information |
{- "geoname_id": 2950158,
- "city_name": "Berlin"
}Returns all proxy access tokens for the account
[- {
- "id": "string",
- "name": "string",
- "expires_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "last_used": "2019-08-24T14:15:22Z",
- "revoked": true
}
]Generate an account-scoped proxy access token for self-hosted proxy registration
| name required | string Human-readable token name |
| expires_in | integer >= 0 Token expiration in seconds (0 = never expires) |
{- "name": "my-proxy-token",
- "expires_in": 0
}{- "id": "string",
- "name": "string",
- "expires_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "last_used": "2019-08-24T14:15:22Z",
- "revoked": true,
- "plain_token": "nbx_abc123..."
}Starts provisioning of a NexusLink-managed Agent Network gateway for the account, allocating its endpoint under the managed zone on the first call. Idempotent — answers 202 when this call started (or, after a failure, restarted) provisioning and 200 when a deployment already exists, reporting current state either way. Returns 409 when the account already has an Agent Network endpoint that managed provisioning does not own, and 503 when endpoint allocation is temporarily exhausted.
{- "id": "d1m3kebd9pcs0c1pnu7g",
- "state": "ready",
- "endpoint": "brave-otter.gateway.nexuslink2.com",
- "region": "us-east",
- "message": "string"
}Reports the account's managed gateway deployment and its derived state. Returns 404 when the account has no managed deployment.
{- "id": "d1m3kebd9pcs0c1pnu7g",
- "state": "ready",
- "endpoint": "brave-otter.gateway.nexuslink2.com",
- "region": "us-east",
- "message": "string"
}Returns a paginated, server-side-filtered list of agent-network (LLM) access log entries. Available only when the account has log collection enabled; otherwise entries are not retained. Callers without the account-wide grant are not denied - the response is scoped to their own requests (any user_id or group_id filter is overridden).
| page | integer >= 1 Default: 1 Page number for pagination (1-indexed). |
| page_size | integer [ 1 .. 100 ] Default: 50 Number of items per page (max 100). |
| sort_by | string Default: "timestamp" Enum: "timestamp" "model" "provider" "status_code" "duration" "cost_usd" "total_tokens" "user_id" "decision" Field to sort by. |
| sort_order | string Default: "desc" Enum: "asc" "desc" Sort order (ascending or descending). |
| search | string General search across log ID, host, path, model, and user email/name. |
| user_id | string Filter by authenticated user ID. |
| session_id | string Filter to a single conversation / coding session id (groups all requests of one session). |
| group_id | Array of strings Filter by authorising group id. Repeat for multiple (matches any). |
| provider_id | Array of strings Filter by resolved provider id. Repeat for multiple (matches any). |
| model | Array of strings Filter by model. Repeat for multiple (matches any). |
| decision | string Filter by policy decision (e.g. allow, deny). |
| path | string Filter by request path prefix (matches entries whose path starts with this value). |
| start_date | string <date-time> Filter by timestamp >= start_date (RFC3339 format). |
| end_date | string <date-time> Filter by timestamp <= end_date (RFC3339 format). |
{- "data": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "service_id": "string",
- "timestamp": "2026-05-05T12:34:56Z",
- "status_code": 200,
- "duration_ms": 850,
- "user_id": "string",
- "source_ip": "string",
- "method": "POST",
- "host": "string",
- "path": "string",
- "provider": "openai",
- "model": "gpt-4o",
- "session_id": "019eeb72-ab7c-7cd2-aa05-6e8eb834afcb",
- "resolved_provider_id": "string",
- "selected_policy_id": "string",
- "decision": "allow",
- "deny_reason": "string",
- "input_tokens": 1200,
- "output_tokens": 640,
- "total_tokens": 1840,
- "cached_input_tokens": 0,
- "cache_creation_tokens": 30528,
- "cost_usd": 0.0231,
- "input_cost_usd": 0.0048,
- "cached_input_cost_usd": 0.0015,
- "cache_creation_cost_usd": 0.113,
- "output_cost_usd": 0.0038,
- "cache_cost_usd": 0.1145,
- "stream": true,
- "group_ids": [
- "string"
], - "request_prompt": "string",
- "response_completion": "string"
}
], - "page": 1,
- "page_size": 50,
- "total_records": 523,
- "total_pages": 11
}Returns a paginated, server-side-filtered list of agent-network (LLM) access logs grouped by session. The page unit is a session (total_records counts sessions); each session carries an aggregate summary and its ordered entries. Requests the client sent no session id for each form their own singleton group. Accepts the same filters as the flat access-logs endpoint. Available only when the account has log collection enabled. Callers without the account-wide grant are not denied - the response is scoped to their own requests (any user_id or group_id filter is overridden).
| page | integer >= 1 Default: 1 Page number for pagination (1-indexed). |
| page_size | integer [ 1 .. 100 ] Default: 50 Number of sessions per page (max 100). |
| sort_by | string Default: "timestamp" Enum: "timestamp" "started_at" "cost_usd" "total_tokens" "duration" "request_count" "status_code" "user_id" "decision" Session-level field to sort by. "timestamp" is the session's last activity, "started_at" its first. |
| sort_order | string Default: "desc" Enum: "asc" "desc" Sort order (ascending or descending). |
| search | string General search across log ID, host, path, model, and user email/name. |
| user_id | string Filter by authenticated user ID. |
| session_id | string Filter to a single conversation / coding session id. |
| group_id | Array of strings Filter by authorising group id. Repeat for multiple (matches any). |
| provider_id | Array of strings Filter by resolved provider id. Repeat for multiple (matches any). |
| model | Array of strings Filter by model. Repeat for multiple (matches any). |
| decision | string Filter by policy decision (e.g. allow, deny). |
| path | string Filter by request path prefix (matches entries whose path starts with this value). |
| start_date | string <date-time> Filter by timestamp >= start_date (RFC3339 format). |
| end_date | string <date-time> Filter by timestamp <= end_date (RFC3339 format). |
{- "data": [
- {
- "session_id": "019eeb72-ab7c-7cd2-aa05-6e8eb834afcb",
- "user_id": "string",
- "group_ids": [
- "string"
], - "started_at": "2026-05-05T12:30:00Z",
- "ended_at": "2026-05-05T12:34:56Z",
- "request_count": 7,
- "input_tokens": 8400,
- "output_tokens": 4480,
- "total_tokens": 12880,
- "cached_input_tokens": 0,
- "cache_creation_tokens": 30528,
- "cost_usd": 0.1617,
- "input_cost_usd": 0.021,
- "cached_input_cost_usd": 0.0015,
- "cache_creation_cost_usd": 0.113,
- "output_cost_usd": 0.0262,
- "cache_cost_usd": 0.1145,
- "providers": [
- "string"
], - "models": [
- "string"
], - "decision": "allow",
- "entries": [
- {
- "id": "ch8i4ug6lnn4g9hqv7m0",
- "service_id": "string",
- "timestamp": "2026-05-05T12:34:56Z",
- "status_code": 200,
- "duration_ms": 850,
- "user_id": "string",
- "source_ip": "string",
- "method": "POST",
- "host": "string",
- "path": "string",
- "provider": "openai",
- "model": "gpt-4o",
- "session_id": "019eeb72-ab7c-7cd2-aa05-6e8eb834afcb",
- "resolved_provider_id": "string",
- "selected_policy_id": "string",
- "decision": "allow",
- "deny_reason": "string",
- "input_tokens": 1200,
- "output_tokens": 640,
- "total_tokens": 1840,
- "cached_input_tokens": 0,
- "cache_creation_tokens": 30528,
- "cost_usd": 0.0231,
- "input_cost_usd": 0.0048,
- "cached_input_cost_usd": 0.0015,
- "cache_creation_cost_usd": 0.113,
- "output_cost_usd": 0.0038,
- "cache_cost_usd": 0.1145,
- "stream": true,
- "group_ids": [
- "string"
], - "request_prompt": "string",
- "response_completion": "string"
}
]
}
], - "page": 1,
- "page_size": 50,
- "total_records": 124,
- "total_pages": 3
}Returns agent-network token and cost usage aggregated into time buckets, server-side filtered. Usage is always collected (independent of log collection). Callers without the account-wide grant are not denied - the response is scoped to their own usage (any user_id or group_id filter is overridden).
| granularity | string Default: "day" Enum: "day" "week" "month" Time bucket width. Defaults to day. |
| start_date | string <date-time> Filter by timestamp >= start_date (RFC3339 format). |
| end_date | string <date-time> Filter by timestamp <= end_date (RFC3339 format). |
| user_id | string Filter by user ID. |
| session_id | string Filter to a single conversation / coding session id. |
| group_id | Array of strings Filter by authorising group id. Repeat for multiple (matches any). |
| provider_id | Array of strings Filter by resolved provider id. Repeat for multiple (matches any). |
| model | Array of strings Filter by model. Repeat for multiple (matches any). |
[- {
- "period_start": "2026-05-05",
- "input_tokens": 120000,
- "output_tokens": 64000,
- "total_tokens": 184000,
- "cached_input_tokens": 20000,
- "cache_creation_tokens": 45000,
- "input_cost_usd": 1.12,
- "cached_input_cost_usd": 0.06,
- "cache_creation_cost_usd": 0.36,
- "output_cost_usd": 0.77,
- "cost_usd": 2.31,
- "cache_cost_usd": 0.42
}
]Returns every per-(dimension, window) consumption counter recorded for the account, ordered window-newest-first. Empty list when nothing has been consumed yet.
[- {
- "dimension_kind": "user",
- "dimension_id": "grp-engineers",
- "window_seconds": 86400,
- "window_start_utc": "2026-05-05T12:00:00Z",
- "tokens_input": 12000,
- "tokens_output": 6500,
- "cost_usd": 0.4231,
- "updated_at": "2026-05-05T12:34:56Z"
}
]Returns everything the caller needs to configure a local AI tool and nothing more - the account's Agent Network endpoint plus the providers and models the caller's own policies allow. Available to every authenticated user regardless of role; the response never contains provider credentials, policy or guardrail configuration, or providers the caller cannot reach.
{- "configured": true,
- "providers": [
- {
- "name": "Bedrock prod",
- "catalog_id": "bedrock_api",
- "api_flavor": "anthropic",
- "all_models_allowed": true,
- "models": [
- "anthropic.claude-sonnet-4-5"
]
}
]
}Returns the per-account Agent Network gateway settings (endpoint, proxy address, collection toggles). Before the account is bootstrapped via POST, the response carries the default values with an empty endpoint and proxy address.
{- "endpoint": "brave-otter.eu.proxy.nexuslink2.com",
- "proxy_address": "eu.proxy.nexuslink2.com",
- "dedicated": false,
- "enable_log_collection": false,
- "enable_prompt_collection": false,
- "redact_pii": false,
- "access_log_retention_days": 30,
- "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Creates the per-account Agent Network settings row and allocates the account's endpoint. Exactly one of proxy_address (labeled endpoint under that cluster; the server allocates the label) and endpoint (self-addressed dedicated endpoint, claimed verbatim) must be provided. The endpoint and proxy address are immutable once assigned. Returns 409 when the account already has a settings row.
Settings bootstrap request
| proxy_address | string Cluster address to allocate a labeled endpoint beneath. Mutually exclusive with |
| endpoint | string Hostname to claim as the account's self-addressed (dedicated) endpoint. Mutually exclusive with |
| enable_log_collection | boolean Whether per-request access-log entries are collected for this account's agent-network traffic. Defaults to true. |
| enable_prompt_collection | boolean Master switch for request/response prompt capture. Defaults to false. |
| redact_pii | boolean Whether captured prompts have PII redacted. Defaults to false. |
| access_log_retention_days | integer Days to retain full access-log rows; older rows are swept. 0 or less means keep indefinitely. Defaults to 30. |
{- "proxy_address": "eu.proxy.nexuslink2.com",
- "endpoint": "brave-otter.gateway.example.com",
- "enable_log_collection": true,
- "enable_prompt_collection": false,
- "redact_pii": false,
- "access_log_retention_days": 30
}{- "endpoint": "brave-otter.eu.proxy.nexuslink2.com",
- "proxy_address": "eu.proxy.nexuslink2.com",
- "dedicated": false,
- "enable_log_collection": false,
- "enable_prompt_collection": false,
- "redact_pii": false,
- "access_log_retention_days": 30,
- "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Updates the account-level Agent Network settings; the request carries every field, replacing the mutable ones (collection toggles and retention). Returns 404 when the account has no settings row yet — bootstrap it with POST first. The endpoint and proxy address are assigned at bootstrap and immutable; the request must carry them unchanged, and a request carrying different values is rejected.
Settings update request
| endpoint required | string The account's gateway endpoint hostname. Immutable — must match the assigned value; a different value is rejected. |
| proxy_address required | string Declared cluster address of the proxy serving this account's gateway. Immutable — must match the assigned value; a different value is rejected. |
| enable_log_collection required | boolean Whether per-request access-log entries are collected for this account's agent-network traffic. |
| enable_prompt_collection required | boolean Master switch for request/response prompt capture. |
| redact_pii required | boolean Whether captured prompts have PII redacted. |
| access_log_retention_days required | integer Days to retain full access-log rows; older rows are swept. 0 or less means keep indefinitely. |
{- "endpoint": "brave-otter.eu.proxy.nexuslink2.com",
- "proxy_address": "eu.proxy.nexuslink2.com",
- "enable_log_collection": true,
- "enable_prompt_collection": true,
- "redact_pii": true,
- "access_log_retention_days": 30
}{- "endpoint": "brave-otter.eu.proxy.nexuslink2.com",
- "proxy_address": "eu.proxy.nexuslink2.com",
- "dedicated": false,
- "enable_log_collection": false,
- "enable_prompt_collection": false,
- "redact_pii": false,
- "access_log_retention_days": 30,
- "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Deletes the account's Agent Network settings row, releasing the endpoint. Guarded — the delete is refused with 412 while any Agent Network provider exists for the account or while a proxy is actively serving the endpoint. Bootstrapping again after a delete allocates a new endpoint; the released hostname is not reserved.
Returns all account-level budget rules.
[- {
- "id": "ainbud_d1m3kebd9pcs0c1pnu7g",
- "name": "Org monthly ceiling",
- "enabled": true,
- "target_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "target_users": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}
]Creates a new account-level budget rule.
New budget rule request
| name required | string Display name for the budget rule. |
| enabled | boolean Whether the rule is enforced. Defaults to true on create. |
| target_groups | Array of strings NexusLink group ids the rule binds. Empty plus empty target_users means account-wide. |
| target_users | Array of strings NexusLink user ids the rule binds directly. |
required | object (AgentNetworkPolicyLimits) Token and budget caps attached directly to the policy. These compose with any guardrail-level checks. |
{- "name": "Org monthly ceiling",
- "enabled": true,
- "target_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "target_users": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}
}{- "id": "ainbud_d1m3kebd9pcs0c1pnu7g",
- "name": "Org monthly ceiling",
- "enabled": true,
- "target_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "target_users": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Get a specific account-level budget rule.
| ruleId required | string The unique identifier of a budget rule |
{- "id": "ainbud_d1m3kebd9pcs0c1pnu7g",
- "name": "Org monthly ceiling",
- "enabled": true,
- "target_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "target_users": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Updates an existing account-level budget rule.
| ruleId required | string The unique identifier of a budget rule |
Budget rule update request
| name required | string Display name for the budget rule. |
| enabled | boolean Whether the rule is enforced. Defaults to true on create. |
| target_groups | Array of strings NexusLink group ids the rule binds. Empty plus empty target_users means account-wide. |
| target_users | Array of strings NexusLink user ids the rule binds directly. |
required | object (AgentNetworkPolicyLimits) Token and budget caps attached directly to the policy. These compose with any guardrail-level checks. |
{- "name": "Org monthly ceiling",
- "enabled": true,
- "target_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "target_users": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}
}{- "id": "ainbud_d1m3kebd9pcs0c1pnu7g",
- "name": "Org monthly ceiling",
- "enabled": true,
- "target_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "target_users": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Returns the static catalog of supported Agent Network providers (OpenAI, Anthropic, …) along with their default upstream host, auth header template, brand color, and known models.
[- {
- "id": "openai_api",
- "name": "OpenAI API",
- "description": "GPT, Responses API, and Embeddings",
- "default_host": "api.openai.com",
- "auth_header_template": "Bearer ${API_KEY}",
- "default_content_type": "application/json",
- "brand_color": "#10A37F",
- "kind": "provider",
- "extra_headers": [
- {
- "name": "x-portkey-config"
}
], - "identity_injection": {
- "header_pair": {
- "customizable": true,
- "end_user_id_header": "x-bf-dim-nexuslink_user_id",
- "tags_header": "x-bf-dim-nexuslink_groups"
}, - "json_metadata": {
- "customizable": true,
- "header": "cf-aig-metadata",
- "user_key": "nexuslink_user_id",
- "groups_key": "nexuslink_groups"
}
}, - "pricing_surfaces": [
- "openai"
], - "models": [
- {
- "id": "gpt-4o",
- "label": "GPT-4o",
- "input_per_1k": 0.005,
- "output_per_1k": 0.015,
- "cached_input_per_1k": 0.000075,
- "cache_read_per_1k": 0.0003,
- "cache_creation_per_1k": 0.00375,
- "context_window": 128000
}
]
}
]Asks the vendor which models the supplied credential can actually use, so the provider form can offer a live list instead of only the static catalog. The endpoint, auth header and response shape are taken from the catalog entry, never from the request.
Supply either an api_key together with the upstream_url being configured (before the provider is saved), or a provider_id of an existing record to reuse its stored credential.
Returns 422 for a catalog provider that has no listing endpoint (most gateways); the caller should fall back to the catalog's own model list. A model whose price the shipped table does not know is returned with pricing_known false, and the operator must set rates for it.
| catalog_provider_id required | string Catalog provider to query (AgentNetworkCatalogProvider.id). Determines the listing endpoint, the auth header and the response shape. |
| upstream_url | string The upstream being configured. Used to reach vendors that serve their listing from the same host as inference, and to read back the region for those whose host embeds one. Sent alongside provider_id, it overrides the stored upstream, so an edit can be listed against the URL on the form before it is saved. |
| api_key | string Credential to query the vendor with, for a provider that has not been saved yet. Mutually exclusive with provider_id. |
| provider_id | string Existing Agent Network provider record to query with. Its stored credential is used, and its upstream unless upstream_url overrides it, so the form can refresh the list without the client holding the key. |
{- "catalog_provider_id": "bedrock_api",
- "api_key": "sk-...",
- "provider_id": "ch8i4ug6lnn4g9hqv7m0"
}{- "models": [
- {
- "id": "eu.anthropic.claude-haiku-4-5-20251001-v1:0",
- "label": "EU Anthropic Claude Haiku 4.5",
- "pricing_known": true,
- "input_per_1k": 0.005,
- "output_per_1k": 0.015,
- "cached_input_per_1k": 0.000075,
- "cache_read_per_1k": 0.0003,
- "cache_creation_per_1k": 0.00375
}
]
}Returns a list of all Agent Network AI providers configured for the account.
[- {
- "id": "ainp_d1m3kebd9pcs0c1pnu7g",
- "provider_id": "openai_api",
- "name": "OpenAI API",
- "models": [
- {
- "id": "gpt-4o-mini",
- "input_per_1k": 0.00015,
- "output_per_1k": 0.0006,
- "cached_input_per_1k": 0.000075,
- "cache_read_per_1k": 0.0003,
- "cache_creation_per_1k": 0.00375
}
], - "extra_values": {
- "x-portkey-config": "pc-prod-3f2a"
}, - "identity_header_user_id": "x-bf-dim-nexuslink_user_id",
- "identity_header_groups": "x-bf-dim-nexuslink_groups",
- "enabled": true,
- "skip_tls_verification": false,
- "metadata_disabled": false,
- "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}
]Connects a new Agent Network AI provider for the account.
The credential is checked against the vendor's model listing before the provider is stored, so a record the vendor will not accept is refused rather than saved. A rejected credential, a listing endpoint that does not resolve or answer, a vendor outage, and a timeout all block the write and return 422.
What that proves about the upstream URL is narrower than the URL itself. Only its host is used: the listing is requested over HTTPS at the path the catalog entry declares, so a configured scheme or path is neither used nor validated here. Where the catalog entry has a listing host of its own — Bedrock, whose listing comes from the control plane — even the host is only resolved, never contacted, so a public host that does not answer is still stored.
Only what cannot be checked at all is exempt and stored unverified: a catalog provider with no listing endpoint, one with no host to derive a listing from, an upstream resolving to a private address the management service will not dial, and a provider configured to skip TLS verification.
New provider request
| provider_id required | string Catalog identifier for the upstream AI provider (e.g. openai_api, anthropic_api, azure_openai_api, bedrock_api, vertex_ai_api, mistral_api, custom). |
| name required | string Display name for the provider. |
| upstream_url required | string Full upstream URL (with scheme) that NexusLink forwards traffic to. |
| api_key | string Upstream provider API key. Sealed at rest on the management server and never returned in responses. Required on create; optional on update (omit to keep the existing key). |
Array of objects (AgentNetworkProviderModel) Models exposed through this endpoint, with the operator's per-1k input/output prices. Empty means all catalog models are allowed at catalog prices. | |
object Operator-typed values for catalog-declared extra headers (see AgentNetworkProvider.extra_values). The request's map replaces the stored values; empty strings drop the corresponding key. | |
| identity_header_user_id | string Wire header name for the caller's display identity. See AgentNetworkProvider.identity_header_user_id. Empty or omitted disables stamping for this dimension. |
| identity_header_groups | string Wire header name for the caller's groups CSV. See AgentNetworkProvider.identity_header_groups. Same semantics as |
| enabled | boolean Whether the provider is enabled. Defaults to true on create. |
| skip_tls_verification | boolean Skip upstream TLS certificate verification when the proxy dials this provider's URL. For self-hosted / internal gateways behind a private or self-signed certificate. Defaults to false. |
| metadata_disabled | boolean Disable identity metadata injection (the caller's user + authorizing group) for this provider. Defaults to false (metadata is injected). |
{- "provider_id": "openai_api",
- "name": "OpenAI API",
- "api_key": "sk-...",
- "models": [
- {
- "id": "gpt-4o-mini",
- "input_per_1k": 0.00015,
- "output_per_1k": 0.0006,
- "cached_input_per_1k": 0.000075,
- "cache_read_per_1k": 0.0003,
- "cache_creation_per_1k": 0.00375
}
], - "extra_values": {
- "x-portkey-config": "pc-prod-3f2a"
}, - "identity_header_user_id": "x-bf-dim-nexuslink_user_id",
- "identity_header_groups": "x-bf-dim-nexuslink_groups",
- "enabled": true,
- "skip_tls_verification": false,
- "metadata_disabled": false
}{- "id": "ainp_d1m3kebd9pcs0c1pnu7g",
- "provider_id": "openai_api",
- "name": "OpenAI API",
- "models": [
- {
- "id": "gpt-4o-mini",
- "input_per_1k": 0.00015,
- "output_per_1k": 0.0006,
- "cached_input_per_1k": 0.000075,
- "cache_read_per_1k": 0.0003,
- "cache_creation_per_1k": 0.00375
}
], - "extra_values": {
- "x-portkey-config": "pc-prod-3f2a"
}, - "identity_header_user_id": "x-bf-dim-nexuslink_user_id",
- "identity_header_groups": "x-bf-dim-nexuslink_groups",
- "enabled": true,
- "skip_tls_verification": false,
- "metadata_disabled": false,
- "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Get information about a specific Agent Network AI provider.
| providerId required | string The unique identifier of an Agent Network provider |
{- "id": "ainp_d1m3kebd9pcs0c1pnu7g",
- "provider_id": "openai_api",
- "name": "OpenAI API",
- "models": [
- {
- "id": "gpt-4o-mini",
- "input_per_1k": 0.00015,
- "output_per_1k": 0.0006,
- "cached_input_per_1k": 0.000075,
- "cache_read_per_1k": 0.0003,
- "cache_creation_per_1k": 0.00375
}
], - "extra_values": {
- "x-portkey-config": "pc-prod-3f2a"
}, - "identity_header_user_id": "x-bf-dim-nexuslink_user_id",
- "identity_header_groups": "x-bf-dim-nexuslink_groups",
- "enabled": true,
- "skip_tls_verification": false,
- "metadata_disabled": false,
- "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Update an existing Agent Network AI provider.
When the upstream URL, the API key or the catalog provider changes, the record is checked against the vendor before the change is stored, and a refusal returns 422 without replacing what was there. Switching TLS verification back on is the fourth trigger: a provider exempt from the check was stored unverified, so the edit that ends the exemption is the first opportunity to check it. Where one of the four does fire, an update that omits the API key is checked against the stored one. Edits touching none of them — a rename, model rows, price edits — are stored without a check, as are the cases the create description lists as unverifiable.
| providerId required | string The unique identifier of an Agent Network provider |
Provider update request
| provider_id required | string Catalog identifier for the upstream AI provider (e.g. openai_api, anthropic_api, azure_openai_api, bedrock_api, vertex_ai_api, mistral_api, custom). |
| name required | string Display name for the provider. |
| upstream_url required | string Full upstream URL (with scheme) that NexusLink forwards traffic to. |
| api_key | string Upstream provider API key. Sealed at rest on the management server and never returned in responses. Required on create; optional on update (omit to keep the existing key). |
Array of objects (AgentNetworkProviderModel) Models exposed through this endpoint, with the operator's per-1k input/output prices. Empty means all catalog models are allowed at catalog prices. | |
object Operator-typed values for catalog-declared extra headers (see AgentNetworkProvider.extra_values). The request's map replaces the stored values; empty strings drop the corresponding key. | |
| identity_header_user_id | string Wire header name for the caller's display identity. See AgentNetworkProvider.identity_header_user_id. Empty or omitted disables stamping for this dimension. |
| identity_header_groups | string Wire header name for the caller's groups CSV. See AgentNetworkProvider.identity_header_groups. Same semantics as |
| enabled | boolean Whether the provider is enabled. Defaults to true on create. |
| skip_tls_verification | boolean Skip upstream TLS certificate verification when the proxy dials this provider's URL. For self-hosted / internal gateways behind a private or self-signed certificate. Defaults to false. |
| metadata_disabled | boolean Disable identity metadata injection (the caller's user + authorizing group) for this provider. Defaults to false (metadata is injected). |
{- "provider_id": "openai_api",
- "name": "OpenAI API",
- "api_key": "sk-...",
- "models": [
- {
- "id": "gpt-4o-mini",
- "input_per_1k": 0.00015,
- "output_per_1k": 0.0006,
- "cached_input_per_1k": 0.000075,
- "cache_read_per_1k": 0.0003,
- "cache_creation_per_1k": 0.00375
}
], - "extra_values": {
- "x-portkey-config": "pc-prod-3f2a"
}, - "identity_header_user_id": "x-bf-dim-nexuslink_user_id",
- "identity_header_groups": "x-bf-dim-nexuslink_groups",
- "enabled": true,
- "skip_tls_verification": false,
- "metadata_disabled": false
}{- "id": "ainp_d1m3kebd9pcs0c1pnu7g",
- "provider_id": "openai_api",
- "name": "OpenAI API",
- "models": [
- {
- "id": "gpt-4o-mini",
- "input_per_1k": 0.00015,
- "output_per_1k": 0.0006,
- "cached_input_per_1k": 0.000075,
- "cache_read_per_1k": 0.0003,
- "cache_creation_per_1k": 0.00375
}
], - "extra_values": {
- "x-portkey-config": "pc-prod-3f2a"
}, - "identity_header_user_id": "x-bf-dim-nexuslink_user_id",
- "identity_header_groups": "x-bf-dim-nexuslink_groups",
- "enabled": true,
- "skip_tls_verification": false,
- "metadata_disabled": false,
- "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Returns a list of all Agent Network policies for the account.
[- {
- "id": "ainpol_d1m3kebd9pcs0c1pnu7g",
- "name": "Engineering → OpenAI",
- "description": "Engineers can call OpenAI under production guardrails.",
- "enabled": true,
- "source_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "destination_provider_ids": [
- "ainp_d1m3kebd9pcs0c1pnu7g"
], - "guardrail_ids": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}
]Creates a new Agent Network policy binding source groups to destination providers, optionally enforced by guardrails.
New policy request
| name required | string Display name for the policy. |
| description | string Optional human-readable description. |
| enabled | boolean Whether the policy is enabled. Defaults to true on create. |
| source_groups required | Array of strings non-empty NexusLink group ids whose members are allowed to call the destination providers. |
| destination_provider_ids required | Array of strings non-empty Agent Network provider ids the source groups can reach. |
| guardrail_ids | Array of strings Agent Network guardrail ids to attach to this policy. |
object (AgentNetworkPolicyLimits) Token and budget caps attached directly to the policy. These compose with any guardrail-level checks. |
{- "name": "Engineering → OpenAI",
- "description": "Engineers can call OpenAI under production guardrails.",
- "enabled": true,
- "source_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "destination_provider_ids": [
- "ainp_d1m3kebd9pcs0c1pnu7g"
], - "guardrail_ids": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}
}{- "id": "ainpol_d1m3kebd9pcs0c1pnu7g",
- "name": "Engineering → OpenAI",
- "description": "Engineers can call OpenAI under production guardrails.",
- "enabled": true,
- "source_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "destination_provider_ids": [
- "ainp_d1m3kebd9pcs0c1pnu7g"
], - "guardrail_ids": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Get information about a specific Agent Network policy.
| policyId required | string The unique identifier of an Agent Network policy |
{- "id": "ainpol_d1m3kebd9pcs0c1pnu7g",
- "name": "Engineering → OpenAI",
- "description": "Engineers can call OpenAI under production guardrails.",
- "enabled": true,
- "source_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "destination_provider_ids": [
- "ainp_d1m3kebd9pcs0c1pnu7g"
], - "guardrail_ids": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Update an existing Agent Network policy.
| policyId required | string The unique identifier of an Agent Network policy |
Policy update request
| name required | string Display name for the policy. |
| description | string Optional human-readable description. |
| enabled | boolean Whether the policy is enabled. Defaults to true on create. |
| source_groups required | Array of strings non-empty NexusLink group ids whose members are allowed to call the destination providers. |
| destination_provider_ids required | Array of strings non-empty Agent Network provider ids the source groups can reach. |
| guardrail_ids | Array of strings Agent Network guardrail ids to attach to this policy. |
object (AgentNetworkPolicyLimits) Token and budget caps attached directly to the policy. These compose with any guardrail-level checks. |
{- "name": "Engineering → OpenAI",
- "description": "Engineers can call OpenAI under production guardrails.",
- "enabled": true,
- "source_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "destination_provider_ids": [
- "ainp_d1m3kebd9pcs0c1pnu7g"
], - "guardrail_ids": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}
}{- "id": "ainpol_d1m3kebd9pcs0c1pnu7g",
- "name": "Engineering → OpenAI",
- "description": "Engineers can call OpenAI under production guardrails.",
- "enabled": true,
- "source_groups": [
- "ch8vp3o6lnna9hg0sd8g"
], - "destination_provider_ids": [
- "ainp_d1m3kebd9pcs0c1pnu7g"
], - "guardrail_ids": [ ],
- "limits": {
- "token_limit": {
- "enabled": true,
- "group_cap": 10000000,
- "user_cap": 1000000,
- "window_seconds": 2592000
}, - "budget_limit": {
- "enabled": true,
- "group_cap_usd": 1000,
- "user_cap_usd": 100,
- "window_seconds": 2592000
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Returns a list of all Agent Network guardrails for the account.
[- {
- "id": "ainguard_d1m3kebd9pcs0c1pnu7g",
- "name": "Strict — Production",
- "description": "Tight model allowlist, PII redaction, hard monthly budget.",
- "checks": {
- "model_allowlist": {
- "enabled": true,
- "models": [
- "gpt-4o-mini",
- "claude-haiku-4-5"
]
}, - "prompt_capture": {
- "enabled": true,
- "redact_pii": true
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}
]Creates a new Agent Network guardrail that can be attached to one or more policies.
New guardrail request
| name required | string Display name for the guardrail. |
| description | string Optional human-readable description. |
required | object (AgentNetworkGuardrailChecks) Guardrail check parameters. Each entry has an |
{- "name": "Strict — Production",
- "description": "Tight model allowlist, PII redaction, hard monthly budget.",
- "checks": {
- "model_allowlist": {
- "enabled": true,
- "models": [
- "gpt-4o-mini",
- "claude-haiku-4-5"
]
}, - "prompt_capture": {
- "enabled": true,
- "redact_pii": true
}
}
}{- "id": "ainguard_d1m3kebd9pcs0c1pnu7g",
- "name": "Strict — Production",
- "description": "Tight model allowlist, PII redaction, hard monthly budget.",
- "checks": {
- "model_allowlist": {
- "enabled": true,
- "models": [
- "gpt-4o-mini",
- "claude-haiku-4-5"
]
}, - "prompt_capture": {
- "enabled": true,
- "redact_pii": true
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Get information about a specific Agent Network guardrail.
| guardrailId required | string The unique identifier of an Agent Network guardrail |
{- "id": "ainguard_d1m3kebd9pcs0c1pnu7g",
- "name": "Strict — Production",
- "description": "Tight model allowlist, PII redaction, hard monthly budget.",
- "checks": {
- "model_allowlist": {
- "enabled": true,
- "models": [
- "gpt-4o-mini",
- "claude-haiku-4-5"
]
}, - "prompt_capture": {
- "enabled": true,
- "redact_pii": true
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}Update an existing Agent Network guardrail.
| guardrailId required | string The unique identifier of an Agent Network guardrail |
Guardrail update request
| name required | string Display name for the guardrail. |
| description | string Optional human-readable description. |
required | object (AgentNetworkGuardrailChecks) Guardrail check parameters. Each entry has an |
{- "name": "Strict — Production",
- "description": "Tight model allowlist, PII redaction, hard monthly budget.",
- "checks": {
- "model_allowlist": {
- "enabled": true,
- "models": [
- "gpt-4o-mini",
- "claude-haiku-4-5"
]
}, - "prompt_capture": {
- "enabled": true,
- "redact_pii": true
}
}
}{- "id": "ainguard_d1m3kebd9pcs0c1pnu7g",
- "name": "Strict — Production",
- "description": "Tight model allowlist, PII redaction, hard monthly budget.",
- "checks": {
- "model_allowlist": {
- "enabled": true,
- "models": [
- "gpt-4o-mini",
- "claude-haiku-4-5"
]
}, - "prompt_capture": {
- "enabled": true,
- "redact_pii": true
}
}, - "created_at": "2026-04-26T10:30:00Z",
- "updated_at": "2026-04-26T10:30:00Z"
}