Skip to content

Background operations

Some operations start work in the cloud and answer 202 straight away. The work isn't finished at that point, so read the resource until it reaches a final state. Wait a few seconds between reads.

Create a project

POST /orgs/{org_id}/projects answers 202, with the project's address in Location and its default region pending.

{
  "data": {
    "id": "a9d27e10-64b3-4f18-8c05-71e3f6ab20d9",
    "name": "web",
    "description": "Storefront",
    "status": "active",
    "created_at": "2026-09-14T15:04:05Z",
    "regions": [ { "region": "yul1", "status": "pending" } ]
  }
}

Read the project until the region's status is ready or failed:

while :; do
  status=$(curl -s "$BASE/orgs/$ORG_ID/projects/$PROJECT_ID" \
    -H "Authorization: Bearer $BREQWATR_API_KEY" | jq -r '.data.regions[0].status')
  [ "$status" != "pending" ] && break
  sleep 5
done
echo "$status"

The default region is listed first.

Provision a project in another region

A project is provisioned in each extra region when you first ask for it. Find region ids with GET /regions, then:

curl -s -X POST "$BASE/orgs/$ORG_ID/projects/$PROJECT_ID/regions/$REGION_ID/provisioning" \
  -H "Authorization: Bearer $BREQWATR_API_KEY"
Response Meaning
202, pending Provisioning has started, or a failed run is being retried. Read the project's regions until this one is ready or failed
200, ready Already provisioned, or the default region. Nothing was queued
409 project_not_ready The project is still being created. Wait for its default region first

To retry after failed, send the same request again.

Delete a project

DELETE /orgs/{org_id}/projects/{id} answers 202 with the project deleting. Teardown runs in the background, and the project answers 404 once it's gone.

A project still holding resources isn't deleted. It answers 409 deletion_blocked, saying what's in the way:

{
  "code": "deletion_blocked",
  "status": 409,
  "blocker": "volumes",
  "count": 2,
  "region": "yul1"
}

Delete those through OpenStack, then try again. If a region can't be checked, the request answers 503 cloud_unavailable with Retry-After, and nothing has changed.