Trust Registry API

Public API for trust lookups, JWKS endpoints, and receipt verification.

openapi: 3.0.3
info:
  title: TrustUCP Trust Registry API
  version: "1.0.0"
paths:
  /trust/v1/jwks:
    get:
      summary: Fetch public signing keys (JWKS)
      responses:
        "200":
          description: JWKS
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required: ["keys"]
                properties:
                  keys:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
  /trust/v1/tenants/{tenant_id}/jwks/receipts:
    get:
      summary: Fetch public receipt signing keys for a tenant (JWKS)
      parameters:
        - in: path
          name: tenant_id
          required: true
          schema: { type: string }
      responses:
        "200":
          description: JWKS
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required: ["keys"]
                properties:
                  keys:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
        "404":
          description: Tenant not found
  /trust/v1/receipts/verify:
    post:
      summary: Verify a signed checkout receipt
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: ../jsonschema/trust/checkout-receipt-verify-request/v1/schema.json
      responses:
        "200":
          description: Verification result
          content:
            application/json:
              schema:
                $ref: ../jsonschema/trust/checkout-receipt-verify-response/v1/schema.json
  /trust/v1/badge-events:
    post:
      summary: Record a badge widget analytics event
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: ../jsonschema/trust/badge-event/v1/schema.json
      responses:
        "202":
          description: Accepted
          content:
            application/json:
              schema:
                $ref: ../jsonschema/trust/badge-event-response/v1/schema.json
  /trust/v1/badge-config:
    get:
      summary: Fetch a tenant badge widget configuration (signed)
      parameters:
        - in: query
          name: tenant_id
          schema: { type: string }
        - in: query
          name: domain
          schema: { type: string }
        - in: query
          name: platform
          schema: { type: string }
        - in: query
          name: account_id
          schema: { type: string }
      responses:
        "200":
          description: Badge config (signed)
          content:
            application/json:
              schema:
                $ref: ../jsonschema/trust/badge-config-response/v1/schema.json
        "404":
          description: Tenant not found
  /mcp/tools:
    get:
      summary: List MCP tool manifest
      responses:
        "200":
          description: Tool manifest
          content:
            application/json:
              schema:
                $ref: ../jsonschema/mcp/tool-manifest/v2/schema.json
  /mcp/resources:
    get:
      summary: List MCP resource manifest
      responses:
        "200":
          description: Resource manifest
          content:
            application/json:
              schema:
                $ref: ../jsonschema/mcp/resource-manifest/v2/schema.json
  /mcp/prompts:
    get:
      summary: List MCP prompt manifest
      responses:
        "200":
          description: Prompt manifest
          content:
            application/json:
              schema:
                $ref: ../jsonschema/mcp/prompt-manifest/v2/schema.json
  /trust/v1/lookup:
    get:
      summary: Lookup trust summary for a tenant/business
      parameters:
        - in: query
          name: tenant_id
          schema: { type: string }
        - in: query
          name: domain
          schema: { type: string }
        - in: query
          name: platform
          schema: { type: string }
        - in: query
          name: account_id
          schema: { type: string }
      responses:
        "200":
          description: Trust summary (signed)
          content:
            application/json:
              schema:
                $ref: ../jsonschema/trust/trust-registry-response/v1/schema.json
  /trust/v1/decision:
    get:
      summary: Evaluate a trust decision for a tenant/business (signed)
      parameters:
        - in: query
          name: tenant_id
          schema: { type: string }
        - in: query
          name: domain
          schema: { type: string }
        - in: query
          name: platform
          schema: { type: string }
        - in: query
          name: account_id
          schema: { type: string }
        - in: query
          name: stage
          required: true
          schema:
            type: string
            enum: ["checkout_create", "checkout_update", "checkout_complete"]
        - in: query
          name: currency
          schema: { type: string }
        - in: query
          name: amount
          schema: { type: number }
        - in: query
          name: shipping_country
          schema: { type: string }
        - in: query
          name: shipping_region
          schema: { type: string }
      responses:
        "200":
          description: Trust decision (signed)
          content:
            application/json:
              schema:
                $ref: ../jsonschema/trust/trust-decision-response/v1/schema.json
  /trust/v1/revocations:
    get:
      summary: Fetch revocation feed for trusted merchants
      responses:
        "200":
          description: Revocation feed
          content:
            application/json:
              schema:
                $ref: ../jsonschema/trust/revocation-feed/v1/schema.json
  /trust/v1/proof-bundle/{tenant_id}:
    get:
      summary: Fetch a proof bundle for a tenant/business
      parameters:
        - in: path
          name: tenant_id
          required: true
          schema: { type: string }
      responses:
        "200":
          description: Proof bundle
          content:
            application/json:
              schema:
                $ref: ../jsonschema/trust/trust-proof-bundle/v1/schema.json