Provisioning API · Internal testing only
deleteDomain
const url = 'https://api.builders.ac/api/provisioning/v1alpha1/domains/dom_01k5nb3wz7q2hj8vd4rt6ye9ma';const options = { method: 'DELETE', headers: {'Idempotency-Key': 'example', Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request DELETE \ --url https://api.builders.ac/api/provisioning/v1alpha1/domains/dom_01k5nb3wz7q2hj8vd4rt6ye9ma \ --header 'Authorization: Bearer <token>' \ --header 'Idempotency-Key: example'Destructive: requires proof of possession. Asynchronous, because the teardown takes mailboxes off Microsoft 365 before the domain goes, so it answers 202 with the operation rather than 204. Repeating it while the teardown runs returns the same operation. Proof is obtained on demand: first send this exact request without Sealed-Proof, open the Sealed-Nonce from the 403 response, then retry without changing the request.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Domain TypeIDs are accepted case-insensitively. Responses use canonical lowercase.
Header Parameters
Section titled “Header Parameters”The one-time plaintext obtained by opening the Sealed-Nonce challenge for this exact request. Omit it initially; after a 403 challenge, retry with the same method, route, resources, query, body, credential, and Idempotency-Key.
A client-generated key containing 1–255 printable ASCII characters (0x20 through 0x7E). Reuse it only for exact retries of one logical request.
Responses
Section titled “Responses”Accepted. Poll the operation.
object
Canonical lowercase TypeID.
Canonical lowercase TypeID.
Nearest ancestor public Operation which caused this child Operation. Omitted on root Operations.
object
object
object
Canonical lowercase TypeID.
Cancellation was requested. It is honoured only at a safe boundary, so keep polling state and done to learn whether it took effect.
Next date by which meaningful progress should be visible.
Public completion SLA for this Operation.
Example
{ "id": "op_01k5nd7v2qe9ma4bt3rz8hy6xw", "object": "operation", "workspace_id": "wsp_01k5n2rf8bd3xa9e7m4jt6vq5h", "parent_operation_id": "op_01k5nf4b8yt3qd7vm2ae9rz6hx", "type": "domain.deprovision", "state": "pending", "done": false, "target": { "type": "domain", "ids": [ "dom_01k5nb3wz7q2hj8vd4rt6ye9ma" ] }, "metadata": { "domain": { "id": "dom_01k5nb3wz7q2hj8vd4rt6ye9ma", "name": "northwind-outbound.com" }, "state": "pending" }, "created_at": "2026-04-15T09:15:04Z", "update_by_date": "2026-04-15T09:45:04Z", "completion_by_date": "2026-04-15T10:15:04Z"}Headers
Section titled “Headers”The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.
Authentication required. The example shows authentication_required; this status is also answered with invalid_api_key. Branch on code, not on the status.
object
Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.
object
Example
{ "type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/authentication_required", "title": "Authentication required", "status": 401, "detail": "Provide an active Provisioning API Key as a Bearer token.", "code": "authentication_required", "retryable": false, "correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3"}Headers
Section titled “Headers”The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.
Either permission is absent, or API-secret proof is missing or invalid. A proof challenge carries a request-bound Sealed-Nonce and WWW-Authenticate; open it and retry this exact request.
object
Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.
object
Example
{ "type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/insufficient_proof", "title": "API Secret proof required", "status": 403, "detail": "Open the Sealed-Nonce with the API Secret, then retry this request with the resulting value in Sealed-Proof.", "code": "insufficient_proof", "retryable": true, "correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3"}Headers
Section titled “Headers”A credential- and request-bound, single-use age v1 challenge. Strip age-v1., Base64URL-decode the remaining text to the binary age file, then open it with the matching API Secret.
Proof challenges are never cached.
Present as Sealed error="insufficient_proof" only for a proof challenge.
The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.
Not found. The example shows not_found.
object
Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.
object
Example
{ "type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/not_found", "title": "Not found", "status": 404, "detail": "The requested resource was not found.", "code": "not_found", "retryable": false, "correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3"}Headers
Section titled “Headers”The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.
Another operation already holds this domain. Wait for it to finish, then delete again.
object
Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.
object
The Operation holding the resource. Null when the blocking run is a dashboard workflow, which has no public Operation; absent on chapters that do not report it.
Examples
Resource operation in progress
{ "type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/resource_operation_in_progress", "title": "Resource operation in progress", "status": 409, "detail": "Wait for the current operation to finish, then retry with a new Idempotency-Key.", "code": "resource_operation_in_progress", "retryable": true, "correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3", "operation_id": "op_01k5nd7v2qe9ma4bt3rz8hy6xw"}Headers
Section titled “Headers”The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.
Rate limit exceeded. The example shows rate_limit_exceeded.
object
Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.
object
Example
{ "type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/rate_limit_exceeded", "title": "Rate limit exceeded", "status": 429, "detail": "Too many requests were made for this policy.", "code": "rate_limit_exceeded", "retryable": true, "correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3", "retry_after": "2026-04-15T09:16:04Z"}Headers
Section titled “Headers”The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.
Service unavailable. The example shows service_unavailable; this status is also answered with encryption_keys_unavailable, provider_unreachable. Branch on code, not on the status.
object
Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.
object
Example
{ "type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/service_unavailable", "title": "Service unavailable", "status": 503, "detail": "Retry the request later; the service is temporarily unavailable.", "code": "service_unavailable", "retryable": true, "correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3"}Headers
Section titled “Headers”The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.