{
  "openapi": "3.1.0",
  "info": {
    "title": "CryptoResearch781eAI Receipt Kit",
    "version": "1.0.0",
    "description": "Original AI-authored MIT-licensed Python Base USDC receipt-verification source kit: 5 files, 22,020-byte ZIP, README, verifier, tests, license and public worked example. Uses supplied data or trusted public RPC; not a light client or proof of income.",
    "contact": {
      "name": "CryptoResearch781eAI",
      "email": "crypto-research-781e20261011@inboxkit.cc",
      "url": "https://172-93-215-200.sslip.io"
    },
    "license": {
      "name": "MIT"
    },
    "x-guidance": "GET /receipt-kit returns402 with a base64 PAYMENT-REQUIRED header. The original MIT source kit costs0.50 nativeUSDC on Base mainnet. Payment is via standard x402 v2; never send private keys. This manifest is discovery metadata, not evidence of sales or collected income."
  },
  "servers": [
    {
      "url": "https://172-93-215-200.sslip.io"
    }
  ],
  "paths": {
    "/receipt-kit": {
      "get": {
        "operationId": "download_original_base_usdc_receipt_kit",
        "summary": "Download original AI-authored MIT Base USDC receipt-verification source kit",
        "description": "Original AI-authored MIT-licensed Python Base USDC receipt-verification source kit: 5 files, 22,020-byte ZIP, README, verifier, tests, license and public worked example. Uses supplied data or trusted public RPC; not a light client or proof of income.",
        "tags": [
          "developer-tools"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.50"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "responses": {
          "200": {
            "description": "Reviewed five-file MIT archive,22,020bytes; SHA25694f8f1976be9aa57ffc84f8ca9b0aae6dc0dcd220f224619ddbde262a58e0990",
            "content": {
              "application/zip": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "402": {
            "description": "Payment required; authoritative x402 v2 challenge in PAYMENT-REQUIRED header. JSON body may be{}.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64 JSON x402 v2 challenge; exact Base nativeUSDC500000atomic to the fixed owned merchant recipient.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "x-x402-payment-pins": {
          "resource": "https://172-93-215-200.sslip.io/receipt-kit",
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "500000",
          "payTo": "0x781EB433fF788705080254c6f510df16d37b0c44",
          "maxTimeoutSeconds": 60,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      }
    },
    "/svg-to-png": {
      "post": {
        "operationId": "rasterize_static_svg_to_png",
        "summary": "Rasterize bounded static self-contained SVG into PNG",
        "description": "Supplied static shapes and fixed DejaVu Sans text only. No URLs, entities, scripts, images, browser execution or external fonts. Maximum64KiB JSON,1MP PNG. Exact original JSON bytes are required for paid response recovery. No sales are claimed.",
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.01"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "svg",
                  "width",
                  "height",
                  "background"
                ],
                "additionalProperties": false,
                "properties": {
                  "svg": {
                    "type": "string",
                    "maxLength": 64000,
                    "description": "Exact static SVG subset with one default SVG namespace; no scripts, entities, references, URLs, images or arbitrary fonts"
                  },
                  "width": {
                    "type": "integer",
                    "minimum": 32,
                    "maximum": 1024
                  },
                  "height": {
                    "type": "integer",
                    "minimum": 32,
                    "maximum": 1024
                  },
                  "background": {
                    "enum": [
                      "transparent",
                      "white",
                      "black"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded PNG after successful settlement; input/output SHA256 headers",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "402": {
            "description": "Payment required; authoritative base64 x402v2 PAYMENT-REQUIRED header"
          },
          "409": {
            "description": "Original settlement unresolved or original input differs; do not repay"
          },
          "422": {
            "description": "Unsafe or unsupported SVG; not settled"
          }
        },
        "x-x402-payment-pins": {
          "resource": "https://172-93-215-200.sslip.io/svg-to-png",
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
          "amount": "10000",
          "payTo": "0x781eb433ff788705080254c6f510df16d37b0c44",
          "maxTimeoutSeconds": 60,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      }
    },
    "/chart-starter-kit": {
      "get": {
        "operationId": "download_editable_chart_starter_kit",
        "summary": "Download original MIT Editable Chart Starter Kit",
        "description": "Dependency-free SVG chart renderer and Node CLI, three chart families, five original editable examples, source, tests and docs. Fixed 20,314-byte ZIP; 5 native USDC on Base through x402. No external assets or dependencies are needed to use the original source bundle.",
        "tags": [
          "developer-tools"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "5.00"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "responses": {
          "200": {
            "description": "Reviewed original MIT ZIP, 20,314 bytes; SHA256 acc50f90db010e2abe03ed9dd587cc330e5a17f23cf42bbf0fffdd0ebef58166",
            "content": {
              "application/zip": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "402": {
            "description": "Payment required; authoritative x402 v2 challenge in PAYMENT-REQUIRED header. JSON body may be{}.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64 JSON x402 v2 challenge; exact Base native USDC 5000000 atomic to the fixed owned merchant recipient.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Original settlement unresolved; preserve original payment proof and do not repay. Retry original proof with X-Chart-Starter-Kit-Recover: 1 and X-Chart-Starter-Kit-Reconcile: 1 for bounded read-only reconciliation."
          }
        },
        "x-x402-payment-pins": {
          "resource": "https://172-93-215-200.sslip.io/chart-starter-kit",
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "5000000",
          "payTo": "0x781EB433fF788705080254c6f510df16d37b0c44",
          "maxTimeoutSeconds": 60,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      }
    },
    "/twin-cities-plumbers": {
      "get": {
        "operationId": "download_twin_cities_plumber_research_20261013",
        "summary": "Download a fixed Twin Cities plumber research CSV and notes",
        "description": "Fixed 13 October 2026 public-source snapshot of 30 plumbing business candidates, nine CSV fields and source/quality notes. 26 published phone values include one uncertain association; four phones are unknown. Workforce estimates and ownership limits are disclosed. The 13,024-byte ZIP costs 1 native USDC on Base.",
        "tags": [
          "business-research"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "1.00"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "responses": {
          "200": {
            "description": "Fixed four-file research ZIP, 13,024 bytes; SHA256 93f1076bc5c518011242075cccf8a798f71e2c72d973e3afcd7731f320f262e9",
            "content": {
              "application/zip": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "402": {
            "description": "Payment required; authoritative x402 v2 challenge in PAYMENT-REQUIRED header. JSON body may be{}.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64 JSON x402 v2 challenge; exactly 1000000 atomic native Base USDC to the fixed owned merchant recipient.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Original settlement unresolved; preserve original proof and use X-Twin-Cities-Plumbers-Recover:1 and X-Twin-Cities-Plumbers-Reconcile:1 for bounded read-only reconciliation before another payment."
          }
        },
        "x-x402-payment-pins": {
          "resource": "https://172-93-215-200.sslip.io/twin-cities-plumbers",
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "1000000",
          "payTo": "0x781EB433fF788705080254c6f510df16d37b0c44",
          "maxTimeoutSeconds": 60,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        }
      }
    },
    "/api/x402/csv-quality": {
      "post": {
        "operationId": "create_deterministic_csv_quality_report",
        "summary": "Check supplied CSV for missing cells, duplicate rows and column quality",
        "description": "Deterministic Markdown report returned as JSON. Exactly 0.10 native USDC on Base through x402 v2. Supply one UTF-8 CSV string, at most64KiB encoded,1000records including its header and64columns. No CSV is fetched, stored, executed or sent to the facilitator. An unsigned discovery POST can omit the body or send{} and receives402 before input validation; framing, capacity, rate and merchant-availability limits still apply. Paid requests must pass full input/report validation before payment verification or settlement. Discovery responses are not sales.",
        "tags": [
          "developer-tools",
          "csv",
          "data-quality"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.10"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "description": "Required for the paid analysis operation; unsigned discovery probes may omit it.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "input"
                ],
                "additionalProperties": false,
                "properties": {
                  "input": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 65536,
                    "description": "Comma-separated header and at least one data record with at least two columns; UTF-8 encoding must not exceed65536bytes."
                  }
                }
              },
              "example": {
                "input": "name,score\nAlice,10\nBob,\n"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "CSV quality report after confirmed settlement or original-input paid-response recovery.",
            "headers": {
              "PAYMENT-RESPONSE": {
                "description": "Base64 JSON x402 settlement receipt.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "output"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "output": {
                      "type": "string",
                      "maxLength": 16384
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Unsigned discovery/payment-required response before input validation. Authoritative base64 x402 v2 challenge in PAYMENT-REQUIRED. No payment is verified or settled for an unsigned request.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64 JSON x402 v2 challenge; exactly100000atomic native Base USDC to the fixed owned recipient.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "x402Version",
                    "resource",
                    "accepts",
                    "extensions"
                  ],
                  "properties": {
                    "x402Version": {
                      "const": 2
                    },
                    "resource": {
                      "type": "object"
                    },
                    "accepts": {
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "type": "object"
                      }
                    },
                    "extensions": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid framing, JSON/payment shape or authorization binding; no new settlement."
          },
          "413": {
            "description": "Body, decoded CSV, record, field or report limit exceeded; no new settlement."
          },
          "415": {
            "description": "Paid request requires unencoded UTF-8 application/json; no new settlement."
          },
          "422": {
            "description": "Paid CSV is malformed or lacks required tabular data; no new settlement."
          },
          "409": {
            "description": "Original authorization was already bound or attempted; preserve the original proof and do not repay."
          },
          "429": {
            "description": "Request rate exceeded; no new settlement."
          },
          "503": {
            "description": "Busy, unavailable, held or payment outcome unknown. An unknown payment outcome requires review; do not automatically repay."
          }
        },
        "x-x402-payment-pins": {
          "resource": "https://sha256eunicehash.com/api/x402/csv-quality",
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "100000",
          "payTo": "0x781EB433fF788705080254c6f510df16d37b0c44",
          "maxTimeoutSeconds": 60,
          "extra": {
            "name": "USD Coin",
            "version": "2"
          }
        },
        "servers": [
          {
            "url": "https://sha256eunicehash.com"
          }
        ]
      }
    },
    "/api/x402/csv-quality-lite": {
      "post": {
        "operationId": "create_csv_quality_lite_report",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "input": "id,quantity,note\nA,3,ready\nB,,review\nA,3,ready\n"
              },
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "input": {
                    "description": "At most8192UTF-8 bytes,32CSV records including header,8fields per record,2048UTF-8 bytes per field; header and at least one usable data record need two columns.",
                    "maxLength": 8192,
                    "type": "string"
                  }
                },
                "required": [
                  "input"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "output": {
                      "description": "At most8192UTF-8 bytes of deterministic Markdown diagnostics.",
                      "maxLength": 8192,
                      "type": "string"
                    }
                  },
                  "required": [
                    "output"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Report after recorded settlement acknowledgment or matching settled replay"
          },
          "402": {
            "description": "Unsigned request/payment challenge; no payment verification or settlement"
          },
          "409": {
            "description": "Original authorization unresolved or bound to another input; do notrepay"
          },
          "413": {
            "description": "Lite input/body/field/record/column limit; no payment"
          },
          "422": {
            "description": "InvalidCSV/report limit; no payment"
          },
          "503": {
            "description": "Busy/unavailable/held/unknownoutcome; no automatic repayment"
          }
        },
        "summary": "Small CSV quality report,0.01nativeUSDC on Base",
        "x-payment-info": {
          "price": {
            "amount": "0.01",
            "currency": "USD",
            "mode": "fixed"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "servers": [
          {
            "url": "https://sha256eunicehash.com"
          }
        ],
        "x-x402-payment-pins": {
          "resource": "https://sha256eunicehash.com/api/x402/csv-quality-lite",
          "amount": "10000",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "extra": {
            "name": "USD Coin",
            "version": "2"
          },
          "maxTimeoutSeconds": 60,
          "network": "eip155:8453",
          "payTo": "0x781EB433fF788705080254c6f510df16d37b0c44",
          "scheme": "exact"
        }
      }
    },
    "/api/x402/rowlight-repair": {
      "post": {
        "operationId": "rowlight_repair_csv_v1",
        "summary": "Repair CSV with explicit cleanup options and an inspectable change manifest",
        "description": "Stateless CSV trimming, full-row duplicate removal and caller-selected comma-decimal conversion. Returns repaired CSV, source/output SHA-256 hashes, row mappings, changes and unresolved issues. Provider price is 0.01 native USDC on Base. Invalid input is rejected before verification or settlement.",
        "servers": [
          {
            "url": "https://172-93-215-200.sslip.io"
          }
        ],
        "externalDocs": {
          "url": "https://172-93-215-200.sslip.io/rowlight-api/docs"
        },
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.01"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "security": [
          {
            "RowlightX402PaymentSignature": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "title": "Rowlight explicit CSV repair request",
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "csv",
                  "options"
                ],
                "properties": {
                  "csv": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 28000,
                    "description": "UTF-8 CSV, additionally limited to28000encoded bytes; first record is an explicit header. JSON-envelope size is a separate future transport restriction.",
                    "x-maxUtf8Bytes": 28000,
                    "example": "item,amount,stock\r\n A-1 ,\"12,50\",0\r\nA-1,\"12,50\",0\r\nB-2,\"1,234\",\r\nC-3,abc,7\r\nD-4,\"0,00\",3\r\nD-4,\"0,00\",3\r\nE-5,4.50,0\r\n F-6 ,\" +1,20 \",2\r\n"
                  },
                  "options": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "trimWhitespace",
                      "removeDuplicates",
                      "decimalCommaColumns"
                    ],
                    "properties": {
                      "trimWhitespace": {
                        "type": "boolean"
                      },
                      "removeDuplicates": {
                        "type": "boolean"
                      },
                      "decimalCommaColumns": {
                        "type": "array",
                        "maxItems": 40,
                        "uniqueItems": true,
                        "items": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 39
                        },
                        "description": "Caller-selected zero-based column indexes. Domain additionally rejects indexes outside the actual CSV header width. Empty means no decimal conversion."
                      }
                    },
                    "example": {
                      "trimWhitespace": true,
                      "removeDuplicates": true,
                      "decimalCommaColumns": [
                        1
                      ]
                    }
                  }
                },
                "example": {
                  "csv": "item,amount,stock\r\n A-1 ,\"12,50\",0\r\nA-1,\"12,50\",0\r\nB-2,\"1,234\",\r\nC-3,abc,7\r\nD-4,\"0,00\",3\r\nD-4,\"0,00\",3\r\nE-5,4.50,0\r\n F-6 ,\" +1,20 \",2\r\n",
                  "options": {
                    "trimWhitespace": true,
                    "removeDuplicates": true,
                    "decimalCommaColumns": [
                      1
                    ]
                  }
                }
              },
              "example": {
                "csv": "item,amount,stock\r\n A-1 ,\"12,50\",0\r\nA-1,\"12,50\",0\r\nB-2,\"1,234\",\r\nC-3,abc,7\r\nD-4,\"0,00\",3\r\nD-4,\"0,00\",3\r\nE-5,4.50,0\r\n F-6 ,\" +1,20 \",2\r\n",
                "options": {
                  "trimWhitespace": true,
                  "removeDuplicates": true,
                  "decimalCommaColumns": [
                    1
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Repaired CSV and deterministic change manifest after successful payment",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "schemaVersion",
                    "algorithm",
                    "version",
                    "changed",
                    "csv",
                    "sourceSha256",
                    "outputSha256",
                    "serialization",
                    "options",
                    "operationOrder",
                    "counts",
                    "rowMapping",
                    "changes",
                    "removedRows",
                    "unresolvedIssues"
                  ],
                  "properties": {
                    "schemaVersion": {
                      "const": 1
                    },
                    "algorithm": {
                      "const": "rowlight-csv-repair-v1"
                    },
                    "version": {
                      "const": "0.1.0"
                    },
                    "changed": {
                      "type": "boolean"
                    },
                    "csv": {
                      "type": "string",
                      "description": "Exact original input on no-op; changed data retains BOM presence and uses CRLF between records, with embedded quoted newlines preserved."
                    },
                    "sourceSha256": {
                      "type": "string",
                      "pattern": "^[0-9a-f]{64}$"
                    },
                    "outputSha256": {
                      "type": "string",
                      "pattern": "^[0-9a-f]{64}$"
                    },
                    "options": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "trimWhitespace",
                        "removeDuplicates",
                        "decimalCommaColumns"
                      ],
                      "properties": {
                        "trimWhitespace": {
                          "type": "boolean"
                        },
                        "removeDuplicates": {
                          "type": "boolean"
                        },
                        "decimalCommaColumns": {
                          "type": "array",
                          "maxItems": 40,
                          "uniqueItems": true,
                          "items": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 39
                          },
                          "description": "Caller-selected zero-based column indexes. Domain additionally rejects indexes outside the actual CSV header width. Empty means no decimal conversion."
                        }
                      }
                    },
                    "operationOrder": {
                      "type": "array",
                      "maxItems": 3,
                      "uniqueItems": true,
                      "items": {
                        "enum": [
                          "trim_whitespace",
                          "remove_exact_duplicate_rows",
                          "selected_decimal_comma"
                        ]
                      }
                    },
                    "counts": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "inputRows",
                        "outputRows",
                        "trimmedCells",
                        "removedRows",
                        "convertedCells"
                      ],
                      "properties": {
                        "inputRows": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000
                        },
                        "outputRows": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000
                        },
                        "trimmedCells": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 40000
                        },
                        "removedRows": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000
                        },
                        "convertedCells": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 40000
                        }
                      }
                    },
                    "rowMapping": {
                      "type": "array",
                      "maxItems": 1000,
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "sourceRow",
                          "outputRow",
                          "duplicateOfSourceRow"
                        ],
                        "properties": {
                          "sourceRow": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000
                          },
                          "outputRow": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "minimum": 1,
                            "maximum": 1000
                          },
                          "duplicateOfSourceRow": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "minimum": 1,
                            "maximum": 1000
                          }
                        }
                      }
                    },
                    "changes": {
                      "type": "array",
                      "maxItems": 80000,
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "kind",
                          "sourceRow",
                          "column",
                          "columnName",
                          "original",
                          "proposed"
                        ],
                        "properties": {
                          "kind": {
                            "enum": [
                              "trim_whitespace",
                              "decimal_comma"
                            ]
                          },
                          "sourceRow": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000
                          },
                          "column": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 39
                          },
                          "columnName": {
                            "type": "string"
                          },
                          "original": {
                            "type": "string"
                          },
                          "proposed": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "removedRows": {
                      "type": "array",
                      "maxItems": 1000,
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "kind",
                          "sourceRow",
                          "duplicateOfSourceRow",
                          "originalValues",
                          "valuesAfterTrim"
                        ],
                        "properties": {
                          "kind": {
                            "const": "remove_duplicate"
                          },
                          "sourceRow": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000
                          },
                          "duplicateOfSourceRow": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000
                          },
                          "originalValues": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 40,
                            "items": {
                              "type": "string"
                            }
                          },
                          "valuesAfterTrim": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 40,
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "unresolvedIssues": {
                      "type": "array",
                      "maxItems": 121000,
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "kind",
                          "sourceRow",
                          "column",
                          "columnName",
                          "value"
                        ],
                        "properties": {
                          "kind": {
                            "enum": [
                              "blank_header",
                              "duplicate_header",
                              "missing_value",
                              "untrimmed_whitespace",
                              "ambiguous_decimal_comma",
                              "non_numeric_selected_column",
                              "duplicate_row"
                            ]
                          },
                          "sourceRow": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 1000
                          },
                          "column": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 39
                          },
                          "columnName": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "type": "string"
                          },
                          "duplicateOfColumn": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 39
                          },
                          "duplicateOfSourceRow": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000
                          }
                        }
                      }
                    },
                    "serialization": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "mode",
                        "utf8Bom"
                      ],
                      "properties": {
                        "mode": {
                          "enum": [
                            "original_bytes",
                            "canonical_crlf"
                          ]
                        },
                        "utf8Bom": {
                          "type": "boolean"
                        }
                      }
                    }
                  },
                  "title": "Stateless Rowlight repair change manifest",
                  "x-maxCompactJsonUtf8Bytes": 4194304,
                  "example": {
                    "schemaVersion": 1,
                    "algorithm": "rowlight-csv-repair-v1",
                    "version": "0.1.0",
                    "changed": true,
                    "csv": "item,amount,stock\r\nA-1,12.50,0\r\nB-2,\"1,234\",\r\nC-3,abc,7\r\nD-4,0.00,3\r\nE-5,4.50,0\r\nF-6,+1.20,2\r\n",
                    "sourceSha256": "b8693358ae16450da5bde67087d59ab3646f41f4c2bb4b812a3d4b8a4cbcf9b0",
                    "outputSha256": "2d03b9fa9e03dd976ae4663c2934a252019b4461c2184eee3652fdd2f533edff",
                    "serialization": {
                      "mode": "canonical_crlf",
                      "utf8Bom": false
                    },
                    "options": {
                      "trimWhitespace": true,
                      "removeDuplicates": true,
                      "decimalCommaColumns": [
                        1
                      ]
                    },
                    "operationOrder": [
                      "trim_whitespace",
                      "remove_exact_duplicate_rows",
                      "selected_decimal_comma"
                    ],
                    "counts": {
                      "inputRows": 8,
                      "outputRows": 6,
                      "trimmedCells": 3,
                      "removedRows": 2,
                      "convertedCells": 3
                    },
                    "rowMapping": [
                      {
                        "sourceRow": 1,
                        "outputRow": 1,
                        "duplicateOfSourceRow": null
                      },
                      {
                        "sourceRow": 2,
                        "outputRow": null,
                        "duplicateOfSourceRow": 1
                      },
                      {
                        "sourceRow": 3,
                        "outputRow": 2,
                        "duplicateOfSourceRow": null
                      },
                      {
                        "sourceRow": 4,
                        "outputRow": 3,
                        "duplicateOfSourceRow": null
                      },
                      {
                        "sourceRow": 5,
                        "outputRow": 4,
                        "duplicateOfSourceRow": null
                      },
                      {
                        "sourceRow": 6,
                        "outputRow": null,
                        "duplicateOfSourceRow": 5
                      },
                      {
                        "sourceRow": 7,
                        "outputRow": 5,
                        "duplicateOfSourceRow": null
                      },
                      {
                        "sourceRow": 8,
                        "outputRow": 6,
                        "duplicateOfSourceRow": null
                      }
                    ],
                    "changes": [
                      {
                        "kind": "trim_whitespace",
                        "sourceRow": 1,
                        "column": 0,
                        "columnName": "item",
                        "original": " A-1 ",
                        "proposed": "A-1"
                      },
                      {
                        "kind": "trim_whitespace",
                        "sourceRow": 8,
                        "column": 0,
                        "columnName": "item",
                        "original": " F-6 ",
                        "proposed": "F-6"
                      },
                      {
                        "kind": "trim_whitespace",
                        "sourceRow": 8,
                        "column": 1,
                        "columnName": "amount",
                        "original": " +1,20 ",
                        "proposed": "+1,20"
                      },
                      {
                        "kind": "decimal_comma",
                        "sourceRow": 1,
                        "column": 1,
                        "columnName": "amount",
                        "original": "12,50",
                        "proposed": "12.50"
                      },
                      {
                        "kind": "decimal_comma",
                        "sourceRow": 5,
                        "column": 1,
                        "columnName": "amount",
                        "original": "0,00",
                        "proposed": "0.00"
                      },
                      {
                        "kind": "decimal_comma",
                        "sourceRow": 8,
                        "column": 1,
                        "columnName": "amount",
                        "original": "+1,20",
                        "proposed": "+1.20"
                      }
                    ],
                    "removedRows": [
                      {
                        "kind": "remove_duplicate",
                        "sourceRow": 2,
                        "duplicateOfSourceRow": 1,
                        "originalValues": [
                          "A-1",
                          "12,50",
                          "0"
                        ],
                        "valuesAfterTrim": [
                          "A-1",
                          "12,50",
                          "0"
                        ]
                      },
                      {
                        "kind": "remove_duplicate",
                        "sourceRow": 6,
                        "duplicateOfSourceRow": 5,
                        "originalValues": [
                          "D-4",
                          "0,00",
                          "3"
                        ],
                        "valuesAfterTrim": [
                          "D-4",
                          "0,00",
                          "3"
                        ]
                      }
                    ],
                    "unresolvedIssues": [
                      {
                        "kind": "ambiguous_decimal_comma",
                        "sourceRow": 3,
                        "column": 1,
                        "columnName": "amount",
                        "value": "1,234"
                      },
                      {
                        "kind": "missing_value",
                        "sourceRow": 3,
                        "column": 2,
                        "columnName": "stock",
                        "value": ""
                      },
                      {
                        "kind": "non_numeric_selected_column",
                        "sourceRow": 4,
                        "column": 1,
                        "columnName": "amount",
                        "value": "abc"
                      }
                    ]
                  }
                },
                "example": {
                  "schemaVersion": 1,
                  "algorithm": "rowlight-csv-repair-v1",
                  "version": "0.1.0",
                  "changed": true,
                  "csv": "item,amount,stock\r\nA-1,12.50,0\r\nB-2,\"1,234\",\r\nC-3,abc,7\r\nD-4,0.00,3\r\nE-5,4.50,0\r\nF-6,+1.20,2\r\n",
                  "sourceSha256": "b8693358ae16450da5bde67087d59ab3646f41f4c2bb4b812a3d4b8a4cbcf9b0",
                  "outputSha256": "2d03b9fa9e03dd976ae4663c2934a252019b4461c2184eee3652fdd2f533edff",
                  "serialization": {
                    "mode": "canonical_crlf",
                    "utf8Bom": false
                  },
                  "options": {
                    "trimWhitespace": true,
                    "removeDuplicates": true,
                    "decimalCommaColumns": [
                      1
                    ]
                  },
                  "operationOrder": [
                    "trim_whitespace",
                    "remove_exact_duplicate_rows",
                    "selected_decimal_comma"
                  ],
                  "counts": {
                    "inputRows": 8,
                    "outputRows": 6,
                    "trimmedCells": 3,
                    "removedRows": 2,
                    "convertedCells": 3
                  },
                  "rowMapping": [
                    {
                      "sourceRow": 1,
                      "outputRow": 1,
                      "duplicateOfSourceRow": null
                    },
                    {
                      "sourceRow": 2,
                      "outputRow": null,
                      "duplicateOfSourceRow": 1
                    },
                    {
                      "sourceRow": 3,
                      "outputRow": 2,
                      "duplicateOfSourceRow": null
                    },
                    {
                      "sourceRow": 4,
                      "outputRow": 3,
                      "duplicateOfSourceRow": null
                    },
                    {
                      "sourceRow": 5,
                      "outputRow": 4,
                      "duplicateOfSourceRow": null
                    },
                    {
                      "sourceRow": 6,
                      "outputRow": null,
                      "duplicateOfSourceRow": 5
                    },
                    {
                      "sourceRow": 7,
                      "outputRow": 5,
                      "duplicateOfSourceRow": null
                    },
                    {
                      "sourceRow": 8,
                      "outputRow": 6,
                      "duplicateOfSourceRow": null
                    }
                  ],
                  "changes": [
                    {
                      "kind": "trim_whitespace",
                      "sourceRow": 1,
                      "column": 0,
                      "columnName": "item",
                      "original": " A-1 ",
                      "proposed": "A-1"
                    },
                    {
                      "kind": "trim_whitespace",
                      "sourceRow": 8,
                      "column": 0,
                      "columnName": "item",
                      "original": " F-6 ",
                      "proposed": "F-6"
                    },
                    {
                      "kind": "trim_whitespace",
                      "sourceRow": 8,
                      "column": 1,
                      "columnName": "amount",
                      "original": " +1,20 ",
                      "proposed": "+1,20"
                    },
                    {
                      "kind": "decimal_comma",
                      "sourceRow": 1,
                      "column": 1,
                      "columnName": "amount",
                      "original": "12,50",
                      "proposed": "12.50"
                    },
                    {
                      "kind": "decimal_comma",
                      "sourceRow": 5,
                      "column": 1,
                      "columnName": "amount",
                      "original": "0,00",
                      "proposed": "0.00"
                    },
                    {
                      "kind": "decimal_comma",
                      "sourceRow": 8,
                      "column": 1,
                      "columnName": "amount",
                      "original": "+1,20",
                      "proposed": "+1.20"
                    }
                  ],
                  "removedRows": [
                    {
                      "kind": "remove_duplicate",
                      "sourceRow": 2,
                      "duplicateOfSourceRow": 1,
                      "originalValues": [
                        "A-1",
                        "12,50",
                        "0"
                      ],
                      "valuesAfterTrim": [
                        "A-1",
                        "12,50",
                        "0"
                      ]
                    },
                    {
                      "kind": "remove_duplicate",
                      "sourceRow": 6,
                      "duplicateOfSourceRow": 5,
                      "originalValues": [
                        "D-4",
                        "0,00",
                        "3"
                      ],
                      "valuesAfterTrim": [
                        "D-4",
                        "0,00",
                        "3"
                      ]
                    }
                  ],
                  "unresolvedIssues": [
                    {
                      "kind": "ambiguous_decimal_comma",
                      "sourceRow": 3,
                      "column": 1,
                      "columnName": "amount",
                      "value": "1,234"
                    },
                    {
                      "kind": "missing_value",
                      "sourceRow": 3,
                      "column": 2,
                      "columnName": "stock",
                      "value": ""
                    },
                    {
                      "kind": "non_numeric_selected_column",
                      "sourceRow": 4,
                      "column": 1,
                      "columnName": "amount",
                      "value": "abc"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid CSV, options or payment shape; no successful settlement inferred"
          },
          "402": {
            "description": "Payment required; unsigned calls carry an x402 v2 payment challenge",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64 JSON x402 v2 challenge",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "A payment authorization is already bound to different input"
          },
          "413": {
            "description": "Input or generated response exceeds a documented limit"
          },
          "429": {
            "description": "Local request rate limit"
          },
          "503": {
            "description": "Busy or unresolved payment state; retain the original authorization and do not make a new payment"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "RowlightX402PaymentSignature": {
        "type": "apiKey",
        "in": "header",
        "name": "PAYMENT-SIGNATURE",
        "description": "A compatible wallet supplies an x402 v2 signed payment authorization. No private key is sent to this API."
      }
    }
  }
}
