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:
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.