Border0 Socket API
The Socket API from Border0 — 10 operation(s) for socket.
The Socket API from Border0 — 10 operation(s) for socket.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/border0-socket-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Border0 Audit Actions Socket API
description: Border0 is an identity-aware Zero Trust network access platform for securing access to servers, databases, Kubernetes clusters, and internal web services. This REST API manages sockets (protected services), policies, connectors, organizations, identity providers, service accounts, sessions, and audit logs.
version: '1.0'
contact:
name: Border0 Support
email: support@border0.com
url: https://docs.border0.com
servers:
- url: https://api.border0.com/api/v1
tags:
- name: Socket
paths:
/socket/{socket_id_or_name}/tunnel/{tunnel_id}:
delete:
security:
- Border0_Token: []
summary: Delete one tunnel from a socket by socket ID and tunnel ID
parameters:
- description: Socket ID or Name that the tunnel is associated with
name: socket_id_or_name
in: path
required: true
schema:
type: string
- description: Tunnel ID
name: tunnel_id
in: path
required: true
schema:
type: string
responses:
'204':
description: Successfully deleted
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: delete_socket-socket-id-or-name-tunnel-tunnel-id
tags:
- Socket
get:
security:
- Border0_Token: []
summary: Show one tunnel from a socket by socket ID and tunnel ID
parameters:
- description: Socket ID or Name that the tunnel is associated with
name: socket_id_or_name
in: path
required: true
schema:
type: string
- description: Tunnel ID
name: tunnel_id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/serializer.Tunnel'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: get_socket-socket-id-or-name-tunnel-tunnel-id
tags:
- Socket
/socket/{socket_id_or_name}:
delete:
security:
- Border0_Token: []
summary: Delete a socket by ID
parameters:
- description: Socket ID or name
name: socket_id_or_name
in: path
required: true
schema:
type: string
responses:
'204':
description: Successfully deleted
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: delete_socket-socket-id-or-name
tags:
- Socket
get:
security:
- Border0_Token: []
summary: Show a socket by ID
parameters:
- description: Socket ID or Name
name: socket_id_or_name
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/serializer.Socket'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: get_socket-socket-id-or-name
tags:
- Socket
put:
security:
- Border0_Token: []
summary: Update a socket by ID
parameters:
- description: Socket ID or Name
name: socket_id_or_name
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.updateSocketRequest'
description: Update socket
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/serializer.Socket'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: put_socket-socket-id-or-name
tags:
- Socket
/socket/{socket_id_or_name}/customcert:
get:
security:
- Border0_Token: []
summary: Show a custom cert from a socket
parameters:
- description: Socket ID or Name from where the custom cert is configured
name: socket_id_or_name
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
full_chain:
type: string
private_key:
type: string
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: get_socket-socket-id-or-name-customcert
tags:
- Socket
/socket/{socket_id_or_name}/tunnel:
get:
security:
- Border0_Token: []
summary: Show all tunnels from a socket
parameters:
- description: Socket ID or Namethat the tunnels are associated with
name: socket_id_or_name
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/serializer.Tunnel'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: get_socket-socket-id-or-name-tunnel
tags:
- Socket
post:
security:
- Border0_Token: []
summary: Create a socket tunnel
parameters:
- description: Socket ID or name that the tunnel will be associated with
name: socket_id_or_name
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
description: Empty json object
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/serializer.Tunnel'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: post_socket-socket-id-or-name-tunnel
tags:
- Socket
/socket/{socket_id}/sessions:
get:
security:
- Border0_Token: []
summary: Show all sessions from a socket by socket ID, paginated including active and killed sessions
parameters:
- description: Socket ID
name: socket_id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/serializer.SessionLogPublicPaginated'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: get_socket-socket-id-sessions
tags:
- Socket
/socket:
get:
security:
- Border0_Token: []
summary: Show all sockets
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/serializer.Socket'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: get_socket
tags:
- Socket
post:
security:
- Border0_Token: []
summary: Create a socket
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.createSocketRequest'
description: Create socket
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/serializer.Socket'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: post_socket
tags:
- Socket
/socket/{socket_id_or_name}/evaluate:
post:
security:
- Border0_Token: []
summary: Evaluate policy for a socket
parameters:
- description: Socket ID that the tunnel is associated with
name: socket_id_or_name
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.evaluatePolicyRequest'
description: Metadata to evaluate policy
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/v1.evaluatePolicyResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: post_socket-socket-id-or-name-evaluate
tags:
- Socket
/socket/{socket_id_or_name}/signkey:
post:
security:
- Border0_Token: []
summary: Generate a signed cert for a tunnel
parameters:
- description: Socket ID or Namethat the tunnel is associated with
name: socket_id_or_name
in: path
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/v1.signTunnelKeyRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
signed_ssh_cert:
type: string
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: post_socket-socket-id-or-name-signkey
tags:
- Socket
/socket/{socket_id_or_name}/tunnel/{tunnel_id}/signkey:
post:
security:
- Border0_Token: []
summary: Generate a signed cert for a tunnel
parameters:
- description: Socket ID or name that the tunnel is associated with
name: socket_id_or_name
in: path
required: true
schema:
type: string
- description: Tunnel ID that the cert will be signed for
name: tunnel_id
in: path
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/v1.signTunnelKeyRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
signed_ssh_cert:
type: string
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: post_socket-socket-id-or-name-tunnel-tunnel-id-signkey
tags:
- Socket
/socket/{socket_id_or_name}/update_session:
post:
security:
- Border0_Token: []
summary: Update session for a socket
parameters:
- description: Socket ID that the tunnel is associated with
name: socket_id_or_name
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.updateSessionRequest'
description: Metadata to evaluate policy
required: true
responses:
'204':
description: Successfully updated
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/v1.BaseErrorResponse'
operationId: post_socket-socket-id-or-name-update-session
tags:
- Socket
components:
schemas:
service.DatabaseServiceConfiguration:
type: object
properties:
aws_rds_database_service_configuration:
$ref: '#/components/schemas/service.AwsRdsDatabaseServiceConfiguration'
azure_sql_database_service_configuration:
$ref: '#/components/schemas/service.AzureSqlDatabaseServiceConfiguration'
database_service_type:
type: string
gcp_cloudsql_database_service_configuration:
$ref: '#/components/schemas/service.GcpCloudSqlDatabaseServiceConfiguration'
standard_database_service_configuration:
description: mutually exclusive fields below
allOf:
- $ref: '#/components/schemas/service.StandardDatabaseServiceConfiguration'
service.AwsRdsIamAuthConfiguration:
type: object
properties:
aws_credentials:
$ref: '#/components/schemas/common.AwsCredentials'
ca_certificate:
type: string
rds_instance_region:
type: string
username:
type: string
service.GcpCloudSqlDatabaseServiceConfiguration:
type: object
properties:
cloudsql_connector_configuration:
$ref: '#/components/schemas/service.GcpCloudSqlConnectorAuthConfiguration'
cloudsql_connector_iam_configuration:
$ref: '#/components/schemas/service.GcpCloudSqlConnectorIamAuthConfiguration'
hostname:
type: string
port:
type: integer
protocol:
type: string
tls_auth_configuration:
$ref: '#/components/schemas/service.DatabaseTlsAuthConfiguration'
username_and_password_auth_configuration:
$ref: '#/components/schemas/service.DatabaseUsernameAndPasswordAuthConfiguration'
service.AwsRdsUsernameAndPasswordAuthConfiguration:
type: object
properties:
ca_certificate:
type: string
password:
type: string
username:
type: string
models.PaginationResult:
type: object
properties:
actual_page_size:
type: integer
current_page:
type: integer
next_page:
type: integer
records_per_page:
type: integer
total_pages:
type: integer
total_records:
type: integer
service.DatabaseKerberosAuthConfiguration:
type: object
properties:
password:
type: string
username:
type: string
service.KubectlExecSshServiceConfiguration:
type: object
properties:
aws_eks_kubectl_exec_target_configuration:
$ref: '#/components/schemas/service.AwsEksKubectlExecTargetConfiguration'
kubectl_exec_target_type:
type: string
namespace_allowlist:
description: slice of allowed namespaces.
type: array
items:
type: string
namespace_selectors_allowlist:
description: map of namespace to selectors in that namespace.
type: object
additionalProperties:
type: object
additionalProperties:
type: array
items:
type: string
standard_kubectl_exec_target_configuration:
description: mutually exclusive fields below
allOf:
- $ref: '#/components/schemas/service.StandardKubectlExecTargetConfiguration'
service.BuiltInSshServiceConfiguration:
type: object
properties:
username:
type: string
username_provider:
type: string
serializer.Socket:
type: object
properties:
alive:
type: boolean
autocreation_rule_id:
type: integer
cloud_authentication_email_allowed_addressses:
type: array
items:
type: string
cloud_authentication_email_allowed_domains:
type: array
items:
type: string
cloud_authentication_enabled:
type: boolean
connector_authentication_enabled:
type: boolean
connector_managed:
type: boolean
connectors:
type: array
items:
$ref: '#/components/schemas/serializer.SlimConnector'
custom_domains:
type: array
items:
type: string
description:
type: string
dnsname:
type: string
end_to_end_encryption_enabled:
type: boolean
name:
type: string
org_custom_domain:
type: string
policies:
type: array
items:
$ref: '#/components/schemas/serializer.Policy'
private_socket:
type: boolean
protected_password:
type: string
protected_socket:
type: boolean
protected_username:
type: string
recording_enabled:
type: boolean
socket_id:
type: string
socket_tcp_ports:
type: array
items:
type: integer
socket_type:
type: string
ssh_ca:
type: string
sshkey:
type: string
tags:
type: object
additionalProperties:
type: string
tunnels:
type: array
items:
$ref: '#/components/schemas/serializer.Tunnel'
upstream_ca:
type: string
upstream_cert:
type: string
upstream_http_hostname:
type: string
upstream_key:
type: string
upstream_password:
type: string
upstream_type:
type: string
upstream_username:
type: string
user_name:
type: string
service.StandardHttpServiceConfiguration:
type: object
properties:
host_header:
type: string
hostname:
type: string
port:
type: integer
service.StandardSshServiceConfiguration:
type: object
properties:
border0_certificate_auth_configuration:
$ref: '#/components/schemas/service.Border0CertificateAuthConfiguration'
hostname:
type: string
port:
type: integer
private_key_auth_configuration:
$ref: '#/components/schemas/service.PrivateKeyAuthConfiguration'
ssh_authentication_type:
type: string
username_and_password_auth_configuration:
description: mutually exclusive fields below
allOf:
- $ref: '#/components/schemas/service.UsernameAndPasswordAuthConfiguration'
service.HttpServiceConfiguration:
type: object
properties:
fileserver_http_service_configuration:
$ref: '#/components/schemas/service.FileServerHttpServiceConfiguration'
http_service_type:
type: string
standard_http_service_configuration:
description: mutually exclusive fields below
allOf:
- $ref: '#/components/schemas/service.StandardHttpServiceConfiguration'
models.ConnectorData:
type: object
properties:
config:
$ref: '#/components/schemas/service.Configuration'
connector_id:
type: string
v1.evaluatePolicyRequest:
type: object
required:
- client_ip
- session_key
- user_email
properties:
client_ip:
type: string
session_key:
type: string
user_email:
type: string
service.Border0CertificateAuthConfiguration:
type: object
properties:
username:
type: string
username_provider:
type: string
service.AwsEc2ICSshServiceConfiguration:
type: object
properties:
aws_credentials:
$ref: '#/components/schemas/common.AwsCredentials'
ec2_instance_id:
type: string
ec2_instance_region:
type: string
hostname:
type: string
port:
type: integer
username:
type: string
username_provider:
type: string
serializer.SessionLogPublic:
type: object
properties:
audit_log:
type: boolean
auth_info:
type: string
client_ip:
type: string
client_port:
type: string
country_code:
type: string
country_flag:
type: string
end_time:
type: string
killed:
type: boolean
last_seen:
type: string
metadata:
$ref: '#/components/schemas/serializer.SessionLogMetadata'
name:
type: string
nickname:
type: string
picture:
type: string
recordings:
type: array
items:
$ref: '#/components/schemas/serializer.Recording'
result:
type: string
server_name:
type: string
server_port:
type: string
session_id:
type: string
session_type:
type: string
socket_id:
type: string
sshuser:
type: string
start_time:
type: string
sub:
type: string
user_email:
type: string
service.StandardDatabaseServiceConfiguration:
type: object
properties:
authentication_type:
type: string
hostname:
type: string
kerberos_configuration:
$ref: '#/components/schemas/service.DatabaseKerberosAuthConfiguration'
port:
type: integer
protocol:
type: string
sql_authentication_configuration:
$ref: '#/components/schemas/service.DatabaseSqlAuthConfiguration'
tls_auth_configuration:
$ref: '#/components/schemas/service.DatabaseTlsAuthConfiguration'
username_and_password_auth_configuration:
$ref: '#/components/schemas/service.DatabaseUsernameAndPasswordAuthConfiguration'
service.GcpCloudSqlConnectorIamAuthConfiguration:
type: object
properties:
gcp_credentials_json:
type: string
instance_id:
type: string
username:
type: string
service.VpnTlsServiceConfiguration:
type: object
properties:
routes:
type: array
items:
type: string
vpn_subnet:
type: string
service.AwsSsmSshServiceConfiguration:
type: object
properties:
aws_ssm_ec2_target_configuration:
description: mutually exclusive fields below
allOf:
- $ref: '#/components/schemas/service.AwsSsmEc2TargetConfiguration'
aws_ssm_ecs_target_configuration:
$ref: '#/components/schemas/service.AwsSsmEcsTargetConfiguration'
ssm_target_type:
type: string
serializer.Policy:
type: object
properties:
created_at:
type: string
deleted:
type: boolean
description:
type: string
id:
type: string
name:
type: string
org_id:
type: string
org_wide:
type: boolean
policy_data:
$ref: '#/components/schemas/datatypes.JSONMap'
socket_ids:
type: array
items:
type: string
service.SshServiceConfiguration:
type: object
properties:
aws_ec2ic_ssh_service_configuration:
$ref: '#/components/schemas/service.AwsEc2ICSshServiceConfiguration'
aws_ssm_ssh_service_configuration:
$ref: '#/components/schemas/service.AwsSsmSshServiceConfiguration'
built_in_ssh_service_configuration:
$ref: '#/components/schemas/service.BuiltInSshServiceConfiguration'
# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/border0/refs/heads/main/openapi/border0-socket-api-openapi.yml