{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/insumermodel-com/json-schema/insumermodel-com-wallet-proof-schema.json",
  "title": "WalletProof",
  "description": "Optional proof that the caller controls the EVM wallet named in `wallet`: an EIP-4361 (Sign-In with Ethereum) message signed by that wallet (EIP-191; smart-contract wallets are not accepted yet). The message must use domain `api.insumermodel.com` or the merchant's own website (a wallet asked to sign in the store's page expects the page's own site), the wallet as its address, URI `https://api.insumermodel.com/v1/merchants/{merchantId}`, an Issued At within the last 5 minutes, and a nonce not used before. A proven wallet gets the full discount its holdings earn (under the store's tiers and cap), without the daily limit for unproven wallets. A proof object without a string `message` and `signature` is a 400; a proof that does not verify is a 401, never a quiet fallback to the unproven terms. Neither uses a credit. Send it with `wallet` only: a request with a proof and `solanaWallet` or `xrplWallet` is a 400.\n",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/insumermodel-com-openapi.json#/components/schemas/WalletProof",
  "type": "object",
  "required": [
    "message",
    "signature"
  ],
  "properties": {
    "message": {
      "type": "string",
      "description": "The EIP-4361 message, exactly as signed."
    },
    "signature": {
      "type": "string",
      "description": "The wallet's signature over the message (0x hex)."
    }
  }
}