openapi: "3.1.0"
info:
  title: "PlatPhorm AgentUI"
  version: "0.8.0"
  description: "AgentUI API for human and agent interface artifacts: workflow orchestration, schema-to-form rendering, local/export/share/delegation packets, storage truth, templates, approvals, publishing boundaries, observability, and MCP JSON-RPC."
servers:
  - url: "https://agentui.platphormnews.com"
components:
  securitySchemes:
    PlatphormApiKeyBearer:
      type: "http"
      scheme: "bearer"
      bearerFormat: "PLATPHORM_API_KEY"
      description: "Use Authorization: Bearer $PLATPHORM_API_KEY"
    PlatphormApiKeyHeader:
      type: "apiKey"
      in: "header"
      name: "X-PlatPhorm-API-Key"
      description: "Use X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"
paths:
  /api/docs:
    get:
      summary: "OpenAPI JSON document"
  /api/health:
    get:
      summary: "Service health"
  /openapi.json:
    get:
      summary: "OpenAPI JSON document route"
  /openapi.yaml:
    get:
      summary: "OpenAPI YAML document route"
  /asyncapi.yaml:
    get:
      summary: "AsyncAPI YAML event contract for AgentUI workflow, run, approval, artifact, delegation, and integration events"
  /llms.txt:
    get:
      summary: "Concise AgentUI llms discovery text"
  /llms-full.txt:
    get:
      summary: "Full AgentUI llms discovery text"
  /llms-index.json:
    get:
      summary: "AgentUI llms discovery index"
  /rss.xml:
    get:
      summary: "Public-safe RSS feed"
  /feed.xml:
    get:
      summary: "Public-safe Atom feed"
  /sitemap.xml:
    get:
      summary: "Public sitemap"
  /sitemap-index.xml:
    get:
      summary: "Public sitemap index"
  /robots.txt:
    get:
      summary: "Robots policy"
  /manifest.webmanifest:
    get:
      summary: "Web app manifest"
  /.well-known/mcp.json:
    get:
      summary: "MCP well-known manifest"
  /.well-known/web.json:
    get:
      summary: "AgentUI Web Status manifest"
  /.well-known/web4.json:
    get:
      summary: "Legacy AgentUI Web Status manifest alias"
  /.well-known/provenance.json:
    get:
      summary: "Public-safe provenance and fingerprint index"
  /.well-known/agents.json:
    get:
      summary: "Agent access well-known manifest"
  /.well-known/agent-policy.json:
    get:
      summary: "Agent policy manifest"
  /.well-known/ai-policy.json:
    get:
      summary: "AI policy manifest"
  /.well-known/ai-plugin.json:
    get:
      summary: "Legacy AI plugin support and real discovery alternatives"
  /.well-known/security.txt:
    get:
      summary: "Security contact policy"
  /.well-known/trust.json:
    get:
      summary: "Trust and public/protected boundary policy"
  /api/mcp:
    get:
      summary: "MCP manifest and usage metadata"
      operationId: "getMcpManifest"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
    post:
      summary: "MCP JSON-RPC 2.0 transport"
      operationId: "postMcpJsonRpc"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                jsonrpc:
                  type: "string"
                  enum:
                    - "2.0"
                id:
                  oneOf:
                    - type: "string"
                    - type: "number"
                    - type: "null"
                method:
                  type: "string"
                  examples:
                    - "tools/list"
                    - "tools/call"
                params:
                  type: "object"
              required:
                - "jsonrpc"
                - "method"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/browserops/receive-handoff:
    get:
      summary: "BrowserOps public-safe handoff receiver readiness probe"
    post:
      summary: "Receive BrowserOps public-safe proof handoff envelope; accepted handoffs require PLATPHORM_API_KEY"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/agentui/receive-handoff:
    get:
      summary: "AgentUI public-safe handoff receiver readiness probe"
    post:
      summary: "Receive a platphorm.handoff.v1 envelope addressed to AgentUI; accepted handoffs require PLATPHORM_API_KEY"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/agentui/browserops-fallback-screenshot:
    get:
      summary: "Return an explicit AgentUI-owned fallback image for BrowserOps runs that do not expose screenshot artifacts"
      operationId: "getBrowserOpsFallbackScreenshot"
      parameters:
        - name: "runId"
          in: "query"
          required: false
          schema:
            type: "string"
        - name: "traceId"
          in: "query"
          required: false
          schema:
            type: "string"
        - name: "target"
          in: "query"
          required: false
          schema:
            type: "string"
            format: "uri"
        - name: "title"
          in: "query"
          required: false
          schema:
            type: "string"
      responses:
        200:
          description: "SVG fallback proof image labeled as AgentUI fallback evidence, not as a BrowserOps screenshot artifact."
          content:
            image/svg+xml:
              schema:
                type: "string"
                format: "binary"
      security:
[]
  /api/v1/receive-handoff:
    get:
      summary: "AgentUI v1 handoff receiver readiness alias"
    post:
      summary: "Receive a platphorm.handoff.v1 envelope through the v1 AgentUI receiver alias"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/agentui/receive-handoff:
    get:
      summary: "AgentUI v1 namespaced handoff receiver readiness alias"
    post:
      summary: "Receive a platphorm.handoff.v1 envelope through the namespaced v1 AgentUI receiver alias"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/api-keys:
    get:
      summary: "List protected API-key inventory"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
    post:
      summary: "Create protected API key"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/approvals:
    get:
      summary: "List public-safe workflow approvals"
    post:
      summary: "Create workflow approval request"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/approvals/{id}:
    get:
      summary: "Get public-safe workflow approval"
  /api/v1/approvals/{id}/approve:
    post:
      summary: "Approve workflow approval step"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/approvals/{id}/reject:
    post:
      summary: "Reject workflow approval step"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/flows:
    get:
      summary: "List workflows through legacy flow alias"
    post:
      summary: "Create workflow through legacy flow alias"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/health:
    get:
      summary: "Service health v1 alias"
  /api/v1/agent-policy:
    get:
      summary: "AgentUI public/protected agent policy"
  /api/v1/agent-policy/platforms:
    get:
      summary: "List agent platform policies"
  /api/v1/agent-policy/platforms/{id}:
    get:
      summary: "Get agent platform policy"
  /api/v1/agent-policy/robots:
    get:
      summary: "Robots policy JSON"
  /api/v1/agent-policy/summary:
    get:
      summary: "Agent policy summary"
  /api/v1/ai-gateway/diagnostics:
    get:
      summary: "Return public-safe Vercel AI Gateway configuration diagnosis and redacted local log policy"
      parameters:
        - name: "model"
          in: "query"
          required: false
          schema:
            type: "string"
            default: "openai/gpt-5.4"
  /api/v1/prompts:
    get:
      summary: "List AgentUI MCP prompts"
  /api/v1/publish:
    get:
      summary: "List public workflow publications"
    post:
      summary: "Create workflow publication"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/resources:
    get:
      summary: "List AgentUI MCP resources"
  /api/v1/runs:
    get:
      summary: "List public-safe workflow runs"
  /api/v1/runs/{id}:
    get:
      summary: "Get public-safe workflow run"
  /api/v1/runs/{id}/artifacts:
    get:
      summary: "List public-safe workflow run artifacts"
  /api/v1/runs/{id}/blocks/{blockId}:
    get:
      summary: "Get selected block input, output, artifacts, evidence, and trace packet for a run"
  /api/v1/runs/{id}/cancel:
    post:
      summary: "Cancel workflow run"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/runs/{id}/events:
    get:
      summary: "SSE stream with public-safe run/delegation event snapshot and degraded polling fallback guidance"
  /api/v1/runs/{id}/steps:
    get:
      summary: "List public-safe workflow run steps"
  /api/v1/runs/{id}/steps/{stepId}:
    get:
      summary: "Get one workflow run step with block input/output view payload"
  /api/v1/runs/{id}/trace:
    get:
      summary: "Get public-safe workflow run trace link"
  /api/v1/services:
    get:
      summary: "List registered network services"
    post:
      summary: "Register network service"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/stats/runs:
    get:
      summary: "Get public-safe run statistics"
  /api/v1/templates:
    get:
      summary: "List workflow templates"
  /api/v1/templates/{id}:
    get:
      summary: "Get workflow template"
  /api/v1/templates/{id}/instantiate:
    post:
      summary: "Instantiate workflow template"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/tool-specs:
    get:
      summary: "List AgentUI best-effort tool input specs, or return one service/capability spec with service and capability query params"
      operationId: "listToolSpecs"
      parameters:
        - name: "service"
          in: "query"
          required: false
          schema:
            type: "string"
        - name: "capability"
          in: "query"
          required: false
          schema:
            type: "string"
        - name: "protectedAction"
          in: "query"
          required: false
          schema:
            type: "boolean"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
    post:
      summary: "Generate a public-safe tool spec bundle and enriched run input JSON from selected_steps, services, toolchain entries, or one service/capability pair"
      operationId: "generateToolSpecs"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                service:
                  type: "string"
                  default: "ascii"
                capability:
                  type: "string"
                  default: "convert_image_to_ascii"
                source_url:
                  type: "string"
                  format: "uri"
                topic:
                  type: "string"
                output_mode:
                  type: "string"
                selected_steps:
                  type: "object"
                  additionalProperties:
                    type: "boolean"
                services:
                  type: "array"
                  items:
                    type: "object"
                toolchain:
                  type: "array"
                  items:
                    type: "object"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/workflows/templates/ambassador-public-research-to-proof:
    get:
      summary: "Read the public Ambassador research-to-proof template API contract and sample input"
      operationId: "getAmbassadorPublicProofFlow"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
    post:
      summary: "Run the API/MCP/RSS/Sandbox Ambassador proof chain with optional tool-intelligence and server-authenticated Docs, Sheets, Calendar, Kanban, BrowserOps, OpenContent, and ASCII lanes"
      operationId: "runAmbassadorPublicProofFlow"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                source_url:
                  type: "string"
                  format: "uri"
                  default: "https://platphormnews.com/api/network/graph"
                sheet_url:
                  type: "string"
                  format: "uri"
                  description: "Optional existing Sheets viewer source. Derived Sheets outputs are always new references returned by the Sheets API."
                topic:
                  type: "string"
                  default: "PlatPhorm public toolchain demo"
                docs_slug:
                  type: "string"
                output_mode:
                  type: "string"
                  enum:
                    - "brief"
                    - "standard"
                    - "executive"
                    - "technical"
                  default: "standard"
                selected_steps:
                  type: "object"
                  description: "Lanes selected for a complete run. Write lanes require server-side PLATPHORM_API_KEY and confirmed target-service references; tool_intel is public-read and generates specs from AgentOps service mappings, the canonical MCP registry, Spec docs, selected source metadata, service MCP metadata, and selected toolchain lanes."
                  properties:
                    docs:
                      type: "boolean"
                      default: false
                    sheets:
                      type: "boolean"
                      default: false
                    calendar:
                      type: "boolean"
                      default: false
                    kanban:
                      type: "boolean"
                      default: false
                    browserops:
                      type: "boolean"
                      default: false
                    tool_intel:
                      type: "boolean"
                      default: true
                      description: "Generate public tool specs from AgentOps services, SearchOps mapping, canonical MCP registry tools, Spec docs, service MCP metadata, and selected AgentUI toolchain lanes."
                    opencontent:
                      type: "boolean"
                      default: false
                      description: "Ingest the confirmed BrowserOps screenshot URL, or explicit AgentUI fallback image when BrowserOps returns a run without a screenshot artifact, through opencontent.platphormnews.com."
                    ascii:
                      type: "boolean"
                      default: true
                      description: "Convert the confirmed BrowserOps screenshot artifact, or explicit AgentUI fallback image, through ascii.platphormnews.com."
                    docs_ascii:
                      type: "boolean"
                      default: true
                      description: "Create a Docs draft from the confirmed ASCII text artifact."
              required:
                - "source_url"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
      security:
[]
  /api/v1/render/mcp-tool:
    post:
      summary: "Render MCP tool schema into AgentUI form fields"
      operationId: "renderMcpToolForm"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                toolName:
                  type: "string"
                  default: "get_health"
                tool:
                  type: "object"
                  description: "Inline MCP tool definition when not using a registry tool."
                arguments:
                  type: "object"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/v1/render/openapi-operation:
    post:
      summary: "Render OpenAPI operation into AgentUI form fields"
      operationId: "renderOpenApiOperationForm"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                operationId:
                  type: "string"
                  default: "getHealth"
                method:
                  type: "string"
                  enum:
                    - "get"
                    - "post"
                    - "put"
                    - "delete"
                path:
                  type: "string"
                  default: "/api/health"
                serviceBaseUrl:
                  type: "string"
                  format: "uri"
                  default: "https://agentui.platphormnews.com"
                operation:
                  type: "object"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/v1/render/json-schema:
    post:
      summary: "Render JSON Schema into AgentUI form fields"
      operationId: "renderJsonSchemaForm"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                schema:
                  type: "object"
                sourceRef:
                  type: "string"
                title:
                  type: "string"
              required:
                - "schema"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/v1/render/webhook-schema:
    post:
      summary: "Render webhook payload schema into AgentUI form fields"
      operationId: "renderWebhookSchemaForm"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                eventName:
                  type: "string"
                schema:
                  type: "object"
                serviceBaseUrl:
                  type: "string"
                  format: "uri"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/v1/render/artifact:
    post:
      summary: "Render an AgentUI artifact model as form fields"
      operationId: "renderAgentUiArtifactForm"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                artifact:
                  type: "object"
                schema:
                  type: "object"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/v1/render/workflow-node:
    post:
      summary: "Render workflow node configuration form"
      operationId: "renderWorkflowNodeForm"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                nodeType:
                  type: "string"
                  default: "mcp_tool"
                toolName:
                  type: "string"
                operationId:
                  type: "string"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/v1/validate/form-input:
    post:
      summary: "Validate rendered form input without executing a tool"
      operationId: "validateFormInput"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                schema:
                  type: "object"
                value:
                  type: "object"
              required:
                - "schema"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/v1/rendered-forms/{id}:
    get:
      summary: "Get rendered form persistence status"
  /api/v1/artifacts:
    get:
      summary: "List server-persisted AgentUI artifacts or honest degraded storage status"
    post:
      summary: "Create generated AgentUI artifact snapshot or protected persistence request"
  /api/v1/artifacts/{id}:
    get:
      summary: "Get AgentUI artifact storage status by id"
    put:
      summary: "Update server-persisted artifact"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
    delete:
      summary: "Delete server-persisted artifact"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/artifacts/{id}/view:
    get:
      summary: "Get artifact view-pane status and fallback panels"
  /api/v1/artifacts/{id}/clone:
    post:
      summary: "Clone an AgentUI artifact as a generated snapshot"
  /api/v1/artifacts/{id}/share:
    post:
      summary: "Create AgentUI share packet for an artifact"
  /api/v1/artifacts/{id}/export:
    post:
      summary: "Export AgentUI artifact as JSON, YAML, or Markdown"
  /api/v1/artifacts/{id}/delegate/{service}:
    post:
      summary: "Create a delegation packet, or send an explicit confirmation-gated target handoff when send=true"
  /api/v1/delegations:
    get:
      summary: "List delegation target registry, supported statuses, and confirmation policy"
  /api/v1/delegations/{id}:
    get:
      summary: "Get degraded durable delegation lookup status without claiming target confirmation"
  /api/v1/delegations/{id}/retry:
    post:
      summary: "Retry protected delegation"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/delegate/{service}:
    post:
      summary: "Create a delegation packet by default, or send a confirmation-gated handoff to configured MCP, Spec, Sandbox, BrowserOps, or Evals adapters when send=true"
  /api/v1/demo/suite:
    get:
      summary: "Get public-safe demo readiness flow across Root, MCP, Spec, Sandbox, Evals, and AgentUI receive-handoff"
      parameters:
        - name: "probe"
          in: "query"
          required: false
          schema:
            type: "boolean"
        - name: "timeoutMs"
          in: "query"
          required: false
          schema:
            type: "integer"
            minimum: 250
            maximum: 10000
  /api/v1/storage/status:
    get:
      summary: "Get AgentUI storage truth model and optionally run a public-safe database accessibility probe"
      parameters:
        - name: "probe"
          in: "query"
          required: false
          schema:
            type: "boolean"
        - name: "maxTables"
          in: "query"
          required: false
          schema:
            type: "integer"
            minimum: 0
            maximum: 50
  /api/v1/storage/modes:
    get:
      summary: "List AgentUI storage modes"
  /api/v1/storage/export:
    post:
      summary: "Export an AgentUI artifact packet"
  /api/v1/storage/import:
    post:
      summary: "Import an AgentUI artifact as a generated snapshot"
  /api/v1/integrations:
    get:
      summary: "List AgentUI integration matrix"
  /api/v1/integrations/status:
    get:
      summary: "Summarize integration status"
  /api/v1/integrations/{slug}:
    get:
      summary: "Get integration by slug"
  /api/v1/integrations/phorm/status:
    get:
      summary: "Get Phorm integration status"
  /api/v1/integrations/cli/status:
    get:
      summary: "Get CLI integration status"
  /api/v1/phorm/templates:
    get:
      summary: "List deterministic Phorm fallback templates"
  /api/v1/phorm/design-preview:
    post:
      summary: "Preview Phorm prompt-to-interface design or degraded fallback"
      operationId: "previewPhormDesign"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                prompt:
                  type: "string"
                  description: "Public-safe prompt. Do not include secrets."
                templateId:
                  type: "string"
                  default: "tool-form-panel"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/v1/phorm/import-design:
    post:
      summary: "Import confirmed Phorm design"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/phorm/convert-to-workflow:
    post:
      summary: "Convert Phorm design reference to local workflow draft plan"
      operationId: "convertPhormDesignToWorkflow"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                designId:
                  type: "string"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/v1/phorm/exports/{id}:
    get:
      summary: "Get Phorm export status"
  /api/v1/cli/examples:
    get:
      summary: "List platphormctl examples"
  /api/v1/cli/examples/{id}:
    get:
      summary: "Get platphormctl example"
  /api/v1/cli/validate-command:
    post:
      summary: "Validate platphormctl command shape without claiming execution"
      operationId: "validateCliCommand"
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: "object"
              properties:
                command:
                  type: "string"
                  default: "platphormctl site inspect agentui --best-effort"
              required:
                - "command"
      responses:
        200:
          description: "JSON response with { ok, data } or JSON-RPC response where documented."
  /api/v1/tools:
    get:
      summary: "List AgentUI MCP tools"
  /api/v1/traces:
    get:
      summary: "List public-safe workflow traces"
  /api/v1/traces/{id}:
    get:
      summary: "Get public-safe workflow trace"
    delete:
      summary: "Delete workflow trace"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/ui/summary:
    get:
      summary: "Get public-safe AgentUI dashboard summary"
  /api/web/status:
    get:
      summary: "Get AgentUI Web Status readiness, route evidence, privacy, storage, and integration status"
  /api/web/manifest:
    get:
      summary: "Get AgentUI Web Status manifest as REST JSON envelope"
  /api/web/scorecard:
    get:
      summary: "Get AgentUI Web Status scorecard with route, renderer, policy, trace, and provenance checks"
  /api/web/fingerprints:
    get:
      summary: "List public-safe AgentUI fingerprints with privacy class and anchor eligibility"
  /api/web/route-evidence:
    get:
      summary: "Return declared route evidence or actively fetch the fixed AgentUI route list when fetch=true"
      parameters:
        - name: "fetch"
          in: "query"
          required: false
          schema:
            type: "boolean"
        - name: "limit"
          in: "query"
          required: false
          schema:
            type: "integer"
            minimum: 1
        - name: "timeoutMs"
          in: "query"
          required: false
          schema:
            type: "integer"
            minimum: 250
            maximum: 10000
  /api/web4/status:
    get:
      summary: "Legacy AgentUI Web Status readiness alias"
  /api/web4/manifest:
    get:
      summary: "Legacy AgentUI Web Status manifest alias"
  /api/web4/scorecard:
    get:
      summary: "Legacy AgentUI Web Status scorecard alias"
  /api/web4/fingerprints:
    get:
      summary: "Legacy AgentUI fingerprints alias"
  /api/web4/route-evidence:
    get:
      summary: "Legacy route evidence alias for /api/web/route-evidence"
      parameters:
        - name: "fetch"
          in: "query"
          required: false
          schema:
            type: "boolean"
        - name: "limit"
          in: "query"
          required: false
          schema:
            type: "integer"
            minimum: 1
        - name: "timeoutMs"
          in: "query"
          required: false
          schema:
            type: "integer"
            minimum: 250
            maximum: 10000
  /api/provenance/lookup:
    get:
      summary: "Lookup public-safe AgentUI provenance by url, hash, workflowId, runId, artifactId, delegationId, or formId"
      parameters:
        - name: "url"
          in: "query"
          required: false
          schema:
            type: "string"
        - name: "hash"
          in: "query"
          required: false
          schema:
            type: "string"
        - name: "recordId"
          in: "query"
          required: false
          schema:
            type: "string"
  /api/provenance/verify:
    get:
      summary: "Verify a public-safe AgentUI provenance record by recordId or hash"
      parameters:
        - name: "recordId"
          in: "query"
          required: false
          schema:
            type: "string"
        - name: "hash"
          in: "query"
          required: false
          schema:
            type: "string"
  /api/v1/workflows:
    get:
      summary: "List public-safe workflows"
    post:
      summary: "Create workflow"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/workflows/{id}:
    get:
      summary: "Get public-safe workflow by id"
    put:
      summary: "Update workflow"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
    delete:
      summary: "Delete workflow"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/workflows/{id}/dry-run:
    post:
      summary: "Dry-run workflow"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/workflows/{id}/blocks/{blockId}/dry-run:
    post:
      summary: "Dry-run one workflow block and return viewable input/output packet"
  /api/v1/workflows/{id}/blocks/{blockId}/run:
    post:
      summary: "Run one workflow block and persist a run packet"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/workflows/{id}/plan:
    post:
      summary: "Plan workflow without executing protected tools"
  /api/v1/workflows/{id}/publish:
    post:
      summary: "Publish workflow"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/workflows/{id}/run:
    post:
      summary: "Run workflow"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/workflows/{id}/validate:
    post:
      summary: "Validate workflow graph"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
  /api/v1/workflows/{id}/versions:
    get:
      summary: "List workflow versions"
    post:
      summary: "Create workflow version"
      security:
        - PlatphormApiKeyBearer:
[]
        - PlatphormApiKeyHeader:
[]
