{
  "kind": "semantic-negative",
  "name": "missing-payment-identifier",
  "scenario": "missing-payment-identifier",
  "description": "A paid retry must fail when the server marks payment-identifier as required and the client omits it.",
  "expectedError": "missing_kaspa_payment_identifier",
  "paymentRequired": {
    "x402Version": 2,
    "resource": {
      "url": "https://api.example.com/download.bin",
      "description": "Download",
      "mimeType": "application/octet-stream"
    },
    "accepts": [
      {
        "scheme": "exact",
        "network": "kaspa:testnet-10",
        "amount": "1000000",
        "asset": "KAS",
        "payTo": "kaspatest:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq",
        "maxTimeoutSeconds": 60,
        "extra": {
          "binding": "kaspa-exact-v1"
        }
      }
    ],
    "extensions": {
      "payment-identifier": {
        "info": {
          "required": true
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "type": "object",
          "properties": {
            "required": {
              "type": "boolean"
            },
            "id": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128
            }
          },
          "required": [
            "required"
          ]
        }
      }
    }
  },
  "paymentPayload": {
    "x402Version": 2,
    "accepted": {
      "scheme": "exact",
      "network": "kaspa:testnet-10",
      "amount": "1000000",
      "asset": "KAS",
      "payTo": "kaspatest:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq",
      "maxTimeoutSeconds": 60,
      "extra": {
        "binding": "kaspa-exact-v1"
      }
    },
    "payload": {
      "type": "exact-transfer",
      "transaction": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "paymentOutputIndex": 0
    }
  }
}
