# Client API: Game Proxy

> Game join addresses on the platform's join domain: names, branding and custom domains.

Source: https://docs.coritan.com/api/reference/client/game-proxy/

Game join addresses on the platform's join domain: names, branding and custom domains.

Base URL: `https://api.coritan.com/api/v1`. Paths below are complete.

To try these requests in the browser, open the [interactive Client API reference](https://api.coritan.com/docs).

## Operations

| Method | Path | Summary |
| --- | --- | --- |
| POST | [`/api/v1/gameproxy/availability`](#op-post-api-v1-gameproxy-availability) | Claim check on the write primary so create/delete races cannot lie |
| POST | [`/api/v1/gameproxy/name-suggestions`](#op-post-api-v1-gameproxy-name-suggestions) | Name suggestions |
| GET | [`/api/v1/gameproxy/policy`](#op-get-api-v1-gameproxy-policy) | Storefront-facing effective policy (auto-provision + base domain) |
| GET | [`/api/v1/gameproxy/routes`](#op-get-api-v1-gameproxy-routes) | List my routes |
| POST | [`/api/v1/gameproxy/routes`](#op-post-api-v1-gameproxy-routes) | Order path preferred; this creates a route bound to an existing service for power users |
| PATCH | [`/api/v1/gameproxy/routes/{route_id}`](#op-patch-api-v1-gameproxy-routes-route-id) | Update my route branding |
| GET | [`/api/v1/gameproxy/routes/{route_id}/custom-domain`](#op-get-api-v1-gameproxy-routes-route-id-custom-domain) | Vanity CNAME state for this route's join address |
| POST | [`/api/v1/gameproxy/routes/{route_id}/custom-domain`](#op-post-api-v1-gameproxy-routes-route-id-custom-domain) | Link route custom domain |
| PATCH | [`/api/v1/gameproxy/routes/{route_id}/custom-domain`](#op-patch-api-v1-gameproxy-routes-route-id-custom-domain) | Show the vanity hostname, or the hosted one, in the public server list |
| DELETE | [`/api/v1/gameproxy/routes/{route_id}/custom-domain`](#op-delete-api-v1-gameproxy-routes-route-id-custom-domain) | Unlink route custom domain |
| POST | [`/api/v1/gameproxy/routes/{route_id}/custom-domain/verify`](#op-post-api-v1-gameproxy-routes-route-id-custom-domain-verify) | Check the CNAME now rather than waiting for the next maintenance pass |

### Claim check on the write primary so create/delete races cannot lie {#op-post-api-v1-gameproxy-availability}

`POST /api/v1/gameproxy/availability`

Claim check on the write primary so create/delete races cannot lie.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `org_id` | query | integer or null | no |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `subdomain` | string | yes |
| `base_domain` | string or null | no |

#### Responses

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

### Name suggestions {#op-post-api-v1-gameproxy-name-suggestions}

`POST /api/v1/gameproxy/name-suggestions`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `org_id` | query | integer or null | no |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `count` | integer | no |
| `base_domain` | string or null | no |

#### Responses

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

### Storefront-facing effective policy (auto-provision + base domain) {#op-get-api-v1-gameproxy-policy}

`GET /api/v1/gameproxy/policy`

Storefront-facing effective policy (auto-provision + base domain).

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `org_id` | query | integer or null | no |

#### Responses

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

### List my routes {#op-get-api-v1-gameproxy-routes}

`GET /api/v1/gameproxy/routes`

The user's game routes, each with ``custom_domain``: the answer
``GET /gameproxy/routes/{id}/custom-domain`` gives for it, read for the
whole list at once.

Authentication: an access token, sent as `Authorization: Bearer <token>`.

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |

### Order path preferred; this creates a route bound to an existing service for power users {#op-post-api-v1-gameproxy-routes}

`POST /api/v1/gameproxy/routes`

Order path preferred; this creates a route bound to an existing service for power users.

Authentication: an access token, sent as `Authorization: Bearer <token>`.

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `subdomain` | string | yes |
| `base_domain` | string or null | no |
| `display_name` | string or null | no |
| `mode` | string | no |
| `upstream_service_id` | integer or null | no |
| `upstream_host` | string or null | no |
| `upstream_port` | integer or null | no |
| `location_id` | integer or null | no |
| `proxy_protocol` | boolean | no |
| `real_ip` | boolean or null | no |
| `description` | string or null | no |
| `org_id` | integer or null | no |
| `online_motd` | string or null | no |
| `offline_motd` | string or null | no |
| `favicon` | string or null | no |
| `version_name` | string or null | no |
| `status_cache_ttl_seconds` | integer or null | no |

#### Responses

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

### Update my route branding {#op-patch-api-v1-gameproxy-routes-route-id}

`PATCH /api/v1/gameproxy/routes/{route_id}`

Authentication: an access token, sent as `Authorization: Bearer <token>`.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `route_id` | path | integer | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `online_motd` | string or null | no |
| `offline_motd` | string or null | no |
| `favicon` | string or null | no |
| `version_name` | string or null | no |
| `display_name` | string or null | no |
| `description` | string or null | no |
| `status_cache_ttl_seconds` | integer or null | no |
| `clear_favicon` | boolean | no |
| `clear_online_motd` | boolean | no |
| `clear_offline_motd` | boolean | no |

#### Responses

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

### Vanity CNAME state for this route's join address {#op-get-api-v1-gameproxy-routes-route-id-custom-domain}

`GET /api/v1/gameproxy/routes/{route_id}/custom-domain`

Vanity CNAME state for this route's join address.

Authentication: an access token, sent as `Authorization: Bearer <token>`.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `route_id` | path | integer | yes |

#### Responses

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

### Link route custom domain {#op-post-api-v1-gameproxy-routes-route-id-custom-domain}

`POST /api/v1/gameproxy/routes/{route_id}/custom-domain`

Authentication: an access token, sent as `Authorization: Bearer <token>`.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `route_id` | path | integer | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `domain` | string | yes |
| `subdomain` | string | no |
| `include_in_list` | boolean | no |

#### Responses

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

### Show the vanity hostname, or the hosted one, in the public server list {#op-patch-api-v1-gameproxy-routes-route-id-custom-domain}

`PATCH /api/v1/gameproxy/routes/{route_id}/custom-domain`

Show the vanity hostname, or the hosted one, in the public server list.

Authentication: an access token, sent as `Authorization: Bearer <token>`.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `route_id` | path | integer | yes |

#### Request body

`application/json` (required)

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

#### Responses

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

### Unlink route custom domain {#op-delete-api-v1-gameproxy-routes-route-id-custom-domain}

`DELETE /api/v1/gameproxy/routes/{route_id}/custom-domain`

Authentication: an access token, sent as `Authorization: Bearer <token>`.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `route_id` | path | integer | yes |

#### Responses

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

### Check the CNAME now rather than waiting for the next maintenance pass {#op-post-api-v1-gameproxy-routes-route-id-custom-domain-verify}

`POST /api/v1/gameproxy/routes/{route_id}/custom-domain/verify`

Check the CNAME now rather than waiting for the next maintenance pass.

Authentication: an access token, sent as `Authorization: Bearer <token>`.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `route_id` | path | integer | yes |

#### Responses

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