# Organization API: Org Staff Network

> Every Organization API operation tagged Org Staff Network.

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

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

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

## Operations

| Method | Path | Summary |
| --- | --- | --- |
| GET | [`/api/v1/orgs/{org_slug}/staff/network/deliveries`](#op-get-api-v1-orgs-org-slug-staff-network-deliveries) | Staff network deliveries |
| GET | [`/api/v1/orgs/{org_slug}/staff/network/deliveries/{service_id}`](#op-get-api-v1-orgs-org-slug-staff-network-deliveries-service-id) | Staff network delivery |
| POST | [`/api/v1/orgs/{org_slug}/staff/network/deliveries/{service_id}/mark`](#op-post-api-v1-orgs-org-slug-staff-network-deliveries-service-id-mark) | Staff network mark |
| POST | [`/api/v1/orgs/{org_slug}/staff/network/deliveries/{service_id}/redeliver`](#op-post-api-v1-orgs-org-slug-staff-network-deliveries-service-id-redeliver) | Sends a purchase to the network again |
| GET | [`/api/v1/orgs/{org_slug}/staff/network/health`](#op-get-api-v1-orgs-org-slug-staff-network-health) | Staff network health |
| GET | [`/api/v1/orgs/{org_slug}/staff/network/players`](#op-get-api-v1-orgs-org-slug-staff-network-players) | Staff network players |

### Staff network deliveries {#op-get-api-v1-orgs-org-slug-staff-network-deliveries}

`GET /api/v1/orgs/{org_slug}/staff/network/deliveries`

Lists the purchases your game network delivers (your `custom_standalone` products), the
most recently changed first. Each has its customer, product, player (`minecraft_name`,
`minecraft_edition` and `minecraft_uuid` from the order form), the `delivery` the network
last recorded and `needs_attention`. `total` is how many match the filters, and `counts`
holds the tiles: `attention`, `failed`, `waiting`, `none` and `delivered_24h`. Any member
of the organization can read it.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `org_slug` | path | string | yes |  |
| `state` | query | string | no | Which purchases: `attention` (the default) is a paid purchase whose delivery failed or that the network has not confirmed within 10 minutes; `failed`, `waiting` and `delivered` match the delivery the network last recorded; `none` is one it has not reported on; `all` is every purchase. Any other word answers 422 naming these. Default: `attention`. |
| `product_id` | query | integer or null | no | Only purchases of this product. |
| `q` | query | string or null | no | Part of the player's name, part of the customer's email address, or a purchase's `service_id`. |
| `limit` | query | integer | no | Purchases a page, 1–100. Default: `50`. |
| `offset` | query | integer | no | How many purchases to skip. Default: `0`. |

#### Responses

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

### Staff network delivery {#op-get-api-v1-orgs-org-slug-staff-network-deliveries-service-id}

`GET /api/v1/orgs/{org_slug}/staff/network/deliveries/{service_id}`

One purchase as the deliveries list shows it, with `player_seen` (the player as the
network last reported them, or null) and `history`: every delivery the network recorded
and every resend or hand-recorded delivery staff made, newest first. 404 for a purchase that
is not one of your organization's network purchases.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `service_id` | path | integer | yes | The purchase's `service_id`. |
| `org_slug` | path | string | yes |  |

#### Responses

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

### Staff network mark {#op-post-api-v1-orgs-org-slug-staff-network-deliveries-service-id-mark}

`POST /api/v1/orgs/{org_slug}/staff/network/deliveries/{service_id}/mark`

Records a purchase's delivery by hand, for when the network delivered it some other way
or cannot deliver it. It is kept in `config.delivery` with `by: staff`, which the customer's
account shows, and the network reads it in the entitlements feed as usual. Needs Tier 3
support or above, takes a `reason`, is in the audit log and is rate limited. Answers
`{"delivery"}`.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `service_id` | path | integer | yes | The purchase's `service_id`. |
| `org_slug` | path | string | yes |  |

#### Request body

`application/json` (required)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `status` | string, one of `delivered`, `failed` | yes | `delivered` or `failed`. |
| `detail` | string or null | no | What the customer's account shows beside it. |
| `reason` | string | yes | Why it is recorded by hand, for the audit log. |

#### Responses

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

### Sends a purchase to the network again {#op-post-api-v1-orgs-org-slug-staff-network-deliveries-service-id-redeliver}

`POST /api/v1/orgs/{org_slug}/staff/network/deliveries/{service_id}/redeliver`

Sends a purchase to the network again. The delivery it recorded is forgotten and the
purchase moves to the end of the entitlements feed, so your backend reads it as one it has
not delivered. Only an `active` purchase can be sent again (409 for any other). Needs Tier 2
support or above, takes a `reason`, is in the audit log and is rate limited. Answers
`{"delivery"}` as the list shows it.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `service_id` | path | integer | yes | The purchase's `service_id`. |
| `org_slug` | path | string | yes |  |

#### Request body

`application/json` (required)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `reason` | string | yes | Why it is sent again, for the audit log. |

#### Responses

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

### Staff network health {#op-get-api-v1-orgs-org-slug-staff-network-health}

`GET /api/v1/orgs/{org_slug}/staff/network/health`

Whether your network's backend is still reporting: when it last pushed each report
(`status`, `market`, `leaderboards`) and the players, each `stale` after 5 minutes without a
push, when it last recorded a delivery, the delivery counts, and your active API keys that can
reach the feed (`label`, whether it `writes`, `last_used_at`; never the key). Any member can
read it.

#### Parameters

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

#### Responses

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

### Staff network players {#op-get-api-v1-orgs-org-slug-staff-network-players}

`GET /api/v1/orgs/{org_slug}/staff/network/players`

Players whose name starts with `q`: the ones your network reported (`seen`, with their
`uuid`, `edition` and `last_seen`) and the ones only a purchase names, each with their
purchases as the deliveries list shows them. Any member can read it.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `org_slug` | path | string | yes |  |
| `q` | query | string | yes | The start of a player's name, with the edition's prefix when it has one (`-Alex`). |
| `limit` | query | integer | no | Players at most, 1–50. Default: `25`. |

#### Responses

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