{
  "license": "MIT",
  "files": [
    { "path": "index.json", "description": "This list of every file in the integration kit." },
    { "path": "LICENSE.txt", "description": "The MIT licence covering the integration kit." },
    { "path": "package.json", "description": "Marks the kit's TypeScript files as CommonJS so they run in Node and Jest as they are." },
    { "path": "reference/money.ts", "description": "Converting amounts to and from PayMe's integer minor units." },
    { "path": "reference/payme-client.ts", "description": "Transport for every PayMe call: base URLs, the success test, error mapping and log redaction." },
    { "path": "reference/payme-error.ts", "description": "The one error type for a failed PayMe call, including whether PayMe may have acted anyway." },
    { "path": "reference/payme-types.ts", "description": "Request, response and callback shapes for partners and direct sellers, with PayMe's field names." },
    { "path": "reference/callback-fields.ts", "description": "Reading a form-encoded callback body: classifying it and coercing its fields, for both roles." },
    { "path": "reference/sale-query-verification.ts", "description": "Confirming a sale with get-transactions before acting on a callback, for both roles." },
    { "path": "reference/subscription-verification.ts", "description": "Confirming a subscription with get-subscriptions before acting on a callback, for both roles." },
    { "path": "reference/partner-signature.ts", "description": "Partners: the payme_signature formulas for sale callbacks and return URLs, and for subscription return URLs." },
    { "path": "reference/partner-callbacks.ts", "description": "Partners: what to do with each callback type." },
    { "path": "reference/seller-callbacks.ts", "description": "Direct sellers: what to do with each callback type." },
    { "path": "browser/hosted-fields.js", "description": "Hosted Fields (JSAPI) in the browser, with the rules that cost people time." },
    { "path": "browser/checkout-form.js", "description": "The checkout form around the card fields, shared by every live example: checking the fields, the token, success, errors and starting again." },
    { "path": "browser/hosted-page.html", "description": "The hosted payment page in an iframe: the least browser code of any flow." },
    { "path": "examples/compact/example.json", "description": "The compact form live example: its title, what it does and its list of files." },
    { "path": "examples/compact/index.html", "description": "The compact form live example's page: its fields, their words and its success state." },
    { "path": "examples/compact/checkout.js", "description": "The compact form live example's settings: the card fields' look and the total. The Hebrew example uses it too." },
    { "path": "examples/compact/styles.css", "description": "The compact form live example's styles, including the height every card field container needs. The Hebrew example uses it too." },
    { "path": "examples/compact-hebrew/example.json", "description": "The Hebrew form live example: its title, what it does and its list of files." },
    { "path": "examples/compact-hebrew/index.html", "description": "The Hebrew form live example's page: its fields, their words and its success state." },
    { "path": "examples/rounded-dark/example.json", "description": "The rounded dark form live example: its title, what it does and its list of files." },
    { "path": "examples/rounded-dark/index.html", "description": "The rounded dark form live example's page: its fields, their words and its success state." },
    { "path": "examples/rounded-dark/checkout.js", "description": "The rounded dark form live example's settings: the card fields' look and the total." },
    { "path": "examples/rounded-dark/styles.css", "description": "The rounded dark form live example's styles, including the height every card field container needs." },
    { "path": "examples/minimal-lines/example.json", "description": "The minimal lines form live example: its title, what it does and its list of files." },
    { "path": "examples/minimal-lines/index.html", "description": "The minimal lines form live example's page: its fields, their words and its success state." },
    { "path": "examples/minimal-lines/checkout.js", "description": "The minimal lines form live example's settings: the card fields' look and the total." },
    { "path": "examples/minimal-lines/styles.css", "description": "The minimal lines form live example's styles, including the height every card field container needs." },
    { "path": "examples/pay-dialog/example.json", "description": "The pay in a dialog live example: its title, what it does and its list of files." },
    { "path": "examples/pay-dialog/index.html", "description": "The pay in a dialog live example's page: its fields, their words and its success state." },
    { "path": "examples/pay-dialog/checkout.js", "description": "The pay in a dialog live example's settings: the card fields' look and the total." },
    { "path": "examples/pay-dialog/styles.css", "description": "The pay in a dialog live example's styles, including the height every card field container needs." },
    { "path": "test-vectors/money.json", "description": "Test cases for converting amounts and the minimum check." },
    { "path": "test-vectors/sale-query-verification.json", "description": "Test cases for confirming a sale: your order, PayMe's answer, the expected result." },
    { "path": "test-vectors/subscription-verification.json", "description": "Test cases for confirming a subscription: your record, PayMe's answer, the expected result." },
    { "path": "test-vectors/partner-signatures.json", "description": "Test cases for the signature formulas, with digests computed independently." },
    { "path": "test-vectors/partner-callbacks.json", "description": "Test cases for partner callback decisions." },
    { "path": "test-vectors/seller-callbacks.json", "description": "Test cases for direct-seller callback decisions." }
  ]
}
