Skip to content
Coritan Docs

Organization API: Customer Portal: Servers

The 19 Organization API operations for servers.

View as Markdown

Part of Customer Portal.

Method Path Summary
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid} Get server
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/command Command
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/keep Tell us this world is still wanted, and lift a hold if one is on
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/listing Public-list visibility and tags for the Server Settings tab
PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/listing Toggle public-list visibility and replace the listing tags
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/permissions List grantable permissions
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/power Power
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/reinstall Wipe server files and re-run the template install script + verify
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/resources Get resources
PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/settings Patch settings
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/sftp Connection details for this server's SFTP login
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/sleep Sleep and start-queue state for a free server
PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/startup-variables Update allowlisted startup env vars for the server's game
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/status-ping Ask the game itself who is online
PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/subdomain Rename the gameproxy join-address subdomain for this server
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/wake Ask for a sleeping free server to be started
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/websocket Return panel WS URL + the caller's bearer token for WS query auth
GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/world-optimization What unused-chunk cleanup has done to this world, and when
POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/world-optimization Queue an unused-chunk trim now, once per minintervalhours

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/command

Name In Type Required
uuid path string yes
org_slug path string yes
command query string or null no

application/json

Field Type Required
command string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Tell us this world is still wanted, and lift a hold if one is on

Section titled Tell us this world is still wanted, and lift a hold if one is on

POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/keep

Tell us this world is still wanted, and lift a hold if one is on.

One endpoint for both halves of the inactivity ladder: the nudge's "keep it" link and the suspension's "reactivate". They differ only in whether the server is currently suspended, and asking the customer to understand that distinction would be asking them to understand our sweep.

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Public-list visibility and tags for the Server Settings tab

Section titled Public-list visibility and tags for the Server Settings tab

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/listing

Public-list visibility and tags for the Server Settings tab.

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Toggle public-list visibility and replace the listing tags

Section titled Toggle public-list visibility and replace the listing tags

PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/listing

Toggle public-list visibility and replace the listing tags.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json (required)

Field Type Required
hidden boolean or null no
tags array of string or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/permissions

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/power

Name In Type Required
uuid path string yes
org_slug path string yes

application/json (required)

Field Type Required
signal string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Wipe server files and re-run the template install script + verify

Section titled Wipe server files and re-run the template install script + verify

POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/reinstall

Wipe server files and re-run the template install script + verify.

On a server that installed, this deletes every file, so it is confirmed the way every other wipe is: confirm_server_name must name the server. The storefront asks for it before the request; a request without it is refused here so no client can wipe a server on a bare click.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json

Field Type Required
confirm_server_name string or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/resources

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/settings

Name In Type Required
uuid path string yes
org_slug path string yes

application/json (required)

Field Type Required
name string or null no
world_optimization_enabled boolean or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Connection details for this server's SFTP login

Section titled Connection details for this server's SFTP login

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/sftp

Connection details for this server's SFTP login.

The portal login email is the SFTP identity, and it need not match any platform user, so the storefront cannot derive this from auth/me.

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Fields of a 200 response:

Field Type
host string
port integer
username string

Sleep and start-queue state for a free server

Section titled Sleep and start-queue state for a free server

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/sleep

Sleep and start-queue state for a free server.

sleeps_at is absolute so a client can run the countdown locally instead of polling for a ticking number. Returns policy: none for a paid server, so a frontend can render one component for both.

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Fields of a 200 response:

Field Type
sleep Sleep
entitlements array of object

Update allowlisted startup env vars for the server's game

Section titled Update allowlisted startup env vars for the server's game

PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/startup-variables

Update allowlisted startup env vars for the server's game.

Values live in container_server_variables and apply on the next restart after Wings sync. Arbitrary keys and startup_command are not accepted.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json (required)

Field Type Required
variables Variables yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Ask the game itself who is online

Section titled Ask the game itself who is online

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/status-ping

Ask the game itself who is online. Best-effort; never fails the request.

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Fields of a 200 response:

Field Type
reachable boolean
players_online integer or null
players_max integer or null
sample array of string
version string or null
protocol integer or null
motd string or null
favicon string or null
latency_ms integer or null

Rename the gameproxy join-address subdomain for this server

Section titled Rename the gameproxy join-address subdomain for this server

PATCH /api/v1/orgs/{org_slug}/portal/servers/{uuid}/subdomain

Rename the gameproxy join-address subdomain for this server.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json (required)

Field Type Required
subdomain string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Ask for a sleeping free server to be started

Section titled Ask for a sleeping free server to be started

POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/wake

Ask for a sleeping free server to be started.

First in line with headroom starts in this request so the customer is not left waiting on a worker poll. Otherwise the row stays queued and a tick job releases it when the node has room. The response always carries the queue block (including ahead: 0) so a frontend can show the process.

Name In Type Required
uuid path string yes
org_slug path string yes

application/json

Field Type Required
turnstile_token string or null no
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Return panel WS URL + the caller's bearer token for WS query auth

Section titled Return panel WS URL + the caller's bearer token for WS query auth

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/websocket

Return panel WS URL + the caller's bearer token for WS query auth.

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Fields of a 200 response:

Field Type
token string
socket string

What unused-chunk cleanup has done to this world, and when

Section titled What unused-chunk cleanup has done to this world, and when

GET /api/v1/orgs/{org_slug}/portal/servers/{uuid}/world-optimization

What unused-chunk cleanup has done to this world, and when.

A feature that quietly deletes parts of somebody's world owes them the receipts: how much it reclaimed, when it last ran, and which worlds it left alone. It is also what turns an abstract switch into "this saved you 1.8 GB".

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.

Queue an unused-chunk trim now, once per minintervalhours

Section titled Queue an unused-chunk trim now, once per minintervalhours

POST /api/v1/orgs/{org_slug}/portal/servers/{uuid}/world-optimization

Queue an unused-chunk trim now, once per min_interval_hours.

Free and paid alike. Safety checks (offline, lease, node concurrency) stay with the job; this endpoint only gates the once-per-day customer button and that the feature is on for this server. Platform dry-run mode still applies.

Cooldown is based on last_run_at, not a pre-reserve of next_eligible_at, so a queued job that exits before recording a run cannot lock the button.

Name In Type Required
uuid path string yes
org_slug path string yes
Status Meaning
200 Success.
422 The request is not valid. detail lists each problem.