{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/insumermodel-com/json-schema/insumermodel-com-sender-signature-schema.json",
  "title": "SenderSignature",
  "description": "The paying wallet's signature over a fixed text that names the payment. It proves the caller controls the wallet that sent it, because a transaction hash alone is public. The server builds the text and checks the signature against the sender the chain read returned, never an address in the request. The text is five lines joined by a newline (\\n), with no trailing newline:\n\n    api.insumermodel.com\n    Confirm the wallet that sent this payment.\n    Purpose: key purchase\n    Chain: eip155:8453\n    Transaction: 0x...\n\n`Purpose` is `key purchase` on POST /v1/keys/buy and POST /v1/keys/purchase, and `credit purchase` on POST /v1/credits/buy and POST /v1/merchants/{id}/credits. `Chain` is `eip155:<chainId>` on an EVM chain, or `solana`. `Transaction` is the payment's transaction id: on EVM, 0x plus lowercase hex; on Solana, as sent. EVM: EIP-191 personal_sign, 0x hex; a smart wallet is checked with ERC-1271 isValidSignature over the EIP-191 hash of the same text. Solana: ed25519 over the UTF-8 bytes of the text (wallet signMessage), base58 or base64. A request that needs it and lacks it returns 400, and the message carries the exact text to sign.\n",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/insumermodel-com-openapi.json#/components/schemas/SenderSignature",
  "type": "string"
}