{
  "x402Version": 2,
  "id": 56910,
  "slug": "56910",
  "resource": "https://datoka-api.bhazarstudio.workers.dev/v1/operations/issue_api_receipt",
  "description": "Datoka API: a portable signed commitment to a client-declared API exchange for response handoffs, archived decision inputs and change investigations. 0.002 USDC per receipt; offline verification is free. Keep original bytes locally. Does not prove provider origin or content truth. Retry with the same event, idempotency key and original payment authorization.",
  "type": "http",
  "resourceType": "Developer Tool",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0x4a7A972F84E2A64b3B9B64AC1383Df5c413c0E59",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "2000",
      "amountUsd": 0.002,
      "maxTimeoutSeconds": 60
    }
  ],
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "body": {
            "event": {
              "apiId": "example-api",
              "attestation": "client_declared",
              "bodyEncoding": "application_bytes",
              "completedAt": "2026-09-29T10:00:01.000Z",
              "exchangeId": "example-exchange",
              "headerEncoding": "jcs-selected-headers-v1",
              "method": "GET",
              "requestBodyHash": null,
              "requestHeadersHash": {
                "algorithm": "sha256",
                "digest": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
              },
              "responseBodyHash": {
                "algorithm": "sha256",
                "digest": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
              },
              "responseHeadersHash": {
                "algorithm": "sha256",
                "digest": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
              },
              "startedAt": "2026-09-29T10:00:00.000Z",
              "status": 200,
              "targetHash": {
                "algorithm": "sha256",
                "digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
              },
              "version": "datoka.api.exchange.v1"
            },
            "idempotencyKey": "replace-with-your-unique-persistent-key"
          },
          "bodyType": "json",
          "method": "POST",
          "type": "http"
        }
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "body": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "additionalProperties": false,
                "properties": {
                  "event": {
                    "additionalProperties": false,
                    "description": "Commitment-only HTTP exchange declaration built locally with the SDK. No raw URLs, headers or bodies.",
                    "properties": {
                      "apiId": {
                        "description": "Caller-chosen API identifier; not a certified provider identity.",
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
                        "type": "string"
                      },
                      "attestation": {
                        "const": "client_declared",
                        "description": "The caller declares the exchange; Datoka does not independently observe it.",
                        "type": "string"
                      },
                      "bodyEncoding": {
                        "const": "application_bytes",
                        "description": "Hash application bytes after HTTP decoding, without JSON reserialization.",
                        "type": "string"
                      },
                      "completedAt": {
                        "description": "Declared UTC completion with milliseconds; must be at or after startedAt.",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
                        "type": "string"
                      },
                      "exchangeId": {
                        "description": "Stable identifier for one declared HTTP exchange.",
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
                        "type": "string"
                      },
                      "headerEncoding": {
                        "const": "jcs-selected-headers-v1",
                        "description": "Use the SDK header selection and JCS canonicalization before hashing.",
                        "type": "string"
                      },
                      "method": {
                        "description": "Actual HTTP method of the locally captured exchange, for example GET.",
                        "enum": [
                          "GET",
                          "HEAD",
                          "POST",
                          "PUT",
                          "PATCH",
                          "DELETE",
                          "OPTIONS"
                        ],
                        "type": "string"
                      },
                      "requestBodyHash": {
                        "anyOf": [
                          {
                            "additionalProperties": false,
                            "properties": {
                              "algorithm": {
                                "const": "sha256",
                                "description": "Digest algorithm; always sha256.",
                                "type": "string"
                              },
                              "digest": {
                                "description": "SHA-256 of exact locally captured bytes, encoded as 64 lowercase hexadecimal characters.",
                                "pattern": "^[a-f0-9]{64}$",
                                "type": "string"
                              }
                            },
                            "required": [
                              "algorithm",
                              "digest"
                            ],
                            "type": "object"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "SHA-256 of exact application request bytes; null means no body, not an empty body."
                      },
                      "requestHeadersHash": {
                        "additionalProperties": false,
                        "description": "SHA-256 of locally canonicalized selected request headers. Never send raw headers.",
                        "properties": {
                          "algorithm": {
                            "const": "sha256",
                            "description": "Digest algorithm; always sha256.",
                            "type": "string"
                          },
                          "digest": {
                            "description": "SHA-256 of exact locally captured bytes, encoded as 64 lowercase hexadecimal characters.",
                            "pattern": "^[a-f0-9]{64}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "algorithm",
                          "digest"
                        ],
                        "type": "object"
                      },
                      "responseBodyHash": {
                        "anyOf": [
                          {
                            "additionalProperties": false,
                            "properties": {
                              "algorithm": {
                                "const": "sha256",
                                "description": "Digest algorithm; always sha256.",
                                "type": "string"
                              },
                              "digest": {
                                "description": "SHA-256 of exact locally captured bytes, encoded as 64 lowercase hexadecimal characters.",
                                "pattern": "^[a-f0-9]{64}$",
                                "type": "string"
                              }
                            },
                            "required": [
                              "algorithm",
                              "digest"
                            ],
                            "type": "object"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "SHA-256 of exact application response bytes after HTTP decoding. Preserve those bytes; do not reserialize JSON."
                      },
                      "responseHeadersHash": {
                        "additionalProperties": false,
                        "description": "SHA-256 of locally canonicalized selected response headers.",
                        "properties": {
                          "algorithm": {
                            "const": "sha256",
                            "description": "Digest algorithm; always sha256.",
                            "type": "string"
                          },
                          "digest": {
                            "description": "SHA-256 of exact locally captured bytes, encoded as 64 lowercase hexadecimal characters.",
                            "pattern": "^[a-f0-9]{64}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "algorithm",
                          "digest"
                        ],
                        "type": "object"
                      },
                      "startedAt": {
                        "description": "Declared UTC start with milliseconds, for example 2026-10-07T08:00:00.000Z.",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
                        "type": "string"
                      },
                      "status": {
                        "description": "Actual HTTP response status, including error responses; for example 200 or 404.",
                        "maximum": 599,
                        "minimum": 200,
                        "type": "integer"
                      },
                      "targetHash": {
                        "additionalProperties": false,
                        "description": "SHA-256 of the exact UTF-8 target URL, computed locally. Never invent a digest or send the URL itself.",
                        "properties": {
                          "algorithm": {
                            "const": "sha256",
                            "description": "Digest algorithm; always sha256.",
                            "type": "string"
                          },
                          "digest": {
                            "description": "SHA-256 of exact locally captured bytes, encoded as 64 lowercase hexadecimal characters.",
                            "pattern": "^[a-f0-9]{64}$",
                            "type": "string"
                          }
                        },
                        "required": [
                          "algorithm",
                          "digest"
                        ],
                        "type": "object"
                      },
                      "version": {
                        "const": "datoka.api.exchange.v1",
                        "description": "Declaration format version; preserve this literal.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "version",
                      "attestation",
                      "apiId",
                      "exchangeId",
                      "method",
                      "status",
                      "startedAt",
                      "completedAt",
                      "targetHash",
                      "requestBodyHash",
                      "responseBodyHash",
                      "requestHeadersHash",
                      "responseHeadersHash",
                      "bodyEncoding",
                      "headerEncoding"
                    ],
                    "type": "object"
                  },
                  "idempotencyKey": {
                    "description": "One stable key per purchase, saved before payment. Keep it, the event and original payment authorization unchanged on retries.",
                    "pattern": "^[\\x21-\\x7e]{16,200}$",
                    "type": "string"
                  }
                },
                "required": [
                  "event",
                  "idempotencyKey"
                ],
                "type": "object"
              },
              "bodyType": {
                "enum": [
                  "json",
                  "form-data",
                  "text"
                ],
                "type": "string"
              },
              "method": {
                "enum": [
                  "POST",
                  "PUT",
                  "PATCH"
                ],
                "type": "string"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method",
              "bodyType",
              "body"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    }
  },
  "tags": [
    "bazaar"
  ],
  "sourceHost": "datoka-api.bhazarstudio.workers.dev",
  "lastUpdated": "2026-10-08T18:20:57.493Z",
  "quality": {
    "calls30d": 3,
    "uniquePayers30d": 2,
    "lastCalledAt": "2026-10-08T18:20:56.707Z"
  },
  "metadata": {
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "event": {
                "apiId": "example-api",
                "attestation": "client_declared",
                "bodyEncoding": "application_bytes",
                "completedAt": "2026-09-29T10:00:01.000Z",
                "exchangeId": "example-exchange",
                "headerEncoding": "jcs-selected-headers-v1",
                "method": "GET",
                "requestBodyHash": null,
                "requestHeadersHash": {
                  "algorithm": "sha256",
                  "digest": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
                },
                "responseBodyHash": {
                  "algorithm": "sha256",
                  "digest": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
                },
                "responseHeadersHash": {
                  "algorithm": "sha256",
                  "digest": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
                },
                "startedAt": "2026-09-29T10:00:00.000Z",
                "status": 200,
                "targetHash": {
                  "algorithm": "sha256",
                  "digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                },
                "version": "datoka.api.exchange.v1"
              },
              "idempotencyKey": "replace-with-your-unique-persistent-key"
            },
            "bodyType": "json",
            "method": "POST",
            "type": "http"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "additionalProperties": false,
                  "properties": {
                    "event": {
                      "additionalProperties": false,
                      "description": "Commitment-only HTTP exchange declaration built locally with the SDK. No raw URLs, headers or bodies.",
                      "properties": {
                        "apiId": {
                          "description": "Caller-chosen API identifier; not a certified provider identity.",
                          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
                          "type": "string"
                        },
                        "attestation": {
                          "const": "client_declared",
                          "description": "The caller declares the exchange; Datoka does not independently observe it.",
                          "type": "string"
                        },
                        "bodyEncoding": {
                          "const": "application_bytes",
                          "description": "Hash application bytes after HTTP decoding, without JSON reserialization.",
                          "type": "string"
                        },
                        "completedAt": {
                          "description": "Declared UTC completion with milliseconds; must be at or after startedAt.",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
                          "type": "string"
                        },
                        "exchangeId": {
                          "description": "Stable identifier for one declared HTTP exchange.",
                          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
                          "type": "string"
                        },
                        "headerEncoding": {
                          "const": "jcs-selected-headers-v1",
                          "description": "Use the SDK header selection and JCS canonicalization before hashing.",
                          "type": "string"
                        },
                        "method": {
                          "description": "Actual HTTP method of the locally captured exchange, for example GET.",
                          "enum": [
                            "GET",
                            "HEAD",
                            "POST",
                            "PUT",
                            "PATCH",
                            "DELETE",
                            "OPTIONS"
                          ],
                          "type": "string"
                        },
                        "requestBodyHash": {
                          "anyOf": [
                            {
                              "additionalProperties": false,
                              "properties": {
                                "algorithm": {
                                  "const": "sha256",
                                  "description": "Digest algorithm; always sha256.",
                                  "type": "string"
                                },
                                "digest": {
                                  "description": "SHA-256 of exact locally captured bytes, encoded as 64 lowercase hexadecimal characters.",
                                  "pattern": "^[a-f0-9]{64}$",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "algorithm",
                                "digest"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "SHA-256 of exact application request bytes; null means no body, not an empty body."
                        },
                        "requestHeadersHash": {
                          "additionalProperties": false,
                          "description": "SHA-256 of locally canonicalized selected request headers. Never send raw headers.",
                          "properties": {
                            "algorithm": {
                              "const": "sha256",
                              "description": "Digest algorithm; always sha256.",
                              "type": "string"
                            },
                            "digest": {
                              "description": "SHA-256 of exact locally captured bytes, encoded as 64 lowercase hexadecimal characters.",
                              "pattern": "^[a-f0-9]{64}$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "algorithm",
                            "digest"
                          ],
                          "type": "object"
                        },
                        "responseBodyHash": {
                          "anyOf": [
                            {
                              "additionalProperties": false,
                              "properties": {
                                "algorithm": {
                                  "const": "sha256",
                                  "description": "Digest algorithm; always sha256.",
                                  "type": "string"
                                },
                                "digest": {
                                  "description": "SHA-256 of exact locally captured bytes, encoded as 64 lowercase hexadecimal characters.",
                                  "pattern": "^[a-f0-9]{64}$",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "algorithm",
                                "digest"
                              ],
                              "type": "object"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "SHA-256 of exact application response bytes after HTTP decoding. Preserve those bytes; do not reserialize JSON."
                        },
                        "responseHeadersHash": {
                          "additionalProperties": false,
                          "description": "SHA-256 of locally canonicalized selected response headers.",
                          "properties": {
                            "algorithm": {
                              "const": "sha256",
                              "description": "Digest algorithm; always sha256.",
                              "type": "string"
                            },
                            "digest": {
                              "description": "SHA-256 of exact locally captured bytes, encoded as 64 lowercase hexadecimal characters.",
                              "pattern": "^[a-f0-9]{64}$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "algorithm",
                            "digest"
                          ],
                          "type": "object"
                        },
                        "startedAt": {
                          "description": "Declared UTC start with milliseconds, for example 2026-10-07T08:00:00.000Z.",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$",
                          "type": "string"
                        },
                        "status": {
                          "description": "Actual HTTP response status, including error responses; for example 200 or 404.",
                          "maximum": 599,
                          "minimum": 200,
                          "type": "integer"
                        },
                        "targetHash": {
                          "additionalProperties": false,
                          "description": "SHA-256 of the exact UTF-8 target URL, computed locally. Never invent a digest or send the URL itself.",
                          "properties": {
                            "algorithm": {
                              "const": "sha256",
                              "description": "Digest algorithm; always sha256.",
                              "type": "string"
                            },
                            "digest": {
                              "description": "SHA-256 of exact locally captured bytes, encoded as 64 lowercase hexadecimal characters.",
                              "pattern": "^[a-f0-9]{64}$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "algorithm",
                            "digest"
                          ],
                          "type": "object"
                        },
                        "version": {
                          "const": "datoka.api.exchange.v1",
                          "description": "Declaration format version; preserve this literal.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "version",
                        "attestation",
                        "apiId",
                        "exchangeId",
                        "method",
                        "status",
                        "startedAt",
                        "completedAt",
                        "targetHash",
                        "requestBodyHash",
                        "responseBodyHash",
                        "requestHeadersHash",
                        "responseHeadersHash",
                        "bodyEncoding",
                        "headerEncoding"
                      ],
                      "type": "object"
                    },
                    "idempotencyKey": {
                      "description": "One stable key per purchase, saved before payment. Keep it, the event and original payment authorization unchanged on retries.",
                      "pattern": "^[\\x21-\\x7e]{16,200}$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "event",
                    "idempotencyKey"
                  ],
                  "type": "object"
                },
                "bodyType": {
                  "enum": [
                    "json",
                    "form-data",
                    "text"
                  ],
                  "type": "string"
                },
                "method": {
                  "enum": [
                    "POST",
                    "PUT",
                    "PATCH"
                  ],
                  "type": "string"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method",
                "bodyType",
                "body"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      }
    }
  },
  "liveness": {
    "reliability": null
  },
  "verified": false,
  "featured": false,
  "provider": {
    "host": "datoka-api.bhazarstudio.workers.dev",
    "manifest_name": "datoka-api.bhazarstudio.workers.dev",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-10-14T01:15:01.050Z"
  }
}