ohmyho.st API (0.0.0)

Download OpenAPI specification:

Public REST API for ohmyho.st hosting, projects, domains, email, credits and exports.

Read the current interactive user profile and signup attribution

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "user_id": "string",
  • "name": "string",
  • "email": "user@example.com",
  • "email_verified": true,
  • "organizations": [
    ],
  • "organization_ids": [
    ],
  • "signup_source": "string",
  • "attributed_at": "2019-08-24T14:15:22Z",
  • "initial_workspace_id": "string"
}

Record the authenticated user signup source once

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.

Authorizations:
BearerAuth
Request Body schema: application/json
required
source
required
string or null [ 1 .. 64 ] characters

Responses

Request samples

Content type
application/json
{
  • "source": "string"
}

Response samples

Content type
application/json
{
  • "user_id": "string",
  • "name": "string",
  • "email": "user@example.com",
  • "email_verified": true,
  • "organizations": [
    ],
  • "organization_ids": [
    ],
  • "signup_source": "string",
  • "attributed_at": "2019-08-24T14:15:22Z",
  • "initial_workspace_id": "string"
}

Read effective plan and monthly versus one-time credit balance

Authorizations:
BearerAuth
path Parameters
organization_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Responses

Response samples

Content type
application/json
{
  • "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"
}

Submit a contact or privacy question

Stores a private contact request for twelve months, with idempotent replay and no account creation or marketing enrollment.

Request Body schema: application/json
required
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>

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "email": "user@example.com",
  • "company": "string",
  • "message": "string",
  • "idempotency_key": "0cd90e5a-2c03-4ab6-81a8-d48818026e58"
}

Response samples

Content type
application/json
{
  • "accepted": true
}

Check a beta invitation source

query Parameters
r
string <= 64 characters

Responses

Response samples

Content type
application/json
{
  • "eligible": true
}

Register interest in the beta with explicit consent

Request Body schema: application/json
required
email
required
string <email> <= 254 characters
consent
required
boolean
Value: true
consent_version
required
string
Value: "beta-interest-2026-09-13"

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "consent": true,
  • "consent_version": "beta-interest-2026-09-13"
}

Response samples

Content type
application/json
{
  • "accepted": true
}

Record interest in a proposed feature

Request Body schema: application/json
required
feature
required
string
Enum: "eu" "iso27001" "soc2"
idempotency_key
required
string <uuid>

Responses

Request samples

Content type
application/json
{
  • "feature": "eu",
  • "idempotency_key": "0cd90e5a-2c03-4ab6-81a8-d48818026e58"
}

Response samples

Content type
application/json
{
  • "accepted": true
}

Read distinct active projects successfully deployed in the past seven days

Responses

Response samples

Content type
application/json
{
  • "deploys_7d": 0,
  • "observed_at": "2019-08-24T14:15:22Z"
}

Create a user-owned 90-day API token

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.

Authorizations:
BearerAuth
path Parameters
organization_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
header Parameters
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.

Request Body schema: application/json
required
name
required
string [ 1 .. 64 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "replayed": true,
  • "value": "string",
  • "request_id": "string",
  • "key": {
    }
}

List the current user's tokens in one organization

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.

Authorizations:
BearerAuth
path Parameters
organization_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
query Parameters
after
string (UserApiKeyId) ^api_key_[A-Za-z0-9_]{1,120}$
header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "next_cursor": "string"
}

Revoke one of the current user's API tokens

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.

Authorizations:
BearerAuth
path Parameters
organization_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
key_id
required
string (UserApiKeyId) ^api_key_[A-Za-z0-9_]{1,120}$
header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/problem+json
{
  • "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"
}

Store a redacted customer-agent feedback report

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.

Authorizations:
BearerAuth
header Parameters
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.

Request Body schema: application/json
required
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}$

Responses

Request samples

Content type
application/json
{
  • "organization_id": "string",
  • "project_id": "string",
  • "environment_id": "string",
  • "operation_id": "string",
  • "kind": "bug",
  • "title": "string",
  • "description": "string",
  • "error_code": "string",
  • "client_version": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "organization_id": "string",
  • "submitted_at": "2019-08-24T14:15:22Z"
}

Complete the bound GitHub browser authorization

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.

query Parameters
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.

Responses

Response samples

Content type
application/problem+json
{
  • "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"
}

Complete one Cloudflare DNS authorization

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.

query Parameters
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

Responses

Response samples

Content type
application/problem+json
{
  • "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"
}

Get the current authenticated identity

Returns the stable ohmyhost actor and internal organization identifiers derived from the bearer credential.

Authorizations:
BearerAuth
header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "actor_id": "string",
  • "organization_ids": [
    ]
}

Revoke the current signed-in user session

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.

Authorizations:
BearerAuth
header Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "revoked": true
}

Create an organization for the signed-in user

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.

Authorizations:
BearerAuth
header Parameters
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.

Request Body schema: application/json
required
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)?$

Responses

Request samples

Content type
application/json
{
  • "signup_source": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string"
}

Create or resume an owner's hosted Stripe Checkout

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.

Authorizations:
BearerAuth
path Parameters
organization_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
header Parameters
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.

Request Body schema: application/json
required
offer
required
string
Enum: "topup" "paid"
packs
required
integer [ 1 .. 100 ]

Paid requires exactly one pack.

Responses

Request samples

Content type
application/json
{
  • "offer": "topup",
  • "packs": 1
}

Response samples

Content type
application/json
{
  • "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"
}

Observe and reconcile an owner's original checkout

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.

Authorizations:
BearerAuth
path Parameters
organization_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
checkout_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "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"
}

Open the owner's Stripe billing portal

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.

Authorizations:
BearerAuth
path Parameters
organization_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Request Body schema: application/json
required
object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "organization_id": "string",
  • "created_at": "2019-08-24T14:15:22Z"
}

Read the owner's shared organization credit pool

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.

Authorizations:
BearerAuth
path Parameters
organization_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "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": [
    ],
  • "rate_cards": [
    ]
}

Read monthly measured usage by project and meter

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.

Authorizations:
BearerAuth
path Parameters
organization_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
query Parameters
month
required
string^20[0-9]{2}-(0[1-9]|1[0-2])$
cursor
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "organization_id": "string",
  • "month": "string",
  • "as_of": "2019-08-24T14:15:22Z",
  • "unit": "microcredits",
  • "next_cursor": "string",
  • "data": [
    ]
}

Request an asynchronous password-encrypted SQL ZIP

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
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.

Responses

Request samples

Content type
application/json
{
  • "password": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "state": "queued",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "result": { },
  • "error": {
    },
  • "progress": {
    },
  • "reconciliation": {
    }
}

Read export progress and its verified 24-hour download capability

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

export_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$
header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "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": {
    },
  • "archive": {
    }
}

Read a project's optional monthly credit budget

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "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"
}

Set or clear the owner's project budget

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
required
CreditMicros (string) or null
mode
required
string
Enum: "continue" "stop"

Responses

Request samples

Content type
application/json
{
  • "amount_micros": "string",
  • "mode": "continue"
}

Response samples

Content type
application/json
{
  • "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"
}

List projects visible to the current authenticated identity

Returns a stable ULID-ordered page across only the caller's authorized organizations.

Authorizations:
BearerAuth
query Parameters
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.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "string"
}

Create a project

Atomically records the project and a durable operation for asynchronous processing.

Authorizations:
BearerAuth
header Parameters
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.

Request Body schema: application/json
required
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)?$

Responses

Request samples

Content type
application/json
{
  • "organization_id": "string",
  • "data_mode": "shared",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "state": "queued",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "result": { },
  • "error": {
    },
  • "progress": {
    },
  • "reconciliation": {
    }
}

Get a project

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "organization_id": "string",
  • "name": "string",
  • "handle": "string",
  • "data_mode": "shared",
  • "created_at": "2019-08-24T14:15:22Z"
}

Delete a project

Asynchronously reconciles all project-owned resources and is safe to repeat.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "state": "queued",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "result": { },
  • "error": {
    },
  • "progress": {
    },
  • "reconciliation": {
    }
}

Read current project context for an agent

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "project_id": "string",
  • "generated_at": "2019-08-24T14:15:22Z",
  • "credit_access": "included",
  • "markdown": "string",
  • "notes": {
    }
}

Replace bounded shared project notes without losing concurrent edits

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
markdown
required
string <= 16384 characters
expected_version
required
integer [ 0 .. 2147483646 ]

Responses

Request samples

Content type
application/json
{
  • "markdown": "string",
  • "expected_version": 2147483646
}

Response samples

Content type
application/json
{
  • "version": 1,
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get the current project deployment status

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "project_id": "string",
  • "handle": "string",
  • "lifecycle": "active",
  • "source": {
    },
  • "default_environment": {
    },
  • "environments": [
    ],
  • "head_deployment": {
    },
  • "dev_url": "http://example.com",
  • "prod_url": "http://example.com",
  • "latest_operation": {
    },
  • "cleanup_state": "not_started"
}

Create a single-use dev access ticket

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{}

Plan project deletion

Produces a non-mutating project deletion plan and a ten-minute action-bound confirmation token.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "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": [
    ],
  • "risks": [
    ],
  • "confirmation_token": "stringstringstringstringstringst",
  • "created_at": "2019-08-24T14:15:22Z",
  • "expires_at": "2019-08-24T14:15:22Z"
}

Link a GitHub source repository

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
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._-]+$

Responses

Request samples

Content type
application/json
{
  • "repository_owner": "string",
  • "repository_name": "string"
}

Response samples

Content type
application/json
{
  • "authorization_id": "string",
  • "status": "pending",
  • "authorization_url": "http://example.com",
  • "installation_url": "http://example.com",
  • "expires_at": "2019-08-24T14:15:22Z",
  • "operation_id": "string",
  • "installation_id": "string",
  • "repository_id": "string",
  • "repository_owner": "string",
  • "repository_name": "string"
}

Get the linked source status

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "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"
}

Configure automatic GitHub push deployment

Configures exactly one Git branch whose signed pushes deploy immutable commits to dev. Production remains an explicit promotion.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "branch": "string",
  • "enabled": true
}

Response samples

Content type
application/json
{
  • "branch": "string",
  • "ref": "string",
  • "environment": "dev",
  • "enabled": true,
  • "generation": 1,
  • "grant_status": "active",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get automatic GitHub push deployment status

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "branch": "string",
  • "ref": "string",
  • "environment": "dev",
  • "enabled": true,
  • "generation": 1,
  • "grant_status": "active",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Start project-scoped Cloudflare DNS authorization

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
zone
required
string [ 4 .. 253 ] characters ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a...

Responses

Request samples

Content type
application/json
{
  • "zone": "string"
}

Response samples

Content type
application/json
{
  • "authorization_id": "string",
  • "authorization_url": "http://example.com",
  • "expires_at": "2019-08-24T14:15:22Z"
}

Get project-scoped Cloudflare DNS authorization status

Returns only the fixed zone, closed scope set, expiry, and authorization state; provider credentials are never exposed.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "status": "not_authorized",
  • "zone": "string",
  • "scopes": [
    ],
  • "expires_at": "2019-08-24T14:15:22Z"
}

Apply the server-derived project domains

Starts an idempotent durable operation for the exact project-derived development, production, and mail hostnames. The request has no body.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "state": "queued",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "result": { },
  • "error": {
    },
  • "progress": {
    },
  • "reconciliation": {
    }
}

Plan one Paid customer-owned hostname

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Request Body schema: application/json
required
hostname
required
string [ 4 .. 253 ] characters ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a...

Responses

Request samples

Content type
application/json
{
  • "hostname": "string"
}

Response samples

Content type
application/json
{
  • "status": "planned",
  • "hostname": "string",
  • "environment": "prod",
  • "cname_target": "customers.omh.st",
  • "effects": [
    ],
  • "risks": [
    ]
}

Apply one Paid customer-owned hostname

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
hostname
required
string [ 4 .. 253 ] characters ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a...

Responses

Request samples

Content type
application/json
{
  • "hostname": "string"
}

Response samples

Content type
application/json
{
  • "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": [
    ],
}

Read the Paid customer-owned hostname

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "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": [
    ],
}

Delete one exact Paid customer-owned hostname

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
hostname
required
string [ 4 .. 253 ] characters ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a...

Responses

Request samples

Content type
application/json
{
  • "hostname": "string"
}

Response samples

Content type
application/json
{
  • "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": [
    ],
}

Configure the project sender subdomain

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
domain
required
string [ 4 .. 253 ] characters ^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a...

Responses

Request samples

Content type
application/json
{
  • "domain": "string"
}

Response samples

Content type
application/json
Example
{
  • "domain": "string",
  • "status": "configured",
  • "configured_at": "2019-08-24T14:15:22Z"
}

Get sender-domain delegation status

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
Example
{
  • "domain": "string",
  • "status": "configured",
  • "configured_at": "2019-08-24T14:15:22Z"
}

Plan a deployment

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Request Body schema: application/json
required
commit_sha
required
string (GitCommitSha) ^[0-9a-f]{40}$

Exact full Git commit object identifier; abbreviated or branch references are forbidden.

Responses

Request samples

Content type
application/json
{
  • "commit_sha": "string"
}

Response samples

Content type
application/json
{
  • "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",
  • "route": "http://example.com",
  • "resource_effects": [
    ],
  • "limits": [
    ],
  • "estimated_cost": {
    },
  • "risks": [
    ],
  • "destructive_effects": [
    ],
  • "required_confirmations": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "expires_at": "2019-08-24T14:15:22Z"
}

Create a deployment

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
plan_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Responses

Request samples

Content type
application/json
{
  • "plan_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "state": "queued",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "result": { },
  • "error": {
    },
  • "progress": {
    },
  • "reconciliation": {
    }
}

List deployments

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

query Parameters
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.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "string"
}

Get deployment status

Authorizations:
BearerAuth
path Parameters
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.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "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"
}

List normalized deployment diagnostics

Authorizations:
BearerAuth
path Parameters
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.

query Parameters
cursor
string <= 2048 characters
limit
integer [ 1 .. 100 ]
Default: 100
header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "string"
}

Stream normalized deployment diagnostics

Authorizations:
BearerAuth
path Parameters
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.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/problem+json
{
  • "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"
}

Select standard or Paid performance database compute

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
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.

Request Body schema: application/json
required
environment
required
string
Enum: "dev" "prod"
profile
required
string
Enum: "standard" "performance"
confirm
required
boolean
Value: true

Responses

Request samples

Content type
application/json
{
  • "environment": "dev",
  • "profile": "standard",
  • "confirm": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "state": "queued",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "result": { },
  • "error": {
    },
  • "progress": {
    },
  • "reconciliation": {
    }
}

Read actual managed database compute configuration

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.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

query Parameters
environment
string
Default: "dev"
Enum: "dev" "prod"
header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "project_id": "string",
  • "environment": "dev",
  • "data_mode": "shared",
  • "observed_at": "2019-08-24T14:15:22Z",
  • "database": { }
}

Run one bounded read-only Dev database query

Executes one SELECT through the project's least-privilege read-only role. Connection credentials are never returned.

Authorizations:
BearerAuth
path Parameters
project_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Project identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "environment": "dev",
  • "statement": "string",
  • "parameters": [
    ]
}

Response samples

Content type
application/json
{
  • "environment": "dev",
  • "rows": [
    ],
  • "row_count": 100,
  • "truncated": true
}

Plan a deployment rollback

Produces a non-mutating rollback plan for an immutable deployment artifact.

Authorizations:
BearerAuth
path Parameters
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.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "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": [
    ],
  • "risks": [
    ],
  • "confirmation_token": "stringstringstringstringstringst",
  • "created_at": "2019-08-24T14:15:22Z",
  • "expires_at": "2019-08-24T14:15:22Z"
}

Roll back to an immutable deployment

Republishes the target deployment artifact without starting a new build.

Authorizations:
BearerAuth
path Parameters
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.

header Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "state": "queued",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "result": { },
  • "error": {
    },
  • "progress": {
    },
  • "reconciliation": {
    }
}

Plan promotion of the current dev deployment

Produces a non-mutating, ten-minute plan that binds the current succeeded dev deployment and current prod head without rebuilding the artifact.

Authorizations:
BearerAuth
path Parameters
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.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "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": [
    ],
  • "risks": [
    ],
  • "confirmation_token": "stringstringstringstringstringst",
  • "created_at": "2019-08-24T14:15:22Z",
  • "expires_at": "2019-08-24T14:15:22Z"
}

Promote a verified dev artifact to prod

Activates the immutable artifact from the current succeeded dev deployment in prod without rebuilding it.

Authorizations:
BearerAuth
path Parameters
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.

header Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "state": "queued",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "result": { },
  • "error": {
    },
  • "progress": {
    },
  • "reconciliation": {
    }
}

List environment secret metadata

Returns names and revisions only. Secret values are never readable through the public API.

Authorizations:
BearerAuth
path Parameters
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.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "desired_generation": 0,
  • "applied_generation": 0,
  • "delivery_state": "not_deployed",
  • "runtime_provider": "wfp",
  • "applied_secret_count": 100,
  • "last_error": "string"
}

Create or rotate an environment secret

Accepts a write-only value and returns metadata only. Replays require the same canonical value digest.

Authorizations:
BearerAuth
path Parameters
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.

header Parameters
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.

Request Body schema: application/json
required
value
required
string [ 1 .. 5120 ] characters

Write-only plaintext value. It is encrypted before persistence and never returned.

Responses

Request samples

Content type
application/json
{
  • "value": "string"
}

Response samples

Content type
application/json
{
  • "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"
}

Delete an environment secret

Authorizations:
BearerAuth
path Parameters
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.

header Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "name": "string",
  • "status": "deleted",
  • "desired_generation": 0,
  • "applied_generation": 0,
  • "delivery_state": "not_deployed",
  • "runtime_provider": "wfp",
  • "applied_secret_count": 100,
  • "last_error": "string"
}

Get an operation

Authorizations:
BearerAuth
path Parameters
operation_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Operation identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "state": "queued",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "result": { },
  • "error": {
    },
  • "progress": {
    },
  • "reconciliation": {
    }
}

Reconcile an uncertain platform delivery or provider mutation

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.

Authorizations:
BearerAuth
path Parameters
operation_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Operation identifier.

header Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "reconciliation_id": "string",
  • "operation_id": "string",
  • "state": "completed"
}

Stream operation events

Authorizations:
BearerAuth
path Parameters
operation_id
required
string (Ulid) ^[0-9A-HJKMNP-TV-Z]{26}$

Operation identifier.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/problem+json
{
  • "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"
}

List audit events

Returns events visible to the authenticated organization in stable descending order.

Authorizations:
BearerAuth
query Parameters
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.

header Parameters
X-Request-Id
string [ 1 .. 128 ] characters

Optional caller-provided correlation identifier.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "string"
}