Edgegap App Versions API
Manage container image versions for an application - Docker repository/image/tag, vCPU and memory, ports, environment variables, and session configuration - via /v1/app/{app_name}/version endpoints.
Manage container image versions for an application - Docker repository/image/tag, vCPU and memory, ports, environment variables, and session configuration - via /v1/app/{app_name}/version endpoints.
openapi: 3.0.1
info:
title: Edgegap Arbitrium API
description: >-
Representative OpenAPI description of the Edgegap Arbitrium REST API for
distributed edge game-server orchestration. Covers applications, application
versions, deployments, sessions, matchmaking, relays/networking, metrics, and
private fleets. Auto-deploy dedicated game servers to Edgegap's global network
of edge locations. This document is a faithful, representative subset authored
for cataloging; consult the official Edgegap documentation for the complete,
authoritative reference.
termsOfService: https://edgegap.com/terms-of-service/
contact:
name: Edgegap Support
url: https://edgegap.com/contact/
version: '1.0'
servers:
- url: https://api.edgegap.com
description: Edgegap Arbitrium Management API
security:
- AuthToken: []
tags:
- name: Applications
description: Manage applications registered on Edgegap.
- name: App Versions
description: Manage container image versions for an application.
- name: Deployments
description: Deploy, inspect, and stop dedicated game servers at the edge.
- name: Sessions
description: Add and remove players or groups on a running deployment.
- name: Matchmaking
description: Create and poll matchmaking tickets.
- name: Relays
description: Distributed relay sessions and per-user authorization.
- name: Metrics
description: Monitoring and telemetry for deployments.
- name: Fleets
description: Private fleet deployments and host inventory.
paths:
/v1/app:
get:
operationId: listApplications
tags:
- Applications
summary: List applications
description: Returns a paginated list of applications for the account.
parameters:
- name: page
in: query
schema:
type: integer
- name: limit
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationList'
post:
operationId: createApplication
tags:
- Applications
summary: Create application
description: Registers a new application on Edgegap.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationCreate'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
/v1/app/{app_name}:
get:
operationId: getApplication
tags:
- Applications
summary: Get application
parameters:
- $ref: '#/components/parameters/AppName'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
patch:
operationId: updateApplication
tags:
- Applications
summary: Update application
parameters:
- $ref: '#/components/parameters/AppName'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationCreate'
responses:
'200':
description: OK
delete:
operationId: deleteApplication
tags:
- Applications
summary: Delete application
parameters:
- $ref: '#/components/parameters/AppName'
responses:
'200':
description: OK
/v1/app/{app_name}/versions:
get:
operationId: listAppVersions
tags:
- App Versions
summary: List application versions
parameters:
- $ref: '#/components/parameters/AppName'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/VersionList'
/v1/app/{app_name}/version:
post:
operationId: createAppVersion
tags:
- App Versions
summary: Create application version
description: Creates a new version (container image + runtime config) for an application.
parameters:
- $ref: '#/components/parameters/AppName'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VersionCreate'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Version'
/v1/app/{app_name}/version/{version_name}:
get:
operationId: getAppVersion
tags:
- App Versions
summary: Get application version
parameters:
- $ref: '#/components/parameters/AppName'
- $ref: '#/components/parameters/VersionName'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Version'
patch:
operationId: updateAppVersion
tags:
- App Versions
summary: Update application version
parameters:
- $ref: '#/components/parameters/AppName'
- $ref: '#/components/parameters/VersionName'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VersionCreate'
responses:
'200':
description: OK
delete:
operationId: deleteAppVersion
tags:
- App Versions
summary: Delete application version
parameters:
- $ref: '#/components/parameters/AppName'
- $ref: '#/components/parameters/VersionName'
responses:
'200':
description: OK
/v2/deployments:
post:
operationId: createDeployment
tags:
- Deployments
summary: Create deployment
description: >-
Deploys an application version as a dedicated server, auto-selecting the
optimal edge location for the supplied players/IPs or geo coordinates.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeploymentCreate'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Deployment'
/v1/deployments:
get:
operationId: listDeployments
tags:
- Deployments
summary: List deployments
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DeploymentList'
/v1/status/{deployment_id}:
get:
operationId: getDeploymentStatus
tags:
- Deployments
summary: Get deployment status
parameters:
- $ref: '#/components/parameters/DeploymentId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Deployment'
/v1/stop/{deployment_id}:
delete:
operationId: stopDeployment
tags:
- Deployments
summary: Stop deployment
parameters:
- $ref: '#/components/parameters/DeploymentId'
responses:
'200':
description: OK
/v1/deployments/bulk-stop:
post:
operationId: bulkStopDeployments
tags:
- Deployments
summary: Bulk stop deployments
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
deployments:
type: array
items:
type: string
responses:
'200':
description: OK
/v1/deployment/{deployment_id}/container-logs:
get:
operationId: getContainerLogs
tags:
- Deployments
summary: Get container logs
parameters:
- $ref: '#/components/parameters/DeploymentId'
responses:
'200':
description: OK
/v1/deployments/{deployment_id}/tags:
get:
operationId: listDeploymentTags
tags:
- Deployments
summary: List deployment tags
parameters:
- $ref: '#/components/parameters/DeploymentId'
responses:
'200':
description: OK
post:
operationId: addDeploymentTag
tags:
- Deployments
summary: Add deployment tag
parameters:
- $ref: '#/components/parameters/DeploymentId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
responses:
'200':
description: OK
/v1/session:
post:
operationId: createSession
tags:
- Sessions
summary: Create session
description: Creates a session with users, linked to a deployment.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SessionCreate'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Session'
/v1/session/{session_id}:
get:
operationId: getSession
tags:
- Sessions
summary: Get session
parameters:
- $ref: '#/components/parameters/SessionId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Session'
delete:
operationId: deleteSession
tags:
- Sessions
summary: Delete session
parameters:
- $ref: '#/components/parameters/SessionId'
responses:
'200':
description: OK
/v1/session/{session_id}/users:
get:
operationId: listSessionUsers
tags:
- Sessions
summary: List session users
parameters:
- $ref: '#/components/parameters/SessionId'
responses:
'200':
description: OK
/tickets:
post:
operationId: createMatchmakingTicket
tags:
- Matchmaking
summary: Create matchmaking ticket
description: >-
Creates a new matchmaking ticket on a deployed matchmaker service.
Served from the matchmaker service URL.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TicketCreate'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Ticket'
/tickets/{ticket_id}:
get:
operationId: getMatchmakingTicket
tags:
- Matchmaking
summary: Poll matchmaking ticket
parameters:
- name: ticket_id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Ticket'
delete:
operationId: deleteMatchmakingTicket
tags:
- Matchmaking
summary: Delete matchmaking ticket
parameters:
- name: ticket_id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
/v1/relays/sessions:
get:
operationId: listRelaySessions
tags:
- Relays
summary: List relay sessions
responses:
'200':
description: OK
post:
operationId: createRelaySession
tags:
- Relays
summary: Create relay session
description: Creates a distributed relay session with users and an optional webhook_url.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RelaySessionCreate'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RelaySession'
/v1/relays/sessions/{session_id}:
get:
operationId: getRelaySession
tags:
- Relays
summary: Get relay session
parameters:
- $ref: '#/components/parameters/SessionId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RelaySession'
delete:
operationId: deleteRelaySession
tags:
- Relays
summary: Delete relay session
parameters:
- $ref: '#/components/parameters/SessionId'
responses:
'200':
description: OK
/v1/relays/sessions:authorize-user:
post:
operationId: authorizeRelayUser
tags:
- Relays
summary: Authorize relay user
description: Grants a user access to a relay session (requires session_id and user_ip).
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_id:
type: string
user_ip:
type: string
responses:
'200':
description: OK
/v1/relays/sessions:revoke-user:
post:
operationId: revokeRelayUser
tags:
- Relays
summary: Revoke relay user
description: Removes a user's access to a relay session.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
session_id:
type: string
authorization_token:
type: string
responses:
'200':
description: OK
/v1/metrics/deployment/{deployment_id}:
get:
operationId: getDeploymentMetrics
tags:
- Metrics
summary: Get deployment metrics
description: Returns monitoring telemetry (CPU, memory, network) for a deployment.
parameters:
- $ref: '#/components/parameters/DeploymentId'
responses:
'200':
description: OK
/v2/private-fleets/deployments:
post:
operationId: createPrivateFleetDeployment
tags:
- Fleets
summary: Create private fleet deployment
description: Deploys onto self-managed hosts registered in a private fleet.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeploymentCreate'
responses:
'200':
description: OK
/v2/private-fleets/{fleet_name}/hosts:
get:
operationId: listPrivateFleetHosts
tags:
- Fleets
summary: List private fleet hosts
parameters:
- name: fleet_name
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
components:
securitySchemes:
AuthToken:
type: apiKey
in: header
name: Authorization
description: >-
API token generated in the Edgegap dashboard (User Settings / Tokens),
sent as `Authorization: token <your_token>`.
parameters:
AppName:
name: app_name
in: path
required: true
schema:
type: string
VersionName:
name: version_name
in: path
required: true
schema:
type: string
DeploymentId:
name: deployment_id
in: path
required: true
schema:
type: string
SessionId:
name: session_id
in: path
required: true
schema:
type: string
schemas:
Application:
type: object
properties:
name:
type: string
is_active:
type: boolean
is_telemetry_agent_active:
type: boolean
image:
type: string
create_time:
type: string
format: date-time
ApplicationCreate:
type: object
required:
- name
properties:
name:
type: string
is_active:
type: boolean
is_telemetry_agent_active:
type: boolean
ApplicationList:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Application'
total_count:
type: integer
Version:
type: object
properties:
name:
type: string
docker_repository:
type: string
docker_image:
type: string
docker_tag:
type: string
vcpu:
type: integer
memory:
type: integer
ports:
type: array
items:
$ref: '#/components/schemas/Port'
is_active:
type: boolean
VersionCreate:
type: object
required:
- name
- docker_image
properties:
name:
type: string
docker_repository:
type: string
docker_image:
type: string
docker_tag:
type: string
vcpu:
type: integer
memory:
type: integer
ports:
type: array
items:
$ref: '#/components/schemas/Port'
VersionList:
type: object
properties:
versions:
type: array
items:
$ref: '#/components/schemas/Version'
Port:
type: object
properties:
port:
type: integer
protocol:
type: string
enum:
- TCP
- UDP
- TCP/UDP
- WS
- WSS
- HTTP
- HTTPS
to_check:
type: boolean
DeploymentCreate:
type: object
required:
- app_name
- version_name
properties:
app_name:
type: string
version_name:
type: string
ip_list:
type: array
items:
type: string
geo_ip_list:
type: array
items:
type: object
properties:
ip:
type: string
latitude:
type: number
longitude:
type: number
env_vars:
type: array
items:
type: object
properties:
key:
type: string
value:
type: string
Deployment:
type: object
properties:
request_id:
type: string
fqdn:
type: string
app_name:
type: string
app_version:
type: string
current_status:
type: string
running:
type: boolean
public_ip:
type: string
location:
type: object
properties:
city:
type: string
country:
type: string
continent:
type: string
latitude:
type: number
longitude:
type: number
ports:
type: object
additionalProperties:
type: object
DeploymentList:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Deployment'
total_count:
type: integer
SessionCreate:
type: object
required:
- app_name
- version_name
properties:
app_name:
type: string
version_name:
type: string
deployment_request_id:
type: string
ip_list:
type: array
items:
type: string
webhook_url:
type: string
Session:
type: object
properties:
session_id:
type: string
status:
type: string
ready:
type: boolean
linked:
type: boolean
deployment_request_id:
type: string
user_count:
type: integer
TicketCreate:
type: object
properties:
profile:
type: string
attributes:
type: object
additionalProperties: true
Ticket:
type: object
properties:
id:
type: string
state:
type: string
enum:
- PENDING
- MATCHED
- DEPLOYING
- READY
- CANCELLED
assignment:
type: object
properties:
host:
type: string
port:
type: integer
RelaySessionCreate:
type: object
properties:
webhook_url:
type: string
users:
type: array
items:
type: object
properties:
ip:
type: string
RelaySession:
type: object
properties:
session_id:
type: string
status:
type: string
relays:
type: array
items:
type: object
properties:
host:
type: string
port:
type: integer