Border0 Socket API
The Socket API from Border0 — 10 operation(s) for socket.
The Socket API from Border0 — 10 operation(s) for socket.
openapi: 3.0.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:
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.StandardKubectlExecTargetConfiguration:
type: object
properties:
kubeconfig_path:
type: string
master_url:
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.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'
serializer.Recording:
type: object
properties:
recording_id:
type: string
start_time:
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'
v1.evaluatePolicyResponse:
type: object
properties:
allowed_actions:
type: object
additionalProperties:
type: array
items: {}
info:
type: object
additionalProperties:
type: array
items:
type: string
v1.updateSocketRequest:
type: object
properties:
cloud_authentication_email_allowed_addressses:
type: array
items:
type: string
cloud_authentication_email_allowed_domains:
type: array
items:
type: string
connector_authentication_enabled:
type: boolean
connector_data:
$ref: '#/components/schemas/models.ConnectorData'
connector_id:
type: string
connector_ids:
type: array
items:
type: string
custom_domains:
type: array
items:
type: string
description:
type: string
maxLength: 200
minLength: 0
name:
type: string
maxLength: 200
minLength: 0
org_custom_domain:
type: string
recording_enabled:
type: boolean
socket_type:
type: string
tags:
type: object
additionalProperties:
type: string
upstream_ca:
type: string
minLength: 0
upstream_cert:
type: string
minLength: 0
upstream_configuration:
$ref: '#/components/schemas/service.Configuration'
upstream_http_hostname:
type: string
upstream_key:
type: string
minLength: 0
upstream_password:
type: string
maxLength: 200
minLength: 0
upstream_type:
type: string
upstream_username:
type: string
maxLength: 200
minLength: 0
serializer.Tunnel:
type: object
properties:
local_port:
type: integer
tunnel_id:
type: string
tunnel_server:
type: string
v1.BaseErrorResponse:
type: object
properties:
error_message:
type: string
status_code:
type: integer
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.VpnTlsServiceConfiguration:
type: object
properties:
routes:
type: array
items:
type: string
vpn_subnet:
type: string
service.DatabaseKerberosAuthConfiguration:
type: object
properties:
password:
type: string
username:
type: string
service.FileServerHttpServiceConfiguration:
type: object
properties:
top_level_directory:
type: string
service.DockerExecSshServiceConfiguration:
type: object
properties:
container_name_allowlist:
type: array
items:
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.VpnServiceConfiguration:
type: object
properties:
advertised_routes:
type: array
items:
type: string
dhcp_pool_subnet:
type: string
service.HttpProxyTlsServiceConfiguration:
type: object
properties:
host_allowlist:
type: array
items:
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
serializer.SlimConnector:
type: object
properties:
connector_id:
type: string
name:
type: string
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'
service.RdpServiceConfiguration:
type: object
properties:
hostname:
type: string
port:
type: integer
service.AwsSsmEcsTargetConfiguration:
type: object
properties:
aws_credentials:
$ref: '#/components/schemas/common.AwsCredentials'
ecs_cluster_name:
type: string
ecs_cluster_region:
type: string
ecs_service_name:
type: string
service.BuiltInSshServiceConfiguration:
type: object
properties:
username:
type: string
username_provider:
type: string
service.Border0CertificateAuthConfiguration:
type: object
properties:
username:
type: string
username_provider:
type: string
service.DatabaseTlsAuthConfiguration:
type: object
properties:
ca_certificate:
type: string
certificate:
type: string
key:
type: string
password:
type: string
username:
type: string
service.AwsRdsDatabaseServiceConfiguration:
type: object
properties:
authentication_type:
type: string
hostname:
type: string
iam_auth_configuration:
$ref: '#/components/schemas/service.AwsRdsIamAuthConfiguration'
port:
type: intege
# --- 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