---
title: "Set the account's spend limit, or its plan"
description: "`spend_limit_usd`. The most the control plane takes from the account's card by itself in a calendar month (auto reload, and what is owed, on the billing day), for every month from now on; `null` takes the limit away. Auto reload makes no top-up with which what the card was charged by itself in the month (what failed, and what was taken back, left out) would come to more than the limit: with a limit of $45 and reloads of $20 there are two in a month. The charge of what an account in debt owes, on its billing day, is no more than what the limit leaves, and auto reload counts it in turn. A top-up the account asks for itself is not counted, and is not held back. The limit stops nothing by itself. A limit that is raised, or taken away, lets auto reload make its top-up with this call. For an account that has never topped up there is no auto reload, and the limit holds nothing. An account that never chose one has its plan's (`spend_limit_usd` of `GET /internal/control` `plans`).\n\n`plan`. `p20`, `p100`, `p300`, `p1000` or `p2000`: the account subscribes. A charge of the plan's fee is made (`GET /v1/billing/charges`, `kind`: `subscription`), and the account is on the plan, in a period that gives the plan's fee back as credit, whole, from the moment it is collected; the same call again makes no second charge. For an account that is in a period of a plan that stands lower, the plan it asks for is charged at once, its fee less what is left of the credit of that period (the charge's `credit`, in whole cents rounded in the account's favour), and begins when that is collected, in place of the period it was in; from the call on, the credit that was left pays for nothing more of that period, and it is the period's again if the charge fails. Nothing of the old period is paid back or carried. For an account in a period of a plan that stands no lower, the subscription goes on as the plan it asks for from its next period, and nothing is charged now. `free` ends the subscription at the end of the period that is paid for; a paid plan asked for before that end takes the ending back. An account that is no business, where only businesses are sold to, may not ask for a paid plan: 403 `tax_region_business_only`, before anything of the call is done (control/README.md, 税). 409 `subscription_charge_pending`: the charge of the subscription's next period, or of another plan, is being collected, and what it pays for cannot be changed under it.\n\nTakes `admin`."
---

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

`PATCH /v1/billing`

`spend_limit_usd`. The most the control plane takes from the account's card by itself in a calendar month (auto reload, and what is owed, on the billing day), for every month from now on; `null` takes the limit away. Auto reload makes no top-up with which what the card was charged by itself in the month (what failed, and what was taken back, left out) would come to more than the limit: with a limit of $45 and reloads of $20 there are two in a month. The charge of what an account in debt owes, on its billing day, is no more than what the limit leaves, and auto reload counts it in turn. A top-up the account asks for itself is not counted, and is not held back. The limit stops nothing by itself. A limit that is raised, or taken away, lets auto reload make its top-up with this call. For an account that has never topped up there is no auto reload, and the limit holds nothing. An account that never chose one has its plan's (`spend_limit_usd` of `GET /internal/control` `plans`).

`plan`. `p20`, `p100`, `p300`, `p1000` or `p2000`: the account subscribes. A charge of the plan's fee is made (`GET /v1/billing/charges`, `kind`: `subscription`), and the account is on the plan, in a period that gives the plan's fee back as credit, whole, from the moment it is collected; the same call again makes no second charge. For an account that is in a period of a plan that stands lower, the plan it asks for is charged at once, its fee less what is left of the credit of that period (the charge's `credit`, in whole cents rounded in the account's favour), and begins when that is collected, in place of the period it was in; from the call on, the credit that was left pays for nothing more of that period, and it is the period's again if the charge fails. Nothing of the old period is paid back or carried. For an account in a period of a plan that stands no lower, the subscription goes on as the plan it asks for from its next period, and nothing is charged now. `free` ends the subscription at the end of the period that is paid for; a paid plan asked for before that end takes the ending back. An account that is no business, where only businesses are sold to, may not ask for a paid plan: 403 `tax_region_business_only`, before anything of the call is done (control/README.md, 税). 409 `subscription_charge_pending`: the charge of the subscription's next period, or of another plan, is being collected, and what it pays for cannot be changed under it.

Takes `admin`.

## Authentication

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

## Request body

_Required._

- `plan` (`updateBilling.plan`; string, optional) — A paid plan (`p20` to `p2000`): the account subscribes to the plan, or moves to it. A plan that stands higher than the one of the period it is in is charged at once, its fee less what is left of the period's credit (`GET /v1/billing/charges`, `kind`: `subscription`), and the account is on it from the moment that is collected; one that stands lower holds from the subscription's next period, and nothing is paid back. `free` ends the subscription at the end of the period that is paid for.
  - one of `"free"`, `"p20"`, `"p100"`, `"p300"`, `"p1000"`, `"p2000"`
- `spend_limit_usd` (`updateBilling.spend_limit_usd`; number | null, optional) — The most the control plane takes from the card by itself in a calendar month (auto reload, and what is owed, on the billing day), in US dollars (held to the millionth); null: no limit.
  - min 0
- `start_now` (`updateBilling.start_now`; boolean, optional) — Of a `plan` that is bought now (the account has no subscription that goes on, or moves up): `true`: the account asks for what it buys to be provided at once, within the 14 days in which a consumer in the European Economic Area or the United Kingdom may withdraw from it, and acknowledges that it pays for what was provided if it withdraws and that a top-up whose Credits are all used has been provided in full and can no longer be withdrawn from (`GET /v1/billing/withdrawals`, `right.start_now`, has the words). Required of an account that buys as a consumer there (no tax id that is verified or being verified, and its billing address there, or, without one, the address the call comes from): 400 `start_now_required` without it. Kept with the purchase wherever it is given: without it, a withdrawal gives back all that was paid (control/README.md, 撤回).

## Example request

```json
{
  "plan": "free",
  "spend_limit_usd": 0,
  "start_now": true
}
```

## Code samples

### cURL

```bash
curl --request PATCH \
  --url https://api.glac.ai/v1/billing \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "plan": "free",
  "spend_limit_usd": 0,
  "start_now": true
}
'
```

### TypeScript

```typescript
const url = 'https://api.glac.ai/v1/billing';
const options = {
  method: 'PATCH',
  headers: {'Content-Type': 'application/json', Authorization: 'Bearer <token>'},
  body: JSON.stringify({plan: 'free', spend_limit_usd: 0, start_now: true})
};

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/billing"

payload = {
    "plan": "free",
    "spend_limit_usd": 0,
    "start_now": True
}
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <token>"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.text)
```

## Responses

### 200

The account's billing, as it is now.

#### Example

```json
{
  "object": "billing",
  "account_id": "string",
  "period": "string",
  "plan": "free",
  "next_plan": "free",
  "included_from": "2019-08-24T14:15:22Z",
  "included_to": "2019-08-24T14:15:22Z",
  "meters": {
    "cpu": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "memory": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "requests": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "state": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "egress": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "storage": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "logs": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "drive_writes": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "drive_cold_reads": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "object_storage": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "object_class_a": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "object_class_b": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    },
    "browsers": {
      "unit": "cpu_seconds",
      "used": 0,
      "included": 0,
      "left": 0,
      "billable": 0,
      "unit_price_usd": 0,
      "price_per": "vcpu_hour",
      "units_per_price": 0,
      "amount_usd": 0,
      "regions": {
        "na": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "eu": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        },
        "ap": {
          "used": 0,
          "billable": 0,
          "unit_price_usd": 0,
          "amount_usd": 0
        }
      },
      "backups_gb_hours": 0,
      "stopped": true
    }
  },
  "credit": {
    "granted_usd": 0,
    "moved_usd": 0,
    "used_earlier_usd": 0,
    "used_usd": 0,
    "left_usd": 0,
    "lapses_at": "2019-08-24T14:15:22Z",
    "lapsed_usd": 0
  },
  "list_usd": 0,
  "credits": 0,
  "owed": 0,
  "lots": [
    {
      "id": "string",
      "kind": "credit",
      "credits": 0,
      "granted": 0,
      "granted_at": "2019-08-24T14:15:22Z",
      "expires_at": "2019-08-24T14:15:22Z"
    }
  ],
  "usage_usd": 0,
  "fee_usd": 0,
  "spend_limit_usd": 0,
  "frozen": true,
  "frozen_reason": "balance_used_up",
  "max_vcpus": 0,
  "max_memory_bytes": 0,
  "max_apps": 0,
  "max_app_env": 0,
  "max_volumes": 0,
  "max_volume_bytes": 0,
  "max_volumes_bytes": 0,
  "max_secrets": 0,
  "max_secret_bytes": 0,
  "max_sandbox_secrets_bytes": 0,
  "caps": {
    "instances": {
      "limit": 0,
      "source": "plan"
    },
    "vcpus": {
      "limit": 0,
      "source": "plan"
    },
    "memory_bytes": {
      "limit": 0,
      "source": "plan"
    },
    "sleeping": {
      "limit": 0,
      "source": "plan"
    },
    "app_instances": {
      "limit": 0,
      "source": "plan",
      "default": 0
    },
    "creates_per_minute": {
      "limit": 0,
      "source": "plan"
    },
    "creates_per_hour_per_project": {
      "limit": 0,
      "source": "plan"
    },
    "app_creates_per_hour": {
      "limit": 0,
      "source": "plan"
    }
  },
  "prices": {
    "vcpu_hour_usd": 0,
    "memory_gib_hour_usd": 0,
    "requests_million_usd": 0,
    "state_gb_month_usd": 0,
    "egress_gb_usd": 0,
    "egress_eu_gb_usd": 0,
    "egress_ap_gb_usd": 0,
    "storage_gb_month_usd": 0,
    "logs_gb_month_usd": 0,
    "drive_write_gb_usd": 0,
    "drive_cold_read_gb_usd": 0,
    "object_storage_gb_month_usd": 0,
    "object_class_a_million_usd": 0,
    "object_class_b_million_usd": 0,
    "browser_hour_usd": 0,
    "provisional": false
  },
  "subscription": {
    "state": "pending",
    "plan": "p20",
    "since": "2019-08-24T14:15:22Z",
    "day": 0,
    "charged": true,
    "fee_usd": 0,
    "period": {
      "from": "2019-08-24T14:15:22Z",
      "to": "2019-08-24T14:15:22Z",
      "paid": true,
      "charge_id": "string"
    },
    "next_charge_at": "2019-08-24T14:15:22Z",
    "ends_at": "2019-08-24T14:15:22Z",
    "charge": {
      "id": "string",
      "plan": "p20",
      "state": "to_collect",
      "failure": {
        "code": "string",
        "message": "string"
      },
      "retry_at": "2019-08-24T14:15:22Z"
    }
  },
  "plans_open": {
    "most": "string",
    "by": "use",
    "next": "string"
  },
  "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"
      }
    ]
  },
  "trust": {
    "level": 3,
    "set_by": "string",
    "reload_most_usd": 0,
    "month_most_usd": 0,
    "reload_most_set_by": "string",
    "month_most_set_by": "string",
    "month_used_usd": 0,
    "rises_at": "2019-08-24T14:15:22Z"
  },
  "statement": "string"
}
```

- `object` (`updateBilling.response.200.object`; string, required)
- `account_id` (`updateBilling.response.200.account_id`; string, required)
- `period` (`updateBilling.response.200.period`; string, required) — The month it is, `YYYY-MM` (UTC): the month of `usage_usd` and of `statement`.
- `plan` (`updateBilling.response.200.plan`; string, required) — The plan the account is on now: that of the period of its subscription it is in (or of the last it paid for, while the next is due), or `free`.
  - one of `"free"`, `"p20"`, `"p100"`, `"p300"`, `"p1000"`, `"p2000"`
- `next_plan` (`updateBilling.response.200.next_plan`; string, required) — The plan the account is on once the period it is in is over: `free` for one whose subscription is to end, the lower plan for one that asked for it, otherwise `plan`.
  - one of `"free"`, `"p20"`, `"p100"`, `"p300"`, `"p1000"`, `"p2000"`
- `included_from` (`updateBilling.response.200.included_from`; string, required) — The stretch what the plan includes is reckoned over: the period of the subscription the account is in, or the calendar month on the free plan (and while a period is due and not paid for).
  - format `date-time`
- `included_to` (`updateBilling.response.200.included_to`; string, required)
  - format `date-time`
- `meters` (`updateBilling.response.200.meters`; object, required)
  - `cpu` (`updateBilling.response.200.meters.cpu`; object, required) — One meter of the stretch the account is in (`included_from` to `included_to`): a period of its subscription, or the calendar month on the free plan.
    - `unit` (`updateBilling.response.200.meters.cpu.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.cpu.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.cpu.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.cpu.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.cpu.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.cpu.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.cpu.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.cpu.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.cpu.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.cpu.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.cpu.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.cpu.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.cpu.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.cpu.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.cpu.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.cpu.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.cpu.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.cpu.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.cpu.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.cpu.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.cpu.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.cpu.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.cpu.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.cpu.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.cpu.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.cpu.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.cpu.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `memory` (`updateBilling.response.200.meters.memory`; object, required) — One meter of the stretch the account is in (`included_from` to `included_to`): a period of its subscription, or the calendar month on the free plan.
    - `unit` (`updateBilling.response.200.meters.memory.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.memory.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.memory.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.memory.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.memory.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.memory.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.memory.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.memory.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.memory.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.memory.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.memory.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.memory.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.memory.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.memory.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.memory.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.memory.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.memory.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.memory.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.memory.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.memory.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.memory.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.memory.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.memory.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.memory.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.memory.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.memory.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.memory.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `requests` (`updateBilling.response.200.meters.requests`; object, required) — One meter of the stretch the account is in (`included_from` to `included_to`): a period of its subscription, or the calendar month on the free plan.
    - `unit` (`updateBilling.response.200.meters.requests.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.requests.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.requests.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.requests.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.requests.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.requests.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.requests.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.requests.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.requests.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.requests.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.requests.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.requests.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.requests.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.requests.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.requests.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.requests.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.requests.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.requests.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.requests.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.requests.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.requests.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.requests.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.requests.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.requests.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.requests.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.requests.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.requests.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `state` (`updateBilling.response.200.meters.state`; object, required) — What sleeping sandboxes keep of their own memory and disk, sampled once an hour, and what the backups of volumes keep in the object store. A frozen sandbox is not sampled, nor is one paused in memory (its memory is on `memory`).
    - `unit` (`updateBilling.response.200.meters.state.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.state.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.state.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.state.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.state.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.state.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.state.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.state.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.state.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.state.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.state.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.state.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.state.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.state.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.state.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.state.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.state.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.state.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.state.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.state.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.state.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.state.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.state.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.state.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.state.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.state.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.state.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `egress` (`updateBilling.response.200.meters.egress`; object, required) — One meter of the stretch the account is in (`included_from` to `included_to`): a period of its subscription, or the calendar month on the free plan.
    - `unit` (`updateBilling.response.200.meters.egress.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.egress.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.egress.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.egress.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.egress.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.egress.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.egress.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.egress.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.egress.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.egress.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.egress.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.egress.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.egress.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.egress.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.egress.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.egress.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.egress.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.egress.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.egress.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.egress.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.egress.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.egress.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.egress.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.egress.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.egress.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.egress.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.egress.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `storage` (`updateBilling.response.200.meters.storage`; object, required) — What volumes and snapshots keep, in GB-hours: a volume its `used_bytes`, a snapshot its `size_bytes`, each for as long as it is there, as its node counts it from the moment it is made to the moment it is deleted. Each is counted whole, whatever blocks two of them share on a node, and a template is not counted at all. It is counted whatever the account holds: deleting a volume or a snapshot is what ends it.
    - `unit` (`updateBilling.response.200.meters.storage.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.storage.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.storage.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.storage.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.storage.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.storage.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.storage.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.storage.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.storage.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.storage.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.storage.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.storage.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.storage.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.storage.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.storage.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.storage.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.storage.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.storage.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.storage.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.storage.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.storage.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.storage.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.storage.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.storage.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.storage.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.storage.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.storage.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `logs` (`updateBilling.response.200.meters.logs`; object, required) — What the account's apps printed that their nodes kept, for as long as it is kept, in GB-hours: the `text` of every line of output kept, as it was printed and a reader of the log is given it (not as it is stored, compressed), times each hour from the one it was printed in to the end of the days the account's plan keeps logs, booked hour by hour as the hours end (what a node tells late is booked to the hours it was kept in). A request's line and the platform's lines are not counted, nor is output that was not kept. Past what is included it is priced by the GB-month, from the balance; an account that holds nothing has it `stopped`: no more is kept, and what was kept stays.
    - `unit` (`updateBilling.response.200.meters.logs.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.logs.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.logs.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.logs.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.logs.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.logs.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.logs.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.logs.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.logs.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.logs.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.logs.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.logs.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.logs.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.logs.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.logs.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.logs.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.logs.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.logs.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.logs.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.logs.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.logs.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.logs.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.logs.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.logs.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.logs.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.logs.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.logs.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `drive_writes` (`updateBilling.response.200.meters.drive_writes`; object, required) — What was written to the account's volumes (Drives), in bytes: the bytes of the write requests their block devices served, as their nodes count them; of a shared volume, what its node wrote of it.
    - `unit` (`updateBilling.response.200.meters.drive_writes.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.drive_writes.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.drive_writes.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.drive_writes.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.drive_writes.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.drive_writes.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.drive_writes.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.drive_writes.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.drive_writes.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.drive_writes.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.drive_writes.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.drive_writes.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.drive_writes.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.drive_writes.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.drive_writes.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.drive_writes.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.drive_writes.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.drive_writes.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.drive_writes.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.drive_writes.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.drive_writes.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.drive_writes.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.drive_writes.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.drive_writes.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.drive_writes.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.drive_writes.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.drive_writes.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `drive_cold_reads` (`updateBilling.response.200.meters.drive_cold_reads`; object, required) — What was read of the account's volumes cold, in bytes: fetched from the object store because their node had not got it (a volume made from a backup; a block fetched on demand). What a sandbox reads of a volume from its node's disk is not counted.
    - `unit` (`updateBilling.response.200.meters.drive_cold_reads.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.drive_cold_reads.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.drive_cold_reads.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.drive_cold_reads.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.drive_cold_reads.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.drive_cold_reads.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.drive_cold_reads.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.drive_cold_reads.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.drive_cold_reads.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.drive_cold_reads.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.drive_cold_reads.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.drive_cold_reads.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.drive_cold_reads.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.drive_cold_reads.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.drive_cold_reads.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.drive_cold_reads.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.drive_cold_reads.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.drive_cold_reads.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.drive_cold_reads.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.drive_cold_reads.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.drive_cold_reads.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.drive_cold_reads.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.drive_cold_reads.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.drive_cold_reads.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.drive_cold_reads.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.drive_cold_reads.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.drive_cold_reads.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `object_storage` (`updateBilling.response.200.meters.object_storage`; object, required) — What the account's buckets held, in GB-hours, as their gateway counts it to the millisecond: a quantity of its own. It is counted whatever the account holds: deleting objects is what ends it.
    - `unit` (`updateBilling.response.200.meters.object_storage.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.object_storage.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.object_storage.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.object_storage.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.object_storage.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.object_storage.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.object_storage.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.object_storage.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.object_storage.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.object_storage.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.object_storage.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.object_storage.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.object_storage.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.object_storage.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.object_storage.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.object_storage.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.object_storage.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.object_storage.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.object_storage.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.object_storage.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.object_storage.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.object_storage.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.object_storage.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.object_storage.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.object_storage.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.object_storage.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.object_storage.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `object_class_a` (`updateBilling.response.200.meters.object_class_a`; object, required) — Requests to the account's buckets of class A: what writes, lists or sets (PutObject, CopyObject, the parts of an upload, the listings, CreateBucket, PutBucketCors, PutBucketLifecycleConfiguration).
    - `unit` (`updateBilling.response.200.meters.object_class_a.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.object_class_a.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.object_class_a.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.object_class_a.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.object_class_a.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.object_class_a.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.object_class_a.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.object_class_a.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.object_class_a.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.object_class_a.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.object_class_a.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.object_class_a.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.object_class_a.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.object_class_a.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.object_class_a.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.object_class_a.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.object_class_a.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.object_class_a.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.object_class_a.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.object_class_a.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.object_class_a.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.object_class_a.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.object_class_a.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.object_class_a.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.object_class_a.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.object_class_a.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.object_class_a.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `object_class_b` (`updateBilling.response.200.meters.object_class_b`; object, required) — Requests to the account's buckets of class B: what reads (GetObject, HeadObject, HeadBucket, GetBucketLocation, GetBucketCors, GetBucketLifecycleConfiguration). Requests that delete are of neither class.
    - `unit` (`updateBilling.response.200.meters.object_class_b.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.object_class_b.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.object_class_b.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.object_class_b.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.object_class_b.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.object_class_b.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.object_class_b.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.object_class_b.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.object_class_b.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.object_class_b.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.object_class_b.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.object_class_b.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.object_class_b.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.object_class_b.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.object_class_b.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.object_class_b.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.object_class_b.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.object_class_b.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.object_class_b.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.object_class_b.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.object_class_b.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.object_class_b.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.object_class_b.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.object_class_b.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.object_class_b.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.object_class_b.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.object_class_b.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
  - `browsers` (`updateBilling.response.200.meters.browsers`; object, required) — How long the account's Browsers sessions were awake, in seconds to the millisecond, as their nodes count it: a session is billed this at `browser_hour_usd` in place of its CPU time and its memory while it is awake (of its CPU time only what was past half of its time awake hour by hour is on `cpu`, once each hour is over; nothing on `memory`: asleep, held paused in memory or not, what it keeps is on `state`, at the price of a sleeping sandbox's state, and nothing else). The free plan includes 10 hours of it in a calendar month, which is also as long as its sessions are let be awake (`plan_cap_reached`, param `browser_hours`); a paid plan's credit pays for it as for any meter.
    - `unit` (`updateBilling.response.200.meters.browsers.unit`; string, required) — What the quantities are in: the name of the quantity in `GET /v1/usage`.
      - one of `"cpu_seconds"`, `"memory_gib_seconds"`, `"requests"`, `"state_gb_hours"`, `"egress_bytes"`, `"storage_gb_hours"`, `"log_gb_hours"`, `"drive_write_bytes"`, `"drive_cold_read_bytes"`, `"object_storage_gb_hours"`, `"class_a_requests"`, `"class_b_requests"`, `"browser_awake_seconds"`
    - `used` (`updateBilling.response.200.meters.browsers.used`; number, required) — What the account's projects have used in the stretch.
    - `included` (`updateBilling.response.200.meters.browsers.included`; number | null, required) — What the stretch includes of the meter: the free plan's quantity; 0 on a paid plan, whose credit (`Billing.credit`) pays for every meter. Of `state` and `storage`: the one quantity of storage the two draw on, what sleeping sandboxes and backups keep (`state`) first. Of `object_storage` and `logs`: a quantity of each one's own, in GB-hours (the GB-months the plan includes times the hours of the stretch). Of `egress`: the plan's, or the allowance the operator gave the account. null: whatever is used is included.
    - `left` (`updateBilling.response.200.meters.browsers.left`; number | null, required) — What is left of `included`. Of `state` and `storage`: what the two have left together. null where `included` is.
    - `billable` (`updateBilling.response.200.meters.browsers.billable`; number, required) — What of `used` is past what is included: it is priced.
    - `unit_price_usd` (`updateBilling.response.200.meters.browsers.unit_price_usd`; number, required) — The month's price, for `units_per_price` of `unit`.
    - `price_per` (`updateBilling.response.200.meters.browsers.price_per`; string, required)
      - one of `"vcpu_hour"`, `"gib_hour"`, `"million_requests"`, `"gb_month"`, `"gb"`, `"session_hour"`
    - `units_per_price` (`updateBilling.response.200.meters.browsers.units_per_price`; integer, required) — How many of `unit` the price is for: 3,600 (seconds, GiB-seconds, seconds of a session awake), 1,000,000 (requests of any class), the hours of the stretch (GB-hours), 10^9 (bytes).
    - `amount_usd` (`updateBilling.response.200.meters.browsers.amount_usd`; number, required) — `billable` × `unit_price_usd` ÷ `units_per_price`, to the nearest millionth of a dollar, a half going up: what the stretch has used past what it includes of this meter comes to at the list prices, before the stretch's credit pays any of it.
    - `stopped` (`updateBilling.response.200.meters.browsers.stopped`; boolean, required) — What the meter serves is stopped: what the stretch includes of it is used up (its quantity, and the stretch's credit), and the account holds nothing to pay for more. `cpu`, `memory`: the account's sandboxes are frozen and nothing new is made (`frozen`). `requests`: the requests for its sandboxes and apps are refused at the edges. `egress`: its traffic to the internet is stopped, and its sandboxes go on running; also when the account has sent as many bytes in the calendar month as its own cap (`egress_overage_cap_bytes` of `/v1/account`). `logs`: what the account's apps print is no longer kept for good: it stays in the log on the nodes, read as ever, and is not shipped to the object store, nor counted (`not_kept.over_plan` of `GET /v1/apps/{app}/logs/usage`); a top-up, or the next stretch, keeps it again (what was kept before stays, for as long as the plan keeps logs). `drive_writes`, `drive_cold_reads`: the account's sandboxes are frozen, as for `cpu`. `object_class_a`, `object_class_b`: the account's buckets refuse the requests of that class (403 `AccountProblem`); what they hold is kept. `state`, `storage`, `object_storage`: never; what is kept past what is included is owed.
    - `regions` (`updateBilling.response.200.meters.browsers.regions`; object, optional) — Of `egress` alone: the line region by region (the region of the node the traffic left from).
      - `na` (`updateBilling.response.200.meters.browsers.regions.na`; object, required)
        - `used` (`updateBilling.response.200.meters.browsers.regions.na.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.browsers.regions.na.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.browsers.regions.na.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.browsers.regions.na.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `eu` (`updateBilling.response.200.meters.browsers.regions.eu`; object, required)
        - `used` (`updateBilling.response.200.meters.browsers.regions.eu.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.browsers.regions.eu.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.browsers.regions.eu.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.browsers.regions.eu.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
      - `ap` (`updateBilling.response.200.meters.browsers.regions.ap`; object, required)
        - `used` (`updateBilling.response.200.meters.browsers.regions.ap.used`; integer, required) — Bytes sent from the region's nodes (of a statement's part: in the part).
          - format `int64`; min 0
        - `billable` (`updateBilling.response.200.meters.browsers.regions.ap.billable`; integer, required) — What of them is past what is included.
          - format `int64`; min 0
        - `unit_price_usd` (`updateBilling.response.200.meters.browsers.regions.ap.unit_price_usd`; number, required) — The region's price of a gigabyte (10^9 bytes).
        - `amount_usd` (`updateBilling.response.200.meters.browsers.regions.ap.amount_usd`; number, required) — What `billable` comes to at that price, to the nearest millionth.
          - min 0
    - `backups_gb_hours` (`updateBilling.response.200.meters.browsers.backups_gb_hours`; number, optional) — Of `state` alone: how much of `used` the backups of the account's volumes kept in the object store (`/v1/backups`); the rest is what its sleeping sandboxes kept. As the line of state of a month's statement says it, and `GET /v1/usage` with `kind=backup` for any range.
      - min 0
- `credit` (`updateBilling.response.200.credit`; one of, required) — The stretch's credit: of a paid plan, its fee at the list prices, which pays for what any meter is used before the balance does (`credits`), and what is left of it lapses at `included_to` (`lapses_at`), not carried over and not paid back. `lapsed_usd` is null here. Null on the free plan, which includes quantities and no money.
  - one of: `PlanCredit`, `null`
- `list_usd` (`updateBilling.response.200.list_usd`; number, required) — What the stretch's meters have come to so far at the list prices: their `amount_usd` added up. The credit pays as much of it as it has; what is past that, in the calendar month, is `usage_usd`.
- `credits` (`updateBilling.response.200.credits`; number, required) — The account's balance: the sum of its ledger's entries (`GET /v1/billing/balance`). It pays for what is used past what the plan includes, its quantities and its credit. Below zero when the account owes.
- `owed` (`updateBilling.response.200.owed`; number, required) — What the account owes: what its sleeping sandboxes, volumes, snapshots, backups and buckets kept past what its plan includes (its storage and Object Storage's, and its credit) while it held nothing. The first thing the next Credits pay. Nothing else is owed: what an account that holds nothing used of the other meters before the stop took hold is written off.
- `lots` (`updateBilling.response.200.lots`; array<object>, required) — The Credits it holds, lot by lot, the one that lapses first first: the order they are used in.
  - `id` (`updateBilling.response.200.lots.id`; string, required) — The id of the ledger's entry that is the lot.
  - `kind` (`updateBilling.response.200.lots.kind`; string, required) — `credit`: what the operator granted. `topup`: a top-up that was collected. (`month_grant`, `period_grant`: only in a store from before plans included quantities: Credits a calendar month, or a period of a subscription, gave. Nothing gives any now; those that were given pay as the others do and lapse when they would have.)
    - one of `"credit"`, `"topup"`, `"month_grant"`, `"period_grant"`
  - `credits` (`updateBilling.response.200.lots.credits`; number, required) — What is left of it: what it was granted as, less what it has paid for.
  - `granted` (`updateBilling.response.200.lots.granted`; number, required) — What it was granted as.
  - `granted_at` (`updateBilling.response.200.lots.granted_at`; string, required)
    - format `date-time`
  - `expires_at` (`updateBilling.response.200.lots.expires_at`; string, required) — When it lapses: what is left of it is written off.
    - format `date-time`
- `usage_usd` (`updateBilling.response.200.usage_usd`; number, required) — What the calendar month's usage past what is included (the quantities, and the credit) comes to so far: the month's statement's. It is taken from the account's balance as it grows, as far as the balance goes.
- `fee_usd` (`updateBilling.response.200.fee_usd`; number, required) — The fee of the period the account is in: what was charged for it (0 for one that was given); of a period that is due, what is being collected. 0 on the free plan.
- `spend_limit_usd` (`updateBilling.response.200.spend_limit_usd`; number | null, required) — The account's spend limit: the most the control plane takes from its card by itself in a calendar month (auto reload, and what is owed, on the billing day); null: none. It stops nothing by itself. An account that never chose one has its plan's.
- `frozen` (`updateBilling.response.200.frozen`; boolean, required) — The account's sandboxes are frozen and nothing new is made in its projects, no sandbox, no volume and no snapshot (403 `balance_used_up`; of an account that owes, 402 `account_in_debt` to every call but those that read what it owes and pay it, and those that list and delete what it stores). What it has is kept. What can be deleted is its to delete; while it owes, that is its volumes, its snapshots and its sandboxes, and nothing else.
- `frozen_reason` (`updateBilling.response.200.frozen_reason`; string | null, required) — `balance_used_up`: the CPU time, the memory, or what drives may write or read cold that the account's plan includes is used up (on a paid plan, its credit) (`meters.cpu.stopped`, `meters.memory.stopped`, `meters.drive_writes.stopped`, `meters.drive_cold_reads.stopped`), and it holds nothing to pay for more. On any plan; it is let go when the next period (or, on the free plan, the next calendar month) begins, when it holds something, or when it is on a plan that includes more. `account_in_debt`: the account owes (`debt`), which is said before the other; it is let go when it has paid, and by nothing else.
  - one of `"balance_used_up"`, `"account_in_debt"`, `null`
- `max_vcpus` (`updateBilling.response.200.max_vcpus`; integer, required) — The largest sandbox the plan lets the account have.
- `max_memory_bytes` (`updateBilling.response.200.max_memory_bytes`; integer, required)
- `max_apps` (`updateBilling.response.200.max_apps`; integer, required) — How many apps the plan lets the account have, in all its projects.
- `max_app_env` (`updateBilling.response.200.max_app_env`; integer, required) — How many environment variables and secrets together the plan lets one app have.
- `max_volumes` (`updateBilling.response.200.max_volumes`; integer, required) — How many volumes one project of the account may have (`POST /v1/volumes` beyond it is 403 `volume_limit_reached`): the plan's, or the number an operator gave the account in its place. On the paid plans a soft limit, which holds back a script that runs away and is raised for an account on request.
- `max_volume_bytes` (`updateBilling.response.200.max_volume_bytes`; integer, required) — How large one of them may be (10 GiB on the free plan, 1 TiB on every paid plan, which no plan passes; an operator's number for the account, an enterprise customer's, up to 16 TiB, the largest a node makes): a create larger is 403 `volume_limit_reached`, `param` `size_bytes`; one that gives no size is given this, where a node's own (64 GiB) is more.
- `max_volumes_bytes` (`updateBilling.response.200.max_volumes_bytes`; integer | null, required) — How large all of a project's volumes may be together; null: no limit (the paid plans), what they hold being billed by what is stored.
- `max_secrets` (`updateBilling.response.200.max_secrets`; integer, required) — How many secrets the plan lets one project keep (`PUT /v1/secrets/{name}` of one more is 403 `secret_limit_reached`).
- `max_secret_bytes` (`updateBilling.response.200.max_secret_bytes`; integer, required) — How large one secret's value may be, in bytes (`PUT /v1/secrets/{name}` of a larger one is 403 `secret_limit_reached`, `param` `value`).
- `max_sandbox_secrets_bytes` (`updateBilling.response.200.max_sandbox_secrets_bytes`; integer, required) — How many bytes the values of the secrets one sandbox is given may come to together: an instance of an app, given them as environment variables and as files, a secret as often as it is given. A create, change or deploy of an app, and a new value of a secret, that would give its instances more (and more than they are given now) is 403 `secret_limit_reached`. A secret that a sandbox's egress rules send is not given to it: its value goes into the request on its way out.
- `caps` (`updateBilling.response.200.caps`; object, required) — What the account may have at once, each cap's number and whose it is. `GET /v1/account` has the same with what the account has of each now (`used`), which moves as sandboxes wake, sleep and are made, and is not in the bill (control/README.md). The plan's numbers (awake, their vCPUs, their memory, sleeping, an app's instances at the most and when it names none, made in a minute, made by a project in an hour, apps and versions made in an hour: free 5, 10, 10 GiB, 20, 5 and 2, 10, 200, 10; p20 50, 100, 200 GiB, 500, 50 and 10, 120, 2,000, 100; p100 200, 300, 600 GiB, 2,000, 200 and 20, 300, 5,000, 250; p300 500, 500, 1,000 GiB, 5,000, 500 and 50, 600, 10,000, 500; p1000 1,000, 1,000, 2,000 GiB, 10,000, 1,000 and 100, 1,200, 20,000, 1,000; p2000 2,000, 2,000, 4,000 GiB, 20,000, 2,000 and 200, 2,400, 40,000, 2,000), or an operator's for the account. A cap is a quota and no reservation: within it a node that is full refuses all the same (503 `no_capacity`). It only stops new things: what is awake when it is reached, or when the account comes to a plan with smaller caps, goes on as it is. What is counted is what the nodes say of the account's sandboxes in all its projects, every few seconds (`--usage-seconds`), and what calls made since: a sandbox that its node woke by itself, for a request to one of its ports, and an app's instance that a node made or woke for a request, are counted from its node's next look. What was made in a minute or an hour is counted by the control plane in memory, from its start. Past a cap the account gets 403 `plan_cap_reached`, whose `param` is the cap's name.
  - `instances` (`updateBilling.response.200.caps.instances`; object, required) — Sandboxes and app instances awake at once (running or starting).
    - `limit` (`updateBilling.response.200.caps.instances.limit`; integer, required) — What the account may have.
    - `source` (`updateBilling.response.200.caps.instances.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account (`PATCH /internal/accounts/{id}`, `caps`).
      - one of `"plan"`, `"operator"`
  - `vcpus` (`updateBilling.response.200.caps.vcpus`; object, required) — The vCPUs of those, together: what each was made with or taken back to (`limits`).
    - `limit` (`updateBilling.response.200.caps.vcpus.limit`; integer, required) — What the account may have.
    - `source` (`updateBilling.response.200.caps.vcpus.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account (`PATCH /internal/accounts/{id}`, `caps`).
      - one of `"plan"`, `"operator"`
  - `memory_bytes` (`updateBilling.response.200.caps.memory_bytes`; object, required) — The memory of those, together, in bytes.
    - `limit` (`updateBilling.response.200.caps.memory_bytes.limit`; integer, required) — What the account may have.
    - `source` (`updateBilling.response.200.caps.memory_bytes.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account (`PATCH /internal/accounts/{id}`, `caps`).
      - one of `"plan"`, `"operator"`
  - `sleeping` (`updateBilling.response.200.caps.sleeping`; object, required) — Sandboxes kept that do not run (asleep, frozen, failed), not an app's instances: at the limit no sandbox is made and no fork, and a sleep is never refused.
    - `limit` (`updateBilling.response.200.caps.sleeping.limit`; integer, required) — What the account may have.
    - `source` (`updateBilling.response.200.caps.sleeping.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account (`PATCH /internal/accounts/{id}`, `caps`).
      - one of `"plan"`, `"operator"`
  - `app_instances` (`updateBilling.response.200.caps.app_instances`; object, required) — An app's instances in a region: the most its `scale.max_instances` and `scale.min_instances` may say (beyond it a create or a change of the app is refused), and what it has when it names no `max_instances`. What its nodes are told it may have is that, and no more than the account has room for awake beside everything else of it that is awake, nor less than it has awake.
    - `limit` (`updateBilling.response.200.caps.app_instances.limit`; integer, required) — The most an app may ask for.
    - `source` (`updateBilling.response.200.caps.app_instances.source`; string, required)
      - one of `"plan"`, `"operator"`
    - `default` (`updateBilling.response.200.caps.app_instances.default`; integer, required) — What an app has that names no `max_instances` (or its `min_instances`, where that is more).
  - `creates_per_minute` (`updateBilling.response.200.caps.creates_per_minute`; object, required) — Sandboxes made in a minute, sliding: a create and a one-shot run one each, a fork as many as it makes. At the limit the refusal is `retryable`, with `Retry-After`.
    - `limit` (`updateBilling.response.200.caps.creates_per_minute.limit`; integer, required) — What the account may have.
    - `source` (`updateBilling.response.200.caps.creates_per_minute.source`; string, required) — Whose number `limit` is: its plan's, or one an operator set for the account (`PATCH /internal/accounts/{id}`, `caps`).
      - one of `"plan"`, `"operator"`
  - `creates_per_hour_per_project` (`updateBilling.response.200.caps.creates_per_hour_per_project`; object, required) — Sandboxes one project of the account makes in an hour, sliding, counted as in a minute; each project has an hour of its own, and `used` is the most one of them made. At the limit the refusal is `retryable`, with `Retry-After`; where the minute is past too, the one that holds the call longer is the one named.
    - `limit` (`updateBilling.response.200.caps.creates_per_hour_per_project.limit`; integer, required) — What the account may have.
    - `source` (`updateBilling.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 (`PATCH /internal/accounts/{id}`, `caps`).
      - one of `"plan"`, `"operator"`
  - `app_creates_per_hour` (`updateBilling.response.200.caps.app_creates_per_hour`; object, required) — Apps and versions of apps the account makes in an hour, sliding: an app that is made (with or without an image), a deploy, and a change of an app that makes a version, one each; a call that makes nothing (refused, or a change of what holds at once) is not counted, and a rollback is not. An app the account has no room for is refused for that (`app_limit_reached`) whatever the hour says. At the limit the refusal is `retryable`, with `Retry-After`.
    - `limit` (`updateBilling.response.200.caps.app_creates_per_hour.limit`; integer, required) — What the account may have.
    - `source` (`updateBilling.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 (`PATCH /internal/accounts/{id}`, `caps`).
      - one of `"plan"`, `"operator"`
- `prices` (`updateBilling.response.200.prices`; object, required) — In US dollars, with at most six digits after the point.
  - `vcpu_hour_usd` (`updateBilling.response.200.prices.vcpu_hour_usd`; number, required) — A busy vCPU-hour.
  - `memory_gib_hour_usd` (`updateBilling.response.200.prices.memory_gib_hour_usd`; number, required) — A GiB-hour of memory held while awake, or paused in memory (the pause tier).
  - `requests_million_usd` (`updateBilling.response.200.prices.requests_million_usd`; number, required) — A million requests: into apps, and into sandboxes through their preview URLs.
  - `state_gb_month_usd` (`updateBilling.response.200.prices.state_gb_month_usd`; number, required) — A GB-month of what sleeping sandboxes keep, and of what the backups of volumes keep in the object store.
  - `egress_gb_usd` (`updateBilling.response.200.prices.egress_gb_usd`; number, required) — A gigabyte (10^9 bytes) sent to the internet from a node in North America, or from one with no region: traffic is priced by the region of the node it left from: `na` North America (and a node with no region), `eu` Europe, `ap` Asia-Pacific.
  - `egress_eu_gb_usd` (`updateBilling.response.200.prices.egress_eu_gb_usd`; number, required) — A gigabyte sent to the internet from a node in Europe.
  - `egress_ap_gb_usd` (`updateBilling.response.200.prices.egress_ap_gb_usd`; number, required) — A gigabyte sent to the internet from a node in Asia-Pacific.
  - `storage_gb_month_usd` (`updateBilling.response.200.prices.storage_gb_month_usd`; number, required) — A GB-month of what volumes and snapshots keep: the price of what sleeping sandboxes keep, unless the control plane was started with another (`--price-storage-gb-month`).
  - `logs_gb_month_usd` (`updateBilling.response.200.prices.logs_gb_month_usd`; number, required) — A GB-month of what apps print that their nodes keep: the `text` of each line of output kept, counted as it was printed, for the hours it is kept (`--price-logs-gb-month`).
  - `drive_write_gb_usd` (`updateBilling.response.200.prices.drive_write_gb_usd`; number, required) — A gigabyte (10^9 bytes) written to volumes (Drives): the bytes of the write requests their block devices served (`--price-drive-write-gb`).
  - `drive_cold_read_gb_usd` (`updateBilling.response.200.prices.drive_cold_read_gb_usd`; number, required) — A gigabyte of volumes read cold: fetched from the object store because their node had not got them (a restore from a backup; a block fetched on demand). What is read from the node's own disk costs nothing (`--price-drive-cold-read-gb`).
  - `object_storage_gb_month_usd` (`updateBilling.response.200.prices.object_storage_gb_month_usd`; number, required) — A GB-month of what buckets hold (`--price-object-storage-gb-month`). What is read out of them costs nothing, within fair use.
  - `object_class_a_million_usd` (`updateBilling.response.200.prices.object_class_a_million_usd`; number, required) — A million requests to buckets of class A: what writes, lists or sets (`--price-object-class-a-million`).
  - `object_class_b_million_usd` (`updateBilling.response.200.prices.object_class_b_million_usd`; number, required) — A million requests to buckets of class B: what reads (`--price-object-class-b-million`). What deletes is of neither class and costs nothing.
  - `browser_hour_usd` (`updateBilling.response.200.prices.browser_hour_usd`; number, required) — An hour of a Browsers session awake, by the millisecond, in place of its CPU time and its memory: it includes half a vCPU averaged over each hour it is awake, and its CPU time past that is priced at `vcpu_hour_usd`; its memory awake is not priced. Asleep, what it keeps is priced as any sleeping sandbox's (`state_gb_month_usd`, or `memory_gib_hour_usd` while it is paused in memory) (`--price-browser-hour`).
  - `provisional` (`updateBilling.response.200.prices.provisional`; boolean, required)
- `subscription` (`updateBilling.response.200.subscription`; one of, required) — The account's subscription; null for an account that has none and has asked for none.
  - one of: `Subscription`, `null`
- `plans_open` (`updateBilling.response.200.plans_open`; object, required) — How far up the plans the account may buy now: a new account may buy the $20 plan (`p20`) first, and each plan above it opens with a whole period of the plan below it: paid for (its charge collected and not taken back), run to its end (not cut short by a move up), and begun after the account's last dispute or fraud warning of a payment; one step for each such period, so a whole period of the $100 plan opens the $300 plan, not the $1,000 plan. An operator may open plans above that to an account (`POST /internal/accounts/{id}/plans`). A move down, and the plan the account is on, need nothing of this.
  - `most` (`updateBilling.response.200.plans_open.most`; string, required) — The highest plan it may buy now; a higher one is refused 403 `plan_not_open`.
  - `by` (`updateBilling.response.200.plans_open.by`; string, required) — `use`: its periods brought it there; `operator`: an operator opened it, above what its periods have come to.
    - one of `"use"`, `"operator"`
  - `next` (`updateBilling.response.200.plans_open.next`; string | null, required) — The plan a whole period of `most` opens; null where `most` is the highest there is.
- `debt` (`updateBilling.response.200.debt`; one of, required) — What the account owes, since when, and when what it stores is deleted for it; null for an account that owes nothing. `GET /v1/account` has the same, and the account's `email`.
  - one of: `Debt`, `null`
- `trust` (`updateBilling.response.200.trust`; object, required) — What the account's trust level lets its top-ups come to (`trust_limit_exceeded`, `trust_limit.reached`): the two amounts in force, each the level's, or one an operator gave the account in its place. Nothing of a level touches what the account holds.
  - `level` (`updateBilling.response.200.trust.level`; integer, required) — The account's trust level: 0 when it is new, 1 and 2 as its record of payments raises it (`--trust-level-1`, `--trust-level-2`: so many days after its first collected payment, with no dispute and no fraud warning since), 3 as an operator gives it; an operator may set any.
    - min 0; max 3
  - `set_by` (`updateBilling.response.200.trust.set_by`; string, required) — What set it: the account's record of payments, or an operator (whose level stays until an operator sets another).
  - `reload_most_usd` (`updateBilling.response.200.trust.reload_most_usd`; number | null, required) — The most auto reload may take from the account's card in a calendar month, as is in force: the highest `spend_limit_usd` it may set, and the largest `reload_amount_usd`; null: no limit.
  - `month_most_usd` (`updateBilling.response.200.trust.month_most_usd`; number | null, required) — The most its top-ups and auto reloads may come to together in a calendar month (UTC), as is in force, counted as they are made: what was collected and what is with the collector or on a payment page, and not what failed or was taken back, nor what was charged on its billing day for what it owed. Null: no limit.
  - `reload_most_set_by` (`updateBilling.response.200.trust.reload_most_set_by`; string, required) — Whose `reload_most_usd` is: the level's, or an operator's for this account, which holds at every level until an operator takes it back.
  - `month_most_set_by` (`updateBilling.response.200.trust.month_most_set_by`; string, required) — Whose `month_most_usd` is, as `reload_most_set_by` says of the other.
  - `month_used_usd` (`updateBilling.response.200.trust.month_used_usd`; number, required) — What they come to this month so far, counted so.
  - `rises_at` (`updateBilling.response.200.trust.rises_at`; string | null, required) — When the level rises by itself next, if no payment is disputed or warned of as a fraud before then: the first look of that day gives it. Null: it does not (an operator set it, the account never paid, a payment was disputed or warned of, or no level above it comes by itself).
    - format `date-time`
- `statement` (`updateBilling.response.200.statement`; string, required) — Where this month's statement is.

### 400

`invalid_json`, `unknown_field`, `unknown_parameter`; `invalid_field`: `spend_limit_usd` is not a number of dollars, zero or more, or null; `plan` is not one of the six plans (`free`, `p20`, `p100`, `p300`, `p1000`, `p2000`); `start_now_required`: the account buys as a consumer in the EEA or the UK and did not ask for what it buys to be provided at once (`start_now`), and nothing was made.

#### 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` (`updateBilling.response.400.error`; object, required)
  - `type` (`updateBilling.response.400.error.type`; string, required)
  - `code` (`updateBilling.response.400.error.code`; string, required)
  - `message` (`updateBilling.response.400.error.message`; string, required)
  - `param` (`updateBilling.response.400.error.param`; string | null, required)
  - `retryable` (`updateBilling.response.400.error.retryable`; boolean, required)
  - `request_id` (`updateBilling.response.400.error.request_id`; string, required)
  - `docs_url` (`updateBilling.response.400.error.docs_url`; string | null, required)
- `move_id` (`updateBilling.response.400.move_id`; string, optional) — With `already_moving`: the move of the sandbox that is under way.
- `upgrade_id` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.move.object`; string, required)
  - `id` (`updateBilling.response.400.move.id`; string, required)
    - pattern `^mov-[0-9a-hjkmnp-tv-z]{16}$`
  - `sandbox_id` (`updateBilling.response.400.move.sandbox_id`; string, required)
  - `project_id` (`updateBilling.response.400.move.project_id`; string, required)
  - `from` (`updateBilling.response.400.move.from`; object, required)
    - `id` (`updateBilling.response.400.move.from.id`; string, required)
    - `name` (`updateBilling.response.400.move.from.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `to` (`updateBilling.response.400.move.to`; object, required)
    - `id` (`updateBilling.response.400.move.to.id`; string, required)
    - `name` (`updateBilling.response.400.move.to.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `epoch` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.move.why`; string, required) — What made it: the operator's move, an evacuation, a recovery.
  - `wake` (`updateBilling.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` (`updateBilling.response.400.move.from_store`; boolean, required) — The new node takes it from the object store alone.
  - `release` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.move.batch`; string | null, required) — The evacuation (`evc-…`) or recovery (`rcv-…`) it is of.
  - `created_at` (`updateBilling.response.400.move.created_at`; string, required)
    - format `date-time`
  - `updated_at` (`updateBilling.response.400.move.updated_at`; string, required)
    - format `date-time`
  - `ended_at` (`updateBilling.response.400.move.ended_at`; string | null, required)
    - format `date-time`
- `lease_until` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.active.name`; string, required)
  - `url` (`updateBilling.response.400.active.url`; string, required)
  - `term` (`updateBilling.response.400.active.term`; integer, required)
    - min 1
- `allowed_hosts` (`updateBilling.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` (`updateBilling.response.400.problems`; array<object>, optional) — With `invalid_definition`: every problem of the definition, each where it is and what it is.
  - `at` (`updateBilling.response.400.problems.at`; string, required) — Where in the definition, a dotted path (`services.web.port`); empty for the whole of it.
  - `message` (`updateBilling.response.400.problems.message`; string, required)
- `report` (`updateBilling.response.400.report`; object, optional) — With `compose_refused`: the import's report, which says what is refused, why, and what to change.
  - `object` (`updateBilling.response.400.report.object`; string, required)
    - one of `"compose_import"`
  - `name` (`updateBilling.response.400.report.name`; string | null, required) — The model's `name`: each service's label `compose.project`. Null: it has none.
  - `dry_run` (`updateBilling.response.400.report.dry_run`; boolean, required)
  - `strict` (`updateBilling.response.400.report.strict`; boolean, required)
  - `profiles` (`updateBilling.response.400.report.profiles`; array<string>, required)
  - `treatments` (`updateBilling.response.400.report.treatments`; object, required) — How many items of the report have each treatment.
    - `done` (`updateBilling.response.400.report.treatments.done`; integer, required)
      - min 0
    - `adapted` (`updateBilling.response.400.report.treatments.adapted`; integer, required)
      - min 0
    - `ignored` (`updateBilling.response.400.report.treatments.ignored`; integer, required)
      - min 0
    - `refused` (`updateBilling.response.400.report.treatments.refused`; integer, required)
      - min 0
  - `items` (`updateBilling.response.400.report.items`; array<object>, required) — The model's top-level elements: `name`, each volume, network, config and secret, extensions.
    - `at` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.report.items.why`; string, required)
    - `change` (`updateBilling.response.400.report.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
  - `services` (`updateBilling.response.400.report.services`; array<object>, required) — The services the import takes, in the model's order.
    - `name` (`updateBilling.response.400.report.services.name`; string, required) — The service's name, which is its app's.
    - `app_id` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.report.services.stateful`; boolean, required) — It mounts a volume of its own: one instance, which has the volume.
    - `version` (`updateBilling.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` (`updateBilling.response.400.report.services.items`; array<object>, required)
      - `at` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.report.services.items.why`; string, required)
      - `change` (`updateBilling.response.400.report.services.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
    - `app` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.report.services.app.start_command`; any of, required)
        - any of: `StartCommand`, `null`
      - `start_args` (`updateBilling.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` (`updateBilling.response.400.report.services.app.port`; integer | null, required)
      - `ready` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.report.services.app.ready.tcp`; boolean, optional) — The app's port takes a connection.
          - one of `true`
        - `command` (`updateBilling.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` (`updateBilling.response.400.report.services.app.env`; map<string>, required)
      - `secrets` (`updateBilling.response.400.report.services.app.secrets`; map<string>, required) — Names of secrets. No answer has a value.
      - `size` (`updateBilling.response.400.report.services.app.size`; object, required) — What one instance may use at most. It is billed by what it uses.
        - `vcpus` (`updateBilling.response.400.report.services.app.size.vcpus`; integer, required)
          - min 1
        - `memory_bytes` (`updateBilling.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` (`updateBilling.response.400.report.services.app.volumes`; array<object>, required)
        - `volume` (`updateBilling.response.400.report.services.app.volumes.volume`; string, required)
        - `path` (`updateBilling.response.400.report.services.app.volumes.path`; string, required)
        - `read_only` (`updateBilling.response.400.report.services.app.volumes.read_only`; boolean, required)
        - `nocopy` (`updateBilling.response.400.report.services.app.volumes.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `kind` (`updateBilling.response.400.report.services.app.kind`; string, required)
      - `files` (`updateBilling.response.400.report.services.app.files`; array<object>, required)
        - `path` (`updateBilling.response.400.report.services.app.files.path`; string, required)
        - `mode` (`updateBilling.response.400.report.services.app.files.mode`; integer, required)
        - `uid` (`updateBilling.response.400.report.services.app.files.uid`; integer, required)
        - `gid` (`updateBilling.response.400.report.services.app.files.gid`; integer, required)
        - `content` (`updateBilling.response.400.report.services.app.files.content`; string, optional)
        - `secret` (`updateBilling.response.400.report.services.app.files.secret`; string, optional)
      - `user` (`updateBilling.response.400.report.services.app.user`; string | null, required)
      - `working_dir` (`updateBilling.response.400.report.services.app.working_dir`; string | null, required)
      - `stop` (`updateBilling.response.400.report.services.app.stop`; any of, required)
        - any of: `ServiceStop`, `null`
      - `hostname` (`updateBilling.response.400.report.services.app.hostname`; string | null, required)
      - `regions` (`updateBilling.response.400.report.services.app.regions`; array<string>, required) — In the order na, eu, ap.
      - `scale` (`updateBilling.response.400.report.services.app.scale`; object, required)
        - `min_instances` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.report.services.app.keys`; any of, required)
        - any of: `object`, `null`
      - `egress` (`updateBilling.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` (`updateBilling.response.400.report.services.app.egress.default`; string | null, optional)
          - one of `"allow"`, `"deny"`, `null`
        - `allow` (`updateBilling.response.400.report.services.app.egress.allow`; array | null, optional)
        - `deny` (`updateBilling.response.400.report.services.app.egress.deny`; array | null, optional)
        - `http` (`updateBilling.response.400.report.services.app.egress.http`; array | null, optional)
        - `inject` (`updateBilling.response.400.report.services.app.egress.inject`; array | null, optional)
        - `deny_ports` (`updateBilling.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` (`updateBilling.response.400.report.services.app.metadata`; map<string>, required)
      - `logs` (`updateBilling.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` (`updateBilling.response.400.report.services.app.logs.output`; boolean, required)
        - `keep` (`updateBilling.response.400.report.services.app.logs.keep`; boolean, required)
        - `requests` (`updateBilling.response.400.report.services.app.logs.requests`; object, required)
          - `sample_rate` (`updateBilling.response.400.report.services.app.logs.requests.sample_rate`; number, required)
            - min 0; max 1
          - `keep_errors` (`updateBilling.response.400.report.services.app.logs.requests.keep_errors`; boolean, required)
      - `public` (`updateBilling.response.400.report.services.app.public`; boolean, required) — Whether it answers at its default domain (`url`).
      - `depends_on` (`updateBilling.response.400.report.services.app.depends_on`; array<object>, required)
        - `service` (`updateBilling.response.400.report.services.app.depends_on.service`; string, required)
        - `condition` (`updateBilling.response.400.report.services.app.depends_on.condition`; string, required)
      - `network` (`updateBilling.response.400.report.services.app.network`; object, required)
        - `aliases` (`updateBilling.response.400.report.services.app.network.aliases`; array<string>, required)
        - `endpoint_mode` (`updateBilling.response.400.report.services.app.network.endpoint_mode`; string, required)
      - `drives` (`updateBilling.response.400.report.services.app.drives`; array<object>, optional) — The Drives its instance mounts (`AppCreate.drives`): none, `[]`, where it names none.
        - `drive` (`updateBilling.response.400.report.services.app.drives.drive`; string, required)
        - `path` (`updateBilling.response.400.report.services.app.drives.path`; string, required)
        - `mode` (`updateBilling.response.400.report.services.app.drives.mode`; string, required)
      - `key_drives` (`updateBilling.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` (`updateBilling.response.400.report.services.app.key_drives.name`; string, required)
        - `path` (`updateBilling.response.400.report.services.app.key_drives.path`; string, required)
        - `size_bytes` (`updateBilling.response.400.report.services.app.key_drives.size_bytes`; integer | null, required)
          - format `int64`
        - `nocopy` (`updateBilling.response.400.report.services.app.key_drives.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `runtime` (`updateBilling.response.400.report.services.app.runtime`; any of, optional) — Its runtime settings (`AppCreate.runtime`). `null`: none.
        - any of: `Runtime`, `null`
      - `traces` (`updateBilling.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` (`updateBilling.response.400.report.services.app.traces.sample_rate`; number, required)
          - min 0; max 1
        - `trust_incoming` (`updateBilling.response.400.report.services.app.traces.trust_incoming`; boolean, required)
  - `volumes` (`updateBilling.response.400.report.volumes`; array<object>, required) — The volumes of the project the services mount.
    - `model` (`updateBilling.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` (`updateBilling.response.400.report.volumes.name`; string, required) — Its name in the project.
    - `id` (`updateBilling.response.400.report.volumes.id`; string | null, required) — Null: not made yet (`to_make`).
      - pattern `^vol-`
    - `shared` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.report.volumes.used_by`; array<string>, required)
  - `secrets` (`updateBilling.response.400.report.secrets`; array<object>, required) — The secrets of the model that services are granted.
    - `model` (`updateBilling.response.400.report.secrets.model`; string, required) — Its name in the model.
    - `name` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.400.report.secrets.used_by`; array<string>, required)
  - `left_out` (`updateBilling.response.400.report.left_out`; array<object>, required) — The services of profiles that are not turned on, which the import does not touch.
    - `name` (`updateBilling.response.400.report.left_out.name`; string, required)
    - `profiles` (`updateBilling.response.400.report.left_out.profiles`; array<string>, required)
  - `absent` (`updateBilling.response.400.report.absent`; array<string>, required) — The project's services that the model does not have: kept as they are.
  - `deploy` (`updateBilling.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` (`updateBilling.response.400.accounts`; array<object>, optional) — With `sole_owner`: the accounts the user is the only owner of.
  - `id` (`updateBilling.response.400.accounts.id`; string, required)
    - pattern `^acct-[0-9a-hjkmnp-tv-z]{16}$`
  - `name` (`updateBilling.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` (`updateBilling.response.401.error`; object, required)
  - `type` (`updateBilling.response.401.error.type`; string, required)
  - `code` (`updateBilling.response.401.error.code`; string, required)
  - `message` (`updateBilling.response.401.error.message`; string, required)
  - `param` (`updateBilling.response.401.error.param`; string | null, required)
  - `retryable` (`updateBilling.response.401.error.retryable`; boolean, required)
  - `request_id` (`updateBilling.response.401.error.request_id`; string, required)
  - `docs_url` (`updateBilling.response.401.error.docs_url`; string | null, required)
- `move_id` (`updateBilling.response.401.move_id`; string, optional) — With `already_moving`: the move of the sandbox that is under way.
- `upgrade_id` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.move.object`; string, required)
  - `id` (`updateBilling.response.401.move.id`; string, required)
    - pattern `^mov-[0-9a-hjkmnp-tv-z]{16}$`
  - `sandbox_id` (`updateBilling.response.401.move.sandbox_id`; string, required)
  - `project_id` (`updateBilling.response.401.move.project_id`; string, required)
  - `from` (`updateBilling.response.401.move.from`; object, required)
    - `id` (`updateBilling.response.401.move.from.id`; string, required)
    - `name` (`updateBilling.response.401.move.from.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `to` (`updateBilling.response.401.move.to`; object, required)
    - `id` (`updateBilling.response.401.move.to.id`; string, required)
    - `name` (`updateBilling.response.401.move.to.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `epoch` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.move.why`; string, required) — What made it: the operator's move, an evacuation, a recovery.
  - `wake` (`updateBilling.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` (`updateBilling.response.401.move.from_store`; boolean, required) — The new node takes it from the object store alone.
  - `release` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.move.batch`; string | null, required) — The evacuation (`evc-…`) or recovery (`rcv-…`) it is of.
  - `created_at` (`updateBilling.response.401.move.created_at`; string, required)
    - format `date-time`
  - `updated_at` (`updateBilling.response.401.move.updated_at`; string, required)
    - format `date-time`
  - `ended_at` (`updateBilling.response.401.move.ended_at`; string | null, required)
    - format `date-time`
- `lease_until` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.active.name`; string, required)
  - `url` (`updateBilling.response.401.active.url`; string, required)
  - `term` (`updateBilling.response.401.active.term`; integer, required)
    - min 1
- `allowed_hosts` (`updateBilling.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` (`updateBilling.response.401.problems`; array<object>, optional) — With `invalid_definition`: every problem of the definition, each where it is and what it is.
  - `at` (`updateBilling.response.401.problems.at`; string, required) — Where in the definition, a dotted path (`services.web.port`); empty for the whole of it.
  - `message` (`updateBilling.response.401.problems.message`; string, required)
- `report` (`updateBilling.response.401.report`; object, optional) — With `compose_refused`: the import's report, which says what is refused, why, and what to change.
  - `object` (`updateBilling.response.401.report.object`; string, required)
    - one of `"compose_import"`
  - `name` (`updateBilling.response.401.report.name`; string | null, required) — The model's `name`: each service's label `compose.project`. Null: it has none.
  - `dry_run` (`updateBilling.response.401.report.dry_run`; boolean, required)
  - `strict` (`updateBilling.response.401.report.strict`; boolean, required)
  - `profiles` (`updateBilling.response.401.report.profiles`; array<string>, required)
  - `treatments` (`updateBilling.response.401.report.treatments`; object, required) — How many items of the report have each treatment.
    - `done` (`updateBilling.response.401.report.treatments.done`; integer, required)
      - min 0
    - `adapted` (`updateBilling.response.401.report.treatments.adapted`; integer, required)
      - min 0
    - `ignored` (`updateBilling.response.401.report.treatments.ignored`; integer, required)
      - min 0
    - `refused` (`updateBilling.response.401.report.treatments.refused`; integer, required)
      - min 0
  - `items` (`updateBilling.response.401.report.items`; array<object>, required) — The model's top-level elements: `name`, each volume, network, config and secret, extensions.
    - `at` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.report.items.why`; string, required)
    - `change` (`updateBilling.response.401.report.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
  - `services` (`updateBilling.response.401.report.services`; array<object>, required) — The services the import takes, in the model's order.
    - `name` (`updateBilling.response.401.report.services.name`; string, required) — The service's name, which is its app's.
    - `app_id` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.report.services.stateful`; boolean, required) — It mounts a volume of its own: one instance, which has the volume.
    - `version` (`updateBilling.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` (`updateBilling.response.401.report.services.items`; array<object>, required)
      - `at` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.report.services.items.why`; string, required)
      - `change` (`updateBilling.response.401.report.services.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
    - `app` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.report.services.app.start_command`; any of, required)
        - any of: `StartCommand`, `null`
      - `start_args` (`updateBilling.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` (`updateBilling.response.401.report.services.app.port`; integer | null, required)
      - `ready` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.report.services.app.ready.tcp`; boolean, optional) — The app's port takes a connection.
          - one of `true`
        - `command` (`updateBilling.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` (`updateBilling.response.401.report.services.app.env`; map<string>, required)
      - `secrets` (`updateBilling.response.401.report.services.app.secrets`; map<string>, required) — Names of secrets. No answer has a value.
      - `size` (`updateBilling.response.401.report.services.app.size`; object, required) — What one instance may use at most. It is billed by what it uses.
        - `vcpus` (`updateBilling.response.401.report.services.app.size.vcpus`; integer, required)
          - min 1
        - `memory_bytes` (`updateBilling.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` (`updateBilling.response.401.report.services.app.volumes`; array<object>, required)
        - `volume` (`updateBilling.response.401.report.services.app.volumes.volume`; string, required)
        - `path` (`updateBilling.response.401.report.services.app.volumes.path`; string, required)
        - `read_only` (`updateBilling.response.401.report.services.app.volumes.read_only`; boolean, required)
        - `nocopy` (`updateBilling.response.401.report.services.app.volumes.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `kind` (`updateBilling.response.401.report.services.app.kind`; string, required)
      - `files` (`updateBilling.response.401.report.services.app.files`; array<object>, required)
        - `path` (`updateBilling.response.401.report.services.app.files.path`; string, required)
        - `mode` (`updateBilling.response.401.report.services.app.files.mode`; integer, required)
        - `uid` (`updateBilling.response.401.report.services.app.files.uid`; integer, required)
        - `gid` (`updateBilling.response.401.report.services.app.files.gid`; integer, required)
        - `content` (`updateBilling.response.401.report.services.app.files.content`; string, optional)
        - `secret` (`updateBilling.response.401.report.services.app.files.secret`; string, optional)
      - `user` (`updateBilling.response.401.report.services.app.user`; string | null, required)
      - `working_dir` (`updateBilling.response.401.report.services.app.working_dir`; string | null, required)
      - `stop` (`updateBilling.response.401.report.services.app.stop`; any of, required)
        - any of: `ServiceStop`, `null`
      - `hostname` (`updateBilling.response.401.report.services.app.hostname`; string | null, required)
      - `regions` (`updateBilling.response.401.report.services.app.regions`; array<string>, required) — In the order na, eu, ap.
      - `scale` (`updateBilling.response.401.report.services.app.scale`; object, required)
        - `min_instances` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.report.services.app.keys`; any of, required)
        - any of: `object`, `null`
      - `egress` (`updateBilling.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` (`updateBilling.response.401.report.services.app.egress.default`; string | null, optional)
          - one of `"allow"`, `"deny"`, `null`
        - `allow` (`updateBilling.response.401.report.services.app.egress.allow`; array | null, optional)
        - `deny` (`updateBilling.response.401.report.services.app.egress.deny`; array | null, optional)
        - `http` (`updateBilling.response.401.report.services.app.egress.http`; array | null, optional)
        - `inject` (`updateBilling.response.401.report.services.app.egress.inject`; array | null, optional)
        - `deny_ports` (`updateBilling.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` (`updateBilling.response.401.report.services.app.metadata`; map<string>, required)
      - `logs` (`updateBilling.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` (`updateBilling.response.401.report.services.app.logs.output`; boolean, required)
        - `keep` (`updateBilling.response.401.report.services.app.logs.keep`; boolean, required)
        - `requests` (`updateBilling.response.401.report.services.app.logs.requests`; object, required)
          - `sample_rate` (`updateBilling.response.401.report.services.app.logs.requests.sample_rate`; number, required)
            - min 0; max 1
          - `keep_errors` (`updateBilling.response.401.report.services.app.logs.requests.keep_errors`; boolean, required)
      - `public` (`updateBilling.response.401.report.services.app.public`; boolean, required) — Whether it answers at its default domain (`url`).
      - `depends_on` (`updateBilling.response.401.report.services.app.depends_on`; array<object>, required)
        - `service` (`updateBilling.response.401.report.services.app.depends_on.service`; string, required)
        - `condition` (`updateBilling.response.401.report.services.app.depends_on.condition`; string, required)
      - `network` (`updateBilling.response.401.report.services.app.network`; object, required)
        - `aliases` (`updateBilling.response.401.report.services.app.network.aliases`; array<string>, required)
        - `endpoint_mode` (`updateBilling.response.401.report.services.app.network.endpoint_mode`; string, required)
      - `drives` (`updateBilling.response.401.report.services.app.drives`; array<object>, optional) — The Drives its instance mounts (`AppCreate.drives`): none, `[]`, where it names none.
        - `drive` (`updateBilling.response.401.report.services.app.drives.drive`; string, required)
        - `path` (`updateBilling.response.401.report.services.app.drives.path`; string, required)
        - `mode` (`updateBilling.response.401.report.services.app.drives.mode`; string, required)
      - `key_drives` (`updateBilling.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` (`updateBilling.response.401.report.services.app.key_drives.name`; string, required)
        - `path` (`updateBilling.response.401.report.services.app.key_drives.path`; string, required)
        - `size_bytes` (`updateBilling.response.401.report.services.app.key_drives.size_bytes`; integer | null, required)
          - format `int64`
        - `nocopy` (`updateBilling.response.401.report.services.app.key_drives.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `runtime` (`updateBilling.response.401.report.services.app.runtime`; any of, optional) — Its runtime settings (`AppCreate.runtime`). `null`: none.
        - any of: `Runtime`, `null`
      - `traces` (`updateBilling.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` (`updateBilling.response.401.report.services.app.traces.sample_rate`; number, required)
          - min 0; max 1
        - `trust_incoming` (`updateBilling.response.401.report.services.app.traces.trust_incoming`; boolean, required)
  - `volumes` (`updateBilling.response.401.report.volumes`; array<object>, required) — The volumes of the project the services mount.
    - `model` (`updateBilling.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` (`updateBilling.response.401.report.volumes.name`; string, required) — Its name in the project.
    - `id` (`updateBilling.response.401.report.volumes.id`; string | null, required) — Null: not made yet (`to_make`).
      - pattern `^vol-`
    - `shared` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.report.volumes.used_by`; array<string>, required)
  - `secrets` (`updateBilling.response.401.report.secrets`; array<object>, required) — The secrets of the model that services are granted.
    - `model` (`updateBilling.response.401.report.secrets.model`; string, required) — Its name in the model.
    - `name` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.401.report.secrets.used_by`; array<string>, required)
  - `left_out` (`updateBilling.response.401.report.left_out`; array<object>, required) — The services of profiles that are not turned on, which the import does not touch.
    - `name` (`updateBilling.response.401.report.left_out.name`; string, required)
    - `profiles` (`updateBilling.response.401.report.left_out.profiles`; array<string>, required)
  - `absent` (`updateBilling.response.401.report.absent`; array<string>, required) — The project's services that the model does not have: kept as they are.
  - `deploy` (`updateBilling.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` (`updateBilling.response.401.accounts`; array<object>, optional) — With `sole_owner`: the accounts the user is the only owner of.
  - `id` (`updateBilling.response.401.accounts.id`; string, required)
    - pattern `^acct-[0-9a-hjkmnp-tv-z]{16}$`
  - `name` (`updateBilling.response.401.accounts.name`; string, required)

### 403

`key_scope`: the key does not allow the scope the call takes (the message names it); `needs_api_key`: the operator's key, or the SSH gateway's; `account_held`: the account is held for its payments, and every call of its keys but `GET /v1/account` is refused so, before the scopes are looked at; `trust_limit_exceeded`: more than the account's trust level lets it have (`GET /v1/billing`, `trust`): a spend limit, or no limit, above what auto reload may take in a month at its level (`param` `spend_limit_usd`), an auto reload above it (`reload_amount_usd`), a top-up that would bring what its top-ups and auto reloads of the calendar month come to above what the level lets them (`amount_usd`). The message says the level, its two amounts, what of the month's is used, and what raises it; `tax_region_business_only`: the account is no business (it has no tax id that is verified, or being verified) and is in a place the platform sells only to businesses (its billing address, or, where it has none, the country of the address the call comes from: `GET /v1/account`, `tax`); the message names the place, and says how a business sets its tax id, which lets it pay at once (`x-error-codes`). `plan_not_open`: the plan asked for stands higher than the account may buy now (`GET /v1/billing`, `plans_open`); the message says the highest it may buy and what opens the next.

#### 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` (`updateBilling.response.403.error`; object, required)
  - `type` (`updateBilling.response.403.error.type`; string, required)
  - `code` (`updateBilling.response.403.error.code`; string, required)
  - `message` (`updateBilling.response.403.error.message`; string, required)
  - `param` (`updateBilling.response.403.error.param`; string | null, required)
  - `retryable` (`updateBilling.response.403.error.retryable`; boolean, required)
  - `request_id` (`updateBilling.response.403.error.request_id`; string, required)
  - `docs_url` (`updateBilling.response.403.error.docs_url`; string | null, required)
- `move_id` (`updateBilling.response.403.move_id`; string, optional) — With `already_moving`: the move of the sandbox that is under way.
- `upgrade_id` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.move.object`; string, required)
  - `id` (`updateBilling.response.403.move.id`; string, required)
    - pattern `^mov-[0-9a-hjkmnp-tv-z]{16}$`
  - `sandbox_id` (`updateBilling.response.403.move.sandbox_id`; string, required)
  - `project_id` (`updateBilling.response.403.move.project_id`; string, required)
  - `from` (`updateBilling.response.403.move.from`; object, required)
    - `id` (`updateBilling.response.403.move.from.id`; string, required)
    - `name` (`updateBilling.response.403.move.from.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `to` (`updateBilling.response.403.move.to`; object, required)
    - `id` (`updateBilling.response.403.move.to.id`; string, required)
    - `name` (`updateBilling.response.403.move.to.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `epoch` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.move.why`; string, required) — What made it: the operator's move, an evacuation, a recovery.
  - `wake` (`updateBilling.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` (`updateBilling.response.403.move.from_store`; boolean, required) — The new node takes it from the object store alone.
  - `release` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.move.batch`; string | null, required) — The evacuation (`evc-…`) or recovery (`rcv-…`) it is of.
  - `created_at` (`updateBilling.response.403.move.created_at`; string, required)
    - format `date-time`
  - `updated_at` (`updateBilling.response.403.move.updated_at`; string, required)
    - format `date-time`
  - `ended_at` (`updateBilling.response.403.move.ended_at`; string | null, required)
    - format `date-time`
- `lease_until` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.active.name`; string, required)
  - `url` (`updateBilling.response.403.active.url`; string, required)
  - `term` (`updateBilling.response.403.active.term`; integer, required)
    - min 1
- `allowed_hosts` (`updateBilling.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` (`updateBilling.response.403.problems`; array<object>, optional) — With `invalid_definition`: every problem of the definition, each where it is and what it is.
  - `at` (`updateBilling.response.403.problems.at`; string, required) — Where in the definition, a dotted path (`services.web.port`); empty for the whole of it.
  - `message` (`updateBilling.response.403.problems.message`; string, required)
- `report` (`updateBilling.response.403.report`; object, optional) — With `compose_refused`: the import's report, which says what is refused, why, and what to change.
  - `object` (`updateBilling.response.403.report.object`; string, required)
    - one of `"compose_import"`
  - `name` (`updateBilling.response.403.report.name`; string | null, required) — The model's `name`: each service's label `compose.project`. Null: it has none.
  - `dry_run` (`updateBilling.response.403.report.dry_run`; boolean, required)
  - `strict` (`updateBilling.response.403.report.strict`; boolean, required)
  - `profiles` (`updateBilling.response.403.report.profiles`; array<string>, required)
  - `treatments` (`updateBilling.response.403.report.treatments`; object, required) — How many items of the report have each treatment.
    - `done` (`updateBilling.response.403.report.treatments.done`; integer, required)
      - min 0
    - `adapted` (`updateBilling.response.403.report.treatments.adapted`; integer, required)
      - min 0
    - `ignored` (`updateBilling.response.403.report.treatments.ignored`; integer, required)
      - min 0
    - `refused` (`updateBilling.response.403.report.treatments.refused`; integer, required)
      - min 0
  - `items` (`updateBilling.response.403.report.items`; array<object>, required) — The model's top-level elements: `name`, each volume, network, config and secret, extensions.
    - `at` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.report.items.why`; string, required)
    - `change` (`updateBilling.response.403.report.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
  - `services` (`updateBilling.response.403.report.services`; array<object>, required) — The services the import takes, in the model's order.
    - `name` (`updateBilling.response.403.report.services.name`; string, required) — The service's name, which is its app's.
    - `app_id` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.report.services.stateful`; boolean, required) — It mounts a volume of its own: one instance, which has the volume.
    - `version` (`updateBilling.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` (`updateBilling.response.403.report.services.items`; array<object>, required)
      - `at` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.report.services.items.why`; string, required)
      - `change` (`updateBilling.response.403.report.services.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
    - `app` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.report.services.app.start_command`; any of, required)
        - any of: `StartCommand`, `null`
      - `start_args` (`updateBilling.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` (`updateBilling.response.403.report.services.app.port`; integer | null, required)
      - `ready` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.report.services.app.ready.tcp`; boolean, optional) — The app's port takes a connection.
          - one of `true`
        - `command` (`updateBilling.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` (`updateBilling.response.403.report.services.app.env`; map<string>, required)
      - `secrets` (`updateBilling.response.403.report.services.app.secrets`; map<string>, required) — Names of secrets. No answer has a value.
      - `size` (`updateBilling.response.403.report.services.app.size`; object, required) — What one instance may use at most. It is billed by what it uses.
        - `vcpus` (`updateBilling.response.403.report.services.app.size.vcpus`; integer, required)
          - min 1
        - `memory_bytes` (`updateBilling.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` (`updateBilling.response.403.report.services.app.volumes`; array<object>, required)
        - `volume` (`updateBilling.response.403.report.services.app.volumes.volume`; string, required)
        - `path` (`updateBilling.response.403.report.services.app.volumes.path`; string, required)
        - `read_only` (`updateBilling.response.403.report.services.app.volumes.read_only`; boolean, required)
        - `nocopy` (`updateBilling.response.403.report.services.app.volumes.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `kind` (`updateBilling.response.403.report.services.app.kind`; string, required)
      - `files` (`updateBilling.response.403.report.services.app.files`; array<object>, required)
        - `path` (`updateBilling.response.403.report.services.app.files.path`; string, required)
        - `mode` (`updateBilling.response.403.report.services.app.files.mode`; integer, required)
        - `uid` (`updateBilling.response.403.report.services.app.files.uid`; integer, required)
        - `gid` (`updateBilling.response.403.report.services.app.files.gid`; integer, required)
        - `content` (`updateBilling.response.403.report.services.app.files.content`; string, optional)
        - `secret` (`updateBilling.response.403.report.services.app.files.secret`; string, optional)
      - `user` (`updateBilling.response.403.report.services.app.user`; string | null, required)
      - `working_dir` (`updateBilling.response.403.report.services.app.working_dir`; string | null, required)
      - `stop` (`updateBilling.response.403.report.services.app.stop`; any of, required)
        - any of: `ServiceStop`, `null`
      - `hostname` (`updateBilling.response.403.report.services.app.hostname`; string | null, required)
      - `regions` (`updateBilling.response.403.report.services.app.regions`; array<string>, required) — In the order na, eu, ap.
      - `scale` (`updateBilling.response.403.report.services.app.scale`; object, required)
        - `min_instances` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.report.services.app.keys`; any of, required)
        - any of: `object`, `null`
      - `egress` (`updateBilling.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` (`updateBilling.response.403.report.services.app.egress.default`; string | null, optional)
          - one of `"allow"`, `"deny"`, `null`
        - `allow` (`updateBilling.response.403.report.services.app.egress.allow`; array | null, optional)
        - `deny` (`updateBilling.response.403.report.services.app.egress.deny`; array | null, optional)
        - `http` (`updateBilling.response.403.report.services.app.egress.http`; array | null, optional)
        - `inject` (`updateBilling.response.403.report.services.app.egress.inject`; array | null, optional)
        - `deny_ports` (`updateBilling.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` (`updateBilling.response.403.report.services.app.metadata`; map<string>, required)
      - `logs` (`updateBilling.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` (`updateBilling.response.403.report.services.app.logs.output`; boolean, required)
        - `keep` (`updateBilling.response.403.report.services.app.logs.keep`; boolean, required)
        - `requests` (`updateBilling.response.403.report.services.app.logs.requests`; object, required)
          - `sample_rate` (`updateBilling.response.403.report.services.app.logs.requests.sample_rate`; number, required)
            - min 0; max 1
          - `keep_errors` (`updateBilling.response.403.report.services.app.logs.requests.keep_errors`; boolean, required)
      - `public` (`updateBilling.response.403.report.services.app.public`; boolean, required) — Whether it answers at its default domain (`url`).
      - `depends_on` (`updateBilling.response.403.report.services.app.depends_on`; array<object>, required)
        - `service` (`updateBilling.response.403.report.services.app.depends_on.service`; string, required)
        - `condition` (`updateBilling.response.403.report.services.app.depends_on.condition`; string, required)
      - `network` (`updateBilling.response.403.report.services.app.network`; object, required)
        - `aliases` (`updateBilling.response.403.report.services.app.network.aliases`; array<string>, required)
        - `endpoint_mode` (`updateBilling.response.403.report.services.app.network.endpoint_mode`; string, required)
      - `drives` (`updateBilling.response.403.report.services.app.drives`; array<object>, optional) — The Drives its instance mounts (`AppCreate.drives`): none, `[]`, where it names none.
        - `drive` (`updateBilling.response.403.report.services.app.drives.drive`; string, required)
        - `path` (`updateBilling.response.403.report.services.app.drives.path`; string, required)
        - `mode` (`updateBilling.response.403.report.services.app.drives.mode`; string, required)
      - `key_drives` (`updateBilling.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` (`updateBilling.response.403.report.services.app.key_drives.name`; string, required)
        - `path` (`updateBilling.response.403.report.services.app.key_drives.path`; string, required)
        - `size_bytes` (`updateBilling.response.403.report.services.app.key_drives.size_bytes`; integer | null, required)
          - format `int64`
        - `nocopy` (`updateBilling.response.403.report.services.app.key_drives.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `runtime` (`updateBilling.response.403.report.services.app.runtime`; any of, optional) — Its runtime settings (`AppCreate.runtime`). `null`: none.
        - any of: `Runtime`, `null`
      - `traces` (`updateBilling.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` (`updateBilling.response.403.report.services.app.traces.sample_rate`; number, required)
          - min 0; max 1
        - `trust_incoming` (`updateBilling.response.403.report.services.app.traces.trust_incoming`; boolean, required)
  - `volumes` (`updateBilling.response.403.report.volumes`; array<object>, required) — The volumes of the project the services mount.
    - `model` (`updateBilling.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` (`updateBilling.response.403.report.volumes.name`; string, required) — Its name in the project.
    - `id` (`updateBilling.response.403.report.volumes.id`; string | null, required) — Null: not made yet (`to_make`).
      - pattern `^vol-`
    - `shared` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.report.volumes.used_by`; array<string>, required)
  - `secrets` (`updateBilling.response.403.report.secrets`; array<object>, required) — The secrets of the model that services are granted.
    - `model` (`updateBilling.response.403.report.secrets.model`; string, required) — Its name in the model.
    - `name` (`updateBilling.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` (`updateBilling.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` (`updateBilling.response.403.report.secrets.used_by`; array<string>, required)
  - `left_out` (`updateBilling.response.403.report.left_out`; array<object>, required) — The services of profiles that are not turned on, which the import does not touch.
    - `name` (`updateBilling.response.403.report.left_out.name`; string, required)
    - `profiles` (`updateBilling.response.403.report.left_out.profiles`; array<string>, required)
  - `absent` (`updateBilling.response.403.report.absent`; array<string>, required) — The project's services that the model does not have: kept as they are.
  - `deploy` (`updateBilling.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` (`updateBilling.response.403.accounts`; array<object>, optional) — With `sole_owner`: the accounts the user is the only owner of.
  - `id` (`updateBilling.response.403.accounts.id`; string, required)
    - pattern `^acct-[0-9a-hjkmnp-tv-z]{16}$`
  - `name` (`updateBilling.response.403.accounts.name`; string, required)

### 409

`subscription_charge_pending`: a charge of the account's subscription is being collected, and what it pays for cannot be changed, nor the subscription ended, until it has an answer. `retryable`. Of a paid plan, `billing_address_required` (`param` `billing_address`): the platform computes tax with Stripe Tax and Stripe collects, and Stripe Tax has no place for the account: it has no billing address, and the country of its card on record is not known (set its address with `PATCH /v1/account`, or pay on a payment page, `POST /v1/billing/checkout`, which asks for it). Nothing was made.

#### 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` (`updateBilling.response.409.error`; object, required)
  - `type` (`updateBilling.response.409.error.type`; string, required)
  - `code` (`updateBilling.response.409.error.code`; string, required)
  - `message` (`updateBilling.response.409.error.message`; string, required)
  - `param` (`updateBilling.response.409.error.param`; string | null, required)
  - `retryable` (`updateBilling.response.409.error.retryable`; boolean, required)
  - `request_id` (`updateBilling.response.409.error.request_id`; string, required)
  - `docs_url` (`updateBilling.response.409.error.docs_url`; string | null, required)
- `move_id` (`updateBilling.response.409.move_id`; string, optional) — With `already_moving`: the move of the sandbox that is under way.
- `upgrade_id` (`updateBilling.response.409.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` (`updateBilling.response.409.move`; object, optional) — With `move_over`, `move_going_back` and `move_taken_over` (`POST /internal/moves/{id}/cancel`): the move, as it stands.
  - `object` (`updateBilling.response.409.move.object`; string, required)
  - `id` (`updateBilling.response.409.move.id`; string, required)
    - pattern `^mov-[0-9a-hjkmnp-tv-z]{16}$`
  - `sandbox_id` (`updateBilling.response.409.move.sandbox_id`; string, required)
  - `project_id` (`updateBilling.response.409.move.project_id`; string, required)
  - `from` (`updateBilling.response.409.move.from`; object, required)
    - `id` (`updateBilling.response.409.move.from.id`; string, required)
    - `name` (`updateBilling.response.409.move.from.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `to` (`updateBilling.response.409.move.to`; object, required)
    - `id` (`updateBilling.response.409.move.to.id`; string, required)
    - `name` (`updateBilling.response.409.move.to.name`; string | null, required) — Its name; null for a node that is off the books since.
  - `epoch` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.move.why`; string, required) — What made it: the operator's move, an evacuation, a recovery.
  - `wake` (`updateBilling.response.409.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` (`updateBilling.response.409.move.from_store`; boolean, required) — The new node takes it from the object store alone.
  - `release` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.move.next_attempt_at`; string | null, required) — When that step is asked again; null where it is not waiting.
    - format `date-time`
  - `batch` (`updateBilling.response.409.move.batch`; string | null, required) — The evacuation (`evc-…`) or recovery (`rcv-…`) it is of.
  - `created_at` (`updateBilling.response.409.move.created_at`; string, required)
    - format `date-time`
  - `updated_at` (`updateBilling.response.409.move.updated_at`; string, required)
    - format `date-time`
  - `ended_at` (`updateBilling.response.409.move.ended_at`; string | null, required)
    - format `date-time`
- `lease_until` (`updateBilling.response.409.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` (`updateBilling.response.409.active`; object | null, optional) — With `standby`: the active copy, as the standby last read the lease; null while no copy holds it.
  - `name` (`updateBilling.response.409.active.name`; string, required)
  - `url` (`updateBilling.response.409.active.url`; string, required)
  - `term` (`updateBilling.response.409.active.term`; integer, required)
    - min 1
- `allowed_hosts` (`updateBilling.response.409.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` (`updateBilling.response.409.problems`; array<object>, optional) — With `invalid_definition`: every problem of the definition, each where it is and what it is.
  - `at` (`updateBilling.response.409.problems.at`; string, required) — Where in the definition, a dotted path (`services.web.port`); empty for the whole of it.
  - `message` (`updateBilling.response.409.problems.message`; string, required)
- `report` (`updateBilling.response.409.report`; object, optional) — With `compose_refused`: the import's report, which says what is refused, why, and what to change.
  - `object` (`updateBilling.response.409.report.object`; string, required)
    - one of `"compose_import"`
  - `name` (`updateBilling.response.409.report.name`; string | null, required) — The model's `name`: each service's label `compose.project`. Null: it has none.
  - `dry_run` (`updateBilling.response.409.report.dry_run`; boolean, required)
  - `strict` (`updateBilling.response.409.report.strict`; boolean, required)
  - `profiles` (`updateBilling.response.409.report.profiles`; array<string>, required)
  - `treatments` (`updateBilling.response.409.report.treatments`; object, required) — How many items of the report have each treatment.
    - `done` (`updateBilling.response.409.report.treatments.done`; integer, required)
      - min 0
    - `adapted` (`updateBilling.response.409.report.treatments.adapted`; integer, required)
      - min 0
    - `ignored` (`updateBilling.response.409.report.treatments.ignored`; integer, required)
      - min 0
    - `refused` (`updateBilling.response.409.report.treatments.refused`; integer, required)
      - min 0
  - `items` (`updateBilling.response.409.report.items`; array<object>, required) — The model's top-level elements: `name`, each volume, network, config and secret, extensions.
    - `at` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.report.items.why`; string, required)
    - `change` (`updateBilling.response.409.report.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
  - `services` (`updateBilling.response.409.report.services`; array<object>, required) — The services the import takes, in the model's order.
    - `name` (`updateBilling.response.409.report.services.name`; string, required) — The service's name, which is its app's.
    - `app_id` (`updateBilling.response.409.report.services.app_id`; string | null, required) — Its app. Null: a dry run of a service the project does not have.
      - pattern `^app-`
    - `status` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.stateful`; boolean, required) — It mounts a volume of its own: one instance, which has the volume.
    - `version` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.items`; array<object>, required)
      - `at` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.items.why`; string, required)
      - `change` (`updateBilling.response.409.report.services.items.change`; string | null, required) — Of one that is refused: what to change. Null otherwise.
    - `app` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.app.start_command`; any of, required)
        - any of: `StartCommand`, `null`
      - `start_args` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.app.port`; integer | null, required)
      - `ready` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.app.ready.tcp`; boolean, optional) — The app's port takes a connection.
          - one of `true`
        - `command` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.app.env`; map<string>, required)
      - `secrets` (`updateBilling.response.409.report.services.app.secrets`; map<string>, required) — Names of secrets. No answer has a value.
      - `size` (`updateBilling.response.409.report.services.app.size`; object, required) — What one instance may use at most. It is billed by what it uses.
        - `vcpus` (`updateBilling.response.409.report.services.app.size.vcpus`; integer, required)
          - min 1
        - `memory_bytes` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.app.volumes`; array<object>, required)
        - `volume` (`updateBilling.response.409.report.services.app.volumes.volume`; string, required)
        - `path` (`updateBilling.response.409.report.services.app.volumes.path`; string, required)
        - `read_only` (`updateBilling.response.409.report.services.app.volumes.read_only`; boolean, required)
        - `nocopy` (`updateBilling.response.409.report.services.app.volumes.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `kind` (`updateBilling.response.409.report.services.app.kind`; string, required)
      - `files` (`updateBilling.response.409.report.services.app.files`; array<object>, required)
        - `path` (`updateBilling.response.409.report.services.app.files.path`; string, required)
        - `mode` (`updateBilling.response.409.report.services.app.files.mode`; integer, required)
        - `uid` (`updateBilling.response.409.report.services.app.files.uid`; integer, required)
        - `gid` (`updateBilling.response.409.report.services.app.files.gid`; integer, required)
        - `content` (`updateBilling.response.409.report.services.app.files.content`; string, optional)
        - `secret` (`updateBilling.response.409.report.services.app.files.secret`; string, optional)
      - `user` (`updateBilling.response.409.report.services.app.user`; string | null, required)
      - `working_dir` (`updateBilling.response.409.report.services.app.working_dir`; string | null, required)
      - `stop` (`updateBilling.response.409.report.services.app.stop`; any of, required)
        - any of: `ServiceStop`, `null`
      - `hostname` (`updateBilling.response.409.report.services.app.hostname`; string | null, required)
      - `regions` (`updateBilling.response.409.report.services.app.regions`; array<string>, required) — In the order na, eu, ap.
      - `scale` (`updateBilling.response.409.report.services.app.scale`; object, required)
        - `min_instances` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.app.keys`; any of, required)
        - any of: `object`, `null`
      - `egress` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.app.egress.default`; string | null, optional)
          - one of `"allow"`, `"deny"`, `null`
        - `allow` (`updateBilling.response.409.report.services.app.egress.allow`; array | null, optional)
        - `deny` (`updateBilling.response.409.report.services.app.egress.deny`; array | null, optional)
        - `http` (`updateBilling.response.409.report.services.app.egress.http`; array | null, optional)
        - `inject` (`updateBilling.response.409.report.services.app.egress.inject`; array | null, optional)
        - `deny_ports` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.app.metadata`; map<string>, required)
      - `logs` (`updateBilling.response.409.report.services.app.logs`; object, required) — What the app's log has, each part as it was given or at its default (`AppLogSettings`).
        - `output` (`updateBilling.response.409.report.services.app.logs.output`; boolean, required)
        - `keep` (`updateBilling.response.409.report.services.app.logs.keep`; boolean, required)
        - `requests` (`updateBilling.response.409.report.services.app.logs.requests`; object, required)
          - `sample_rate` (`updateBilling.response.409.report.services.app.logs.requests.sample_rate`; number, required)
            - min 0; max 1
          - `keep_errors` (`updateBilling.response.409.report.services.app.logs.requests.keep_errors`; boolean, required)
      - `public` (`updateBilling.response.409.report.services.app.public`; boolean, required) — Whether it answers at its default domain (`url`).
      - `depends_on` (`updateBilling.response.409.report.services.app.depends_on`; array<object>, required)
        - `service` (`updateBilling.response.409.report.services.app.depends_on.service`; string, required)
        - `condition` (`updateBilling.response.409.report.services.app.depends_on.condition`; string, required)
      - `network` (`updateBilling.response.409.report.services.app.network`; object, required)
        - `aliases` (`updateBilling.response.409.report.services.app.network.aliases`; array<string>, required)
        - `endpoint_mode` (`updateBilling.response.409.report.services.app.network.endpoint_mode`; string, required)
      - `drives` (`updateBilling.response.409.report.services.app.drives`; array<object>, optional) — The Drives its instance mounts (`AppCreate.drives`): none, `[]`, where it names none.
        - `drive` (`updateBilling.response.409.report.services.app.drives.drive`; string, required)
        - `path` (`updateBilling.response.409.report.services.app.drives.path`; string, required)
        - `mode` (`updateBilling.response.409.report.services.app.drives.mode`; string, required)
      - `key_drives` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.app.key_drives.name`; string, required)
        - `path` (`updateBilling.response.409.report.services.app.key_drives.path`; string, required)
        - `size_bytes` (`updateBilling.response.409.report.services.app.key_drives.size_bytes`; integer | null, required)
          - format `int64`
        - `nocopy` (`updateBilling.response.409.report.services.app.key_drives.nocopy`; unknown, optional) — There only where it was given as `true`.
      - `runtime` (`updateBilling.response.409.report.services.app.runtime`; any of, optional) — Its runtime settings (`AppCreate.runtime`). `null`: none.
        - any of: `Runtime`, `null`
      - `traces` (`updateBilling.response.409.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` (`updateBilling.response.409.report.services.app.traces.sample_rate`; number, required)
          - min 0; max 1
        - `trust_incoming` (`updateBilling.response.409.report.services.app.traces.trust_incoming`; boolean, required)
  - `volumes` (`updateBilling.response.409.report.volumes`; array<object>, required) — The volumes of the project the services mount.
    - `model` (`updateBilling.response.409.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` (`updateBilling.response.409.report.volumes.name`; string, required) — Its name in the project.
    - `id` (`updateBilling.response.409.report.volumes.id`; string | null, required) — Null: not made yet (`to_make`).
      - pattern `^vol-`
    - `shared` (`updateBilling.response.409.report.volumes.shared`; boolean, required) — Several services mount it, or one with several instances: every instance of each mounts it at once.
    - `status` (`updateBilling.response.409.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` (`updateBilling.response.409.report.volumes.used_by`; array<string>, required)
  - `secrets` (`updateBilling.response.409.report.secrets`; array<object>, required) — The secrets of the model that services are granted.
    - `model` (`updateBilling.response.409.report.secrets.model`; string, required) — Its name in the model.
    - `name` (`updateBilling.response.409.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` (`updateBilling.response.409.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` (`updateBilling.response.409.report.secrets.used_by`; array<string>, required)
  - `left_out` (`updateBilling.response.409.report.left_out`; array<object>, required) — The services of profiles that are not turned on, which the import does not touch.
    - `name` (`updateBilling.response.409.report.left_out.name`; string, required)
    - `profiles` (`updateBilling.response.409.report.left_out.profiles`; array<string>, required)
  - `absent` (`updateBilling.response.409.report.absent`; array<string>, required) — The project's services that the model does not have: kept as they are.
  - `deploy` (`updateBilling.response.409.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` (`updateBilling.response.409.accounts`; array<object>, optional) — With `sole_owner`: the accounts the user is the only owner of.
  - `id` (`updateBilling.response.409.accounts.id`; string, required)
    - pattern `^acct-[0-9a-hjkmnp-tv-z]{16}$`
  - `name` (`updateBilling.response.409.accounts.name`; string, required)


Source: https://glac.ai/docs/api/billing/update/index.md
