{
  "protocol": {
    "name": "ap2",
    "version": "0.2.0",
    "documentation_url": "https://ap2-protocol.org",
    "specification_url": "https://github.com/google-agentic-commerce/AP2/blob/main/docs/ap2/specification.md",
    "implementation_status": {
      "spec_version_targeted": "0.2.0",
      "mandate_model": "v0.2 (CheckoutMandate + PaymentMandate)",
      "backwards_compatible": true,
      "note": "v0.2 CheckoutMandate (Intent+Cart unified) is live at /api/ap2/mandates/checkout. v0.1 three-mandate endpoints (intent, cart, payment) are retained for backwards compatibility."
    }
  },
  "issuer": {
    "did": "did:wba:tekoalydani.com",
    "name": "Tekoäly-Dani",
    "url": "https://tekoalydani.com",
    "did_document_url": "https://tekoalydani.com/.well-known/did.json",
    "verification_method": "did:wba:tekoalydani.com#key-1-jwk",
    "verification_method_multibase": "did:wba:tekoalydani.com#key-1"
  },
  "api_base_url": "https://tekoalydani.com/api/ap2",
  "endpoints": {
    "checkout_mandate": "https://tekoalydani.com/api/ap2/mandates/checkout",
    "payment_mandate": "https://tekoalydani.com/api/ap2/mandates/payment",
    "intent_mandate": "https://tekoalydani.com/api/ap2/mandates/intent",
    "cart_mandate": "https://tekoalydani.com/api/ap2/mandates/cart",
    "verify": "https://tekoalydani.com/api/ap2/mandates/verify"
  },
  "supported_mandate_types": [
    "CheckoutMandate",
    "PaymentMandate",
    "IntentMandate",
    "CartMandate"
  ],
  "recommended_flow": {
    "v0.2": ["CheckoutMandate", "PaymentMandate"],
    "v0.1_compat": ["IntentMandate", "CartMandate", "PaymentMandate"],
    "note": "The upstream mandate must be returned verbatim, proof included, when requesting the PaymentMandate. See mandate_proof."
  },
  "mandate_proof": {
    "required": true,
    "applies_to": "POST /api/ap2/mandates/payment",
    "description": "A PaymentMandate is only issued against an upstream CheckoutMandate (v0.2) or CartMandate (v0.1) that we signed ourselves. Send the mandate back exactly as received, including its proof object; do not rebuild or re-serialize the credential.",
    "request_field": "checkout_mandate (v0.2) or cart_mandate (v0.1)",
    "proof_type": "Ed25519Signature2020",
    "proof_field": "proof.jws (compact JWS, alg EdDSA, carries the signed credential in the vc claim)",
    "verification_method": "did:wba:tekoalydani.com#key-1-jwk",
    "public_keys_url": "https://tekoalydani.com/.well-known/jwks.json",
    "verify_endpoint": "https://tekoalydani.com/api/ap2/mandates/verify",
    "errors": {
      "401": "Mandate is missing proof.jws. Unsigned mandates are rejected.",
      "403": "Proof did not verify, or the presented credentialSubject does not match the signed credential.",
      "409": "Mandate has expired, or a unit price in it disagrees with the server catalog (price_mismatch)."
    },
    "pricing_note": "Prices are never taken from the mandate. Only product_id and quantity are read; every amount is recomputed from the server catalog."
  },
  "credential_format": "vc+jwt",
  "credential_schema": "https://www.w3.org/2018/credentials/v1",
  "signature_suite": "Ed25519Signature2020",
  "supported_currencies": ["EUR"],
  "supported_payment_handlers": [
    {
      "id": "stripe-checkout",
      "type": "redirect",
      "description": "Stripe-hosted checkout. The PaymentMandate references a Stripe Checkout session URL as the human-presented payment surface."
    },
    {
      "id": "acp-checkout-session",
      "type": "delegated",
      "description": "Hand off the PaymentMandate to the ACP checkout session for autonomous completion. See /.well-known/acp.json."
    }
  ],
  "linked_protocols": {
    "a2a": "https://tekoalydani.com/.well-known/agent-card.json",
    "mcp": "https://tekoalydani.com/.well-known/mcp/server-card.json",
    "acp": "https://tekoalydani.com/.well-known/acp.json",
    "ucp": "https://tekoalydani.com/.well-known/ucp.json",
    "anp": "https://tekoalydani.com/.well-known/agents"
  },
  "policy": {
    "max_checkout_validity": "PT24H",
    "max_intent_validity": "P30D",
    "max_cart_validity": "PT24H",
    "max_payment_validity": "PT2H",
    "max_amount_eur_cents": 1000000,
    "terms_url": "https://tekoalydani.com/tietosuoja"
  }
}
