{
  "openrpc": "1.3.2",
  "info": {
    "title": "UCP Payment Authentication Action Embedded Protocol",
    "description": "Embedded handshake and terminal notifications for standard UCP payment authentication Action surfaces. A Platform loads an Action config URL in an isolated browser-capable surface. The surface establishes the negotiated version with an action.ready JSON-RPC request, then sends action.done or action.error notifications through postMessage or an equivalent native bridge. Terminal notifications are advisory: the Business remains authoritative for payment and Checkout outcomes.",
    "version": "2026-08-22"
  },
  "servers": [],
  "methods": [
    {
      "name": "action.ready",
      "summary": "Payment authentication Action surface is ready",
      "description": "The loaded surface initiates its Action session and identifies the outstanding Action occurrence and negotiated Payment Authentication version. The Platform validates the surface and confirms the version before Action-specific work or terminal notifications proceed.",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "id",
          "required": true,
          "schema": {
            "type": "string",
            "description": "ID of the outstanding Action occurrence represented by this surface."
          }
        },
        {
          "name": "version",
          "required": true,
          "schema": {
            "$ref": "https://ucp.dev/draft/schemas/ucp.json#/$defs/version",
            "description": "Negotiated Payment Authentication extension version for this Action session."
          }
        }
      ],
      "result": {
        "name": "readyResult",
        "schema": {
          "oneOf": [
            {
              "type": "object",
              "description": "Empty acknowledgement confirming acceptance of the requested Payment Authentication extension version."
            },
            {
              "$ref": "https://ucp.dev/draft/schemas/common/types/error_response.json"
            }
          ]
        }
      }
    },
    {
      "name": "action.done",
      "summary": "Payment authentication Action surface completed",
      "description": "The loaded surface notifies the Platform that its scoped interaction is done. This notification does not assert device-data collection, authentication, or payment success. The Business reflects the authoritative outcome in a later Checkout response.",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "id",
          "required": true,
          "schema": {
            "type": "string",
            "description": "ID of the outstanding Action occurrence represented by this surface."
          }
        }
      ]
    },
    {
      "name": "action.error",
      "summary": "Payment authentication Action surface cannot continue",
      "description": "The loaded surface notifies the Platform of a surface-level failure. This notification is not a payment authorization or authentication result. The Platform follows the fallback defined by the active payment authentication extension and negotiated payment handler.",
      "paramStructure": "by-name",
      "params": [
        {
          "name": "id",
          "required": true,
          "schema": {
            "type": "string",
            "description": "ID of the outstanding Action occurrence represented by this surface."
          }
        },
        {
          "name": "error",
          "required": true,
          "schema": {
            "$ref": "https://ucp.dev/draft/schemas/common/types/error_response.json",
            "description": "Surface-level failure details. Domain outcomes remain owned by the Business and payment provider."
          }
        }
      ]
    }
  ]
}