Capacity and plan changes
The resource pool, previewing and applying a change, the monthly budget and autoscale settings. 6 routes, from the API’s own OpenAPI document.
6 routes. Every path starts at https://cloud-api.qaldy.com. Sign-in, tokens, errors and limits are on the overview.
Routes#
| Method | Path | What it does |
|---|---|---|
| GET | /v1/workspaces/{ws}/capacity | Plan, allocations, usage, tips and list prices (MOCK billing) |
| POST | /v1/workspaces/{ws}/capacity | Apply a capacity change (admins; the plan needs the owner). MOCK billing |
| PUT | /v1/workspaces/{ws}/capacity/autoscale | Save autopilot settings (admins). Planned: nothing acts on them yet |
| PUT | /v1/workspaces/{ws}/capacity/budget | Set the monthly add-on budget cap (owner). Nothing is bought above it |
| POST | /v1/workspaces/{ws}/capacity/preview | Price, land and problems of a capacity change; writes nothing |
| GET | /v1/workspaces/{ws}/usage | Daily usage per resource (measured or labelled estimate) |
Reference#
GET /v1/workspaces/{ws}/capacity#
Plan, allocations, usage, tips and list prices (MOCK billing).
- Authentication: the console’s session cookie.
- Token: a personal access token or an MCP sign-in with the
readscope. - Who: member
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
ws | path | string | yes | 1 to 128 characters |
Response 200
| Field | Type | Required | Notes |
|---|---|---|---|
workspaceId | string | yes | at least 1 characters |
version | integer | yes | at least 0 |
plan | "free" · "maker" · "team" · "business" · "sovereign" | yes | |
planSource | "default" · "set" | yes | |
currency | "EUR" · "USD" · "KZT" | yes | |
timezone | string | yes | at least 1 characters |
period | object | yes | |
period.start | string (date-time) | yes | |
period.end | string (date-time) | yes | |
period.daysInPeriod | integer | yes | 28 to 31 |
period.day | integer | yes | 1 to 31 |
allocations | object[] | yes | |
allocations[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
allocations[].status | "available" · "planned" | yes | |
allocations[].gaugeKind | "period" · "instant" · "stock" | yes | |
allocations[].included | number | yes | at least 0 |
allocations[].addOnSteps | integer | yes | at least 0 |
allocations[].stepSize | number | yes | at least 0 |
allocations[].total | number | yes | at least 0 |
allocations[].periodTotal | number | yes | at least 0 |
usage | object[] | yes | |
usage[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
usage[].used | number or null | yes | at least 0 |
usage[].source | "runs_table" · "baas_log" · "row_estimate" · "ledger" · "mock" · "none" | yes | |
usage[].estimate | boolean | yes | |
usage[].note | string or null | yes | |
usage[].measuredAt | string (date-time) or null | yes | |
quotas | object[] | yes | |
quotas[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
quotas[].used | number or null | yes | at least 0 |
…and 18 more fields. The full schema is in openapi.json.
Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).
POST /v1/workspaces/{ws}/capacity#
Apply a capacity change (admins; the plan needs the owner). MOCK billing.
- Authentication: the console’s session cookie.
- Token: not available. This route is for a signed-in person in the console (
403 console_onlyfor a token). - Who: admin (plan: owner); signed-in person only, never a token
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
ws | path | string | yes | 1 to 128 characters |
Request body (application/json)
| Field | Type | Required | Notes |
|---|---|---|---|
basedOnVersion | integer | yes | at least 0 |
idempotencyKey | string | 8 to 128 characters | |
plan | "free" · "maker" · "team" · "business" · "sovereign" | ||
lines | object[] | yes | up to 17 items |
lines[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
lines[].addOnSteps | integer | yes | 0 to 100000 |
Response 200
| Field | Type | Required | Notes |
|---|---|---|---|
change | object | yes | |
change.id | string | yes | at least 1 characters |
change.workspaceId | string | yes | at least 1 characters |
change.version | integer | yes | at least 1 |
change.actor | object | yes | |
change.plan | object | yes | |
change.lines | object[] | yes | |
change.monthlyDelta | object | yes | |
change.today | object | yes | |
change.island | object | yes | |
change.billing | object | yes | |
change.createdAt | string (date-time) | yes | |
state | object | yes | |
state.workspaceId | string | yes | at least 1 characters |
state.version | integer | yes | at least 0 |
state.plan | "free" · "maker" · "team" · "business" · "sovereign" | yes | |
state.planSource | "default" · "set" | yes | |
state.currency | "EUR" · "USD" · "KZT" | yes | |
state.timezone | string | yes | at least 1 characters |
state.period | object | yes | |
state.allocations | object[] | yes | |
state.usage | object[] | yes | |
state.quotas | object[] | yes | |
state.land | object | yes | |
state.monthly | object or null | yes | |
state.budget | object or null | yes | |
state.canChange | boolean | yes | |
state.canChangePlan | boolean | yes | |
state.autoscale | object | yes | |
state.recommendations | object[] | yes |
…and 4 more fields. The full schema is in openapi.json.
Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).
PUT /v1/workspaces/{ws}/capacity/autoscale#
Save autopilot settings (admins). Planned: nothing acts on them yet.
- Authentication: the console’s session cookie.
- Token: not available. This route is for a signed-in person in the console (
403 console_onlyfor a token). - Who: admin
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
ws | path | string | yes | 1 to 128 characters |
Request body (application/json)
| Field | Type | Required | Notes |
|---|---|---|---|
enabled | boolean | yes | |
units | object[] | yes | up to 17 items |
units[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
units[].minSteps | integer | yes | 0 to 1000 |
units[].maxSteps | integer | yes | 0 to 1000 |
schedules | object[] | yes | up to 8 items |
schedules[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
schedules[].days | integer[] | yes | up to 7 items |
schedules[].from | string | yes | |
schedules[].to | string | yes | |
schedules[].addOnSteps | integer | yes | 0 to 1000 |
Response 200
| Field | Type | Required | Notes |
|---|---|---|---|
workspaceId | string | yes | at least 1 characters |
version | integer | yes | at least 0 |
plan | "free" · "maker" · "team" · "business" · "sovereign" | yes | |
planSource | "default" · "set" | yes | |
currency | "EUR" · "USD" · "KZT" | yes | |
timezone | string | yes | at least 1 characters |
period | object | yes | |
period.start | string (date-time) | yes | |
period.end | string (date-time) | yes | |
period.daysInPeriod | integer | yes | 28 to 31 |
period.day | integer | yes | 1 to 31 |
allocations | object[] | yes | |
allocations[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
allocations[].status | "available" · "planned" | yes | |
allocations[].gaugeKind | "period" · "instant" · "stock" | yes | |
allocations[].included | number | yes | at least 0 |
allocations[].addOnSteps | integer | yes | at least 0 |
allocations[].stepSize | number | yes | at least 0 |
allocations[].total | number | yes | at least 0 |
allocations[].periodTotal | number | yes | at least 0 |
usage | object[] | yes | |
usage[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
usage[].used | number or null | yes | at least 0 |
usage[].source | "runs_table" · "baas_log" · "row_estimate" · "ledger" · "mock" · "none" | yes | |
usage[].estimate | boolean | yes | |
usage[].note | string or null | yes | |
usage[].measuredAt | string (date-time) or null | yes | |
quotas | object[] | yes | |
quotas[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
quotas[].used | number or null | yes | at least 0 |
…and 18 more fields. The full schema is in openapi.json.
Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).
PUT /v1/workspaces/{ws}/capacity/budget#
Set the monthly add-on budget cap (owner). Nothing is bought above it.
- Authentication: the console’s session cookie.
- Token: not available. This route is for a signed-in person in the console (
403 console_onlyfor a token). - Who: owner
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
ws | path | string | yes | 1 to 128 characters |
Request body (application/json)
| Field | Type | Required | Notes |
|---|---|---|---|
cap | object or null | yes | |
cap.currency | "EUR" · "USD" · "KZT" | yes | |
cap.minor | integer | yes |
Response 200
| Field | Type | Required | Notes |
|---|---|---|---|
workspaceId | string | yes | at least 1 characters |
version | integer | yes | at least 0 |
plan | "free" · "maker" · "team" · "business" · "sovereign" | yes | |
planSource | "default" · "set" | yes | |
currency | "EUR" · "USD" · "KZT" | yes | |
timezone | string | yes | at least 1 characters |
period | object | yes | |
period.start | string (date-time) | yes | |
period.end | string (date-time) | yes | |
period.daysInPeriod | integer | yes | 28 to 31 |
period.day | integer | yes | 1 to 31 |
allocations | object[] | yes | |
allocations[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
allocations[].status | "available" · "planned" | yes | |
allocations[].gaugeKind | "period" · "instant" · "stock" | yes | |
allocations[].included | number | yes | at least 0 |
allocations[].addOnSteps | integer | yes | at least 0 |
allocations[].stepSize | number | yes | at least 0 |
allocations[].total | number | yes | at least 0 |
allocations[].periodTotal | number | yes | at least 0 |
usage | object[] | yes | |
usage[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
usage[].used | number or null | yes | at least 0 |
usage[].source | "runs_table" · "baas_log" · "row_estimate" · "ledger" · "mock" · "none" | yes | |
usage[].estimate | boolean | yes | |
usage[].note | string or null | yes | |
usage[].measuredAt | string (date-time) or null | yes | |
quotas | object[] | yes | |
quotas[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
quotas[].used | number or null | yes | at least 0 |
…and 18 more fields. The full schema is in openapi.json.
Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).
POST /v1/workspaces/{ws}/capacity/preview#
Price, land and problems of a capacity change; writes nothing.
- Authentication: the console’s session cookie.
- Token: not available. This route is for a signed-in person in the console (
403 console_onlyfor a token). - Who: member
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
ws | path | string | yes | 1 to 128 characters |
Request body (application/json)
| Field | Type | Required | Notes |
|---|---|---|---|
basedOnVersion | integer | yes | at least 0 |
idempotencyKey | string | 8 to 128 characters | |
plan | "free" · "maker" · "team" · "business" · "sovereign" | ||
lines | object[] | yes | up to 17 items |
lines[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
lines[].addOnSteps | integer | yes | 0 to 100000 |
Response 200
| Field | Type | Required | Notes |
|---|---|---|---|
basedOnVersion | integer | yes | at least 0 |
plan | object | yes | |
plan.from | "free" · "maker" · "team" · "business" · "sovereign" | yes | |
plan.to | "free" · "maker" · "team" · "business" · "sovereign" | yes | |
lines | object[] | yes | |
lines[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
lines[].fromSteps | integer | yes | at least 0 |
lines[].toSteps | integer | yes | at least 0 |
lines[].fromTotal | number | yes | at least 0 |
lines[].toTotal | number | yes | at least 0 |
lines[].monthlyDelta | object | yes | |
lines[].today | object | yes | |
lines[].effective | "now" | yes | |
lines[].periodFromTotal | number | at least 0 | |
lines[].periodToTotal | number | at least 0 | |
monthly | object or null | yes | |
monthly.from | object | yes | |
monthly.to | object | yes | |
monthly.delta | object | yes | |
today | object or null | yes | |
today.currency | "EUR" · "USD" · "KZT" | yes | |
today.minor | integer | yes | |
proration | object | yes | |
proration.daysCharged | integer | yes | at least 0 |
proration.daysCredited | integer | yes | at least 0 |
proration.daysInPeriod | integer | yes | |
land | object | yes | |
land.from | object | yes | |
land.to | object | yes | |
land.entitledFrom | integer | yes | at least 0 |
…and 7 more fields. The full schema is in openapi.json.
Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).
GET /v1/workspaces/{ws}/usage#
Daily usage per resource (measured or labelled estimate).
- Authentication: the console’s session cookie.
- Token: not available. This route is for a signed-in person in the console (
403 console_onlyfor a token). - Who: member
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
ws | path | string | yes | 1 to 128 characters |
range | query | "7d" · "30d" · "90d" | default "30d" |
Response 200
| Field | Type | Required | Notes |
|---|---|---|---|
range | "7d" · "30d" · "90d" | yes | |
from | string (date) | yes | |
to | string (date) | yes | |
timezone | string | yes | at least 1 characters |
units | object[] | yes | |
units[].kind | "cpu_time" · "concurrency" · "runs" · "requests" · "egress_gb" · "storage_db_gb" · "storage_files_gb" · "ai_credits" · … | yes | |
units[].source | "runs_table" · "baas_log" · "row_estimate" · "ledger" · "mock" · "none" | yes | |
units[].estimate | boolean | yes | |
units[].note | string or null | yes | |
units[].points | object[] | yes | up to 93 items |
Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).