---
title: "The account of the key's project, and its traffic to the internet this month"
description: "The node's `GET /v1/account` (`sandboxd/openapi/openapi.json`) as the control plane answers it: which account and project the key is of, where the account's notices go and in which language, what it owes, whether it is held for its payments (`payment_hold`: the one call such an account is answered), where it pays from (`billing_address`, `tax_id`) and how what it buys is sold there (`tax`: control/README.md, 税), and its traffic to the internet added up over all its projects and all the nodes, against the allowance of the stretch it is in. An account that owes may read it. Takes `read`."
---

> Documentation Index
> Fetch the complete documentation index at: https://glac.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Glac API › Account and billing › Account

`GET /v1/account`

The node's `GET /v1/account` (`sandboxd/openapi/openapi.json`) as the control plane answers it: which account and project the key is of, where the account's notices go and in which language, what it owes, whether it is held for its payments (`payment_hold`: the one call such an account is answered), where it pays from (`billing_address`, `tax_id`) and how what it buys is sold there (`tax`: control/README.md, 税), and its traffic to the internet added up over all its projects and all the nodes, against the allowance of the stretch it is in. An account that owes may read it. Takes `read`.

## Authentication

- `apiKey`, http, header `Authorization`, scopes: `read`

## Code samples

### cURL

```bash
curl --request GET \
  --url https://api.glac.ai/v1/account \
  --header 'Authorization: Bearer <token>'
```

### TypeScript

```typescript
const url = 'https://api.glac.ai/v1/account';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.glac.ai/v1/account"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
```

## Responses

### 200

The account.

#### Example

```json
{
  "object": "account",
  "id": "string",
  "logs": {
    "line_bytes": 1,
    "lines_per_second": 1,
    "instance_bytes": 1,
    "deleted_instance_bytes": 0,
    "deleted_instance_days": 0,
    "app_bytes_per_node": 1,
    "followers": 1
  },
  "keeps": {
    "volumes": {
      "limit": 0,
      "used": 0,
      "source": "string"
    },
    "volume_bytes": {
      "limit": 0,
      "source": "string"
    },
    "volumes_bytes": {
      "limit": 0,
      "used": 0
    },
    "unsized_bytes": 0
  },
  "caps": {
    "instances": {
      "limit": 0,
      "source": "string",
      "used": 0
    },
    "vcpus": {
      "limit": 0,
      "source": "string",
      "used": 0
    },
    "memory_bytes": {
      "limit": 0,
      "source": "string",
      "used": 0
    },
    "sleeping": {
      "limit": 0,
      "source": "string",
      "used": 0
    },
    "app_instances": {
      "limit": 0,
      "source": "string",
      "used": 0,
      "default": 0
    },
    "creates_per_minute": {
      "limit": 0,
      "source": "string",
      "used": 0
    },
    "creates_per_hour_per_project": {
      "limit": 0,
      "source": "string",
      "used": 0
    },
    "app_creates_per_hour": {
      "limit": 0,
      "source": "string",
      "used": 0
    }
  },
  "name": "string",
  "project": {
    "id": "string",
    "name": "string"
  },
  "email": "string",
  "email_verified": true,
  "email_undeliverable": {
    "why": "bounced",
    "since": "2019-08-24T14:15:22Z",
    "detail": "string"
  },
  "language": {
    "code": "string",
    "source": "string"
  },
  "egress_overage": "string",
  "egress_overage_cap_bytes": 0,
  "egress": {
    "period": "string",
    "from": "2019-08-24T14:15:22Z",
    "to": "2019-08-24T14:15:22Z",
    "bytes": 0,
    "allowance_bytes": 0,
    "overage_bytes": 0,
    "overage_usd": 0,
    "regions": {
      "na": {
        "bytes": 0,
        "overage_bytes": 0,
        "unit_price_usd": 0,
        "overage_usd": 0
      },
      "eu": {
        "bytes": 0,
        "overage_bytes": 0,
        "unit_price_usd": 0,
        "overage_usd": 0
      },
      "ap": {
        "bytes": 0,
        "overage_bytes": 0,
        "unit_price_usd": 0,
        "overage_usd": 0
      }
    },
    "month_bytes": 0,
    "stopped": true,
    "stopped_reason": "string",
    "prices": {
      "egress_gb_usd": 0,
      "egress_eu_gb_usd": 0,
      "egress_ap_gb_usd": 0,
      "provisional": true
    },
    "project_bytes": 0,
    "counted": true
  },
  "debt": {
    "object": "debt",
    "id": "string",
    "state": "owing",
    "in_debt_since": "2019-08-24T14:15:22Z",
    "owed_usd": 0,
    "data_deleted_at": "2019-08-24T14:15:22Z",
    "notice_days": 0,
    "on_hold": true,
    "charge_at": "2019-08-24T14:15:22Z",
    "last_charge": {
      "charge_id": "string",
      "at": "2019-08-24T14:15:22Z",
      "amount_usd": 0,
      "outcome": "to_collect",
      "failure": {
        "code": "string",
        "message": "string"
      }
    },
    "notices": [
      {
        "id": "string",
        "object": "notice",
        "kind": "in_debt",
        "state": "to_send",
        "due_at": "2019-08-24T14:15:22Z",
        "sent_at": "2019-08-24T14:15:22Z",
        "subject": "string"
      }
    ]
  },
  "payment_hold": {
    "object": "payment_hold",
    "since": "2019-08-24T14:15:22Z",
    "message": "string"
  },
  "billing_address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "state": "string",
    "postal_code": "string",
    "country": "string",
    "source": "string",
    "set_at": "2019-08-24T14:15:22Z"
  },
  "tax_id": {
    "type": "string",
    "value": "string",
    "verification": {
      "status": "string",
      "verified_name": "string",
      "verified_address": "string",
      "checked_at": "2019-08-24T14:15:22Z"
    },
    "source": "string",
    "set_at": "2019-08-24T14:15:22Z"
  },
  "tax": {
    "country": "string",
    "region": "string",
    "sold_as": "string",
    "business": true,
    "can_pay": true
  }
}
```

- `object` (`getAccount.response.200.object`; string, required)
- `id` (`getAccount.response.200.id`; string, required)
  - pattern `^acct-[0-9a-hjkmnp-tv-z]{16}$`
- `logs` (`getAccount.response.200.logs`; object, required) — The limits its apps' logs are held to.
  - `line_bytes` (`getAccount.response.200.logs.line_bytes`; integer, required) — The longest line of output, in bytes: what a line has beyond it is cut off, and the line says how much (`cut_bytes`). 16384 unless the machines say otherwise.
    - min 1
  - `lines_per_second` (`getAccount.response.200.logs.lines_per_second`; integer, required) — How many lines of one instance's output are kept for any one second: the lines beyond are dropped, and a line of the log says how many (`output.dropped`). 500.
    - min 1
  - `instance_bytes` (`getAccount.response.200.logs.instance_bytes`; integer, required) — What a machine keeps of an instance that is there: at this many bytes of its file the older half goes. 4 MiB.
    - format `int64`; min 1
  - `deleted_instance_bytes` (`getAccount.response.200.logs.deleted_instance_bytes`; integer, required) — What a machine keeps of an instance that was deleted: the last this many bytes of its file. 1 MiB.
    - format `int64`; min 0
  - `deleted_instance_days` (`getAccount.response.200.logs.deleted_instance_days`; number, required) — For how many days that is kept, from when the instance was deleted. 7.
    - min 0
  - `app_bytes_per_node` (`getAccount.response.200.logs.app_bytes_per_node`; integer, required) — What a machine keeps of one app altogether: beyond it what is left of the instances deleted longest ago goes first. 1 GiB.
    - format `int64`; min 1
  - `followers` (`getAccount.response.200.logs.followers`; integer, required) — How many readers may follow the logs of the account's apps at a time, every project's apps together (`follow=true` of `GET /v1/apps/{app}/logs`): its plan's figure (`log_followers=` of the plans' flags; 10 on the free plan, 25, 50, 100, 250 and 500 on the paid ones as the control plane is started unless told otherwise). The one beyond is refused, 429 `too_many_followers`.
    - min 1
- `keeps` (`getAccount.response.200.keeps`; object, required) — What the key's project keeps of volumes and Drives (a Drive is counted among its volumes; a database's own Drive is not, and a keyed instance's is in what they hold together and not in their number), by the numbers a create is held to (`POST /v1/volumes`, `POST /v1/drives`: 403 `volume_limit_reached`, `drive_limit_reached`), with what the project has beside each: the plan's numbers, or an operator's for the account (raised on request: `POST /v1/limits/requests`, `volumes` and `volume_bytes`). On Free 3, of at most 10 GiB each, 15 GiB together, and 5 GiB where a create gives no size; on a paid plan 500 (a soft limit), of at most 1 TiB each, no total, and a node's own 64 GiB where none is given.
  - `volumes` (`getAccount.response.200.keeps.volumes`; object, required)
    - `limit` (`getAccount.response.200.keeps.volumes.limit`; integer, required) — How many volumes and Drives the project may have.
      - min 0
    - `used` (`getAccount.response.200.keeps.volumes.used`; integer, required) — How many it has now.
      - min 0
    - `source` (`getAccount.response.200.keeps.volumes.source`; string, required) — Whose number `limit` is: the plan's, or an operator's for the account.
  - `volume_bytes` (`getAccount.response.200.keeps.volume_bytes`; object, required)
    - `limit` (`getAccount.response.200.keeps.volume_bytes.limit`; integer, required) — How large one may be, in bytes.
      - format `int64`; min 0
    - `source` (`getAccount.response.200.keeps.volume_bytes.source`; string, required) — Whose number `limit` is: the plan's, or an operator's for the account.
  - `volumes_bytes` (`getAccount.response.200.keeps.volumes_bytes`; object, required)
    - `limit` (`getAccount.response.200.keeps.volumes_bytes.limit`; integer | null, required) — How large all of them may be together, in bytes; null: no limit (the paid plans, which bill what is stored).
      - format `int64`; min 0
    - `used` (`getAccount.response.200.keeps.volumes_bytes.used`; integer, required) — How large the project's are together now.
      - format `int64`; min 0
  - `unsized_bytes` (`getAccount.response.200.keeps.unsized_bytes`; integer, required) — The size a volume or a Drive made with no `size_bytes` is given: the largest one may be, or where the plan holds them to a total, an even share of it (5 GiB on Free: 15 GiB for 3), or a node's own (64 GiB) where that is less.
    - format `int64`; min 0
- `caps` (`getAccount.response.200.caps`; object, required) — What the account may have at once and what it has of each now: the caps of `CapLimits` (the `caps` of `GET /v1/billing`), each with `used` beside `limit` and `source` (control/README.md, 同时能有多少).
  - `instances` (`getAccount.response.200.caps.instances`; object, required) — Sandboxes and app instances awake at once.
    - `limit` (`getAccount.response.200.caps.instances.limit`; integer, required) — What the account may have.
      - min 0
    - `source` (`getAccount.response.200.caps.instances.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account.
    - `used` (`getAccount.response.200.caps.instances.used`; integer, required) — What it has now, as the last look found it and the calls since have changed it.
      - min 0
  - `vcpus` (`getAccount.response.200.caps.vcpus`; object, required) — Their vCPUs together.
    - `limit` (`getAccount.response.200.caps.vcpus.limit`; integer, required) — What the account may have.
      - min 0
    - `source` (`getAccount.response.200.caps.vcpus.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account.
    - `used` (`getAccount.response.200.caps.vcpus.used`; integer, required) — What it has now, as the last look found it and the calls since have changed it.
      - min 0
  - `memory_bytes` (`getAccount.response.200.caps.memory_bytes`; object, required) — Their memory together, in bytes.
    - `limit` (`getAccount.response.200.caps.memory_bytes.limit`; integer, required) — What the account may have.
      - min 0
    - `source` (`getAccount.response.200.caps.memory_bytes.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account.
    - `used` (`getAccount.response.200.caps.memory_bytes.used`; integer, required) — What it has now, as the last look found it and the calls since have changed it.
      - min 0
  - `sleeping` (`getAccount.response.200.caps.sleeping`; object, required) — Sandboxes kept that do not run.
    - `limit` (`getAccount.response.200.caps.sleeping.limit`; integer, required) — What the account may have.
      - min 0
    - `source` (`getAccount.response.200.caps.sleeping.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account.
    - `used` (`getAccount.response.200.caps.sleeping.used`; integer, required) — What it has now, as the last look found it and the calls since have changed it.
      - min 0
  - `app_instances` (`getAccount.response.200.caps.app_instances`; object, required)
    - `limit` (`getAccount.response.200.caps.app_instances.limit`; integer, required) — What the account may have.
      - min 0
    - `source` (`getAccount.response.200.caps.app_instances.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account.
    - `used` (`getAccount.response.200.caps.app_instances.used`; integer, required) — The most instances any one version of one of the account's apps has now, awake or asleep, on all its nodes (what the nodes' inventories last showed).
      - min 0
    - `default` (`getAccount.response.200.caps.app_instances.default`; integer, required) — What an app has when it asks for no `scale.max_instances`.
      - min 0
  - `creates_per_minute` (`getAccount.response.200.caps.creates_per_minute`; object, required) — Sandboxes made in the last minute.
    - `limit` (`getAccount.response.200.caps.creates_per_minute.limit`; integer, required) — What the account may have.
      - min 0
    - `source` (`getAccount.response.200.caps.creates_per_minute.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account.
    - `used` (`getAccount.response.200.caps.creates_per_minute.used`; integer, required) — What it has now, as the last look found it and the calls since have changed it.
      - min 0
  - `creates_per_hour_per_project` (`getAccount.response.200.caps.creates_per_hour_per_project`; object, required) — Sandboxes one project made in the last hour: `used` is the most of any project of the account.
    - `limit` (`getAccount.response.200.caps.creates_per_hour_per_project.limit`; integer, required) — What the account may have.
      - min 0
    - `source` (`getAccount.response.200.caps.creates_per_hour_per_project.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account.
    - `used` (`getAccount.response.200.caps.creates_per_hour_per_project.used`; integer, required) — What it has now, as the last look found it and the calls since have changed it.
      - min 0
  - `app_creates_per_hour` (`getAccount.response.200.caps.app_creates_per_hour`; object, required) — Apps and versions of apps made in the last hour.
    - `limit` (`getAccount.response.200.caps.app_creates_per_hour.limit`; integer, required) — What the account may have.
      - min 0
    - `source` (`getAccount.response.200.caps.app_creates_per_hour.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account.
    - `used` (`getAccount.response.200.caps.app_creates_per_hour.used`; integer, required) — What it has now, as the last look found it and the calls since have changed it.
      - min 0
- `name` (`getAccount.response.200.name`; string, required)
- `project` (`getAccount.response.200.project`; object, required) — The project the key is of.
  - `id` (`getAccount.response.200.project.id`; string, required)
  - `name` (`getAccount.response.200.project.name`; string, required)
- `email` (`getAccount.response.200.email`; string | null, required) — Where the account's notices are sent: what it owes, what is to be deleted for it. Null: nowhere yet, and they wait until it has an address. Only a verified one is written to (`email_verified`).
- `email_verified` (`getAccount.response.200.email_verified`; boolean, required) — Whether `email` is verified: only a verified address is written to. An address the account sets is verified at once where it is the verified one the account has, or the verified address of a user who is a member of the account; otherwise a link that verifies it is mailed to it (`verify_account_email`, a week), and its notices wait until it is opened (`POST /v1/auth/account-email/verify`), as an account's with no address do, and so does what is counted from them (the days of a debt). An operator's address is verified by its word; a user's verification verifies the address of the accounts whose notices go to it. False with no address.
- `email_undeliverable` (`getAccount.response.200.email_undeliverable`; one of, required) — Mail to `email` bounced, or was complained of, as the sender said after it took it: no notice goes to it (they wait, as an account's with no address do), until the account sets an address again (the same one too). Null while mail goes to it.
  - one of: `object`, `null`
- `language` (`getAccount.response.200.language`; object, required) — The language the account's notices are written in, and what says so (control/README.md, 通知的语言). The acknowledgement of a withdrawal and the confirmation of a purchase are written in it; a notice the language has no words for, in English.
  - `code` (`getAccount.response.200.language.code`; string, required) — ISO 639-1: one of the languages the notices are written in.
  - `source` (`getAccount.response.200.language.source`; string, required) — `account`: the account chose it (`PATCH /v1/account` with `language`). `billing_address`: it chose none, and this is the language most people of its billing address's country read first. `default`: neither says (no choice, and no billing address, or one whose country's language the notices are not written in): English.
- `egress_overage` (`getAccount.response.200.egress_overage`; string, required) — What happens at the allowance, as things stand: `pay` for an account that holds a balance (what is past the allowance is taken from it), `stop` for one that holds none.
- `egress_overage_cap_bytes` (`getAccount.response.200.egress_overage_cap_bytes`; integer | null, required) — The most bytes the account sends in a calendar month; null: no cap.
  - format `int64`; min 0
- `egress` (`getAccount.response.200.egress`; object, required) — What the account's sandboxes have sent to the internet, over all its projects and all the nodes, against the allowance: the `egress` of `GET /v1/account`, and of `GET /v1/usage` when it lists sandboxes. The node's `AccountEgress` with the stretch, the calendar month, the project, what is past the allowance comes to, and why traffic is stopped.
  - `period` (`getAccount.response.200.egress.period`; string, required) — The calendar month it is, in UTC.
    - pattern `^[0-9]{4}-[0-9]{2}$`
  - `from` (`getAccount.response.200.egress.from`; string, required) — The stretch the allowance is for: the period of the account's subscription it is in, or the calendar month.
    - format `date-time`
  - `to` (`getAccount.response.200.egress.to`; string, required)
    - format `date-time`
  - `bytes` (`getAccount.response.200.egress.bytes`; integer, required) — Sent in the stretch.
    - format `int64`; min 0
  - `allowance_bytes` (`getAccount.response.200.egress.allowance_bytes`; integer | null, required) — What the stretch includes; null: whatever is sent is included.
    - format `int64`; min 0
  - `overage_bytes` (`getAccount.response.200.egress.overage_bytes`; integer | null, required) — How far `bytes` is past the allowance; null without one.
    - format `int64`; min 0
  - `overage_usd` (`getAccount.response.200.egress.overage_usd`; number, required) — What the bytes past the allowance come to, at the list price: on a paid plan the period's credit pays it first (`GET /v1/billing`, `credit`), and the account's balance pays what the credit does not.
    - min 0
  - `regions` (`getAccount.response.200.egress.regions`; object, required) — Of the traffic of the stretch, region by region: the region of the node it left from: `na` North America (and a node with no region), `eu` Europe, `ap` Asia-Pacific. The allowance takes the dearest region's bytes first; each region is priced and rounded on its own, and `overage_usd` is theirs added up.
    - `na` (`getAccount.response.200.egress.regions.na`; object, required)
      - `bytes` (`getAccount.response.200.egress.regions.na.bytes`; integer, required) — Sent from the region's nodes in the stretch.
        - format `int64`; min 0
      - `overage_bytes` (`getAccount.response.200.egress.regions.na.overage_bytes`; integer | null, required) — What of them is past the allowance; null without one.
        - format `int64`; min 0
      - `unit_price_usd` (`getAccount.response.200.egress.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte.
      - `overage_usd` (`getAccount.response.200.egress.regions.na.overage_usd`; number, required) — What `overage_bytes` comes to at that price, to the nearest millionth.
        - min 0
    - `eu` (`getAccount.response.200.egress.regions.eu`; object, required)
      - `bytes` (`getAccount.response.200.egress.regions.eu.bytes`; integer, required) — Sent from the region's nodes in the stretch.
        - format `int64`; min 0
      - `overage_bytes` (`getAccount.response.200.egress.regions.eu.overage_bytes`; integer | null, required) — What of them is past the allowance; null without one.
        - format `int64`; min 0
      - `unit_price_usd` (`getAccount.response.200.egress.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte.
      - `overage_usd` (`getAccount.response.200.egress.regions.eu.overage_usd`; number, required) — What `overage_bytes` comes to at that price, to the nearest millionth.
        - min 0
    - `ap` (`getAccount.response.200.egress.regions.ap`; object, required)
      - `bytes` (`getAccount.response.200.egress.regions.ap.bytes`; integer, required) — Sent from the region's nodes in the stretch.
        - format `int64`; min 0
      - `overage_bytes` (`getAccount.response.200.egress.regions.ap.overage_bytes`; integer | null, required) — What of them is past the allowance; null without one.
        - format `int64`; min 0
      - `unit_price_usd` (`getAccount.response.200.egress.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte.
      - `overage_usd` (`getAccount.response.200.egress.regions.ap.overage_usd`; number, required) — What `overage_bytes` comes to at that price, to the nearest millionth.
        - min 0
  - `month_bytes` (`getAccount.response.200.egress.month_bytes`; integer, required) — Sent in the calendar month `period`: the account's own cap is held against this.
    - format `int64`; min 0
  - `stopped` (`getAccount.response.200.egress.stopped`; boolean, required) — Whether the account's traffic to the internet is stopped now.
  - `stopped_reason` (`getAccount.response.200.egress.stopped_reason`; string | null, required) — `allowance_reached`: the account has sent its allowance and holds no balance to pay for more; `overage_cap_reached`: it has sent as much in the calendar month as its own cap. Null when it is not stopped.
  - `prices` (`getAccount.response.200.egress.prices`; object, required)
    - `egress_gb_usd` (`getAccount.response.200.egress.prices.egress_gb_usd`; number, required) — US dollars for a gigabyte (10^9 bytes) past the allowance.
      - min 0
    - `egress_eu_gb_usd` (`getAccount.response.200.egress.prices.egress_eu_gb_usd`; number, required)
    - `egress_ap_gb_usd` (`getAccount.response.200.egress.prices.egress_ap_gb_usd`; number, required)
    - `provisional` (`getAccount.response.200.egress.prices.provisional`; boolean, required)
  - `project_bytes` (`getAccount.response.200.egress.project_bytes`; integer, required) — What the project of the calling key sent in the calendar month; the allowance is the account's.
    - format `int64`; min 0
  - `counted` (`getAccount.response.200.egress.counted`; boolean, required) — Whether every node asked is counting traffic.
- `debt` (`getAccount.response.200.debt`; one of, required) — What the account owes, the same as the `debt` of `GET /v1/billing`; null for an account that owes nothing.
  - one of: `Debt`, `null`
- `payment_hold` (`getAccount.response.200.payment_hold`; one of, required) — That the account is held for its payments, since when, and to write to support; null for one that is not. Nothing of why: that is the operator's (`GET /internal/accounts/{id}`, `payment_hold`).
  - one of: `AccountHoldShown`, `null`
- `billing_address` (`getAccount.response.200.billing_address`; one of, required) — Where the account pays from, which its payments are taxed by; null: it gave none yet, and its payment page asks for it.
  - one of: `BillingAddress`, `null`
- `tax_id` (`getAccount.response.200.tax_id`; one of, required) — A business's tax id, with what its verification came to; null: none.
  - one of: `TaxId`, `null`
- `tax` (`getAccount.response.200.tax`; object, required) — How what the account buys is sold where it is: by its billing address, and nothing known without one (its payment page asks for it).
  - `country` (`getAccount.response.200.tax.country`; string | null, required) — Its billing address's.
  - `region` (`getAccount.response.200.tax.region`; string | null, required) — The region that is so: `eu-oss` (the EU), a country's two letters in lower case (`au`, `gb`), `us-<state>`.
  - `sold_as` (`getAccount.response.200.tax.sold_as`; string | null, required) — `registered`: the platform is registered for tax there, and the tax is added (a business with a verified tax id is reverse charged instead); `business_only`: it is not, and sells only to businesses there; `sold`: it is not, and sells to everyone there, with no tax.
  - `business` (`getAccount.response.200.tax.business`; boolean, required) — Whether the account is a business: its tax id is verified, or being verified.
  - `can_pay` (`getAccount.response.200.tax.can_pay`; boolean, required) — Whether it can pay where it is: false only where only businesses are sold to and it is none, when a top-up, a payment page and a paid plan are refused (403 `tax_region_business_only`) and auto reload makes nothing.

### 400

`unknown_parameter`.

#### Example

```json
{
  "move_id": "string",
  "upgrade_id": "string",
  "move": {
    "object": "move",
    "id": "string",
    "sandbox_id": "string",
    "project_id": "string",
    "from": {
      "id": "string",
      "name": "string"
    },
    "to": {
      "id": "string",
      "name": "string"
    },
    "epoch": 1,
    "step": "string",
    "why": "string",
    "wake": true,
    "from_store": true,
    "release": {},
    "takeover": {},
    "error": {
      "code": "string",
      "message": "string",
      "status": 0,
      "takeover_refused": {
        "code": "string",
        "message": "string",
        "status": 0
      },
      "image": "string",
      "holder": "string",
      "holder_says": "has"
    },
    "attempts": 0,
    "next_attempt_at": "2019-08-24T14:15:22Z",
    "batch": "string",
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z",
    "ended_at": "2019-08-24T14:15:22Z"
  },
  "lease_until": "2019-08-24T14:15:22Z",
  "active": {
    "name": "string",
    "url": "string",
    "term": 1
  },
  "allowed_hosts": [
    "string"
  ],
  "problems": [
    {
      "at": "string",
      "message": "string"
    }
  ],
  "report": {
    "object": "compose_import",
    "name": "string",
    "dry_run": true,
    "strict": true,
    "profiles": [
      "string"
    ],
    "treatments": {
      "done": 0,
      "adapted": 0,
      "ignored": 0,
      "refused": 0
    },
    "items": [
      {
        "at": "string",
        "treatment": "done",
        "why": "string",
        "change": "string"
      }
    ],
    "services": [
      {
        "name": "string",
        "app_id": "string",
        "status": "created",
        "kind": "service",
        "stateful": true,
        "version": true,
        "items": [
          {
            "at": "string",
            "treatment": "done",
            "why": "string",
            "change": "string"
          }
        ],
        "app": {
          "image": "string",
          "image_pull_secret": "string",
          "start_command": "string",
          "start_args": [
            "string"
          ],
          "port": 0,
          "ready": {
            "http": "string"
          },
          "env": {
            "property1": "string",
            "property2": "string"
          },
          "secrets": {
            "property1": "string",
            "property2": "string"
          },
          "size": {
            "vcpus": 1,
            "memory_bytes": 134217728
          },
          "volumes": [
            {
              "volume": "string",
              "path": "string",
              "read_only": true,
              "nocopy": true
            }
          ],
          "drives": [
            {
              "drive": "string",
              "path": "string",
              "mode": "string"
            }
          ],
          "key_drives": [
            {
              "name": "string",
              "path": "string",
              "size_bytes": 0,
              "nocopy": true
            }
          ],
          "kind": "string",
          "files": [
            {
              "path": "string",
              "content": "string",
              "secret": "string",
              "mode": 0,
              "uid": 0,
              "gid": 0
            }
          ],
          "user": "string",
          "working_dir": "string",
          "stop": {
            "signal": "string",
            "grace_ms": 0
          },
          "hostname": "string",
          "runtime": {
            "ulimits": {
              "property1": {},
              "property2": {}
            },
            "sysctls": {
              "property1": "string",
              "property2": "string"
            },
            "tmpfs": [
              {}
            ],
            "dns": {
              "servers": [
                null
              ],
              "search": [
                null
              ],
              "options": [
                null
              ]
            },
            "shm_size_bytes": 0
          },
          "regions": [
            "string"
          ],
          "scale": {
            "min_instances": 0,
            "max_instances": 1,
            "concurrency": 1,
            "sleep_after_ms": 600000,
            "sleep_notice_ms": 60000,
            "sleep_hold_max_ms": 900000,
            "suspend_after_ms": 1000,
            "wake_daily_at": "string",
            "delete_after_ms": 1000
          },
          "keys": {
            "from": {
              "header": "string"
            },
            "upgrade_on_deploy": true,
            "delete_after_idle_ms": 1000
          },
          "egress": {
            "default": "allow",
            "allow": [
              "string"
            ],
            "deny": [
              "string"
            ],
            "http": [
              {
                "allow": []
              }
            ],
            "inject": [
              {
                "headers": {}
              }
            ],
            "deny_ports": [
              1
            ]
          },
          "metadata": {
            "property1": "string",
            "property2": "string"
          },
          "logs": {
            "output": true,
            "keep": true,
            "requests": {
              "sample_rate": 1,
              "keep_errors": true
            }
          },
          "traces": {
            "sample_rate": 1,
            "trust_incoming": true
          },
          "public": true,
          "depends_on": [
            {
              "service": "string",
              "condition": "string"
            }
          ],
          "network": {
            "aliases": [
              "string"
            ],
            "endpoint_mode": "string"
          }
        }
      }
    ],
    "volumes": [
      {
        "model": "string",
        "name": "string",
        "id": "string",
        "shared": true,
        "status": "to_make",
        "used_by": [
          "string"
        ]
      }
    ],
    "secrets": [
      {
        "model": "string",
        "name": "string",
        "there": true,
        "used_by": [
          "string"
        ]
      }
    ],
    "left_out": [
      {
        "name": "string",
        "profiles": [
          "string"
        ]
      }
    ],
    "absent": [
      "string"
    ],
    "deploy": "string"
  },
  "accounts": [
    {
      "id": "string",
      "name": "string"
    }
  ],
  "error": {
    "type": "string",
    "code": "string",
    "message": "string",
    "param": "string",
    "retryable": true,
    "request_id": "string",
    "docs_url": "string"
  }
}
```

- `error` (`getAccount.response.400.error`; object, required)
  - `type` (`getAccount.response.400.error.type`; string, required)
  - `code` (`getAccount.response.400.error.code`; string, required)
  - `message` (`getAccount.response.400.error.message`; string, required)
  - `param` (`getAccount.response.400.error.param`; string | null, required)
  - `retryable` (`getAccount.response.400.error.retryable`; boolean, required)
  - `request_id` (`getAccount.response.400.error.request_id`; string, required)
  - `docs_url` (`getAccount.response.400.error.docs_url`; string | null, required)
- `move_id` (`getAccount.response.400.move_id`; string, optional) — With `already_moving`: the move of the sandbox that is under way.
- `upgrade_id` (`getAccount.response.400.upgrade_id`; string, optional) — With `upgrade_in_progress` (the key's upgrade that is not over), `upgrade_started` (the upgrade that has begun) and `rollback_gone` (the upgrade whose revert is refused): that upgrade.
  - pattern `^upg-[0-9a-hjkmnp-tv-z]{16}$`
- `move` (`getAccount.response.400.move`; object, optional) — With `move_over`, `move_going_back` and `move_taken_over` (`POST /internal/moves/{id}/cancel`): the move, as it stands.
  - `object` (`getAccount.response.400.move.object`; string, required)
  - `id` (`getAccount.response.400.move.id`; string, required)
    - pattern `^mov-[0-9a-hjkmnp-tv-z]{16}$`
  - `sandbox_id` (`getAccount.response.400.move.sandbox_id`; string, required)
  - `project_id` (`getAccount.response.400.move.project_id`; string, required)
  - `from` (`getAccount.response.400.move.from`; object, required)
    - `id` (`getAccount.response.400.move.from.id`; string, required)
    - `name` (`getAccount.response.400.move.from.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `to` (`getAccount.response.400.move.to`; object, required)
    - `id` (`getAccount.response.400.move.to.id`; string, required)
    - `name` (`getAccount.response.400.move.to.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `epoch` (`getAccount.response.400.move.epoch`; integer, required) — The epoch the table held the sandbox at when the move began: the old node releases it at it, the new one takes it over one on, the old one takes it back two on, and from the object store three on.
    - min 1
  - `step` (`getAccount.response.400.move.step`; string, required) — Where it stands: `releasing` (the old node is asked to release it; the table has it there), `taking_over` (the new node is asked to take it over; the table has it there), `reclaiming` (the new node refused it, and the old one is asked to take it back), `restoring` (the old one kept nothing of it, and takes it over from the object store), `done` (on the new node), `failed` (where it was, or back there, or where a failure no time clears or an operator's cancel found it: `error` says why).
  - `why` (`getAccount.response.400.move.why`; string, required) — What made it: the operator's move, an evacuation, a recovery.
  - `wake` (`getAccount.response.400.move.wake`; boolean, required) — Whether the new node wakes it: as the call said, or as it was (it ran) when the move began.
  - `from_store` (`getAccount.response.400.move.from_store`; boolean, required) — The new node takes it from the object store alone.
  - `release` (`getAccount.response.400.move.release`; object | null, required) — What the old node's release answered (sandboxd/openapi/openapi.json, `releaseSandbox`), without the release's key; null before it answered.
  - `takeover` (`getAccount.response.400.move.takeover`; object | null, required) — What the takeover that ended it answered (`takeoverSandbox` of the node's document): where its disk and memory came from (`source`), how long each took (`ms`), `memory`; null before.
  - `error` (`getAccount.response.400.move.error`; one of, required) — Why it failed, of one that failed (the new node's refusal, where it was taken back to the old node); null, of one that is done; of one under way, what the step it is at was last told where it is asked again.
    - one of: `object`, `null`
  - `attempts` (`getAccount.response.400.move.attempts`; integer, required) — How many times the step it is at was asked without an answer that settles it.
    - min 0
  - `next_attempt_at` (`getAccount.response.400.move.next_attempt_at`; string | null, required) — When that step is asked again; null where it is not waiting.
    - format `date-time`
  - `batch` (`getAccount.response.400.move.batch`; string | null, required) — The evacuation (`evc-…`) or recovery (`rcv-…`) it is of.
  - `created_at` (`getAccount.response.400.move.created_at`; string, required)
    - format `date-time`
  - `updated_at` (`getAccount.response.400.move.updated_at`; string, required)
    - format `date-time`
  - `ended_at` (`getAccount.response.400.move.ended_at`; string | null, required)
    - format `date-time`
- `lease_until` (`getAccount.response.400.lease_until`; string, optional) — With `lease_held`: until when the node may still hold the lease it was granted last, and the time after it for the node to have seen it run out (`recoverNode` is refused until then).
  - format `date-time`
- `active` (`getAccount.response.400.active`; object | null, optional) — With `standby`: the active copy, as the standby last read the lease; null while no copy holds it.
  - `name` (`getAccount.response.400.active.name`; string, required)
  - `url` (`getAccount.response.400.active.url`; string, required)
  - `term` (`getAccount.response.400.active.term`; integer, required)
    - min 1
- `allowed_hosts` (`getAccount.response.400.allowed_hosts`; array | null, optional) — With `secret_host_not_allowed`: the hosts the secret may go to, as the secret has them; null where it was given none (the node's `SecretHosts`).
- `problems` (`getAccount.response.400.problems`; array<object>, optional) — With `invalid_definition`: every problem of the definition, each where it is and what it is.
  - `at` (`getAccount.response.400.problems.at`; string, required) — Where in the definition, a dotted path (`services.web.port`); empty for the whole of it.
  - `message` (`getAccount.response.400.problems.message`; string, required)
- `report` (`getAccount.response.400.report`; object, optional) — With `compose_refused`: the import's report, which says what is refused, why, and what to change.
  - `object` (`getAccount.response.400.report.object`; string, required)
    - one of `"compose_import"`
  - `name` (`getAccount.response.400.report.name`; string | null, required) — The model's `name`: each service's label `compose.project`. Null: it has none.
  - `dry_run` (`getAccount.response.400.report.dry_run`; boolean, required)
  - `strict` (`getAccount.response.400.report.strict`; boolean, required)
  - `profiles` (`getAccount.response.400.report.profiles`; array<string>, required)
  - `treatments` (`getAccount.response.400.report.treatments`; object, required) — How many items of the report have each treatment.
    - `done` (`getAccount.response.400.report.treatments.done`; integer, required)
      - min 0
    - `adapted` (`getAccount.response.400.report.treatments.adapted`; integer, required)
      - min 0
    - `ignored` (`getAccount.response.400.report.treatments.ignored`; integer, required)
      - min 0
    - `refused` (`getAccount.response.400.report.treatments.refused`; integer, required)
      - min 0
  - `items` (`getAccount.response.400.report.items`; array<object>, required) — The model's top-level elements: `name`, each volume, network, config and secret, extensions.
    - `at` (`getAccount.response.400.report.items.at`; string, required) — Where in the model: of a service, its attribute (`ports[0]`, `depends_on.db`, `environment.KEY`), empty for the service as a whole; of the top level, the element (`volumes.db-data`).
    - `treatment` (`getAccount.response.400.report.items.treatment`; string, required) — `done`: it means the same on the platform; `adapted`: the platform does the same another way; `ignored`: it matters to a local run alone (refused with `strict`); `refused`: the platform cannot do it, and doing without it would let the program go wrong quietly.
      - one of `"done"`, `"adapted"`, `"ignored"`, `"refused"`
    - `why` (`getAccount.response.400.report.items.why`; string, required)
    - `change` (`getAccount.response.400.report.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
  - `services` (`getAccount.response.400.report.services`; array<object>, required) — The services the import takes, in the model's order.
    - `name` (`getAccount.response.400.report.services.name`; string, required) — The service's name, which is its app's.
    - `app_id` (`getAccount.response.400.report.services.app_id`; string | null, required) — Its app. Null: a dry run of a service the project does not have.
      - pattern `^app-`
    - `status` (`getAccount.response.400.report.services.status`; string, required) — What the import does (or, in a dry run, would do) to its app: makes it, writes what changed, or nothing.
      - one of `"created"`, `"changed"`, `"unchanged"`
    - `kind` (`getAccount.response.400.report.services.kind`; string, required) — `job`: a service of the model waits for it to complete, and it runs to its end in each deploy that needs it.
      - one of `"service"`, `"job"`
    - `stateful` (`getAccount.response.400.report.services.stateful`; boolean, required) — It mounts a volume of its own: one instance, which has the volume.
    - `version` (`getAccount.response.400.report.services.version`; boolean, required) — Whether the import's deploy makes a version of it: what its version would be made of, its references resolved, is not what its current version is.
    - `items` (`getAccount.response.400.report.services.items`; array<object>, required)
      - `at` (`getAccount.response.400.report.services.items.at`; string, required) — Where in the model: of a service, its attribute (`ports[0]`, `depends_on.db`, `environment.KEY`), empty for the service as a whole; of the top level, the element (`volumes.db-data`).
      - `treatment` (`getAccount.response.400.report.services.items.treatment`; string, required) — `done`: it means the same on the platform; `adapted`: the platform does the same another way; `ignored`: it matters to a local run alone (refused with `strict`); `refused`: the platform cannot do it, and doing without it would let the program go wrong quietly.
        - one of `"done"`, `"adapted"`, `"ignored"`, `"refused"`
      - `why` (`getAccount.response.400.report.services.items.why`; string, required)
      - `change` (`getAccount.response.400.report.services.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
    - `app` (`getAccount.response.400.report.services.app`; object, required) — The fields of the service's app as the import writes them: what its versions are made of, and what holds at once.
      - `image` (`getAccount.response.400.report.services.app.image`; string | null, required) — What the app's next version is made of, with the seven fields after it: its newest version's, with what was changed since. `null`: the app has no image, and no version.
      - `image_pull_secret` (`getAccount.response.400.report.services.app.image_pull_secret`; string | null, required) — The name of the secret that holds the credentials of the image's registry. No answer has its value. `null`: none.
      - `start_command` (`getAccount.response.400.report.services.app.start_command`; any of, required)
        - any of: `StartCommand`, `null`
      - `start_args` (`getAccount.response.400.report.services.app.start_args`; any of, required) — What follows the image's ENTRYPOINT in the place of its CMD. `null`: the image's CMD, or the whole of `start_command`.
        - any of: `array<string>`, `null`
      - `port` (`getAccount.response.400.report.services.app.port`; integer | null, required)
      - `ready` (`getAccount.response.400.report.services.app.ready`; object, required) — How to tell that an instance is up, which a version's template is saved after: exactly one of the three. The first two are asked from outside the instance, so the service has to listen on every address (`0.0.0.0`).
        - `http` (`getAccount.response.400.report.services.app.ready.http`; string, optional) — A path, beginning with `/`: a `GET` of it on the app's port is answered with a status from 200 to 399.
        - `tcp` (`getAccount.response.400.report.services.app.ready.tcp`; boolean, optional) — The app's port takes a connection.
          - one of `true`
        - `command` (`getAccount.response.400.report.services.app.ready.command`; one of, optional) — A command that succeeds in the instance. It is run by the instance's shell: a list of arguments is written as one line for it.
          - one of: `string`, `array<string>`
      - `env` (`getAccount.response.400.report.services.app.env`; map<string>, required)
      - `secrets` (`getAccount.response.400.report.services.app.secrets`; map<string>, required) — Names of secrets. No answer has a value.
      - `size` (`getAccount.response.400.report.services.app.size`; object, required) — What one instance may use at most. It is billed by what it uses.
        - `vcpus` (`getAccount.response.400.report.services.app.size.vcpus`; integer, required)
          - min 1
        - `memory_bytes` (`getAccount.response.400.report.services.app.size.memory_bytes`; integer, required) — An even number of MiB (a whole number of the 2 MiB pages a node loads a machine's memory in), in bytes. Any other size is 400 `invalid_field` (param `size.memory_bytes`): no node would make an instance of it, as none makes a sandbox of it (the node's `SandboxLimitsCreate.memory_bytes`).
          - min 134217728
      - `volumes` (`getAccount.response.400.report.services.app.volumes`; array<object>, required)
        - `volume` (`getAccount.response.400.report.services.app.volumes.volume`; string, required)
        - `path` (`getAccount.response.400.report.services.app.volumes.path`; string, required)
        - `read_only` (`getAccount.response.400.report.services.app.volumes.read_only`; boolean, required)
        - `nocopy` (`getAccount.response.400.report.services.app.volumes.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `kind` (`getAccount.response.400.report.services.app.kind`; string, required)
      - `files` (`getAccount.response.400.report.services.app.files`; array<object>, required)
        - `path` (`getAccount.response.400.report.services.app.files.path`; string, required)
        - `mode` (`getAccount.response.400.report.services.app.files.mode`; integer, required)
        - `uid` (`getAccount.response.400.report.services.app.files.uid`; integer, required)
        - `gid` (`getAccount.response.400.report.services.app.files.gid`; integer, required)
        - `content` (`getAccount.response.400.report.services.app.files.content`; string, optional)
        - `secret` (`getAccount.response.400.report.services.app.files.secret`; string, optional)
      - `user` (`getAccount.response.400.report.services.app.user`; string | null, required)
      - `working_dir` (`getAccount.response.400.report.services.app.working_dir`; string | null, required)
      - `stop` (`getAccount.response.400.report.services.app.stop`; any of, required)
        - any of: `ServiceStop`, `null`
      - `hostname` (`getAccount.response.400.report.services.app.hostname`; string | null, required)
      - `regions` (`getAccount.response.400.report.services.app.regions`; array<string>, required) — In the order na, eu, ap.
      - `scale` (`getAccount.response.400.report.services.app.scale`; object, required)
        - `min_instances` (`getAccount.response.400.report.services.app.scale.min_instances`; integer, required) — How many instances of the app are kept awake in a region, whether a request comes or not: the floor. The nodes of the region that serve the app share it as they share `max_instances` (two nodes and a floor of 2: one on each; a floor of 1: one, on the node that is tried first; a floor of 5: three and two), and a node that is away is made up for by the others. A node makes its part when it is told, not at the first request, and neither stops nor deletes those instances for being idle; they are metered as instances that are awake. 0, which is what it is when nothing is said: none. Lowered, the instances beyond it are idle from that moment, and are stopped and deleted as idle instances are. At most `max_instances`, where that is given, and at most what the account's plan lets an app ask for in a region (`caps.app_instances.limit`: 5, 50 and 500): more is refused, 403 `plan_cap_reached`.
          - min 0
        - `max_instances` (`getAccount.response.400.report.services.app.scale.max_instances`; integer | null, required) — How many instances the app has at the most in a region: the nodes of the region that serve the app share it. At most what the account's plan lets an app ask for (`caps.app_instances.limit`: 5 on the free plan, 50 on `p20`, 200 on `p100`, 500 on `p300`, 1,000 on `p1000`, 2,000 on `p2000`): more is refused, 403 `plan_cap_reached`, and what an app asked for on a plan that let it is kept, and held to the plan's number. `null`: the plan's number for an app that names none (`caps.app_instances.default`: 2, 10, 20, 50, 100 and 200), or `min_instances` where that is more. What the nodes are told is no more than the account has room for awake beside everything else of it that is awake, nor less than the app has awake.
          - min 1
        - `concurrency` (`getAccount.response.400.report.services.app.scale.concurrency`; integer | null, required) — A cap on what one instance has in hand at a time: the requests the edges sent it, and the connections it has open on its project's network (through its service's address, which the node shares out among the instances connection by connection, or to its own). An instance with that many is full, and another is made for more. `null`, which is what it is when nothing is said: no cap. A node then adds an instance when the ones it has are near their size in CPU or memory, and an app does not have to guess a number; a service that takes one request at a time gives one.
          - min 1; max 1000
        - `sleep_after_ms` (`getAccount.response.400.report.services.app.scale.sleep_after_ms`; integer, required) — After how long without a request an instance stops. One that stays stopped is deleted by its node after `delete_after_ms`, and the next request that needs an instance gets a new one; the instances `min_instances` keeps awake are neither stopped nor deleted.
          - min 0; max 600000
        - `sleep_notice_ms` (`getAccount.response.400.report.services.app.scale.sleep_notice_ms`; integer | null, required) — How long before an instance stops for being idle the programs connected to its guest's `/run/sbx/awake` are sent the line `sleep N`, in milliseconds: they flush what they hold, close their connections, or raise a hold, which puts the stop off. The stop comes that long after, whether they answer or not; where nobody is connected, it is not put off. A keyed instance is told as well. 0 or null: not told (the default).
          - min 0; max 60000
        - `sleep_hold_max_ms` (`getAccount.response.400.report.services.app.scale.sleep_hold_max_ms`; integer, required) — How long the holds a program in an instance raises keep it up after its time idle has run out, in milliseconds: a program connects to `/run/sbx/awake` and sends `+` before it answers a request whose work goes on after the answer, and `-` (or closes the connection, or dies) when that work is done; the instance stops `sleep_after_ms` after the last hold is lowered. Past this time it stops whatever holds it, the programs connected told `sleep N cap` first where `sleep_notice_ms` asks for a notice. Held, it runs and is metered as running. 0: holds are not heeded. Null: 30000 (the default).
          - min 0; max 900000
        - `delete_after_ms` (`getAccount.response.400.report.services.app.scale.delete_after_ms`; integer | null, required) — After how long idle an instance is deleted, counted from where its stop is counted from: the next request that needs one gets a new instance, a clone of the version's template, without what the deleted one had gathered in its memory and on its disk (keep what is to last in a volume or a database). A second to an hour, the platform's time, which is the most: more is refused (400 `invalid_field`), and an instance that is to stay warm is one of `min_instances`. `null`, which is what it is when nothing is said: the hour of the nodes (`--app-delete-after-seconds`). A change holds for the instances the app has as for the ones made after: each node judges every instance by the app's time as it is, once a second at the least. Not for the app's keyed instances, which `keys.delete_after_idle_ms` is for.
          - min 1000; max 3600000
        - `suspend_after_ms` (`getAccount.response.400.report.services.app.scale.suspend_after_ms`; integer | null, optional) — How long a stopped instance stays paused before its memory is saved and it sleeps for real, in milliseconds: paused, the next request is answered in a millisecond or two and its memory is metered; asleep, it wakes in a few more and only what it keeps is. Its node holds it to the longest it holds any instance paused (ten minutes); the host's memory running short, a slot another machine needs and a sleep somebody asks for put it to sleep sooner. Null (the default): its node's longest. A database's `suspend_after_seconds` is its app's.
          - min 1000; max 86400000
        - `wake_daily_at` (`getAccount.response.400.report.services.app.scale.wake_daily_at`; string | null, optional) — A time of day in UTC, `HH:MM`, at which the app's keyed instances and its stateful service's instance that rest are woken every day, for work of their own that waits for a wake (a database's maintenance, say); the instances the nodes make and delete by the app's requests are woken by requests alone. The wake is no activity: what runs then is, and once that is done the instance rests again. A stateful service's instance is woken besides for the next run of its PostgreSQL server's `pg_cron` jobs, whatever this says. Null (the default): none. A database's `wake_daily_at` is its app's.
          - pattern `^([01][0-9]|2[0-3]):[0-5][0-9]$`
      - `keys` (`getAccount.response.400.report.services.app.keys`; any of, required)
        - any of: `object`, `null`
      - `egress` (`getAccount.response.400.report.services.app.egress`; object | null, required) — Egress rules as a sandbox has them (`default`, `allow`, `deny`, `http`, `inject`), null when there are none; kept as the calls gave them (a `PATCH` merges them key by key, as a node does). They hold at once and make no version: the nodes that serve the app put them on every instance of its group, the ones there are (one that runs for the connections it has too) and the ones made after; a keyed instance does not have them. The control plane checks only that they are an object of those keys of at most 256 KiB: what the rules say is a node's to check, when it applies them, and an instance whose rules its node cannot read is refused everything (the node's log says why).
        - `default` (`getAccount.response.400.report.services.app.egress.default`; string | null, optional)
          - one of `"allow"`, `"deny"`, `null`
        - `allow` (`getAccount.response.400.report.services.app.egress.allow`; array | null, optional)
        - `deny` (`getAccount.response.400.report.services.app.egress.deny`; array | null, optional)
        - `http` (`getAccount.response.400.report.services.app.egress.http`; array | null, optional)
        - `inject` (`getAccount.response.400.report.services.app.egress.inject`; array | null, optional)
        - `deny_ports` (`getAccount.response.400.report.services.app.egress.deny_ports`; array | null, optional) — Ports no connection reaches, TCP or UDP, wherever it goes and whatever else the rules say. A Browsers session's always hold 25, 465, 587 and the ports mining pools listen on (3333, 4444, 5555, 7777, 14444, 45700): the control plane adds them to whatever a change of its rules gives.
      - `metadata` (`getAccount.response.400.report.services.app.metadata`; map<string>, required)
      - `logs` (`getAccount.response.400.report.services.app.logs`; object, required) — What the app's log has, each part as it was given or at its default (`AppLogSettings`).
        - `output` (`getAccount.response.400.report.services.app.logs.output`; boolean, required)
        - `keep` (`getAccount.response.400.report.services.app.logs.keep`; boolean, required)
        - `requests` (`getAccount.response.400.report.services.app.logs.requests`; object, required)
          - `sample_rate` (`getAccount.response.400.report.services.app.logs.requests.sample_rate`; number, required)
            - min 0; max 1
          - `keep_errors` (`getAccount.response.400.report.services.app.logs.requests.keep_errors`; boolean, required)
      - `public` (`getAccount.response.400.report.services.app.public`; boolean, required) — Whether it answers at its default domain (`url`).
      - `depends_on` (`getAccount.response.400.report.services.app.depends_on`; array<object>, required)
        - `service` (`getAccount.response.400.report.services.app.depends_on.service`; string, required)
        - `condition` (`getAccount.response.400.report.services.app.depends_on.condition`; string, required)
      - `network` (`getAccount.response.400.report.services.app.network`; object, required)
        - `aliases` (`getAccount.response.400.report.services.app.network.aliases`; array<string>, required)
        - `endpoint_mode` (`getAccount.response.400.report.services.app.network.endpoint_mode`; string, required)
      - `drives` (`getAccount.response.400.report.services.app.drives`; array<object>, optional) — The Drives its instance mounts (`AppCreate.drives`): none, `[]`, where it names none.
        - `drive` (`getAccount.response.400.report.services.app.drives.drive`; string, required)
        - `path` (`getAccount.response.400.report.services.app.drives.path`; string, required)
        - `mode` (`getAccount.response.400.report.services.app.drives.mode`; string, required)
      - `key_drives` (`getAccount.response.400.report.services.app.key_drives`; array<object>, optional) — The Drives each key's instance has of its own (`AppCreate.key_drives`): none, `[]`, where it gives none.
        - `name` (`getAccount.response.400.report.services.app.key_drives.name`; string, required)
        - `path` (`getAccount.response.400.report.services.app.key_drives.path`; string, required)
        - `size_bytes` (`getAccount.response.400.report.services.app.key_drives.size_bytes`; integer | null, required)
          - format `int64`
        - `nocopy` (`getAccount.response.400.report.services.app.key_drives.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `runtime` (`getAccount.response.400.report.services.app.runtime`; any of, optional) — Its runtime settings (`AppCreate.runtime`). `null`: none.
        - any of: `Runtime`, `null`
      - `traces` (`getAccount.response.400.report.services.app.traces`; object, optional) — What the app's requests' traces have, each part as it was given or at its default (`AppTraceSettings`): no span where `sample_rate` is 0.
        - `sample_rate` (`getAccount.response.400.report.services.app.traces.sample_rate`; number, required)
          - min 0; max 1
        - `trust_incoming` (`getAccount.response.400.report.services.app.traces.trust_incoming`; boolean, required)
  - `volumes` (`getAccount.response.400.report.volumes`; array<object>, required) — The volumes of the project the services mount.
    - `model` (`getAccount.response.400.report.volumes.model`; string | null, required) — Its name in the model. Null: made for a path a stateful service mounts with no volume named.
    - `name` (`getAccount.response.400.report.volumes.name`; string, required) — Its name in the project.
    - `id` (`getAccount.response.400.report.volumes.id`; string | null, required) — Null: not made yet (`to_make`).
      - pattern `^vol-`
    - `shared` (`getAccount.response.400.report.volumes.shared`; boolean, required) — Several services mount it, or one with several instances: every instance of each mounts it at once.
    - `status` (`getAccount.response.400.report.volumes.status`; string, required) — `to_make`: the import makes it (a dry run says so of what it would make); `made`: this import made it; `there`: an earlier import made it, or a volume of its name was there; `external`: the model names it `external`, and the project has it.
      - one of `"to_make"`, `"made"`, `"there"`, `"external"`
    - `used_by` (`getAccount.response.400.report.volumes.used_by`; array<string>, required)
  - `secrets` (`getAccount.response.400.report.secrets`; array<object>, required) — The secrets of the model that services are granted.
    - `model` (`getAccount.response.400.report.secrets.model`; string, required) — Its name in the model.
    - `name` (`getAccount.response.400.report.secrets.name`; string, required) — The project's secret that holds it: the model's name, with each character a secret's name does not take written as an underscore.
    - `there` (`getAccount.response.400.report.secrets.there`; boolean, required) — Whether the project has it. An import (not a dry run) with one that is not there is refused 404 `secret_not_found`.
    - `used_by` (`getAccount.response.400.report.secrets.used_by`; array<string>, required)
  - `left_out` (`getAccount.response.400.report.left_out`; array<object>, required) — The services of profiles that are not turned on, which the import does not touch.
    - `name` (`getAccount.response.400.report.left_out.name`; string, required)
    - `profiles` (`getAccount.response.400.report.left_out.profiles`; array<string>, required)
  - `absent` (`getAccount.response.400.report.absent`; array<string>, required) — The project's services that the model does not have: kept as they are.
  - `deploy` (`getAccount.response.400.report.deploy`; string | null, required) — The deploy the import made (`GET /v1/deploys/{id}`). Null: a dry run, or nothing would get a version.
    - pattern `^dpl-`
- `accounts` (`getAccount.response.400.accounts`; array<object>, optional) — With `sole_owner`: the accounts the user is the only owner of.
  - `id` (`getAccount.response.400.accounts.id`; string, required)
    - pattern `^acct-[0-9a-hjkmnp-tv-z]{16}$`
  - `name` (`getAccount.response.400.accounts.name`; string, required)

### 401

`missing_api_key`, `invalid_api_key`, `expired_api_key`, `invalid_token`.

#### Example

```json
{
  "move_id": "string",
  "upgrade_id": "string",
  "move": {
    "object": "move",
    "id": "string",
    "sandbox_id": "string",
    "project_id": "string",
    "from": {
      "id": "string",
      "name": "string"
    },
    "to": {
      "id": "string",
      "name": "string"
    },
    "epoch": 1,
    "step": "string",
    "why": "string",
    "wake": true,
    "from_store": true,
    "release": {},
    "takeover": {},
    "error": {
      "code": "string",
      "message": "string",
      "status": 0,
      "takeover_refused": {
        "code": "string",
        "message": "string",
        "status": 0
      },
      "image": "string",
      "holder": "string",
      "holder_says": "has"
    },
    "attempts": 0,
    "next_attempt_at": "2019-08-24T14:15:22Z",
    "batch": "string",
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z",
    "ended_at": "2019-08-24T14:15:22Z"
  },
  "lease_until": "2019-08-24T14:15:22Z",
  "active": {
    "name": "string",
    "url": "string",
    "term": 1
  },
  "allowed_hosts": [
    "string"
  ],
  "problems": [
    {
      "at": "string",
      "message": "string"
    }
  ],
  "report": {
    "object": "compose_import",
    "name": "string",
    "dry_run": true,
    "strict": true,
    "profiles": [
      "string"
    ],
    "treatments": {
      "done": 0,
      "adapted": 0,
      "ignored": 0,
      "refused": 0
    },
    "items": [
      {
        "at": "string",
        "treatment": "done",
        "why": "string",
        "change": "string"
      }
    ],
    "services": [
      {
        "name": "string",
        "app_id": "string",
        "status": "created",
        "kind": "service",
        "stateful": true,
        "version": true,
        "items": [
          {
            "at": "string",
            "treatment": "done",
            "why": "string",
            "change": "string"
          }
        ],
        "app": {
          "image": "string",
          "image_pull_secret": "string",
          "start_command": "string",
          "start_args": [
            "string"
          ],
          "port": 0,
          "ready": {
            "http": "string"
          },
          "env": {
            "property1": "string",
            "property2": "string"
          },
          "secrets": {
            "property1": "string",
            "property2": "string"
          },
          "size": {
            "vcpus": 1,
            "memory_bytes": 134217728
          },
          "volumes": [
            {
              "volume": "string",
              "path": "string",
              "read_only": true,
              "nocopy": true
            }
          ],
          "drives": [
            {
              "drive": "string",
              "path": "string",
              "mode": "string"
            }
          ],
          "key_drives": [
            {
              "name": "string",
              "path": "string",
              "size_bytes": 0,
              "nocopy": true
            }
          ],
          "kind": "string",
          "files": [
            {
              "path": "string",
              "content": "string",
              "secret": "string",
              "mode": 0,
              "uid": 0,
              "gid": 0
            }
          ],
          "user": "string",
          "working_dir": "string",
          "stop": {
            "signal": "string",
            "grace_ms": 0
          },
          "hostname": "string",
          "runtime": {
            "ulimits": {
              "property1": {},
              "property2": {}
            },
            "sysctls": {
              "property1": "string",
              "property2": "string"
            },
            "tmpfs": [
              {}
            ],
            "dns": {
              "servers": [
                null
              ],
              "search": [
                null
              ],
              "options": [
                null
              ]
            },
            "shm_size_bytes": 0
          },
          "regions": [
            "string"
          ],
          "scale": {
            "min_instances": 0,
            "max_instances": 1,
            "concurrency": 1,
            "sleep_after_ms": 600000,
            "sleep_notice_ms": 60000,
            "sleep_hold_max_ms": 900000,
            "suspend_after_ms": 1000,
            "wake_daily_at": "string",
            "delete_after_ms": 1000
          },
          "keys": {
            "from": {
              "header": "string"
            },
            "upgrade_on_deploy": true,
            "delete_after_idle_ms": 1000
          },
          "egress": {
            "default": "allow",
            "allow": [
              "string"
            ],
            "deny": [
              "string"
            ],
            "http": [
              {
                "allow": []
              }
            ],
            "inject": [
              {
                "headers": {}
              }
            ],
            "deny_ports": [
              1
            ]
          },
          "metadata": {
            "property1": "string",
            "property2": "string"
          },
          "logs": {
            "output": true,
            "keep": true,
            "requests": {
              "sample_rate": 1,
              "keep_errors": true
            }
          },
          "traces": {
            "sample_rate": 1,
            "trust_incoming": true
          },
          "public": true,
          "depends_on": [
            {
              "service": "string",
              "condition": "string"
            }
          ],
          "network": {
            "aliases": [
              "string"
            ],
            "endpoint_mode": "string"
          }
        }
      }
    ],
    "volumes": [
      {
        "model": "string",
        "name": "string",
        "id": "string",
        "shared": true,
        "status": "to_make",
        "used_by": [
          "string"
        ]
      }
    ],
    "secrets": [
      {
        "model": "string",
        "name": "string",
        "there": true,
        "used_by": [
          "string"
        ]
      }
    ],
    "left_out": [
      {
        "name": "string",
        "profiles": [
          "string"
        ]
      }
    ],
    "absent": [
      "string"
    ],
    "deploy": "string"
  },
  "accounts": [
    {
      "id": "string",
      "name": "string"
    }
  ],
  "error": {
    "type": "string",
    "code": "string",
    "message": "string",
    "param": "string",
    "retryable": true,
    "request_id": "string",
    "docs_url": "string"
  }
}
```

- `error` (`getAccount.response.401.error`; object, required)
  - `type` (`getAccount.response.401.error.type`; string, required)
  - `code` (`getAccount.response.401.error.code`; string, required)
  - `message` (`getAccount.response.401.error.message`; string, required)
  - `param` (`getAccount.response.401.error.param`; string | null, required)
  - `retryable` (`getAccount.response.401.error.retryable`; boolean, required)
  - `request_id` (`getAccount.response.401.error.request_id`; string, required)
  - `docs_url` (`getAccount.response.401.error.docs_url`; string | null, required)
- `move_id` (`getAccount.response.401.move_id`; string, optional) — With `already_moving`: the move of the sandbox that is under way.
- `upgrade_id` (`getAccount.response.401.upgrade_id`; string, optional) — With `upgrade_in_progress` (the key's upgrade that is not over), `upgrade_started` (the upgrade that has begun) and `rollback_gone` (the upgrade whose revert is refused): that upgrade.
  - pattern `^upg-[0-9a-hjkmnp-tv-z]{16}$`
- `move` (`getAccount.response.401.move`; object, optional) — With `move_over`, `move_going_back` and `move_taken_over` (`POST /internal/moves/{id}/cancel`): the move, as it stands.
  - `object` (`getAccount.response.401.move.object`; string, required)
  - `id` (`getAccount.response.401.move.id`; string, required)
    - pattern `^mov-[0-9a-hjkmnp-tv-z]{16}$`
  - `sandbox_id` (`getAccount.response.401.move.sandbox_id`; string, required)
  - `project_id` (`getAccount.response.401.move.project_id`; string, required)
  - `from` (`getAccount.response.401.move.from`; object, required)
    - `id` (`getAccount.response.401.move.from.id`; string, required)
    - `name` (`getAccount.response.401.move.from.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `to` (`getAccount.response.401.move.to`; object, required)
    - `id` (`getAccount.response.401.move.to.id`; string, required)
    - `name` (`getAccount.response.401.move.to.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `epoch` (`getAccount.response.401.move.epoch`; integer, required) — The epoch the table held the sandbox at when the move began: the old node releases it at it, the new one takes it over one on, the old one takes it back two on, and from the object store three on.
    - min 1
  - `step` (`getAccount.response.401.move.step`; string, required) — Where it stands: `releasing` (the old node is asked to release it; the table has it there), `taking_over` (the new node is asked to take it over; the table has it there), `reclaiming` (the new node refused it, and the old one is asked to take it back), `restoring` (the old one kept nothing of it, and takes it over from the object store), `done` (on the new node), `failed` (where it was, or back there, or where a failure no time clears or an operator's cancel found it: `error` says why).
  - `why` (`getAccount.response.401.move.why`; string, required) — What made it: the operator's move, an evacuation, a recovery.
  - `wake` (`getAccount.response.401.move.wake`; boolean, required) — Whether the new node wakes it: as the call said, or as it was (it ran) when the move began.
  - `from_store` (`getAccount.response.401.move.from_store`; boolean, required) — The new node takes it from the object store alone.
  - `release` (`getAccount.response.401.move.release`; object | null, required) — What the old node's release answered (sandboxd/openapi/openapi.json, `releaseSandbox`), without the release's key; null before it answered.
  - `takeover` (`getAccount.response.401.move.takeover`; object | null, required) — What the takeover that ended it answered (`takeoverSandbox` of the node's document): where its disk and memory came from (`source`), how long each took (`ms`), `memory`; null before.
  - `error` (`getAccount.response.401.move.error`; one of, required) — Why it failed, of one that failed (the new node's refusal, where it was taken back to the old node); null, of one that is done; of one under way, what the step it is at was last told where it is asked again.
    - one of: `object`, `null`
  - `attempts` (`getAccount.response.401.move.attempts`; integer, required) — How many times the step it is at was asked without an answer that settles it.
    - min 0
  - `next_attempt_at` (`getAccount.response.401.move.next_attempt_at`; string | null, required) — When that step is asked again; null where it is not waiting.
    - format `date-time`
  - `batch` (`getAccount.response.401.move.batch`; string | null, required) — The evacuation (`evc-…`) or recovery (`rcv-…`) it is of.
  - `created_at` (`getAccount.response.401.move.created_at`; string, required)
    - format `date-time`
  - `updated_at` (`getAccount.response.401.move.updated_at`; string, required)
    - format `date-time`
  - `ended_at` (`getAccount.response.401.move.ended_at`; string | null, required)
    - format `date-time`
- `lease_until` (`getAccount.response.401.lease_until`; string, optional) — With `lease_held`: until when the node may still hold the lease it was granted last, and the time after it for the node to have seen it run out (`recoverNode` is refused until then).
  - format `date-time`
- `active` (`getAccount.response.401.active`; object | null, optional) — With `standby`: the active copy, as the standby last read the lease; null while no copy holds it.
  - `name` (`getAccount.response.401.active.name`; string, required)
  - `url` (`getAccount.response.401.active.url`; string, required)
  - `term` (`getAccount.response.401.active.term`; integer, required)
    - min 1
- `allowed_hosts` (`getAccount.response.401.allowed_hosts`; array | null, optional) — With `secret_host_not_allowed`: the hosts the secret may go to, as the secret has them; null where it was given none (the node's `SecretHosts`).
- `problems` (`getAccount.response.401.problems`; array<object>, optional) — With `invalid_definition`: every problem of the definition, each where it is and what it is.
  - `at` (`getAccount.response.401.problems.at`; string, required) — Where in the definition, a dotted path (`services.web.port`); empty for the whole of it.
  - `message` (`getAccount.response.401.problems.message`; string, required)
- `report` (`getAccount.response.401.report`; object, optional) — With `compose_refused`: the import's report, which says what is refused, why, and what to change.
  - `object` (`getAccount.response.401.report.object`; string, required)
    - one of `"compose_import"`
  - `name` (`getAccount.response.401.report.name`; string | null, required) — The model's `name`: each service's label `compose.project`. Null: it has none.
  - `dry_run` (`getAccount.response.401.report.dry_run`; boolean, required)
  - `strict` (`getAccount.response.401.report.strict`; boolean, required)
  - `profiles` (`getAccount.response.401.report.profiles`; array<string>, required)
  - `treatments` (`getAccount.response.401.report.treatments`; object, required) — How many items of the report have each treatment.
    - `done` (`getAccount.response.401.report.treatments.done`; integer, required)
      - min 0
    - `adapted` (`getAccount.response.401.report.treatments.adapted`; integer, required)
      - min 0
    - `ignored` (`getAccount.response.401.report.treatments.ignored`; integer, required)
      - min 0
    - `refused` (`getAccount.response.401.report.treatments.refused`; integer, required)
      - min 0
  - `items` (`getAccount.response.401.report.items`; array<object>, required) — The model's top-level elements: `name`, each volume, network, config and secret, extensions.
    - `at` (`getAccount.response.401.report.items.at`; string, required) — Where in the model: of a service, its attribute (`ports[0]`, `depends_on.db`, `environment.KEY`), empty for the service as a whole; of the top level, the element (`volumes.db-data`).
    - `treatment` (`getAccount.response.401.report.items.treatment`; string, required) — `done`: it means the same on the platform; `adapted`: the platform does the same another way; `ignored`: it matters to a local run alone (refused with `strict`); `refused`: the platform cannot do it, and doing without it would let the program go wrong quietly.
      - one of `"done"`, `"adapted"`, `"ignored"`, `"refused"`
    - `why` (`getAccount.response.401.report.items.why`; string, required)
    - `change` (`getAccount.response.401.report.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
  - `services` (`getAccount.response.401.report.services`; array<object>, required) — The services the import takes, in the model's order.
    - `name` (`getAccount.response.401.report.services.name`; string, required) — The service's name, which is its app's.
    - `app_id` (`getAccount.response.401.report.services.app_id`; string | null, required) — Its app. Null: a dry run of a service the project does not have.
      - pattern `^app-`
    - `status` (`getAccount.response.401.report.services.status`; string, required) — What the import does (or, in a dry run, would do) to its app: makes it, writes what changed, or nothing.
      - one of `"created"`, `"changed"`, `"unchanged"`
    - `kind` (`getAccount.response.401.report.services.kind`; string, required) — `job`: a service of the model waits for it to complete, and it runs to its end in each deploy that needs it.
      - one of `"service"`, `"job"`
    - `stateful` (`getAccount.response.401.report.services.stateful`; boolean, required) — It mounts a volume of its own: one instance, which has the volume.
    - `version` (`getAccount.response.401.report.services.version`; boolean, required) — Whether the import's deploy makes a version of it: what its version would be made of, its references resolved, is not what its current version is.
    - `items` (`getAccount.response.401.report.services.items`; array<object>, required)
      - `at` (`getAccount.response.401.report.services.items.at`; string, required) — Where in the model: of a service, its attribute (`ports[0]`, `depends_on.db`, `environment.KEY`), empty for the service as a whole; of the top level, the element (`volumes.db-data`).
      - `treatment` (`getAccount.response.401.report.services.items.treatment`; string, required) — `done`: it means the same on the platform; `adapted`: the platform does the same another way; `ignored`: it matters to a local run alone (refused with `strict`); `refused`: the platform cannot do it, and doing without it would let the program go wrong quietly.
        - one of `"done"`, `"adapted"`, `"ignored"`, `"refused"`
      - `why` (`getAccount.response.401.report.services.items.why`; string, required)
      - `change` (`getAccount.response.401.report.services.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
    - `app` (`getAccount.response.401.report.services.app`; object, required) — The fields of the service's app as the import writes them: what its versions are made of, and what holds at once.
      - `image` (`getAccount.response.401.report.services.app.image`; string | null, required) — What the app's next version is made of, with the seven fields after it: its newest version's, with what was changed since. `null`: the app has no image, and no version.
      - `image_pull_secret` (`getAccount.response.401.report.services.app.image_pull_secret`; string | null, required) — The name of the secret that holds the credentials of the image's registry. No answer has its value. `null`: none.
      - `start_command` (`getAccount.response.401.report.services.app.start_command`; any of, required)
        - any of: `StartCommand`, `null`
      - `start_args` (`getAccount.response.401.report.services.app.start_args`; any of, required) — What follows the image's ENTRYPOINT in the place of its CMD. `null`: the image's CMD, or the whole of `start_command`.
        - any of: `array<string>`, `null`
      - `port` (`getAccount.response.401.report.services.app.port`; integer | null, required)
      - `ready` (`getAccount.response.401.report.services.app.ready`; object, required) — How to tell that an instance is up, which a version's template is saved after: exactly one of the three. The first two are asked from outside the instance, so the service has to listen on every address (`0.0.0.0`).
        - `http` (`getAccount.response.401.report.services.app.ready.http`; string, optional) — A path, beginning with `/`: a `GET` of it on the app's port is answered with a status from 200 to 399.
        - `tcp` (`getAccount.response.401.report.services.app.ready.tcp`; boolean, optional) — The app's port takes a connection.
          - one of `true`
        - `command` (`getAccount.response.401.report.services.app.ready.command`; one of, optional) — A command that succeeds in the instance. It is run by the instance's shell: a list of arguments is written as one line for it.
          - one of: `string`, `array<string>`
      - `env` (`getAccount.response.401.report.services.app.env`; map<string>, required)
      - `secrets` (`getAccount.response.401.report.services.app.secrets`; map<string>, required) — Names of secrets. No answer has a value.
      - `size` (`getAccount.response.401.report.services.app.size`; object, required) — What one instance may use at most. It is billed by what it uses.
        - `vcpus` (`getAccount.response.401.report.services.app.size.vcpus`; integer, required)
          - min 1
        - `memory_bytes` (`getAccount.response.401.report.services.app.size.memory_bytes`; integer, required) — An even number of MiB (a whole number of the 2 MiB pages a node loads a machine's memory in), in bytes. Any other size is 400 `invalid_field` (param `size.memory_bytes`): no node would make an instance of it, as none makes a sandbox of it (the node's `SandboxLimitsCreate.memory_bytes`).
          - min 134217728
      - `volumes` (`getAccount.response.401.report.services.app.volumes`; array<object>, required)
        - `volume` (`getAccount.response.401.report.services.app.volumes.volume`; string, required)
        - `path` (`getAccount.response.401.report.services.app.volumes.path`; string, required)
        - `read_only` (`getAccount.response.401.report.services.app.volumes.read_only`; boolean, required)
        - `nocopy` (`getAccount.response.401.report.services.app.volumes.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `kind` (`getAccount.response.401.report.services.app.kind`; string, required)
      - `files` (`getAccount.response.401.report.services.app.files`; array<object>, required)
        - `path` (`getAccount.response.401.report.services.app.files.path`; string, required)
        - `mode` (`getAccount.response.401.report.services.app.files.mode`; integer, required)
        - `uid` (`getAccount.response.401.report.services.app.files.uid`; integer, required)
        - `gid` (`getAccount.response.401.report.services.app.files.gid`; integer, required)
        - `content` (`getAccount.response.401.report.services.app.files.content`; string, optional)
        - `secret` (`getAccount.response.401.report.services.app.files.secret`; string, optional)
      - `user` (`getAccount.response.401.report.services.app.user`; string | null, required)
      - `working_dir` (`getAccount.response.401.report.services.app.working_dir`; string | null, required)
      - `stop` (`getAccount.response.401.report.services.app.stop`; any of, required)
        - any of: `ServiceStop`, `null`
      - `hostname` (`getAccount.response.401.report.services.app.hostname`; string | null, required)
      - `regions` (`getAccount.response.401.report.services.app.regions`; array<string>, required) — In the order na, eu, ap.
      - `scale` (`getAccount.response.401.report.services.app.scale`; object, required)
        - `min_instances` (`getAccount.response.401.report.services.app.scale.min_instances`; integer, required) — How many instances of the app are kept awake in a region, whether a request comes or not: the floor. The nodes of the region that serve the app share it as they share `max_instances` (two nodes and a floor of 2: one on each; a floor of 1: one, on the node that is tried first; a floor of 5: three and two), and a node that is away is made up for by the others. A node makes its part when it is told, not at the first request, and neither stops nor deletes those instances for being idle; they are metered as instances that are awake. 0, which is what it is when nothing is said: none. Lowered, the instances beyond it are idle from that moment, and are stopped and deleted as idle instances are. At most `max_instances`, where that is given, and at most what the account's plan lets an app ask for in a region (`caps.app_instances.limit`: 5, 50 and 500): more is refused, 403 `plan_cap_reached`.
          - min 0
        - `max_instances` (`getAccount.response.401.report.services.app.scale.max_instances`; integer | null, required) — How many instances the app has at the most in a region: the nodes of the region that serve the app share it. At most what the account's plan lets an app ask for (`caps.app_instances.limit`: 5 on the free plan, 50 on `p20`, 200 on `p100`, 500 on `p300`, 1,000 on `p1000`, 2,000 on `p2000`): more is refused, 403 `plan_cap_reached`, and what an app asked for on a plan that let it is kept, and held to the plan's number. `null`: the plan's number for an app that names none (`caps.app_instances.default`: 2, 10, 20, 50, 100 and 200), or `min_instances` where that is more. What the nodes are told is no more than the account has room for awake beside everything else of it that is awake, nor less than the app has awake.
          - min 1
        - `concurrency` (`getAccount.response.401.report.services.app.scale.concurrency`; integer | null, required) — A cap on what one instance has in hand at a time: the requests the edges sent it, and the connections it has open on its project's network (through its service's address, which the node shares out among the instances connection by connection, or to its own). An instance with that many is full, and another is made for more. `null`, which is what it is when nothing is said: no cap. A node then adds an instance when the ones it has are near their size in CPU or memory, and an app does not have to guess a number; a service that takes one request at a time gives one.
          - min 1; max 1000
        - `sleep_after_ms` (`getAccount.response.401.report.services.app.scale.sleep_after_ms`; integer, required) — After how long without a request an instance stops. One that stays stopped is deleted by its node after `delete_after_ms`, and the next request that needs an instance gets a new one; the instances `min_instances` keeps awake are neither stopped nor deleted.
          - min 0; max 600000
        - `sleep_notice_ms` (`getAccount.response.401.report.services.app.scale.sleep_notice_ms`; integer | null, required) — How long before an instance stops for being idle the programs connected to its guest's `/run/sbx/awake` are sent the line `sleep N`, in milliseconds: they flush what they hold, close their connections, or raise a hold, which puts the stop off. The stop comes that long after, whether they answer or not; where nobody is connected, it is not put off. A keyed instance is told as well. 0 or null: not told (the default).
          - min 0; max 60000
        - `sleep_hold_max_ms` (`getAccount.response.401.report.services.app.scale.sleep_hold_max_ms`; integer, required) — How long the holds a program in an instance raises keep it up after its time idle has run out, in milliseconds: a program connects to `/run/sbx/awake` and sends `+` before it answers a request whose work goes on after the answer, and `-` (or closes the connection, or dies) when that work is done; the instance stops `sleep_after_ms` after the last hold is lowered. Past this time it stops whatever holds it, the programs connected told `sleep N cap` first where `sleep_notice_ms` asks for a notice. Held, it runs and is metered as running. 0: holds are not heeded. Null: 30000 (the default).
          - min 0; max 900000
        - `delete_after_ms` (`getAccount.response.401.report.services.app.scale.delete_after_ms`; integer | null, required) — After how long idle an instance is deleted, counted from where its stop is counted from: the next request that needs one gets a new instance, a clone of the version's template, without what the deleted one had gathered in its memory and on its disk (keep what is to last in a volume or a database). A second to an hour, the platform's time, which is the most: more is refused (400 `invalid_field`), and an instance that is to stay warm is one of `min_instances`. `null`, which is what it is when nothing is said: the hour of the nodes (`--app-delete-after-seconds`). A change holds for the instances the app has as for the ones made after: each node judges every instance by the app's time as it is, once a second at the least. Not for the app's keyed instances, which `keys.delete_after_idle_ms` is for.
          - min 1000; max 3600000
        - `suspend_after_ms` (`getAccount.response.401.report.services.app.scale.suspend_after_ms`; integer | null, optional) — How long a stopped instance stays paused before its memory is saved and it sleeps for real, in milliseconds: paused, the next request is answered in a millisecond or two and its memory is metered; asleep, it wakes in a few more and only what it keeps is. Its node holds it to the longest it holds any instance paused (ten minutes); the host's memory running short, a slot another machine needs and a sleep somebody asks for put it to sleep sooner. Null (the default): its node's longest. A database's `suspend_after_seconds` is its app's.
          - min 1000; max 86400000
        - `wake_daily_at` (`getAccount.response.401.report.services.app.scale.wake_daily_at`; string | null, optional) — A time of day in UTC, `HH:MM`, at which the app's keyed instances and its stateful service's instance that rest are woken every day, for work of their own that waits for a wake (a database's maintenance, say); the instances the nodes make and delete by the app's requests are woken by requests alone. The wake is no activity: what runs then is, and once that is done the instance rests again. A stateful service's instance is woken besides for the next run of its PostgreSQL server's `pg_cron` jobs, whatever this says. Null (the default): none. A database's `wake_daily_at` is its app's.
          - pattern `^([01][0-9]|2[0-3]):[0-5][0-9]$`
      - `keys` (`getAccount.response.401.report.services.app.keys`; any of, required)
        - any of: `object`, `null`
      - `egress` (`getAccount.response.401.report.services.app.egress`; object | null, required) — Egress rules as a sandbox has them (`default`, `allow`, `deny`, `http`, `inject`), null when there are none; kept as the calls gave them (a `PATCH` merges them key by key, as a node does). They hold at once and make no version: the nodes that serve the app put them on every instance of its group, the ones there are (one that runs for the connections it has too) and the ones made after; a keyed instance does not have them. The control plane checks only that they are an object of those keys of at most 256 KiB: what the rules say is a node's to check, when it applies them, and an instance whose rules its node cannot read is refused everything (the node's log says why).
        - `default` (`getAccount.response.401.report.services.app.egress.default`; string | null, optional)
          - one of `"allow"`, `"deny"`, `null`
        - `allow` (`getAccount.response.401.report.services.app.egress.allow`; array | null, optional)
        - `deny` (`getAccount.response.401.report.services.app.egress.deny`; array | null, optional)
        - `http` (`getAccount.response.401.report.services.app.egress.http`; array | null, optional)
        - `inject` (`getAccount.response.401.report.services.app.egress.inject`; array | null, optional)
        - `deny_ports` (`getAccount.response.401.report.services.app.egress.deny_ports`; array | null, optional) — Ports no connection reaches, TCP or UDP, wherever it goes and whatever else the rules say. A Browsers session's always hold 25, 465, 587 and the ports mining pools listen on (3333, 4444, 5555, 7777, 14444, 45700): the control plane adds them to whatever a change of its rules gives.
      - `metadata` (`getAccount.response.401.report.services.app.metadata`; map<string>, required)
      - `logs` (`getAccount.response.401.report.services.app.logs`; object, required) — What the app's log has, each part as it was given or at its default (`AppLogSettings`).
        - `output` (`getAccount.response.401.report.services.app.logs.output`; boolean, required)
        - `keep` (`getAccount.response.401.report.services.app.logs.keep`; boolean, required)
        - `requests` (`getAccount.response.401.report.services.app.logs.requests`; object, required)
          - `sample_rate` (`getAccount.response.401.report.services.app.logs.requests.sample_rate`; number, required)
            - min 0; max 1
          - `keep_errors` (`getAccount.response.401.report.services.app.logs.requests.keep_errors`; boolean, required)
      - `public` (`getAccount.response.401.report.services.app.public`; boolean, required) — Whether it answers at its default domain (`url`).
      - `depends_on` (`getAccount.response.401.report.services.app.depends_on`; array<object>, required)
        - `service` (`getAccount.response.401.report.services.app.depends_on.service`; string, required)
        - `condition` (`getAccount.response.401.report.services.app.depends_on.condition`; string, required)
      - `network` (`getAccount.response.401.report.services.app.network`; object, required)
        - `aliases` (`getAccount.response.401.report.services.app.network.aliases`; array<string>, required)
        - `endpoint_mode` (`getAccount.response.401.report.services.app.network.endpoint_mode`; string, required)
      - `drives` (`getAccount.response.401.report.services.app.drives`; array<object>, optional) — The Drives its instance mounts (`AppCreate.drives`): none, `[]`, where it names none.
        - `drive` (`getAccount.response.401.report.services.app.drives.drive`; string, required)
        - `path` (`getAccount.response.401.report.services.app.drives.path`; string, required)
        - `mode` (`getAccount.response.401.report.services.app.drives.mode`; string, required)
      - `key_drives` (`getAccount.response.401.report.services.app.key_drives`; array<object>, optional) — The Drives each key's instance has of its own (`AppCreate.key_drives`): none, `[]`, where it gives none.
        - `name` (`getAccount.response.401.report.services.app.key_drives.name`; string, required)
        - `path` (`getAccount.response.401.report.services.app.key_drives.path`; string, required)
        - `size_bytes` (`getAccount.response.401.report.services.app.key_drives.size_bytes`; integer | null, required)
          - format `int64`
        - `nocopy` (`getAccount.response.401.report.services.app.key_drives.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `runtime` (`getAccount.response.401.report.services.app.runtime`; any of, optional) — Its runtime settings (`AppCreate.runtime`). `null`: none.
        - any of: `Runtime`, `null`
      - `traces` (`getAccount.response.401.report.services.app.traces`; object, optional) — What the app's requests' traces have, each part as it was given or at its default (`AppTraceSettings`): no span where `sample_rate` is 0.
        - `sample_rate` (`getAccount.response.401.report.services.app.traces.sample_rate`; number, required)
          - min 0; max 1
        - `trust_incoming` (`getAccount.response.401.report.services.app.traces.trust_incoming`; boolean, required)
  - `volumes` (`getAccount.response.401.report.volumes`; array<object>, required) — The volumes of the project the services mount.
    - `model` (`getAccount.response.401.report.volumes.model`; string | null, required) — Its name in the model. Null: made for a path a stateful service mounts with no volume named.
    - `name` (`getAccount.response.401.report.volumes.name`; string, required) — Its name in the project.
    - `id` (`getAccount.response.401.report.volumes.id`; string | null, required) — Null: not made yet (`to_make`).
      - pattern `^vol-`
    - `shared` (`getAccount.response.401.report.volumes.shared`; boolean, required) — Several services mount it, or one with several instances: every instance of each mounts it at once.
    - `status` (`getAccount.response.401.report.volumes.status`; string, required) — `to_make`: the import makes it (a dry run says so of what it would make); `made`: this import made it; `there`: an earlier import made it, or a volume of its name was there; `external`: the model names it `external`, and the project has it.
      - one of `"to_make"`, `"made"`, `"there"`, `"external"`
    - `used_by` (`getAccount.response.401.report.volumes.used_by`; array<string>, required)
  - `secrets` (`getAccount.response.401.report.secrets`; array<object>, required) — The secrets of the model that services are granted.
    - `model` (`getAccount.response.401.report.secrets.model`; string, required) — Its name in the model.
    - `name` (`getAccount.response.401.report.secrets.name`; string, required) — The project's secret that holds it: the model's name, with each character a secret's name does not take written as an underscore.
    - `there` (`getAccount.response.401.report.secrets.there`; boolean, required) — Whether the project has it. An import (not a dry run) with one that is not there is refused 404 `secret_not_found`.
    - `used_by` (`getAccount.response.401.report.secrets.used_by`; array<string>, required)
  - `left_out` (`getAccount.response.401.report.left_out`; array<object>, required) — The services of profiles that are not turned on, which the import does not touch.
    - `name` (`getAccount.response.401.report.left_out.name`; string, required)
    - `profiles` (`getAccount.response.401.report.left_out.profiles`; array<string>, required)
  - `absent` (`getAccount.response.401.report.absent`; array<string>, required) — The project's services that the model does not have: kept as they are.
  - `deploy` (`getAccount.response.401.report.deploy`; string | null, required) — The deploy the import made (`GET /v1/deploys/{id}`). Null: a dry run, or nothing would get a version.
    - pattern `^dpl-`
- `accounts` (`getAccount.response.401.accounts`; array<object>, optional) — With `sole_owner`: the accounts the user is the only owner of.
  - `id` (`getAccount.response.401.accounts.id`; string, required)
    - pattern `^acct-[0-9a-hjkmnp-tv-z]{16}$`
  - `name` (`getAccount.response.401.accounts.name`; string, required)

### 403

`key_scope`, `needs_api_key`, as everywhere. (An account held for its payments is answered this call, which says so: `payment_hold`.)

#### Example

```json
{
  "move_id": "string",
  "upgrade_id": "string",
  "move": {
    "object": "move",
    "id": "string",
    "sandbox_id": "string",
    "project_id": "string",
    "from": {
      "id": "string",
      "name": "string"
    },
    "to": {
      "id": "string",
      "name": "string"
    },
    "epoch": 1,
    "step": "string",
    "why": "string",
    "wake": true,
    "from_store": true,
    "release": {},
    "takeover": {},
    "error": {
      "code": "string",
      "message": "string",
      "status": 0,
      "takeover_refused": {
        "code": "string",
        "message": "string",
        "status": 0
      },
      "image": "string",
      "holder": "string",
      "holder_says": "has"
    },
    "attempts": 0,
    "next_attempt_at": "2019-08-24T14:15:22Z",
    "batch": "string",
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z",
    "ended_at": "2019-08-24T14:15:22Z"
  },
  "lease_until": "2019-08-24T14:15:22Z",
  "active": {
    "name": "string",
    "url": "string",
    "term": 1
  },
  "allowed_hosts": [
    "string"
  ],
  "problems": [
    {
      "at": "string",
      "message": "string"
    }
  ],
  "report": {
    "object": "compose_import",
    "name": "string",
    "dry_run": true,
    "strict": true,
    "profiles": [
      "string"
    ],
    "treatments": {
      "done": 0,
      "adapted": 0,
      "ignored": 0,
      "refused": 0
    },
    "items": [
      {
        "at": "string",
        "treatment": "done",
        "why": "string",
        "change": "string"
      }
    ],
    "services": [
      {
        "name": "string",
        "app_id": "string",
        "status": "created",
        "kind": "service",
        "stateful": true,
        "version": true,
        "items": [
          {
            "at": "string",
            "treatment": "done",
            "why": "string",
            "change": "string"
          }
        ],
        "app": {
          "image": "string",
          "image_pull_secret": "string",
          "start_command": "string",
          "start_args": [
            "string"
          ],
          "port": 0,
          "ready": {
            "http": "string"
          },
          "env": {
            "property1": "string",
            "property2": "string"
          },
          "secrets": {
            "property1": "string",
            "property2": "string"
          },
          "size": {
            "vcpus": 1,
            "memory_bytes": 134217728
          },
          "volumes": [
            {
              "volume": "string",
              "path": "string",
              "read_only": true,
              "nocopy": true
            }
          ],
          "drives": [
            {
              "drive": "string",
              "path": "string",
              "mode": "string"
            }
          ],
          "key_drives": [
            {
              "name": "string",
              "path": "string",
              "size_bytes": 0,
              "nocopy": true
            }
          ],
          "kind": "string",
          "files": [
            {
              "path": "string",
              "content": "string",
              "secret": "string",
              "mode": 0,
              "uid": 0,
              "gid": 0
            }
          ],
          "user": "string",
          "working_dir": "string",
          "stop": {
            "signal": "string",
            "grace_ms": 0
          },
          "hostname": "string",
          "runtime": {
            "ulimits": {
              "property1": {},
              "property2": {}
            },
            "sysctls": {
              "property1": "string",
              "property2": "string"
            },
            "tmpfs": [
              {}
            ],
            "dns": {
              "servers": [
                null
              ],
              "search": [
                null
              ],
              "options": [
                null
              ]
            },
            "shm_size_bytes": 0
          },
          "regions": [
            "string"
          ],
          "scale": {
            "min_instances": 0,
            "max_instances": 1,
            "concurrency": 1,
            "sleep_after_ms": 600000,
            "sleep_notice_ms": 60000,
            "sleep_hold_max_ms": 900000,
            "suspend_after_ms": 1000,
            "wake_daily_at": "string",
            "delete_after_ms": 1000
          },
          "keys": {
            "from": {
              "header": "string"
            },
            "upgrade_on_deploy": true,
            "delete_after_idle_ms": 1000
          },
          "egress": {
            "default": "allow",
            "allow": [
              "string"
            ],
            "deny": [
              "string"
            ],
            "http": [
              {
                "allow": []
              }
            ],
            "inject": [
              {
                "headers": {}
              }
            ],
            "deny_ports": [
              1
            ]
          },
          "metadata": {
            "property1": "string",
            "property2": "string"
          },
          "logs": {
            "output": true,
            "keep": true,
            "requests": {
              "sample_rate": 1,
              "keep_errors": true
            }
          },
          "traces": {
            "sample_rate": 1,
            "trust_incoming": true
          },
          "public": true,
          "depends_on": [
            {
              "service": "string",
              "condition": "string"
            }
          ],
          "network": {
            "aliases": [
              "string"
            ],
            "endpoint_mode": "string"
          }
        }
      }
    ],
    "volumes": [
      {
        "model": "string",
        "name": "string",
        "id": "string",
        "shared": true,
        "status": "to_make",
        "used_by": [
          "string"
        ]
      }
    ],
    "secrets": [
      {
        "model": "string",
        "name": "string",
        "there": true,
        "used_by": [
          "string"
        ]
      }
    ],
    "left_out": [
      {
        "name": "string",
        "profiles": [
          "string"
        ]
      }
    ],
    "absent": [
      "string"
    ],
    "deploy": "string"
  },
  "accounts": [
    {
      "id": "string",
      "name": "string"
    }
  ],
  "error": {
    "type": "string",
    "code": "string",
    "message": "string",
    "param": "string",
    "retryable": true,
    "request_id": "string",
    "docs_url": "string"
  }
}
```

- `error` (`getAccount.response.403.error`; object, required)
  - `type` (`getAccount.response.403.error.type`; string, required)
  - `code` (`getAccount.response.403.error.code`; string, required)
  - `message` (`getAccount.response.403.error.message`; string, required)
  - `param` (`getAccount.response.403.error.param`; string | null, required)
  - `retryable` (`getAccount.response.403.error.retryable`; boolean, required)
  - `request_id` (`getAccount.response.403.error.request_id`; string, required)
  - `docs_url` (`getAccount.response.403.error.docs_url`; string | null, required)
- `move_id` (`getAccount.response.403.move_id`; string, optional) — With `already_moving`: the move of the sandbox that is under way.
- `upgrade_id` (`getAccount.response.403.upgrade_id`; string, optional) — With `upgrade_in_progress` (the key's upgrade that is not over), `upgrade_started` (the upgrade that has begun) and `rollback_gone` (the upgrade whose revert is refused): that upgrade.
  - pattern `^upg-[0-9a-hjkmnp-tv-z]{16}$`
- `move` (`getAccount.response.403.move`; object, optional) — With `move_over`, `move_going_back` and `move_taken_over` (`POST /internal/moves/{id}/cancel`): the move, as it stands.
  - `object` (`getAccount.response.403.move.object`; string, required)
  - `id` (`getAccount.response.403.move.id`; string, required)
    - pattern `^mov-[0-9a-hjkmnp-tv-z]{16}$`
  - `sandbox_id` (`getAccount.response.403.move.sandbox_id`; string, required)
  - `project_id` (`getAccount.response.403.move.project_id`; string, required)
  - `from` (`getAccount.response.403.move.from`; object, required)
    - `id` (`getAccount.response.403.move.from.id`; string, required)
    - `name` (`getAccount.response.403.move.from.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `to` (`getAccount.response.403.move.to`; object, required)
    - `id` (`getAccount.response.403.move.to.id`; string, required)
    - `name` (`getAccount.response.403.move.to.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `epoch` (`getAccount.response.403.move.epoch`; integer, required) — The epoch the table held the sandbox at when the move began: the old node releases it at it, the new one takes it over one on, the old one takes it back two on, and from the object store three on.
    - min 1
  - `step` (`getAccount.response.403.move.step`; string, required) — Where it stands: `releasing` (the old node is asked to release it; the table has it there), `taking_over` (the new node is asked to take it over; the table has it there), `reclaiming` (the new node refused it, and the old one is asked to take it back), `restoring` (the old one kept nothing of it, and takes it over from the object store), `done` (on the new node), `failed` (where it was, or back there, or where a failure no time clears or an operator's cancel found it: `error` says why).
  - `why` (`getAccount.response.403.move.why`; string, required) — What made it: the operator's move, an evacuation, a recovery.
  - `wake` (`getAccount.response.403.move.wake`; boolean, required) — Whether the new node wakes it: as the call said, or as it was (it ran) when the move began.
  - `from_store` (`getAccount.response.403.move.from_store`; boolean, required) — The new node takes it from the object store alone.
  - `release` (`getAccount.response.403.move.release`; object | null, required) — What the old node's release answered (sandboxd/openapi/openapi.json, `releaseSandbox`), without the release's key; null before it answered.
  - `takeover` (`getAccount.response.403.move.takeover`; object | null, required) — What the takeover that ended it answered (`takeoverSandbox` of the node's document): where its disk and memory came from (`source`), how long each took (`ms`), `memory`; null before.
  - `error` (`getAccount.response.403.move.error`; one of, required) — Why it failed, of one that failed (the new node's refusal, where it was taken back to the old node); null, of one that is done; of one under way, what the step it is at was last told where it is asked again.
    - one of: `object`, `null`
  - `attempts` (`getAccount.response.403.move.attempts`; integer, required) — How many times the step it is at was asked without an answer that settles it.
    - min 0
  - `next_attempt_at` (`getAccount.response.403.move.next_attempt_at`; string | null, required) — When that step is asked again; null where it is not waiting.
    - format `date-time`
  - `batch` (`getAccount.response.403.move.batch`; string | null, required) — The evacuation (`evc-…`) or recovery (`rcv-…`) it is of.
  - `created_at` (`getAccount.response.403.move.created_at`; string, required)
    - format `date-time`
  - `updated_at` (`getAccount.response.403.move.updated_at`; string, required)
    - format `date-time`
  - `ended_at` (`getAccount.response.403.move.ended_at`; string | null, required)
    - format `date-time`
- `lease_until` (`getAccount.response.403.lease_until`; string, optional) — With `lease_held`: until when the node may still hold the lease it was granted last, and the time after it for the node to have seen it run out (`recoverNode` is refused until then).
  - format `date-time`
- `active` (`getAccount.response.403.active`; object | null, optional) — With `standby`: the active copy, as the standby last read the lease; null while no copy holds it.
  - `name` (`getAccount.response.403.active.name`; string, required)
  - `url` (`getAccount.response.403.active.url`; string, required)
  - `term` (`getAccount.response.403.active.term`; integer, required)
    - min 1
- `allowed_hosts` (`getAccount.response.403.allowed_hosts`; array | null, optional) — With `secret_host_not_allowed`: the hosts the secret may go to, as the secret has them; null where it was given none (the node's `SecretHosts`).
- `problems` (`getAccount.response.403.problems`; array<object>, optional) — With `invalid_definition`: every problem of the definition, each where it is and what it is.
  - `at` (`getAccount.response.403.problems.at`; string, required) — Where in the definition, a dotted path (`services.web.port`); empty for the whole of it.
  - `message` (`getAccount.response.403.problems.message`; string, required)
- `report` (`getAccount.response.403.report`; object, optional) — With `compose_refused`: the import's report, which says what is refused, why, and what to change.
  - `object` (`getAccount.response.403.report.object`; string, required)
    - one of `"compose_import"`
  - `name` (`getAccount.response.403.report.name`; string | null, required) — The model's `name`: each service's label `compose.project`. Null: it has none.
  - `dry_run` (`getAccount.response.403.report.dry_run`; boolean, required)
  - `strict` (`getAccount.response.403.report.strict`; boolean, required)
  - `profiles` (`getAccount.response.403.report.profiles`; array<string>, required)
  - `treatments` (`getAccount.response.403.report.treatments`; object, required) — How many items of the report have each treatment.
    - `done` (`getAccount.response.403.report.treatments.done`; integer, required)
      - min 0
    - `adapted` (`getAccount.response.403.report.treatments.adapted`; integer, required)
      - min 0
    - `ignored` (`getAccount.response.403.report.treatments.ignored`; integer, required)
      - min 0
    - `refused` (`getAccount.response.403.report.treatments.refused`; integer, required)
      - min 0
  - `items` (`getAccount.response.403.report.items`; array<object>, required) — The model's top-level elements: `name`, each volume, network, config and secret, extensions.
    - `at` (`getAccount.response.403.report.items.at`; string, required) — Where in the model: of a service, its attribute (`ports[0]`, `depends_on.db`, `environment.KEY`), empty for the service as a whole; of the top level, the element (`volumes.db-data`).
    - `treatment` (`getAccount.response.403.report.items.treatment`; string, required) — `done`: it means the same on the platform; `adapted`: the platform does the same another way; `ignored`: it matters to a local run alone (refused with `strict`); `refused`: the platform cannot do it, and doing without it would let the program go wrong quietly.
      - one of `"done"`, `"adapted"`, `"ignored"`, `"refused"`
    - `why` (`getAccount.response.403.report.items.why`; string, required)
    - `change` (`getAccount.response.403.report.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
  - `services` (`getAccount.response.403.report.services`; array<object>, required) — The services the import takes, in the model's order.
    - `name` (`getAccount.response.403.report.services.name`; string, required) — The service's name, which is its app's.
    - `app_id` (`getAccount.response.403.report.services.app_id`; string | null, required) — Its app. Null: a dry run of a service the project does not have.
      - pattern `^app-`
    - `status` (`getAccount.response.403.report.services.status`; string, required) — What the import does (or, in a dry run, would do) to its app: makes it, writes what changed, or nothing.
      - one of `"created"`, `"changed"`, `"unchanged"`
    - `kind` (`getAccount.response.403.report.services.kind`; string, required) — `job`: a service of the model waits for it to complete, and it runs to its end in each deploy that needs it.
      - one of `"service"`, `"job"`
    - `stateful` (`getAccount.response.403.report.services.stateful`; boolean, required) — It mounts a volume of its own: one instance, which has the volume.
    - `version` (`getAccount.response.403.report.services.version`; boolean, required) — Whether the import's deploy makes a version of it: what its version would be made of, its references resolved, is not what its current version is.
    - `items` (`getAccount.response.403.report.services.items`; array<object>, required)
      - `at` (`getAccount.response.403.report.services.items.at`; string, required) — Where in the model: of a service, its attribute (`ports[0]`, `depends_on.db`, `environment.KEY`), empty for the service as a whole; of the top level, the element (`volumes.db-data`).
      - `treatment` (`getAccount.response.403.report.services.items.treatment`; string, required) — `done`: it means the same on the platform; `adapted`: the platform does the same another way; `ignored`: it matters to a local run alone (refused with `strict`); `refused`: the platform cannot do it, and doing without it would let the program go wrong quietly.
        - one of `"done"`, `"adapted"`, `"ignored"`, `"refused"`
      - `why` (`getAccount.response.403.report.services.items.why`; string, required)
      - `change` (`getAccount.response.403.report.services.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
    - `app` (`getAccount.response.403.report.services.app`; object, required) — The fields of the service's app as the import writes them: what its versions are made of, and what holds at once.
      - `image` (`getAccount.response.403.report.services.app.image`; string | null, required) — What the app's next version is made of, with the seven fields after it: its newest version's, with what was changed since. `null`: the app has no image, and no version.
      - `image_pull_secret` (`getAccount.response.403.report.services.app.image_pull_secret`; string | null, required) — The name of the secret that holds the credentials of the image's registry. No answer has its value. `null`: none.
      - `start_command` (`getAccount.response.403.report.services.app.start_command`; any of, required)
        - any of: `StartCommand`, `null`
      - `start_args` (`getAccount.response.403.report.services.app.start_args`; any of, required) — What follows the image's ENTRYPOINT in the place of its CMD. `null`: the image's CMD, or the whole of `start_command`.
        - any of: `array<string>`, `null`
      - `port` (`getAccount.response.403.report.services.app.port`; integer | null, required)
      - `ready` (`getAccount.response.403.report.services.app.ready`; object, required) — How to tell that an instance is up, which a version's template is saved after: exactly one of the three. The first two are asked from outside the instance, so the service has to listen on every address (`0.0.0.0`).
        - `http` (`getAccount.response.403.report.services.app.ready.http`; string, optional) — A path, beginning with `/`: a `GET` of it on the app's port is answered with a status from 200 to 399.
        - `tcp` (`getAccount.response.403.report.services.app.ready.tcp`; boolean, optional) — The app's port takes a connection.
          - one of `true`
        - `command` (`getAccount.response.403.report.services.app.ready.command`; one of, optional) — A command that succeeds in the instance. It is run by the instance's shell: a list of arguments is written as one line for it.
          - one of: `string`, `array<string>`
      - `env` (`getAccount.response.403.report.services.app.env`; map<string>, required)
      - `secrets` (`getAccount.response.403.report.services.app.secrets`; map<string>, required) — Names of secrets. No answer has a value.
      - `size` (`getAccount.response.403.report.services.app.size`; object, required) — What one instance may use at most. It is billed by what it uses.
        - `vcpus` (`getAccount.response.403.report.services.app.size.vcpus`; integer, required)
          - min 1
        - `memory_bytes` (`getAccount.response.403.report.services.app.size.memory_bytes`; integer, required) — An even number of MiB (a whole number of the 2 MiB pages a node loads a machine's memory in), in bytes. Any other size is 400 `invalid_field` (param `size.memory_bytes`): no node would make an instance of it, as none makes a sandbox of it (the node's `SandboxLimitsCreate.memory_bytes`).
          - min 134217728
      - `volumes` (`getAccount.response.403.report.services.app.volumes`; array<object>, required)
        - `volume` (`getAccount.response.403.report.services.app.volumes.volume`; string, required)
        - `path` (`getAccount.response.403.report.services.app.volumes.path`; string, required)
        - `read_only` (`getAccount.response.403.report.services.app.volumes.read_only`; boolean, required)
        - `nocopy` (`getAccount.response.403.report.services.app.volumes.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `kind` (`getAccount.response.403.report.services.app.kind`; string, required)
      - `files` (`getAccount.response.403.report.services.app.files`; array<object>, required)
        - `path` (`getAccount.response.403.report.services.app.files.path`; string, required)
        - `mode` (`getAccount.response.403.report.services.app.files.mode`; integer, required)
        - `uid` (`getAccount.response.403.report.services.app.files.uid`; integer, required)
        - `gid` (`getAccount.response.403.report.services.app.files.gid`; integer, required)
        - `content` (`getAccount.response.403.report.services.app.files.content`; string, optional)
        - `secret` (`getAccount.response.403.report.services.app.files.secret`; string, optional)
      - `user` (`getAccount.response.403.report.services.app.user`; string | null, required)
      - `working_dir` (`getAccount.response.403.report.services.app.working_dir`; string | null, required)
      - `stop` (`getAccount.response.403.report.services.app.stop`; any of, required)
        - any of: `ServiceStop`, `null`
      - `hostname` (`getAccount.response.403.report.services.app.hostname`; string | null, required)
      - `regions` (`getAccount.response.403.report.services.app.regions`; array<string>, required) — In the order na, eu, ap.
      - `scale` (`getAccount.response.403.report.services.app.scale`; object, required)
        - `min_instances` (`getAccount.response.403.report.services.app.scale.min_instances`; integer, required) — How many instances of the app are kept awake in a region, whether a request comes or not: the floor. The nodes of the region that serve the app share it as they share `max_instances` (two nodes and a floor of 2: one on each; a floor of 1: one, on the node that is tried first; a floor of 5: three and two), and a node that is away is made up for by the others. A node makes its part when it is told, not at the first request, and neither stops nor deletes those instances for being idle; they are metered as instances that are awake. 0, which is what it is when nothing is said: none. Lowered, the instances beyond it are idle from that moment, and are stopped and deleted as idle instances are. At most `max_instances`, where that is given, and at most what the account's plan lets an app ask for in a region (`caps.app_instances.limit`: 5, 50 and 500): more is refused, 403 `plan_cap_reached`.
          - min 0
        - `max_instances` (`getAccount.response.403.report.services.app.scale.max_instances`; integer | null, required) — How many instances the app has at the most in a region: the nodes of the region that serve the app share it. At most what the account's plan lets an app ask for (`caps.app_instances.limit`: 5 on the free plan, 50 on `p20`, 200 on `p100`, 500 on `p300`, 1,000 on `p1000`, 2,000 on `p2000`): more is refused, 403 `plan_cap_reached`, and what an app asked for on a plan that let it is kept, and held to the plan's number. `null`: the plan's number for an app that names none (`caps.app_instances.default`: 2, 10, 20, 50, 100 and 200), or `min_instances` where that is more. What the nodes are told is no more than the account has room for awake beside everything else of it that is awake, nor less than the app has awake.
          - min 1
        - `concurrency` (`getAccount.response.403.report.services.app.scale.concurrency`; integer | null, required) — A cap on what one instance has in hand at a time: the requests the edges sent it, and the connections it has open on its project's network (through its service's address, which the node shares out among the instances connection by connection, or to its own). An instance with that many is full, and another is made for more. `null`, which is what it is when nothing is said: no cap. A node then adds an instance when the ones it has are near their size in CPU or memory, and an app does not have to guess a number; a service that takes one request at a time gives one.
          - min 1; max 1000
        - `sleep_after_ms` (`getAccount.response.403.report.services.app.scale.sleep_after_ms`; integer, required) — After how long without a request an instance stops. One that stays stopped is deleted by its node after `delete_after_ms`, and the next request that needs an instance gets a new one; the instances `min_instances` keeps awake are neither stopped nor deleted.
          - min 0; max 600000
        - `sleep_notice_ms` (`getAccount.response.403.report.services.app.scale.sleep_notice_ms`; integer | null, required) — How long before an instance stops for being idle the programs connected to its guest's `/run/sbx/awake` are sent the line `sleep N`, in milliseconds: they flush what they hold, close their connections, or raise a hold, which puts the stop off. The stop comes that long after, whether they answer or not; where nobody is connected, it is not put off. A keyed instance is told as well. 0 or null: not told (the default).
          - min 0; max 60000
        - `sleep_hold_max_ms` (`getAccount.response.403.report.services.app.scale.sleep_hold_max_ms`; integer, required) — How long the holds a program in an instance raises keep it up after its time idle has run out, in milliseconds: a program connects to `/run/sbx/awake` and sends `+` before it answers a request whose work goes on after the answer, and `-` (or closes the connection, or dies) when that work is done; the instance stops `sleep_after_ms` after the last hold is lowered. Past this time it stops whatever holds it, the programs connected told `sleep N cap` first where `sleep_notice_ms` asks for a notice. Held, it runs and is metered as running. 0: holds are not heeded. Null: 30000 (the default).
          - min 0; max 900000
        - `delete_after_ms` (`getAccount.response.403.report.services.app.scale.delete_after_ms`; integer | null, required) — After how long idle an instance is deleted, counted from where its stop is counted from: the next request that needs one gets a new instance, a clone of the version's template, without what the deleted one had gathered in its memory and on its disk (keep what is to last in a volume or a database). A second to an hour, the platform's time, which is the most: more is refused (400 `invalid_field`), and an instance that is to stay warm is one of `min_instances`. `null`, which is what it is when nothing is said: the hour of the nodes (`--app-delete-after-seconds`). A change holds for the instances the app has as for the ones made after: each node judges every instance by the app's time as it is, once a second at the least. Not for the app's keyed instances, which `keys.delete_after_idle_ms` is for.
          - min 1000; max 3600000
        - `suspend_after_ms` (`getAccount.response.403.report.services.app.scale.suspend_after_ms`; integer | null, optional) — How long a stopped instance stays paused before its memory is saved and it sleeps for real, in milliseconds: paused, the next request is answered in a millisecond or two and its memory is metered; asleep, it wakes in a few more and only what it keeps is. Its node holds it to the longest it holds any instance paused (ten minutes); the host's memory running short, a slot another machine needs and a sleep somebody asks for put it to sleep sooner. Null (the default): its node's longest. A database's `suspend_after_seconds` is its app's.
          - min 1000; max 86400000
        - `wake_daily_at` (`getAccount.response.403.report.services.app.scale.wake_daily_at`; string | null, optional) — A time of day in UTC, `HH:MM`, at which the app's keyed instances and its stateful service's instance that rest are woken every day, for work of their own that waits for a wake (a database's maintenance, say); the instances the nodes make and delete by the app's requests are woken by requests alone. The wake is no activity: what runs then is, and once that is done the instance rests again. A stateful service's instance is woken besides for the next run of its PostgreSQL server's `pg_cron` jobs, whatever this says. Null (the default): none. A database's `wake_daily_at` is its app's.
          - pattern `^([01][0-9]|2[0-3]):[0-5][0-9]$`
      - `keys` (`getAccount.response.403.report.services.app.keys`; any of, required)
        - any of: `object`, `null`
      - `egress` (`getAccount.response.403.report.services.app.egress`; object | null, required) — Egress rules as a sandbox has them (`default`, `allow`, `deny`, `http`, `inject`), null when there are none; kept as the calls gave them (a `PATCH` merges them key by key, as a node does). They hold at once and make no version: the nodes that serve the app put them on every instance of its group, the ones there are (one that runs for the connections it has too) and the ones made after; a keyed instance does not have them. The control plane checks only that they are an object of those keys of at most 256 KiB: what the rules say is a node's to check, when it applies them, and an instance whose rules its node cannot read is refused everything (the node's log says why).
        - `default` (`getAccount.response.403.report.services.app.egress.default`; string | null, optional)
          - one of `"allow"`, `"deny"`, `null`
        - `allow` (`getAccount.response.403.report.services.app.egress.allow`; array | null, optional)
        - `deny` (`getAccount.response.403.report.services.app.egress.deny`; array | null, optional)
        - `http` (`getAccount.response.403.report.services.app.egress.http`; array | null, optional)
        - `inject` (`getAccount.response.403.report.services.app.egress.inject`; array | null, optional)
        - `deny_ports` (`getAccount.response.403.report.services.app.egress.deny_ports`; array | null, optional) — Ports no connection reaches, TCP or UDP, wherever it goes and whatever else the rules say. A Browsers session's always hold 25, 465, 587 and the ports mining pools listen on (3333, 4444, 5555, 7777, 14444, 45700): the control plane adds them to whatever a change of its rules gives.
      - `metadata` (`getAccount.response.403.report.services.app.metadata`; map<string>, required)
      - `logs` (`getAccount.response.403.report.services.app.logs`; object, required) — What the app's log has, each part as it was given or at its default (`AppLogSettings`).
        - `output` (`getAccount.response.403.report.services.app.logs.output`; boolean, required)
        - `keep` (`getAccount.response.403.report.services.app.logs.keep`; boolean, required)
        - `requests` (`getAccount.response.403.report.services.app.logs.requests`; object, required)
          - `sample_rate` (`getAccount.response.403.report.services.app.logs.requests.sample_rate`; number, required)
            - min 0; max 1
          - `keep_errors` (`getAccount.response.403.report.services.app.logs.requests.keep_errors`; boolean, required)
      - `public` (`getAccount.response.403.report.services.app.public`; boolean, required) — Whether it answers at its default domain (`url`).
      - `depends_on` (`getAccount.response.403.report.services.app.depends_on`; array<object>, required)
        - `service` (`getAccount.response.403.report.services.app.depends_on.service`; string, required)
        - `condition` (`getAccount.response.403.report.services.app.depends_on.condition`; string, required)
      - `network` (`getAccount.response.403.report.services.app.network`; object, required)
        - `aliases` (`getAccount.response.403.report.services.app.network.aliases`; array<string>, required)
        - `endpoint_mode` (`getAccount.response.403.report.services.app.network.endpoint_mode`; string, required)
      - `drives` (`getAccount.response.403.report.services.app.drives`; array<object>, optional) — The Drives its instance mounts (`AppCreate.drives`): none, `[]`, where it names none.
        - `drive` (`getAccount.response.403.report.services.app.drives.drive`; string, required)
        - `path` (`getAccount.response.403.report.services.app.drives.path`; string, required)
        - `mode` (`getAccount.response.403.report.services.app.drives.mode`; string, required)
      - `key_drives` (`getAccount.response.403.report.services.app.key_drives`; array<object>, optional) — The Drives each key's instance has of its own (`AppCreate.key_drives`): none, `[]`, where it gives none.
        - `name` (`getAccount.response.403.report.services.app.key_drives.name`; string, required)
        - `path` (`getAccount.response.403.report.services.app.key_drives.path`; string, required)
        - `size_bytes` (`getAccount.response.403.report.services.app.key_drives.size_bytes`; integer | null, required)
          - format `int64`
        - `nocopy` (`getAccount.response.403.report.services.app.key_drives.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `runtime` (`getAccount.response.403.report.services.app.runtime`; any of, optional) — Its runtime settings (`AppCreate.runtime`). `null`: none.
        - any of: `Runtime`, `null`
      - `traces` (`getAccount.response.403.report.services.app.traces`; object, optional) — What the app's requests' traces have, each part as it was given or at its default (`AppTraceSettings`): no span where `sample_rate` is 0.
        - `sample_rate` (`getAccount.response.403.report.services.app.traces.sample_rate`; number, required)
          - min 0; max 1
        - `trust_incoming` (`getAccount.response.403.report.services.app.traces.trust_incoming`; boolean, required)
  - `volumes` (`getAccount.response.403.report.volumes`; array<object>, required) — The volumes of the project the services mount.
    - `model` (`getAccount.response.403.report.volumes.model`; string | null, required) — Its name in the model. Null: made for a path a stateful service mounts with no volume named.
    - `name` (`getAccount.response.403.report.volumes.name`; string, required) — Its name in the project.
    - `id` (`getAccount.response.403.report.volumes.id`; string | null, required) — Null: not made yet (`to_make`).
      - pattern `^vol-`
    - `shared` (`getAccount.response.403.report.volumes.shared`; boolean, required) — Several services mount it, or one with several instances: every instance of each mounts it at once.
    - `status` (`getAccount.response.403.report.volumes.status`; string, required) — `to_make`: the import makes it (a dry run says so of what it would make); `made`: this import made it; `there`: an earlier import made it, or a volume of its name was there; `external`: the model names it `external`, and the project has it.
      - one of `"to_make"`, `"made"`, `"there"`, `"external"`
    - `used_by` (`getAccount.response.403.report.volumes.used_by`; array<string>, required)
  - `secrets` (`getAccount.response.403.report.secrets`; array<object>, required) — The secrets of the model that services are granted.
    - `model` (`getAccount.response.403.report.secrets.model`; string, required) — Its name in the model.
    - `name` (`getAccount.response.403.report.secrets.name`; string, required) — The project's secret that holds it: the model's name, with each character a secret's name does not take written as an underscore.
    - `there` (`getAccount.response.403.report.secrets.there`; boolean, required) — Whether the project has it. An import (not a dry run) with one that is not there is refused 404 `secret_not_found`.
    - `used_by` (`getAccount.response.403.report.secrets.used_by`; array<string>, required)
  - `left_out` (`getAccount.response.403.report.left_out`; array<object>, required) — The services of profiles that are not turned on, which the import does not touch.
    - `name` (`getAccount.response.403.report.left_out.name`; string, required)
    - `profiles` (`getAccount.response.403.report.left_out.profiles`; array<string>, required)
  - `absent` (`getAccount.response.403.report.absent`; array<string>, required) — The project's services that the model does not have: kept as they are.
  - `deploy` (`getAccount.response.403.report.deploy`; string | null, required) — The deploy the import made (`GET /v1/deploys/{id}`). Null: a dry run, or nothing would get a version.
    - pattern `^dpl-`
- `accounts` (`getAccount.response.403.accounts`; array<object>, optional) — With `sole_owner`: the accounts the user is the only owner of.
  - `id` (`getAccount.response.403.accounts.id`; string, required)
    - pattern `^acct-[0-9a-hjkmnp-tv-z]{16}$`
  - `name` (`getAccount.response.403.accounts.name`; string, required)


Source: https://glac.ai/docs/api/account/list/index.md
