# Organization API: Org Staff Containers: Staff

> The 77 Organization API operations for staff.

Source: https://docs.coritan.com/api/reference/organizations/org-staff-containers/staff/

Part of [Org Staff Containers](/api/reference/organizations/org-staff-containers/).

## Operations

| Method | Path | Summary |
| --- | --- | --- |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers`](#op-get-api-v1-orgs-org-slug-staff-servers) | Staff fleet |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/bulk`](#op-post-api-v1-orgs-org-slug-staff-servers-bulk) | Suspend, unsuspend, terminate, or ban the owners of, a selection of this brand's servers |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/heal-installs`](#op-post-api-v1-orgs-org-slug-staff-servers-heal-installs) | Staff heal installs |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/live`](#op-get-api-v1-orgs-org-slug-staff-servers-live) | Live state, usage and players for the brand's servers on one screen |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/stats`](#op-get-api-v1-orgs-org-slug-staff-servers-stats) | How many servers sit in each bucket, and the nodes they sit on |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid) | Staff server detail |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-allocations) | Staff list allocations |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-allocations) | Staff create allocation |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations/available-ports`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-allocations-available-ports) | Staff available ports |
| DELETE | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations/{allocation_id}`](#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-allocations-allocation-id) | Staff delete allocation |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations/{allocation_id}/primary`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-allocations-allocation-id-primary) | Staff set primary allocation |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations/{allocation_id}/publish-port`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-allocations-allocation-id-publish-p) | Publish a port on 25565 / 19132 of the customer's floating IP, or clear it |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/backups`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-backups) | Staff list backups |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/backups`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-backups) | Staff create backup |
| DELETE | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/backups/{backup_uuid}`](#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-backups-backup-uuid) | Staff delete backup |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/backups/{backup_uuid}/lock`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-backups-backup-uuid-lock) | Staff toggle backup lock |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/backups/{backup_uuid}/restore`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-backups-backup-uuid-restore) | Staff restore backup |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/command`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-command) | Staff command |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-databases) | Staff list databases |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-databases) | Staff create database |
| DELETE | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases/{database_id}`](#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-databases-database-id) | Staff delete database |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases/{database_id}/credentials`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-databases-database-id-credentials) | Staff database credentials |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases/{database_id}/retry`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-databases-database-id-retry) | Staff retry database |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases/{database_id}/rotate-password`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-databases-database-id-rotate-passwo) | Staff rotate database password |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/chmod`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-chmod) | Staff chmod files |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/compress`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-compress) | Staff compress files |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/contents`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-files-contents) | A file's text; below Tier 3, only inside logs/ and crash-reports/ |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/copy`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-copy) | Staff copy file |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/decompress`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-decompress) | Staff decompress file |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/delete`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-delete) | Staff delete files |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/download`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-files-download) | One file, streamed; below Tier 3, only inside logs/ and crash-reports/ |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/list`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-files-list) | A directory; below Tier 3, only inside logs/ and crash-reports/ |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/mkdir`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-mkdir) | Staff mkdir |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/pull`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-pull) | Staff pull file |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/pull/status`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-files-pull-status) | Staff pull status |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/rename`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-rename) | Staff rename files |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/upload`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-upload) | Staff upload files |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/write`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-write) | Staff write file |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/heal-install`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-heal-install) | Run the platform's install self-healing on one of this brand's servers |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/install-log`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-install-log) | Staff install log |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/permissions`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-permissions) | Staff grantable permissions |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/power`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-power) | Staff power |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/reinstall`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-reinstall) | Staff reinstall |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/resources`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-resources) | Staff resources |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/retry-install`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-retry-install) | Run the install again for a server in installfailed or stuck installing |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-schedules) | Staff list schedules |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules/{schedule_uuid}`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-schedules-schedule-uuid) | Staff get schedule |
| DELETE | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules/{schedule_uuid}`](#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-schedules-schedule-uuid) | Staff delete schedule |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules/{schedule_uuid}/execute`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-schedules-schedule-uuid-execute) | Staff execute schedule |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules/{schedule_uuid}/runs`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-schedules-schedule-uuid-runs) | Staff schedule runs |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules/{schedule_uuid}/toggle`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-schedules-schedule-uuid-toggle) | Pause a schedule that is hurting the server, or resume one |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/sleep`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-sleep) | Sleep and start-queue state of a free server; policy: none for a paid one |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-snapshots) | Staff list snapshots |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-snapshots) | Staff create snapshot |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots/estimate`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-snapshots-estimate) | Staff snapshot estimate |
| DELETE | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots/{snapshot_uuid}`](#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-snapshots-snapshot-uuid) | Staff delete snapshot |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots/{snapshot_uuid}/download`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-snapshots-snapshot-uuid-download) | Staff download snapshot |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots/{snapshot_uuid}/lock`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-snapshots-snapshot-uuid-lock) | Staff toggle snapshot lock |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots/{snapshot_uuid}/restore`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-snapshots-snapshot-uuid-restore) | Staff restore snapshot |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/software`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-software) | Staff installed software |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/catalog`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-software-catalog) | Staff software catalog |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/catalog/{key}/versions`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-software-catalog-key-versions) | Staff software catalog versions |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/change`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-software-change) | Staff change software |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/context`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-software-context) | Staff software context |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/installs`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-software-installs) | Staff software installs |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/installs/{install_uuid}/cancel`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-software-installs-install-uuid-canc) | Staff cancel install |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/installs/{install_uuid}/retry`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-software-installs-install-uuid-retr) | Staff retry install |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/startup`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-startup) | How the server starts: runtime, command (override and default), variables |
| PATCH | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/startup`](#op-patch-api-v1-orgs-org-slug-staff-servers-uuid-startup) | Change the runtime, the startup command or the variables |
| PATCH | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/startup-variables`](#op-patch-api-v1-orgs-org-slug-staff-servers-uuid-startup-variables) | Staff patch startup variables |
| PATCH | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/subdomain`](#op-patch-api-v1-orgs-org-slug-staff-servers-uuid-subdomain) | Staff patch subdomain |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/users`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-users) | Staff list subusers |
| PUT | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/users/{subuser_id}`](#op-put-api-v1-orgs-org-slug-staff-servers-uuid-users-subuser-id) | Staff update subuser |
| DELETE | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/users/{subuser_id}`](#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-users-subuser-id) | Staff remove subuser |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/wake`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-wake) | Start a sleeping free server on the customer's behalf |
| POST | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/wake-queue/kick`](#op-post-api-v1-orgs-org-slug-staff-servers-uuid-wake-queue-kick) | Staff kick wake |
| GET | [`/api/v1/orgs/{org_slug}/staff/servers/{uuid}/websocket`](#op-get-api-v1-orgs-org-slug-staff-servers-uuid-websocket) | The live console |

### Staff fleet {#op-get-api-v1-orgs-org-slug-staff-servers}

`GET /api/v1/orgs/{org_slug}/staff/servers`

Every container behind one of this brand's services, failing installs
first, newest after that. Tier 2 and above; everything that acts on a
server from here is Tier 3. ``FleetFilters`` narrows it further: by name,
owner, software, creation day, extra ports or uptime, all optional.

``status`` is the admin list's two filters in one word (:data:`STATUS_WORDS`):
a power word matches what the daemon was last seen doing, never the
lifecycle column, which reads ``running`` for a stopped server too.

``sort`` orders the whole fleet, not the page, by one of
:data:`FLEET_SORT_KEYS`, which are the admin list's words. Every key but
``players`` and ``join_address`` is a column; those two are decided from
the proxies' snapshot and the gameproxy routes over every matching id
before the page is cut, unknown last.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `org_slug` | path | string | yes |  |
| `q` | query | string or null | no |  |
| `status` | query | string or null | no | One bucket. The daemon's recorded power state, among servers whose lifecycle lets them run: running, offline, starting, stopping, unknown (never read). The lifecycle: installing, install_failed, suspended, transferring. The console's: attention, watch, free. Unset or all: every server. |
| `node_id` | query | integer or null | no |  |
| `customer_id` | query | integer or null | no |  |
| `customer_ids` | query | string or null | no | Comma-separated; the servers of a selection of customers, for review |
| `audience` | query | string or null | no |  |
| `sort` | query | string or null | no | Order the brand's fleet by: created, updated, name, status, players, join_address, ip, port, node, owner, template, cpu, memory, disk (in use), cpu_limit, memory_limit, disk_limit, uptime, id. Unset keeps failing installs first, newest after. |
| `dir` | query | string or null | no | asc or desc; each key has its own default (names ascending, figures descending). |
| `limit` | query | integer | no | Default: `50`. |
| `offset` | query | integer | no | Default: `0`. |
| `name` | query | string or null | no |  |
| `owner` | query | string or null | no |  |
| `software` | query | string or null | no |  |
| `created_after` | query | string (date) or null | no |  |
| `created_before` | query | string (date) or null | no |  |
| `min_extra_ports` | query | integer or null | no |  |
| `up_days_min` | query | integer or null | no |  |
| `cpu_window` | query | string | no | Default: `1h`. |
| `cpu_min` | query | number or null | no |  |
| `cpu_of_limit_min` | query | integer or null | no |  |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Suspend, unsuspend, terminate, or ban the owners of, a selection of this brand's servers {#op-post-api-v1-orgs-org-slug-staff-servers-bulk}

`POST /api/v1/orgs/{org_slug}/staff/servers/bulk`

Suspend, unsuspend, terminate, or ban the owners of, a selection of
this brand's servers.

Support may suspend and unsuspend, as they can order by order. Anything
that ends a server or an account (terminate, ban, a suspension with a
deletion date) takes an org admin who has stepped up in the last ten
minutes, the same gate the single-order terminate and the customer
standing change have. Servers outside the brand or already ending are
skipped and listed in the answer, not refused.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `uuids` | array of string | yes |
| `action` | string | yes |
| `reason` | string | yes |
| `delete_after_days` | integer or null | no |
| `open_ticket` | boolean | no |
| `notify_customer` | boolean | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff heal installs {#op-post-api-v1-orgs-org-slug-staff-servers-heal-installs}

`POST /api/v1/orgs/{org_slug}/staff/servers/heal-installs`

Heal every broken install behind this brand's services, oldest first:
``install_failed`` rows and ``installing`` rows nothing has driven for 45 s.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `org_slug` | path | string | yes |  |
| `limit` | query | integer | no | Default: `25`. |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Live state, usage and players for the brand's servers on one screen {#op-get-api-v1-orgs-org-slug-staff-servers-live}

`GET /api/v1/orgs/{org_slug}/staff/servers/live`

Live state, usage and players for the brand's servers on one screen.

The admin list's ``/servers/live`` for the brand: ``items`` maps each UUID
the daemons answered for to ``state`` (the daemon's word, or ``missing``
when it no longer knows the server), ``usage`` (the same shape as a list
row's, measured just now), ``players_online`` and ``join_address``. A
server with no answer is left out and ``degraded`` is true; the page
keeps what it had.

Only UUIDs behind one of this brand's services are asked about. One from
another brand is dropped before any daemon is spoken to and never
answered, not even with an error, so the poll cannot be used to learn
which UUIDs exist elsewhere.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `org_slug` | path | string | yes |  |
| `uuids` | query | string | yes | Comma-separated server UUIDs, the rows on screen; at most 100. |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### How many servers sit in each bucket, and the nodes they sit on {#op-get-api-v1-orgs-org-slug-staff-servers-stats}

`GET /api/v1/orgs/{org_slug}/staff/servers/stats`

How many servers sit in each bucket, and the nodes they sit on.

A power word counts the servers its filter lists: the daemon's recorded
word, among servers whose lifecycle lets them run.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `org_slug` | path | string | yes |
| `audience` | query | string or null | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff server detail {#op-get-api-v1-orgs-org-slug-staff-servers-uuid}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}`

One server as staff see it, with the customer who owns it named:
``customer_email`` and ``customer_name`` (first and last name, ``null``
when the account has neither) come off the one customer row the record
already loads.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff list allocations {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-allocations}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff create allocation {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-allocations}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json`

| Field | Type | Required |
| --- | --- | --- |
| `port` | integer or null | no |
| `notes` | string or null | no |
| `on_dedicated_ip` | boolean | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `201` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff available ports {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-allocations-available-ports}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations/available-ports`

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `uuid` | path | string | yes |  |
| `org_slug` | path | string | yes |  |
| `limit` | query | integer | no | Default: `50`. |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff delete allocation {#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-allocations-allocation-id}

`DELETE /api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations/{allocation_id}`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `allocation_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff set primary allocation {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-allocations-allocation-id-primary}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations/{allocation_id}/primary`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `allocation_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Publish a port on 25565 / 19132 of the customer's floating IP, or clear it {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-allocations-allocation-id-publish-p}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/allocations/{allocation_id}/publish-port`

Publish a port on 25565 / 19132 of the customer's floating IP, or clear it.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `allocation_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json`

| Field | Type | Required |
| --- | --- | --- |
| `port` | integer or null | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff list backups {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-backups}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/backups`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff create backup {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-backups}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/backups`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json`

| Field | Type | Required |
| --- | --- | --- |
| `name` | string | yes |
| `ignored_files` | array of string or null | no |
| `is_locked` | boolean | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `201` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff delete backup {#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-backups-backup-uuid}

`DELETE /api/v1/orgs/{org_slug}/staff/servers/{uuid}/backups/{backup_uuid}`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `backup_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff toggle backup lock {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-backups-backup-uuid-lock}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/backups/{backup_uuid}/lock`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `backup_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff restore backup {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-backups-backup-uuid-restore}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/backups/{backup_uuid}/restore`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `backup_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff command {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-command}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/command`

#### Parameters

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

#### Request body

`application/json`

| Field | Type | Required |
| --- | --- | --- |
| `command` | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff list databases {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-databases}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff create database {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-databases}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |
| `Idempotency-Key` | header | string or null | no |

#### Request body

`application/json`

Type: object or null.

#### Responses

| Status | Meaning |
| --- | --- |
| `201` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff delete database {#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-databases-database-id}

`DELETE /api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases/{database_id}`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `database_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff database credentials {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-databases-database-id-credentials}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases/{database_id}/credentials`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `database_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff retry database {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-databases-database-id-retry}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases/{database_id}/retry`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `database_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff rotate database password {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-databases-database-id-rotate-passwo}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/databases/{database_id}/rotate-password`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `database_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff chmod files {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-chmod}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/chmod`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `root` | string | no |
| `files` | array of object | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff compress files {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-compress}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/compress`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `root` | string | no |
| `files` | array of string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### A file's text; below Tier 3, only inside logs/ and crash-reports/ {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-files-contents}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/contents`

A file's text; below Tier 3, only inside logs/ and crash-reports/.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |
| `path` | query | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff copy file {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-copy}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/copy`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `location` | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff decompress file {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-decompress}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/decompress`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `root` | string | no |
| `file` | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff delete files {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-delete}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/delete`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `root` | string | no |
| `files` | array of string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### One file, streamed; below Tier 3, only inside logs/ and crash-reports/ {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-files-download}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/download`

One file, streamed; below Tier 3, only inside logs/ and crash-reports/.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |
| `path` | query | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### A directory; below Tier 3, only inside logs/ and crash-reports/ {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-files-list}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/list`

A directory; below Tier 3, only inside logs/ and crash-reports/.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `uuid` | path | string | yes |  |
| `org_slug` | path | string | yes |  |
| `directory` | query | string | no | Default: `/`. |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff mkdir {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-mkdir}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/mkdir`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `root` | string | no |
| `name` | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff pull file {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-pull}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/pull`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `url` | string | yes |
| `destination_path` | string | yes |
| `filename` | string or null | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff pull status {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-files-pull-status}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/pull/status`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff rename files {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-rename}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/rename`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `root` | string | no |
| `files` | array of object | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff upload files {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-upload}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/upload`

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `uuid` | path | string | yes |  |
| `org_slug` | path | string | yes |  |
| `directory` | query | string | no | Default: `/`. |

#### Request body

`multipart/form-data` (required)

| Field | Type | Required |
| --- | --- | --- |
| `files` | array of string (binary) | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff write file {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-files-write}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/files/write`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `path` | string | yes |
| `content` | string | no |
| `expected_hash` | string or null | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Run the platform's install self-healing on one of this brand's servers {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-heal-install}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/heal-install`

Run the platform's install self-healing on one of this brand's servers.

Reads the disk first: files in place means the row is marked running with
nothing reinstalled; otherwise the install is driven again through the
retry ladder. The same code the watchdog runs, so brand staff can clear a
server that broke before it existed.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json`

| Field | Type | Required |
| --- | --- | --- |
| `start_after` | boolean | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff install log {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-install-log}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/install-log`

What the install script printed: the log it leaves in the volume, and
the output recorded off the daemon while it ran. The daemon's own log is
read over SSH on the node and stays with the platform.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff grantable permissions {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-permissions}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/permissions`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff power {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-power}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/power`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `signal` | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff reinstall {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-reinstall}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/reinstall`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff resources {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-resources}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/resources`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Run the install again for a server in installfailed or stuck installing {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-retry-install}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/retry-install`

Run the install again for a server in ``install_failed`` or stuck
``installing``. Refused for a server in any other state: a reinstall of a
working server is the reinstall route, which wipes it and says so.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff list schedules {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-schedules}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

A `200` response is a list; each item has these fields:

| Field | Type |
| --- | --- |
| `[].id` | integer |
| `[].uuid` | string |
| `[].server_id` | integer |
| `[].name` | string |
| `[].cron_minute` | string |
| `[].cron_hour` | string |
| `[].cron_day_of_month` | string |
| `[].cron_month` | string |
| `[].cron_day_of_week` | string |
| `[].is_active` | boolean |
| `[].only_when_online` | boolean |
| `[].is_processing` | boolean |
| `[].timezone` | string |
| `[].catch_up` | boolean |
| `[].revision` | integer |
| `[].current_run_id` | string or null |
| `[].last_run_status` | string or null |
| `[].next_run_at` | string (date-time) or null |
| `[].last_run_at` | string (date-time) or null |
| `[].last_run_failed` | boolean |
| `[].last_failure_message` | string or null |
| `[].created_at` | string (date-time) |
| `[].updated_at` | string (date-time) or null |
| `[].tasks` | array of TaskResponse |
| `[].tasks[].id` | integer |
| `[].tasks[].sequence_id` | integer |
| `[].tasks[].action` | string |
| `[].tasks[].payload` | Payload |
| `[].tasks[].time_offset` | integer |
| `[].tasks[].continue_on_failure` | boolean |
| `[].tasks[].is_queued` | boolean |

### Staff get schedule {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-schedules-schedule-uuid}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules/{schedule_uuid}`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `schedule_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

Fields of a `200` response:

| Field | Type |
| --- | --- |
| `id` | integer |
| `uuid` | string |
| `server_id` | integer |
| `name` | string |
| `cron_minute` | string |
| `cron_hour` | string |
| `cron_day_of_month` | string |
| `cron_month` | string |
| `cron_day_of_week` | string |
| `is_active` | boolean |
| `only_when_online` | boolean |
| `is_processing` | boolean |
| `timezone` | string |
| `catch_up` | boolean |
| `revision` | integer |
| `current_run_id` | string or null |
| `last_run_status` | string or null |
| `next_run_at` | string (date-time) or null |
| `last_run_at` | string (date-time) or null |
| `last_run_failed` | boolean |
| `last_failure_message` | string or null |
| `created_at` | string (date-time) |
| `updated_at` | string (date-time) or null |
| `tasks` | array of TaskResponse |
| `tasks[].id` | integer |
| `tasks[].sequence_id` | integer |
| `tasks[].action` | string |
| `tasks[].payload` | Payload |
| `tasks[].time_offset` | integer |
| `tasks[].continue_on_failure` | boolean |
| `tasks[].is_queued` | boolean |

### Staff delete schedule {#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-schedules-schedule-uuid}

`DELETE /api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules/{schedule_uuid}`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `schedule_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff execute schedule {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-schedules-schedule-uuid-execute}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules/{schedule_uuid}/execute`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `schedule_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json`

| Field | Type | Required |
| --- | --- | --- |
| `revision` | integer or null | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff schedule runs {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-schedules-schedule-uuid-runs}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules/{schedule_uuid}/runs`

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `uuid` | path | string | yes |  |
| `schedule_uuid` | path | string | yes |  |
| `org_slug` | path | string | yes |  |
| `limit` | query | integer | no | Default: `20`. |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

A `200` response is a list; each item has these fields:

| Field | Type |
| --- | --- |
| `[].uuid` | string |
| `[].trigger` | string |
| `[].status` | string |
| `[].started_at` | string (date-time) or null |
| `[].finished_at` | string (date-time) or null |
| `[].failure_message` | string or null |
| `[].created_at` | string (date-time) or null |
| `[].steps` | array of ScheduleRunStepResponse |
| `[].steps[].task_id` | integer |
| `[].steps[].sequence_id` | integer |
| `[].steps[].action` | string |
| `[].steps[].payload` | Payload |
| `[].steps[].time_offset` | integer |
| `[].steps[].continue_on_failure` | boolean |
| `[].steps[].status` | string |
| `[].steps[].started_at` | string (date-time) or null |
| `[].steps[].finished_at` | string (date-time) or null |
| `[].steps[].error` | string or null |

### Pause a schedule that is hurting the server, or resume one {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-schedules-schedule-uuid-toggle}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/schedules/{schedule_uuid}/toggle`

Pause a schedule that is hurting the server, or resume one.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `schedule_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `is_active` | boolean | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

Fields of a `200` response:

| Field | Type |
| --- | --- |
| `id` | integer |
| `uuid` | string |
| `server_id` | integer |
| `name` | string |
| `cron_minute` | string |
| `cron_hour` | string |
| `cron_day_of_month` | string |
| `cron_month` | string |
| `cron_day_of_week` | string |
| `is_active` | boolean |
| `only_when_online` | boolean |
| `is_processing` | boolean |
| `timezone` | string |
| `catch_up` | boolean |
| `revision` | integer |
| `current_run_id` | string or null |
| `last_run_status` | string or null |
| `next_run_at` | string (date-time) or null |
| `last_run_at` | string (date-time) or null |
| `last_run_failed` | boolean |
| `last_failure_message` | string or null |
| `created_at` | string (date-time) |
| `updated_at` | string (date-time) or null |
| `tasks` | array of TaskResponse |
| `tasks[].id` | integer |
| `tasks[].sequence_id` | integer |
| `tasks[].action` | string |
| `tasks[].payload` | Payload |
| `tasks[].time_offset` | integer |
| `tasks[].continue_on_failure` | boolean |
| `tasks[].is_queued` | boolean |

### Sleep and start-queue state of a free server; policy: none for a paid one {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-sleep}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/sleep`

Sleep and start-queue state of a free server; ``policy: none`` for a paid one.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff list snapshots {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-snapshots}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots`

This server's snapshots, or every snapshot the owning account holds
judged for restoring onto this server.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `uuid` | path | string | yes |  |
| `org_slug` | path | string | yes |  |
| `scope` | query | string | no | Default: `this`. |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff create snapshot {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-snapshots}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json`

| Field | Type | Required |
| --- | --- | --- |
| `name` | string | yes |
| `ignored_files` | array of string or null | no |
| `is_locked` | boolean | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `201` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff snapshot estimate {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-snapshots-estimate}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots/estimate`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff delete snapshot {#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-snapshots-snapshot-uuid}

`DELETE /api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots/{snapshot_uuid}`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `snapshot_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff download snapshot {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-snapshots-snapshot-uuid-download}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots/{snapshot_uuid}/download`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `snapshot_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff toggle snapshot lock {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-snapshots-snapshot-uuid-lock}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots/{snapshot_uuid}/lock`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `snapshot_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff restore snapshot {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-snapshots-snapshot-uuid-restore}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/snapshots/{snapshot_uuid}/restore`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `snapshot_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json`

| Field | Type | Required |
| --- | --- | --- |
| `target_server_uuid` | string or null | no |
| `truncate` | boolean | no |
| `allow_mismatch` | boolean | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff installed software {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-software}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/software`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff software catalog {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-software-catalog}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/catalog`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff software catalog versions {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-software-catalog-key-versions}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/catalog/{key}/versions`

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `uuid` | path | string | yes |  |
| `key` | path | string | yes |  |
| `org_slug` | path | string | yes |  |
| `limit` | query | integer | no | Default: `200`. |
| `include_unsupported` | query | boolean | no | Default: `False`. |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff change software {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-software-change}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/change`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

Type: Body.

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff software context {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-software-context}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/context`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff software installs {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-software-installs}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/installs`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |
| `status` | query | string or null | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff cancel install {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-software-installs-install-uuid-canc}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/installs/{install_uuid}/cancel`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `install_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff retry install {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-software-installs-install-uuid-retr}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/software/installs/{install_uuid}/retry`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `install_uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### How the server starts: runtime, command (override and default), variables {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-startup}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/startup`

How the server starts: runtime, command (override and default), variables.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Change the runtime, the startup command or the variables {#op-patch-api-v1-orgs-org-slug-staff-servers-uuid-startup}

`PATCH /api/v1/orgs/{org_slug}/staff/servers/{uuid}/startup`

Change the runtime, the startup command or the variables. Admin, stepped up.

Applies on the next start; nothing here stops or starts the server.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `runtime_template_slug` | string or null | no |
| `startup_command` | string or null | no |
| `reset_startup_command` | boolean | no |
| `variables` | object or null | no |
| `remove_variables` | array of string or null | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff patch startup variables {#op-patch-api-v1-orgs-org-slug-staff-servers-uuid-startup-variables}

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

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `variables` | Variables | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff patch subdomain {#op-patch-api-v1-orgs-org-slug-staff-servers-uuid-subdomain}

`PATCH /api/v1/orgs/{org_slug}/staff/servers/{uuid}/subdomain`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `subdomain` | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff list subusers {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-users}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/users`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff update subuser {#op-put-api-v1-orgs-org-slug-staff-servers-uuid-users-subuser-id}

`PUT /api/v1/orgs/{org_slug}/staff/servers/{uuid}/users/{subuser_id}`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `subuser_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `permissions` | array of string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff remove subuser {#op-delete-api-v1-orgs-org-slug-staff-servers-uuid-users-subuser-id}

`DELETE /api/v1/orgs/{org_slug}/staff/servers/{uuid}/users/{subuser_id}`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `subuser_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Start a sleeping free server on the customer's behalf {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-wake}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/wake`

Start a sleeping free server on the customer's behalf.

No Turnstile: the risk challenge exists to slow down a scripted customer,
and a signed-in staff member is neither.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff kick wake {#op-post-api-v1-orgs-org-slug-staff-servers-uuid-wake-queue-kick}

`POST /api/v1/orgs/{org_slug}/staff/servers/{uuid}/wake-queue/kick`

Get a free server's stuck start moving: settle it against the daemon
now and, if it is still not up, admit it past the admission gate and
start it. Scoped to the brand's own servers.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### The live console {#op-get-api-v1-orgs-org-slug-staff-servers-uuid-websocket}

`GET /api/v1/orgs/{org_slug}/staff/servers/{uuid}/websocket`

The live console. Below Tier 3 the relay lets it be watched, not typed
into (``STAFF_WATCH_PERMISSIONS`` in the console relay).

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `uuid` | path | string | yes |
| `org_slug` | path | string | yes |

#### Responses

| 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 |
