Download OpenAPI specification:
Public REST API for ohmyho.st hosting, projects, domains, email, credits and exports.
{- "user_id": "string",
- "name": "string",
- "email": "user@example.com",
- "email_verified": true,
- "organizations": [
- {
- "id": "string",
- "workos_id": "string",
- "name": "string"
}
], - "organization_ids": [
- "string"
], - "signup_source": "string",
- "attributed_at": "2019-08-24T14:15:22Z",
- "initial_workspace_id": "string"
}Interactive session required; the first accepted source is immutable, repeat requests return it unchanged and no credits or Paid rights are granted by this endpoint.
| source required | string or null [ 1 .. 64 ] characters |
{- "source": "string"
}{- "user_id": "string",
- "name": "string",
- "email": "user@example.com",
- "email_verified": true,
- "organizations": [
- {
- "id": "string",
- "workos_id": "string",
- "name": "string"
}
], - "organization_ids": [
- "string"
], - "signup_source": "string",
- "attributed_at": "2019-08-24T14:15:22Z",
- "initial_workspace_id": "string"
}| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
{- "organization_id": "string",
- "name": "string",
- "workos_organization_id": "string",
- "plan": "free",
- "plan_source": "free",
- "paid_until": "2019-08-24T14:15:22Z",
- "available_micros": "string",
- "monthly_micros": "string",
- "one_time_micros": "string",
- "reserved_micros": "string",
- "next_expiry": "2019-08-24T14:15:22Z",
- "as_of": "2019-08-24T14:15:22Z"
}Stores a private contact request for twelve months, with idempotent replay and no account creation or marketing enrollment.
| name required | string [ 1 .. 120 ] characters |
| email required | string <email> <= 254 characters |
| company required | string <= 200 characters Empty for an individual. |
| message required | string [ 1 .. 8000 ] characters |
| idempotency_key required | string <uuid> |
{- "name": "string",
- "email": "user@example.com",
- "company": "string",
- "message": "string",
- "idempotency_key": "0cd90e5a-2c03-4ab6-81a8-d48818026e58"
}{- "accepted": true
}| email required | string <email> <= 254 characters |
| consent required | boolean Value: true |
| consent_version required | string Value: "beta-interest-2026-09-13" |
{- "email": "user@example.com",
- "consent": true,
- "consent_version": "beta-interest-2026-09-13"
}{- "accepted": true
}| feature required | string Enum: "eu" "iso27001" "soc2" |
| idempotency_key required | string <uuid> |
{- "feature": "eu",
- "idempotency_key": "0cd90e5a-2c03-4ab6-81a8-d48818026e58"
}{- "accepted": true
}Requires a current interactive user session. Organization membership and product permissions are revalidated. Only the first creation returns the full value; exact replay returns metadata and a null value. Save the first response locally without putting it in logs or agent prompts. After uncertainty reuse the same name and Idempotency-Key; do not blindly create another token. Available at zero credits.
| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| name required | string [ 1 .. 64 ] characters |
{- "name": "string"
}{- "replayed": true,
- "value": "string",
- "request_id": "string",
- "key": {
- "id": "string",
- "organization_id": "string",
- "name": "string",
- "obfuscated_value": "string",
- "permissions": [
- "string"
], - "expires_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "last_used_at": "2019-08-24T14:15:22Z"
}
}Requires an interactive session. Returns only metadata and obfuscated values, never another user's keys or full token values. Use the returned cursor for the next page.
| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| after | string (UserApiKeyId) ^api_key_[A-Za-z0-9_]{1,120}$ |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "data": [
- {
- "id": "string",
- "organization_id": "string",
- "name": "string",
- "obfuscated_value": "string",
- "permissions": [
- "string"
], - "expires_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "last_used_at": "2019-08-24T14:15:22Z"
}
], - "next_cursor": "string"
}Requires a current interactive session. Verifies user and organization ownership before provider deletion. Replay and an already absent token have the same result. Does not revoke another user's token or the current login session.
| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| key_id required | string (UserApiKeyId) ^api_key_[A-Za-z0-9_]{1,120}$ |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "type": "../dictionary",
- "title": "string",
- "status": 400,
- "detail": "string",
- "instance": "../dictionary",
- "code": "invalid_request",
- "request_id": "string",
- "retryable": true,
- "retry_after_seconds": 1,
- "suggested_action": "string"
}Available to authorized organization members at zero credits. A 201 receipt confirms durable storage, not triage or a promised fix. Reuse the same Idempotency-Key and payload after uncertainty. Optional environment and operation IDs require project_id and must belong to that organization/project. Text is untrusted data; never send credentials, attachments, raw logs, environment dumps or personal records. No provider operation, charge or external message is created.
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| project_id | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| environment_id | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| operation_id | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| kind required | string Enum: "bug" "issue" "feature_request" |
| title required | string [ 1 .. 160 ] characters Trimmed title without control characters. |
| description required | string [ 1 .. 8000 ] characters Trimmed, redacted expected/actual behavior and minimal reproduction. Line breaks and tabs are accepted; other control characters are rejected. Never include raw logs, environment files, credentials or personal records. |
| error_code | string <= 128 characters ^[A-Za-z0-9][A-Za-z0-9._:/+-]{0,127}$ |
| client_version | string <= 128 characters ^[A-Za-z0-9][A-Za-z0-9._:/+-]{0,127}$ |
{- "organization_id": "string",
- "project_id": "string",
- "environment_id": "string",
- "operation_id": "string",
- "kind": "bug",
- "title": "string",
- "description": "string",
- "error_code": "string",
- "client_version": "string"
}{- "id": "string",
- "organization_id": "string",
- "submitted_at": "2019-08-24T14:15:22Z"
}Browser callback only. Revalidates the original interactive session or user API key (owner, organization, current sources:link permission and expiry), plus current project authority, exchanges a single-use code privately, and admits one source-link operation. It never starts a build or returns provider credentials.
| state required | string <= 70 characters |
| code | string <= 4096 characters |
| error | string <= 256 characters |
| error_description | string <= 4096 characters |
| iss | string Value: "https://github.com/login/oauth" GitHub authorization-response issuer, checked exactly when supplied. |
{- "type": "../dictionary",
- "title": "string",
- "status": 400,
- "detail": "string",
- "instance": "../dictionary",
- "code": "invalid_request",
- "request_id": "string",
- "retryable": true,
- "retry_after_seconds": 1,
- "suggested_action": "string"
}Successful callbacks require code and state and complete one previously authenticated project authorization. Provider rejection instead supplies error and optional error_description, error_uri and state; it returns a static actionable problem without completing authorization or reflecting provider input. Success and error parameters cannot be combined. This callback grants no general unauthenticated product access.
| code | string [ 8 .. 2048 ] characters ^[A-Za-z0-9._~-]+$ |
| state | string [ 16 .. 2048 ] characters ^[A-Za-z0-9._~-]+$ |
| error | string^[a-z_]{1,64}$ |
| error_description | string <= 2048 characters |
| error_uri | string <= 2048 characters |
{- "type": "../dictionary",
- "title": "string",
- "status": 400,
- "detail": "string",
- "instance": "../dictionary",
- "code": "invalid_request",
- "request_id": "string",
- "retryable": true,
- "retry_after_seconds": 1,
- "suggested_action": "string"
}Returns the stable ohmyhost actor and internal organization identifiers derived from the bearer credential.
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "actor_id": "string",
- "organization_ids": [
- "string"
]
}Revokes only the session proven by the bearer credential, confirms its absence from active WorkOS sessions and records local terminal denial. No organization is required. The request body and query must be empty; caller-supplied session or user identifiers are not accepted. Repeated private processing cannot revoke another session. Once revoked, the old bearer is no longer authorized, including for a public replay. This synchronous identity-lifecycle operation does not create a project operation.
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
{- "revoked": true
}Creates an organization and its creator's Owner membership. Only a verified user session may call this endpoint; no existing organization is required. Repeating the same Idempotency-Key and name observes the same creation, never recreating revoked membership. After creation, repeat the public login flow to select the new organization before project mutations.
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ Stable creator-scoped key; repeat unchanged to observe an incomplete creation. |
| signup_source required | string [ 1 .. 64 ] characters ^[a-z0-9][a-z0-9_-]{0,63}$ Public acquisition source from the invitation URL's r parameter. Eligibility and promotional credits are server-configured; attribution is fixed for the user and rewards are never multiplied by retries or additional organizations. |
| name required | string [ 1 .. 128 ] characters ^\S(?:.*\S)?$ |
{- "signup_source": "string",
- "name": "string"
}{- "id": "string",
- "name": "string"
}Returns a human payment URL, never charges a saved card. Paid is USD 10/month; each top-up pack is USD 10 for 1000 credits, before tax. Retry the same offer, packs and Idempotency-Key after uncertainty. Browser return is not payment proof; read this checkout and the organization balance. A conflicting or existing subscription returns billing_purchase_conflict (409); read the original checkout or request an owner billing portal URL instead of another purchase. Works at zero credits.
| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| offer required | string Enum: "topup" "paid" |
| packs required | integer [ 1 .. 100 ] Paid requires exactly one pack. |
{- "offer": "topup",
- "packs": 1
}{- "organization_id": "string",
- "checkout_id": "string",
- "offer": "topup",
- "state": "open",
- "payment_confirmed": true,
- "expires_at": "2019-08-24T14:15:22Z",
- "packs": 1,
- "credited_micros": "string",
- "revoked_micros": "string",
- "paid_until": "2019-08-24T14:15:22Z",
- "required_action": "none"
}Reads Stripe and reconciles confirmed credits/refunds idempotently. payment_confirmed describes the original Checkout, not spendable credit or current Paid entitlement. Read organization credits for available funding; paid_until is the current paid coverage. No new purchase intent or payment is created; an uncertain original Checkout can resume using its stored identity.
| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| checkout_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "organization_id": "string",
- "checkout_id": "string",
- "offer": "topup",
- "state": "open",
- "payment_confirmed": true,
- "expires_at": "2019-08-24T14:15:22Z",
- "packs": 1,
- "credited_micros": "string",
- "revoked_micros": "string",
- "paid_until": "2019-08-24T14:15:22Z",
- "required_action": "none"
}Creates a short-lived human URL for invoices, payment method updates and cancellation at period end. Does not charge or change the subscription itself. Customer and return URL are server-selected. Request a fresh URL if the portal has expired. Works at zero credits.
| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{ }{- "organization_id": "string",
- "created_at": "2019-08-24T14:15:22Z"
}Returns posted credits and reservations, in microcredits (one credit is 1000000 microcredits). Monthly entitlement posting is idempotent. Only the organization Owner may read this balance. active_meters names the currently billed sources; unreported usage is not included. platform_overrun_micros is recorded platform exposure, not customer debt. Remains available at zero credit.
| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "organization_id": "string",
- "unit": "microcredits",
- "as_of": "2019-08-24T14:15:22Z",
- "available_micros": "string",
- "reserved_micros": "string",
- "spent_micros": "string",
- "expired_micros": "string",
- "platform_overrun_micros": "string",
- "grace_started_at": "2019-08-24T14:15:22Z",
- "grace_expires_at": "2019-08-24T14:15:22Z",
- "active_meters": [
- "string"
], - "rate_cards": [
- {
- "id": "string",
- "currency": "USD",
- "published_at": "2019-08-24T14:15:22Z",
- "effective_from": "2019-08-24T14:15:22Z",
- "rates": [
- {
- "meter": "string",
- "unit": "string",
- "units_per_charge": "string",
- "provider_cost_micros": "string",
- "credit_micros": "string"
}
]
}
]
}Owner-only event-month ledger totals, including signed corrections posted by as_of. Returns up to 20 projects per page in ID order; use next_cursor with the same month. Current unresolved reservations are separate from measured consumption. Null environment_id means project-shared cost, never guessed Dev allocation. Only posted measurements are included; this is not a complete provider invoice or zero-usage guarantee. Billing may arrive later. No credit is granted or charged by this read; it remains usable at zero credits.
| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| month required | string^20[0-9]{2}-(0[1-9]|1[0-2])$ |
| cursor | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "organization_id": "string",
- "month": "string",
- "as_of": "2019-08-24T14:15:22Z",
- "unit": "microcredits",
- "next_cursor": "string",
- "data": [
- {
- "project_id": "string",
- "reserved_micros": "string",
- "meters": [
- {
- "environment_id": "string",
- "meter": "string",
- "unit": "string",
- "rate_card_id": "string",
- "quantity": "string",
- "charged_micros": "string",
- "funded_micros": "string",
- "platform_overrun_micros": "string"
}
]
}
]
}Owner-only and available at zero credits. Exports each confirmed physical project database once, including separate Dev/Prod SQL or one shared SQL file. Excludes files, source code and configuration. At most one accepted export per project per rolling 24 hours; failed jobs still count and idempotent replay returns the original operation. The user retains the password. Poll getProjectExport; do not create another job while it is running.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| password required | string [ 1 .. 1024 ] characters Non-blank user-controlled ZIP password, at most 1024 UTF-8 bytes. Never include it in logs or command-line arguments. |
{- "password": "string"
}{- "id": "string",
- "state": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "result": { },
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "progress": {
- "build_completed_at": "2019-08-24T14:15:22Z",
- "phase": "queued",
- "project_id": "string",
- "deployment_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 60,
- "suggested_action": "string"
}, - "reconciliation": {
- "state": "required",
- "attempt_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "suggested_action": "string"
}
}Owner-only, including at zero credits. Poll queued/running jobs after next_poll_after_seconds. A verified SQL ZIP is retained seven days. Its signed download URL is valid 24 hours and is issued only with at least 24 hours of retention left; otherwise download fields are null. Treat the URL as a secret bearer capability. Neither the password nor any permanent storage credential can be retrieved. Generic operation reads never contain this capability.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| export_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "id": "string",
- "project_id": "string",
- "state": "queued",
- "requested_at": "2019-08-24T14:15:22Z",
- "next_request_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 5,
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "archive": {
- "bytes": 1,
- "sha256": "string",
- "sql_files": [
- "dev.sql"
], - "captured_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "download_expires_at": "2019-08-24T14:15:22Z"
}
}Owner-only snapshot of UTC-calendar-month measured usage and all open reservations. No budget means shared organization funds; continue mode does not stop at the threshold.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "project_id": "string",
- "amount_micros": "string",
- "mode": "continue",
- "used_micros": "string",
- "reserved_micros": "string",
- "period_start": "2019-08-24T14:15:22Z",
- "period_end": "2019-08-24T14:15:22Z",
- "as_of": "2019-08-24T14:15:22Z"
}Changes only the budget policy, never credit grants or usage. amount_micros null clears the budget and requires continue mode. stop rejects new billable work when measured monthly usage plus reservations reaches the limit. This local setting completes atomically with its operation, audit and idempotent response; no provider job is queued. Replaying an old key returns its original snapshot without restoring its old policy.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
required | CreditMicros (string) or null |
| mode required | string Enum: "continue" "stop" |
{- "amount_micros": "string",
- "mode": "continue"
}{- "project_id": "string",
- "amount_micros": "string",
- "mode": "continue",
- "used_micros": "string",
- "reserved_micros": "string",
- "period_start": "2019-08-24T14:15:22Z",
- "period_end": "2019-08-24T14:15:22Z",
- "as_of": "2019-08-24T14:15:22Z"
}Returns a stable ULID-ordered page across only the caller's authorized organizations.
| cursor | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Opaque continuation cursor returned by the preceding project page. |
| limit | integer [ 1 .. 100 ] Default: 50 Maximum number of projects to return. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "items": [
- {
- "id": "string",
- "organization_id": "string",
- "name": "string",
- "handle": "string",
- "data_mode": "shared",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "next_cursor": "string"
}Atomically records the project and a durable operation for asynchronous processing.
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| organization_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
| data_mode | string (ProjectDataMode) Enum: "shared" "isolated" Chosen when the project is created. shared uses one database and a shared file namespace across Dev/Prod; isolated keeps their database/Auth records and files separate. Skills recommend isolated development, but the customer chooses the additional measured database consumption. Promotion applies pending schema migrations to an isolated Prod database without copying Dev data. Changing an established mode requires an explicit data migration. |
| name required | string [ 1 .. 128 ] characters ^\S(?:.*\S)?$ |
{- "organization_id": "string",
- "data_mode": "shared",
- "name": "string"
}{- "id": "string",
- "state": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "result": { },
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "progress": {
- "build_completed_at": "2019-08-24T14:15:22Z",
- "phase": "queued",
- "project_id": "string",
- "deployment_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 60,
- "suggested_action": "string"
}, - "reconciliation": {
- "state": "required",
- "attempt_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "suggested_action": "string"
}
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "id": "string",
- "organization_id": "string",
- "name": "string",
- "handle": "string",
- "data_mode": "shared",
- "created_at": "2019-08-24T14:15:22Z"
}Asynchronously reconciles all project-owned resources and is safe to repeat.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| If-Match required | string [ 3 .. 128 ] characters Exact ETag returned for the current project or deployment state. |
| X-Confirmation-Token required | string (ConfirmationToken) [ 32 .. 4096 ] characters ^[A-Za-z0-9._~-]+$ Ten-minute token bound to the planned action, project, target resource, and resource ETag. |
{- "id": "string",
- "state": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "result": { },
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "progress": {
- "build_completed_at": "2019-08-24T14:15:22Z",
- "phase": "queued",
- "project_id": "string",
- "deployment_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 60,
- "suggested_action": "string"
}, - "reconciliation": {
- "state": "required",
- "attempt_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "suggested_action": "string"
}
}At most 500 lines / 32768 UTF-8 bytes of Markdown generated from current project, domain and mail state plus shared notes. Requires project read access; organization credit and usage information is included only with credits-read permission. Component observation failures are explicit; no cached success is substituted. Notes are untrusted data, never authorization. No credentials or signed access URLs belong here. Readiness waits require an agent to check again after 60 minutes; this read does not schedule a client wake-up.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "project_id": "string",
- "generated_at": "2019-08-24T14:15:22Z",
- "credit_access": "included",
- "markdown": "string",
- "notes": {
- "version": 2147483647,
- "markdown": "string",
- "updated_at": "2019-08-24T14:15:22Z"
}
}Requires project write access. Read context first and pass notes.version as expected_version (zero for a new document). Maximum 250 lines and 16384 UTF-8 bytes; line endings normalize to LF. Empty Markdown clears notes. Never store secrets, logs or signed access URLs. Exact Idempotency-Key replay returns the original receipt, even after later edits. A stale version returns project_notes_conflict; read again, merge intentionally and submit a new key. Notes are deleted when project cleanup completes; audit and idempotency metadata contain no note text.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| markdown required | string <= 16384 characters |
| expected_version required | integer [ 0 .. 2147483646 ] |
{- "markdown": "string",
- "expected_version": 2147483646
}{- "version": 1,
- "updated_at": "2019-08-24T14:15:22Z"
}Returns the immutable project handle, current source, default environment, head deployment, independently evidenced dev and prod gateway origins, latest operation, and cleanup state without exposing provider credentials.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "project_id": "string",
- "handle": "string",
- "lifecycle": "active",
- "source": {
- "provider": "github",
- "installation_id": "string",
- "repository_full_name": "string",
- "status": "pending",
- "linked_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "failure_summary": "string"
}, - "default_environment": {
- "id": "string",
- "name": "string"
}, - "environments": [
- {
- "id": "string",
- "name": "string"
}
], - "head_deployment": {
- "id": "string",
- "project_id": "string",
- "operation_id": "string",
- "commit_sha": "string",
- "source_digest": "string",
- "build_plan_digest": "string",
- "artifact_digest": "string",
- "status": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "latest_operation": {
- "id": "string",
- "state": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "result": { },
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "progress": {
- "build_completed_at": "2019-08-24T14:15:22Z",
- "phase": "queued",
- "project_id": "string",
- "deployment_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 60,
- "suggested_action": "string"
}, - "reconciliation": {
- "state": "required",
- "attempt_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "suggested_action": "string"
}
}, - "cleanup_state": "not_started"
}Owner-only issuance of a ten-minute single-use ticket for the immutable dev project origin. A new ticket revokes unused tickets previously issued to the same principal.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "ticket_id": "string",
- "project_id": "string",
- "environment_id": "string",
- "expires_at": "2019-08-24T14:15:22Z"
}Produces a non-mutating project deletion plan and a ten-minute action-bound confirmation token.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "action": "rollback",
- "project_id": "string",
- "target_deployment_id": "string",
- "target_artifact_digest": "string",
- "source_deployment_id": "string",
- "source_artifact_digest": "string",
- "source_environment": "dev",
- "target_environment": "prod",
- "resource_etag": "string",
- "effects": [
- "string"
], - "risks": [
- "string"
], - "confirmation_token": "stringstringstringstringstringst",
- "created_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z"
}Starts customer GitHub authorization using the current interactive user session or user-owned API key with sources:link permission. The original credential is bound to the ten-minute consent; switching credentials requires a new Idempotency-Key. No raw deployment token is stored or placed in the browser URL. Install the App for the selected repository if needed, then open authorization_url. The callback admits one source-link operation without building. Repeat the identical request/key to observe authorization and operation status; caller installation IDs are never accepted.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| repository_owner required | string [ 1 .. 39 ] characters ^[A-Za-z0-9](?:[A-Za-z0-9-]{0,37}[A-Za-z0-9])... |
| repository_name required | string [ 1 .. 100 ] characters ^[A-Za-z0-9._-]+$ |
{- "repository_owner": "string",
- "repository_name": "string"
}{- "authorization_id": "string",
- "status": "pending",
- "expires_at": "2019-08-24T14:15:22Z",
- "operation_id": "string",
- "installation_id": "string",
- "repository_id": "string",
- "repository_owner": "string",
- "repository_name": "string"
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "provider": "github",
- "installation_id": "string",
- "repository_full_name": "string",
- "status": "pending",
- "linked_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "failure_summary": "string"
}Configures exactly one Git branch whose signed pushes deploy immutable commits to dev. Production remains an explicit promotion.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| branch required | string [ 1 .. 1024 ] characters ^(?!.*(?:\.\.|@\{|//|\\|[~^:?*\[\]\x00-\x20\x... Exact Git branch accepted by Git check-ref-format branch rules; control/space, dot-lock, reflog, range and metacharacter forms are rejected. |
| enabled required | boolean |
{- "branch": "string",
- "enabled": true
}{- "branch": "string",
- "ref": "string",
- "environment": "dev",
- "enabled": true,
- "generation": 1,
- "grant_status": "active",
- "updated_at": "2019-08-24T14:15:22Z"
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "branch": "string",
- "ref": "string",
- "environment": "dev",
- "enabled": true,
- "generation": 1,
- "grant_status": "active",
- "updated_at": "2019-08-24T14:15:22Z"
}Creates or replays one short-lived authorization URL for the customer Cloudflare zone bound to the project's Paid domain. Pending requests replay the original handoff. Expired or consumed requests return cloudflare_authorization_closed (409); read current DNS authorization status and reuse a valid matching grant, or request a fresh authorization with a new key. No provider credential is returned.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| zone required | string [ 4 .. 253 ] characters ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a... |
{- "zone": "string"
}{- "authorization_id": "string",
- "expires_at": "2019-08-24T14:15:22Z"
}Returns only the fixed zone, closed scope set, expiry, and authorization state; provider credentials are never exposed.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "status": "not_authorized",
- "zone": "string",
- "scopes": [
- "dns.write"
], - "expires_at": "2019-08-24T14:15:22Z"
}Starts an idempotent durable operation for the exact project-derived development, production, and mail hostnames. The request has no body.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
{- "id": "string",
- "state": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "result": { },
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "progress": {
- "build_completed_at": "2019-08-24T14:15:22Z",
- "phase": "queued",
- "project_id": "string",
- "deployment_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 60,
- "suggested_action": "string"
}, - "reconciliation": {
- "state": "required",
- "attempt_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "suggested_action": "string"
}
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| hostname required | string [ 4 .. 253 ] characters ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a... |
{- "hostname": "string"
}{- "status": "planned",
- "hostname": "string",
- "environment": "prod",
- "cname_target": "customers.omh.st",
- "effects": [
- "string"
], - "risks": [
- "string"
]
}Requires a confirmed current Paid service period and no expired credit-exhaustion grace. Returns paid_plan_required without a Paid period, or insufficient_organization_credits after seven days with no available credits, without provider mutation. Top-ups restore exhausted Paid access but do not create or extend a Paid service period.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| hostname required | string [ 4 .. 253 ] characters ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a... |
{- "hostname": "string"
}{- "status": "not_configured",
- "suspension_reason": "paid_plan_required",
- "hostname": "string",
- "environment": "prod",
- "cname_target": "customers.omh.st",
- "custom_hostname_status": "string",
- "ssl_status": "string",
- "validation_records": [
- {
- "type": "CNAME",
- "name": "string",
- "content": "string",
- "purpose": "traffic"
}
],
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "status": "not_configured",
- "suspension_reason": "paid_plan_required",
- "hostname": "string",
- "environment": "prod",
- "cname_target": "customers.omh.st",
- "custom_hostname_status": "string",
- "ssl_status": "string",
- "validation_records": [
- {
- "type": "CNAME",
- "name": "string",
- "content": "string",
- "purpose": "traffic"
}
],
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| hostname required | string [ 4 .. 253 ] characters ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a... |
{- "hostname": "string"
}{- "status": "not_configured",
- "suspension_reason": "paid_plan_required",
- "hostname": "string",
- "environment": "prod",
- "cname_target": "customers.omh.st",
- "custom_hostname_status": "string",
- "ssl_status": "string",
- "validation_records": [
- {
- "type": "CNAME",
- "name": "string",
- "content": "string",
- "purpose": "traffic"
}
],
}Create-only admission for one canonical sender subdomain, requiring a confirmed current Paid service period. Top-ups and promotional credits do not enable Paid. Provider mutation occurs only inside a later authorized deployment Workflow.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| domain required | string [ 4 .. 253 ] characters ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a... |
{- "domain": "string"
}{- "domain": "string",
- "status": "configured",
- "configured_at": "2019-08-24T14:15:22Z"
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "domain": "string",
- "status": "configured",
- "configured_at": "2019-08-24T14:15:22Z"
}Resolves immutable inputs and estimates effects without provider mutation or billable work. Mail and the currently supported mail-backed Better Auth contract require a confirmed Paid service period; it is checked again before build reservation. An old sender configuration is not Paid authority.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| commit_sha required | string (GitCommitSha) ^[0-9a-f]{40}$ Exact full Git commit object identifier; abbreviated or branch references are forbidden. |
{- "commit_sha": "string"
}{- "id": "string",
- "project_id": "string",
- "commit_sha": "string",
- "source_digest": "string",
- "build_plan_digest": "string",
- "application_root": "string",
- "artifact_digest": "string",
- "runtime": "cloudflare_workers_static_assets",
- "resource_effects": [
- "string"
], - "limits": [
- "string"
], - "estimated_cost": {
- "amount_micros": "string",
- "currency": "string",
- "rate_card_version": "string",
- "credit_micros": "string",
- "provider_cost_micros": "string",
- "scope": "build_compute",
- "reserved_minutes": "string"
}, - "risks": [
- "string"
], - "destructive_effects": [
- "string"
], - "required_confirmations": [
- "string"
], - "created_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z"
}Reserves the quoted build credits from the shared organization pool and starts the exact reviewed plan as one durable operation. Insufficient available credits or an explicit project stop budget rejects before operation creation or provider work. Repeating the accepted request never reserves twice.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| plan_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ |
{- "plan_id": "string"
}{- "id": "string",
- "state": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "result": { },
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "progress": {
- "build_completed_at": "2019-08-24T14:15:22Z",
- "phase": "queued",
- "project_id": "string",
- "deployment_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 60,
- "suggested_action": "string"
}, - "reconciliation": {
- "state": "required",
- "attempt_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "suggested_action": "string"
}
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| cursor | string^[A-Za-z0-9_-]+$ Opaque continuation cursor returned by the preceding deployment page. |
| limit | integer [ 1 .. 100 ] Default: 50 Maximum number of deployments to return. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "items": [
- {
- "id": "string",
- "project_id": "string",
- "operation_id": "string",
- "commit_sha": "string",
- "source_digest": "string",
- "build_plan_digest": "string",
- "artifact_digest": "string",
- "status": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "next_cursor": "string"
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| deployment_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Deployment identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "id": "string",
- "project_id": "string",
- "operation_id": "string",
- "commit_sha": "string",
- "source_digest": "string",
- "build_plan_digest": "string",
- "artifact_digest": "string",
- "status": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| deployment_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Deployment identifier. |
| cursor | string <= 2048 characters |
| limit | integer [ 1 .. 100 ] Default: 100 |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "items": [
- {
- "id": "string",
- "source": "build",
- "code": "string",
- "message": "string",
- "exception_class": "string",
- "file": "string",
- "line": 1,
- "column": 0,
- "route": "string",
- "request_id": "string",
- "trace_id": "string",
- "duration_ms": 900000,
- "occurred_at": "2019-08-24T14:15:22Z"
}
], - "next_cursor": "string"
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| deployment_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Deployment identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "type": "../dictionary",
- "title": "string",
- "status": 400,
- "detail": "string",
- "instance": "../dictionary",
- "code": "invalid_request",
- "request_id": "string",
- "retryable": true,
- "retry_after_seconds": 1,
- "suggested_action": "string"
}Requires project-write access and explicit confirmation. Reads the organization plan at acceptance (Free 0.25 CU/1 GB/60 idle seconds or Paid 0.5 CU/2 GB/120 idle seconds). Changes the existing database in place without copying or resetting data. Shared Dev/Prod data changes both environments. A brief connection interruption is possible. Poll the returned operation every 60 seconds; do not submit a second change while it runs. Completion requires actual provider settings and settled operations. Actual CU consumption remains metered. Performance requires effective Paid access and an active rate; it selects fixed 1 CU/4 GB/300 idle seconds at 2.5 times Paid-standard database compute credits per equal active minute. Only database compute changes price. Raw CU-second measurements are preserved; mixed or uncertain transition hours waive the premium. Returning to standard restores the effective plan size.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| environment required | string Enum: "dev" "prod" |
| profile required | string Enum: "standard" "performance" |
| confirm required | boolean Value: true |
{- "environment": "dev",
- "profile": "standard",
- "confirm": true
}{- "id": "string",
- "state": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "result": { },
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "progress": {
- "build_completed_at": "2019-08-24T14:15:22Z",
- "phase": "queued",
- "project_id": "string",
- "deployment_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 60,
- "suggested_action": "string"
}, - "reconciliation": {
- "state": "required",
- "attempt_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "suggested_action": "string"
}
}Project readers can observe current Dev or Prod compute without receiving provider IDs or credentials and without executing SQL or waking the database. Explicitly shared data resolves to the same physical database for both environments. A null database means the owned environment has no confirmed managed placement. Provider failures return a problem, never invented defaults. Configuration describes observed settings, not a completed resize operation. suspend_timeout_seconds is the configured provider value; 0 means provider default and -1 means never suspend.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| environment | string Default: "dev" Enum: "dev" "prod" |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "project_id": "string",
- "environment": "dev",
- "data_mode": "shared",
- "observed_at": "2019-08-24T14:15:22Z",
- "database": { }
}Executes one SELECT through the project's least-privilege read-only role. Connection credentials are never returned.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| environment required | string Value: "dev" |
| statement required | string [ 1 .. 4096 ] characters ^\s*(?:SELECT|WITH)\b |
required | Array of strings or numbers or booleans or null <= 32 items |
{- "environment": "dev",
- "statement": "string",
- "parameters": [
- "string"
]
}{- "environment": "dev",
- "rows": [
- { }
], - "row_count": 100,
- "truncated": true
}Produces a non-mutating rollback plan for an immutable deployment artifact.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| target_deployment_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Immutable deployment selected as the rollback target. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "action": "rollback",
- "project_id": "string",
- "target_deployment_id": "string",
- "target_artifact_digest": "string",
- "source_deployment_id": "string",
- "source_artifact_digest": "string",
- "source_environment": "dev",
- "target_environment": "prod",
- "resource_etag": "string",
- "effects": [
- "string"
], - "risks": [
- "string"
], - "confirmation_token": "stringstringstringstringstringst",
- "created_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z"
}Republishes the target deployment artifact without starting a new build.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| target_deployment_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Immutable deployment selected as the rollback target. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| If-Match required | string [ 3 .. 128 ] characters Exact ETag returned for the current project or deployment state. |
| X-Confirmation-Token required | string (ConfirmationToken) [ 32 .. 4096 ] characters ^[A-Za-z0-9._~-]+$ Ten-minute token bound to the planned action, project, target resource, and resource ETag. |
{- "id": "string",
- "state": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "result": { },
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "progress": {
- "build_completed_at": "2019-08-24T14:15:22Z",
- "phase": "queued",
- "project_id": "string",
- "deployment_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 60,
- "suggested_action": "string"
}, - "reconciliation": {
- "state": "required",
- "attempt_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "suggested_action": "string"
}
}Produces a non-mutating, ten-minute plan that binds the current succeeded dev deployment and current prod head without rebuilding the artifact.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| source_deployment_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Current succeeded dev deployment whose immutable artifact will be promoted. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "action": "rollback",
- "project_id": "string",
- "target_deployment_id": "string",
- "target_artifact_digest": "string",
- "source_deployment_id": "string",
- "source_artifact_digest": "string",
- "source_environment": "dev",
- "target_environment": "prod",
- "resource_etag": "string",
- "effects": [
- "string"
], - "risks": [
- "string"
], - "confirmation_token": "stringstringstringstringstringst",
- "created_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z"
}Activates the immutable artifact from the current succeeded dev deployment in prod without rebuilding it.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| source_deployment_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Current succeeded dev deployment whose immutable artifact will be promoted. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| If-Match required | string [ 3 .. 128 ] characters Exact ETag returned for the current project or deployment state. |
| X-Confirmation-Token required | string (ConfirmationToken) [ 32 .. 4096 ] characters ^[A-Za-z0-9._~-]+$ Ten-minute token bound to the planned action, project, target resource, and resource ETag. |
{- "id": "string",
- "state": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "result": { },
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "progress": {
- "build_completed_at": "2019-08-24T14:15:22Z",
- "phase": "queued",
- "project_id": "string",
- "deployment_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 60,
- "suggested_action": "string"
}, - "reconciliation": {
- "state": "required",
- "attempt_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "suggested_action": "string"
}
}Returns names and revisions only. Secret values are never readable through the public API.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| environment_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Environment identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "items": [
- {
- "name": "string",
- "revision": 1,
- "key_version": 1,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "desired_generation": 0,
- "applied_generation": 0,
- "delivery_state": "not_deployed",
- "runtime_provider": "wfp",
- "applied_secret_count": 100,
- "last_error": "string"
}
], - "desired_generation": 0,
- "applied_generation": 0,
- "delivery_state": "not_deployed",
- "runtime_provider": "wfp",
- "applied_secret_count": 100,
- "last_error": "string"
}Accepts a write-only value and returns metadata only. Replays require the same canonical value digest.
| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| environment_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Environment identifier. |
| secret_name required | string^[A-Z][A-Z0-9_]{0,127}$ Uppercase environment-variable name. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
| value required | string [ 1 .. 5120 ] characters Write-only plaintext value. It is encrypted before persistence and never returned. |
{- "value": "string"
}{- "name": "string",
- "revision": 1,
- "key_version": 1,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "desired_generation": 0,
- "applied_generation": 0,
- "delivery_state": "not_deployed",
- "runtime_provider": "wfp",
- "applied_secret_count": 100,
- "last_error": "string"
}| project_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Project identifier. |
| environment_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Environment identifier. |
| secret_name required | string^[A-Z][A-Z0-9_]{0,127}$ Uppercase environment-variable name. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
{- "name": "string",
- "status": "deleted",
- "desired_generation": 0,
- "applied_generation": 0,
- "delivery_state": "not_deployed",
- "runtime_provider": "wfp",
- "applied_secret_count": 100,
- "last_error": "string"
}| operation_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Operation identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "id": "string",
- "state": "queued",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "result": { },
- "error": {
- "code": "operation_failed",
- "message": "string",
- "retryable": false,
- "suggested_action": "string"
}, - "progress": {
- "build_completed_at": "2019-08-24T14:15:22Z",
- "phase": "queued",
- "project_id": "string",
- "deployment_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "next_poll_after_seconds": 60,
- "suggested_action": "string"
}, - "reconciliation": {
- "state": "required",
- "attempt_id": "string",
- "observed_at": "2019-08-24T14:15:22Z",
- "suggested_action": "string"
}
}Owner-only, idempotent recovery for an operation retained after an uncertain platform delivery or provider mutation. The control plane derives the exact recovery decision, including any deterministic internal Workflow handoff; the request has no body. Exhausted lifecycle recovery returns reconciliation_exhausted (409, retryable false); stop retries and report the original operation through feedback.
| operation_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Operation identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
| Idempotency-Key required | string [ 1 .. 128 ] characters Identifies one mutation and its canonical request payload. |
{- "reconciliation_id": "string",
- "operation_id": "string",
- "state": "completed"
}| operation_id required | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Operation identifier. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "type": "../dictionary",
- "title": "string",
- "status": 400,
- "detail": "string",
- "instance": "../dictionary",
- "code": "invalid_request",
- "request_id": "string",
- "retryable": true,
- "retry_after_seconds": 1,
- "suggested_action": "string"
}Returns events visible to the authenticated organization in stable descending order.
| project_id | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Restricts the page to one visible project. |
| operation_id | string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$ Restricts the page to one visible operation. |
| cursor | string^[A-Za-z0-9_-]+$ Opaque continuation cursor returned by the preceding page. |
| limit | integer [ 1 .. 100 ] Default: 50 Maximum number of audit events to return. |
| X-Request-Id | string [ 1 .. 128 ] characters Optional caller-provided correlation identifier. |
{- "items": [
- {
- "audit_event_id": "string",
- "project_id": "string",
- "operation_id": "string",
- "event_type": "string",
- "actor_type": "string",
- "actor_id": "string",
- "payload": {
- "summary": "string"
}, - "occurred_at": "2019-08-24T14:15:22Z"
}
], - "next_cursor": "string"
}