ui-automation-control-plane

Universal Platform API

Default server (canonical): http://127.0.0.1:17380. API base path: /api.

Loopback host policy: contract/docs/examples standardize on 127.0.0.1 to avoid string drift in env/doc gates. localhost may still work locally, but is not the canonical contract literal.

Operator Surface Map

The product uses several operator-facing surfaces that are related but not interchangeable:

Use this map before assuming every endpoint that mentions a run is talking about the same truth surface.

Common Headers

Generated Web Client Contract

Current scope note:

If you need proof, template, or workflow-run integrations today, call the HTTP contract directly or mirror the first-party fetch pattern from apps/command-center/src/hooks/useApiClient.ts and apps/command-center/src/hooks/useProofApi.ts.

Builder Integration Entry

Use this API page together with docs/reference/integration-entrypoints.md.

Today the honest builder rule is:

That is similar to the difference between:

Both are useful, but they are not the same promise.

Service & Health

Health payload contracts:

Metrics/observability notes:

RUM ingest:

Register Bootstrap

Route /register exists but is excluded from API schema (include_in_schema=false) and only redirects to frontend register page.

Automation Command Lane

Automation lane semantics:

Computer Use

Computer Use ownership and execution guarantees:

Embeddings

Sessions

Computer Use (Session APIs Mirror)

Flows

Templates

Template lifecycle notes:

Workflow Run Lane

Workflow lane semantics:

Run status model in current backend implementation:

Compatibility note:

Truth-source note:

RunOtpSubmitRequest.otp_code is optional in v2 contract:

Manual Gate For Protected Payment Providers

This section documents the v2 manual-gate flow for protected payment providers.

Trigger conditions:

wait_context fields on Run:

Canonical continue execution flow:

  1. Poll GET /api/runs/{run_id} until status becomes waiting_otp or waiting_user.
  2. Inspect wait_context for pause reason and resume anchor (resume_from_step_id).
  3. Call POST /api/runs/{run_id}/resume:
    • waiting_otp example: {"kind":"otp","otp_code":"123456"}.
    • waiting_user example for manual approval: {"kind":"approval","approved":true}.
    • waiting_user example for supplemental input: {"kind":"input","input_text":"continue"}.
  4. Continue polling GET /api/runs/{run_id} until terminal status (success|failed|cancelled).

Compatibility note:

Proof And Review

Proof/review semantics:

Builder note:

Integrations

Vonage inbound auth notes:

Profiles & Reconstruction

Embeddings (Profiles & Reconstruction Mirror)

Command Tower

Command-tower query semantics: