{
  "openapi": "3.0.0",
  "info": {
    "title": "Dojo API",
    "version": "2025-09-10",
    "description": "# Introduction\n\nThe Dojo API is a REST API, using HTTP response codes to convey status, including successful responses and errors. Additionally, it accepts and returns JSON in the HTTP body.\nFor information on the latest development progress, visit the [changelog](../changelog).\n\n## Base URLs\n\nUse the following base URL when making requests to the API:  https://api.dojo.tech/\n\n## Authentication\n\nThe Dojo API uses [Basic HTTP authentication](https://en.wikipedia.org/wiki/Basic_access_authentication). You can generate API keys in the [Developer Portal](https://developer.dojo.tech).\nSecret keys for the test environment use the prefix `sk_sandbox_`. Production keys use the prefix `sk_prod_`.\n\nYou must include your secret API key in the header of all requests, for example:\n\n```curl\n  --header 'content-type: application/json' \\\n  --header 'Authorization: Basic sk_prod_your_key' \\\n```\n\nAPI requests without authentication will fail.\n\n## Additional Required Headers\n\nThe following headers are required on Terminal and Terminal Sessions API requests, requests without them will fail.\n\n- `reseller-id` - Identifies the reseller who sells software on behalf of the EPOS company. This value will be unique and provided by Dojo to each reseller.\n- `software-house-id` - Identifies the EPOS company whose software is generating the request. This value shouldn't be configurable, as it will remain the same for all customers using particular EPOS software. This value will be provided by Dojo.\n\n## HTTP Responses\n\nThe API returns standard HTTP response codes [RFC 7231](https://tools.ietf.org/html/rfc7231#section-6) on each request to indicate the success or otherwise of API requests. Summaries for each HTTP code are listed below:\n\n* `200 OK`—The request was successful.\n\n* `201 Created`—The request was successful, and a new resource was created as a result.\n\n* `204 No Content`—The request was successful, but there is no content to send.\n\n* `400 Bad Request`—Bad request, probably due to a syntax error.\n\n* `401 Unauthorized`—Authentication required.\n\n* `403 Forbidden`—The API key doesn't have permissions.\n\n* `404 Not Found`—The resource doesn't exist.\n\n* `405 Method Not Allowed`—The request method is known by the server but isn't supported by the target resource.\n\n* `409 Conflict`—The request couldn't be completed because it conflicted with another request or the server's configuration.\n\n* `500`, `502`, `503`, `504` `Server Errors`—An error occurred with our API.\n\n## Errors\n\nDojo follows the error response format proposed in [RFC 7807](https://tools.ietf.org/html/rfc7807), also known as Problem Details for HTTP APIs. All errors are returned in the form of JSON.\n\n### Error Schema\n\nIn case of an error, the response object contains the following fields:\n\n* `errors` [object]—A human-readable explanation of errors.\n\n* `type` [string]—\nA URI reference RFC 3986 that identifies the problem type.\n\n* `title` [string]—A short, human-readable summary of the error.\n\n* `status` [integer]—The HTTP status code.\n\n* `detail` [string]—A human-readable message giving more details about the error. Not always present.\n\n* `traceId` [string]—The unique identifier of the failing request.\n\nThe following example shows a possible error response:\n\n```json\n{\n    \"errors\": {\n        \"Reference\": [\n            \"The Reference field is required.\"\n        ]\n    },\n    \"type\": \"https://tools.ietf.org/html/rfc7231#section-6.5.1\",\n    \"title\": \"One or more validation errors occurred.\",\n    \"status\": 400,\n    \"traceId\": \"00-a405f077df056a498323ffbcec05923f-aa63e6f4dbbc734a-01\",\n}\n```\n\n## Versioning\n\nDojo APIs use the yyyy-mm-dd API version-naming scheme. You have to pass the version as the `version` header in all API calls, for example:\n\n``` curl\n  --header 'content-type: application/json' \\\n  --header 'Authorization: Basic sk_prod_your_key' \\\n  --header 'version: 2025-09-10' \\\n```\n\nWhen we make [breaking changes](../development-resources/versioning-overview#breaking-changes) to the API, we release new dated versions.\n\nThe current version is `2025-09-10`.\n\n## SDKs\nUse our PHP, .NET, and mobile [client libraries](/development-resources/sdk) to build your integration.\n\n## Code Samples\n\nGet help in building your integration with our [code samples](/development-resources/code-samples).\n",
    "termsOfService": "https://dojo.tech/legal/",
    "contact": {
      "name": "Dojo Developer Experience Team"
    }
  },
  "servers": [
    {
      "url": "https://api.dojo.tech"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "tags": [
    {
      "name": "Payment intents",
      "description": "Allows you to take and manage payments.\n\n**Documentation**: [Payment intents](../../payments/manage-payments/payment-intent)"
    },
    {
      "name": "Refunds",
      "description": "Allows you to create a refund for a captured payment.\n\n\n  **Documentation**: [Refunds](/payments/manage-payments/cancelling-payments/refund)"
    },
    {
      "name": "Reversal",
      "description": "Allows you to create a reversal for payments.\n\n**Documentation**: [Reversal](../../payments/manage-payments/cancelling-payments/reversal)"
    },
    {
      "name": "Captures",
      "description": "Allows you to capture the full payment amount or part of the amount.\n\n**Documentation**: [Captures](../../payments/manage-payments/capture)"
    },
    {
      "name": "Webhooks",
      "description": "Webhooks notify you when a specific event has occurred.\n\n**Documentation**: [Webhooks](../../development-resources/webhooks)"
    },
    {
      "name": "Customers",
      "description": "Allows to create and manage a customer of your business."
    },
    {
      "name": "Setup intents",
      "description": "Allows you to setup a card for future payments.\n\n**Documentation**: [Setup intent](../payments/manage-payments/setup-intent)"
    },
    {
      "name": "Terminals",
      "description": "Allows you to manage payments on the terminal.\n**Documentation**: [Terminals](../payments/accept-payments/in-person-payments/pay-at-counter/terminals)"
    },
    {
      "name": "Terminal sessions",
      "description": "Allows you to manage sessions on the terminal."
    },
    {
      "name": "Capabilities",
      "description": "Register your REST and WebSockets endpoints."
    }
  ],
  "paths": {
    "/payment-intents": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePaymentIntentRequest"
              },
              "examples": {
                "Auto": {
                  "value": {
                    "amount": {
                      "value": 1000,
                      "currencyCode": "GBP"
                    },
                    "reference": "Order 234",
                    "description": "Demo payment intent",
                    "captureMode": "Auto"
                  }
                },
                "Manual": {
                  "value": {
                    "amount": {
                      "value": 1000,
                      "currencyCode": "GBP"
                    },
                    "reference": "Order 234",
                    "description": "Demo payment intent",
                    "captureMode": "Manual",
                    "AutoExpireAction": "Capture",
                    "AutoExpireIn": "00:00:55"
                  }
                }
              }
            }
          },
          "required": true,
          "x-name": "createPaymentIntentRequest",
          "x-position": 1
        },
        "tags": [
          "Payment intents"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentIntent"
                },
                "examples": {
                  "Auto": {
                    "value": {
                      "id": "pi_sandbox_G_FeegU8WESxtY_Nct8jqw",
                      "captureMode": "Auto",
                      "cardHolderNotPresent": false,
                      "clientSessionSecretExpirationDate": "0001-01-01T00:00:00Z",
                      "status": "Created",
                      "paymentMethods": [
                        "Card"
                      ],
                      "amount": {
                        "value": 1000,
                        "currencyCode": "GBP"
                      },
                      "totalAmount": {
                        "value": 1000,
                        "currencyCode": "GBP"
                      },
                      "refundedAmount": 0,
                      "createdAt": "2024-04-07T23:25:44.802258Z",
                      "updatedAt": "2024-04-07T23:25:44.802258Z",
                      "reference": "Order 234",
                      "description": "Demo payment intent",
                      "itemLines": [],
                      "taxLines": [],
                      "merchantConfig": {
                        "supportedPaymentMethods": {
                          "cardSchemes": [
                            "VISA",
                            "MASTERCARD",
                            "MAESTRO",
                            "DISCOVER",
                            "DCI"
                          ],
                          "wallets": [
                            "APPLE_PAY",
                            "GOOGLE_PAY"
                          ]
                        }
                      },
                      "config": {
                        "branding": {},
                        "tradingName": "Cam Test Ltd"
                      },
                      "paymentSource": "api",
                      "expireAt": "2024-05-07T23:25:44.8023189Z",
                      "metadata": {
                        "location-id": "rpl_bOppxLvOEsS"
                      },
                      "paymentEvents": [],
                      "paymentLink": "https://pay.dojo.tech:443/checkout/pi_sandbox_G_FeegU8WESxtY_Nct8jqw",
                      "terminalSessionHistory": []
                    }
                  },
                  "Manual": {
                    "value": {
                      "id": "pi_sandbox_LXGmW_Rlv0CN5WlBimQg5A",
                      "captureMode": "Manual",
                      "cardHolderNotPresent": false,
                      "clientSessionSecretExpirationDate": "0001-01-01T00:00:00Z",
                      "status": "Created",
                      "paymentMethods": [
                        "Card"
                      ],
                      "amount": {
                        "value": 1000,
                        "currencyCode": "GBP"
                      },
                      "totalAmount": {
                        "value": 1000,
                        "currencyCode": "GBP"
                      },
                      "refundedAmount": 0,
                      "createdAt": "2024-04-07T23:24:53.3770815Z",
                      "updatedAt": "2024-04-07T23:24:53.3770816Z",
                      "reference": "Order 234",
                      "description": "Demo payment intent",
                      "itemLines": [],
                      "taxLines": [],
                      "merchantConfig": {
                        "supportedPaymentMethods": {
                          "cardSchemes": [
                            "VISA",
                            "MASTERCARD",
                            "MAESTRO",
                            "DISCOVER",
                            "DCI"
                          ],
                          "wallets": [
                            "APPLE_PAY",
                            "GOOGLE_PAY"
                          ]
                        }
                      },
                      "config": {
                        "branding": {},
                        "tradingName": "Cam Test Ltd"
                      },
                      "paymentSource": "api",
                      "autoExpireAction": "Capture",
                      "expireAt": "2024-05-07T23:24:53.3771391Z",
                      "autoExpireIn": "00:00:55",
                      "metadata": {
                        "location-id": "rpl_bOppxLvOEsS"
                      },
                      "paymentEvents": [],
                      "paymentLink": "https://pay.dojo.tech:443/checkout/pi_sandbox_LXGmW_Rlv0CN5WlBimQg5A",
                      "terminalSessionHistory": []
                    }
                  }
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Unauthorized"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Forbidden"
          }
        },
        "operationId": "PaymentIntents_CreatePaymentIntent",
        "summary": "Create a payment intent",
        "description": "Creates a payment intent."
      }
    },
    "/payment-intents/{paymentIntentId}": {
      "get": {
        "tags": [
          "Payment intents"
        ],
        "parameters": [
          {
            "example": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw",
            "name": "paymentIntentId",
            "description": "The unique identifier of the payment intent.\n",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "in": "path",
            "required": true,
            "x-position": 1
          },
          {
            "name": "returnCanceled",
            "description": "If the value is `true`, and the payment intent being retrieved has a status of `Canceled`, the payment intent will be returned in the response. Otherwise a 404 (not found) status code will be returned.",
            "schema": {
              "type": "boolean",
              "nullable": false
            },
            "in": "query",
            "required": false,
            "x-position": 2
          },
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentIntent"
                },
                "example": {
                  "id": "pi_sandbox_S_zeCMipQkSG9fFmqS-ceQ",
                  "captureMode": "Auto",
                  "cardHolderNotPresent": false,
                  "clientSessionSecret": "bHte6dGrBuOoMwOgKGG3X3s2HFKERz3rbZ2SLD-H_BU_1wy-b3IgRCIUtgm7pZXh1QJC70slbaaNvm0XUcZ7T3UL8LRUMz5HK529D23ITvv_QaeIbrV8nI6Y-pxeDuqn444VqHAEok7Ue0Wsg5HgXz327lXV_A==",
                  "clientSessionSecretExpirationDate": "2024-07-25T09:19:10Z",
                  "paymentDetails": {
                    "transactionId": "19e4535e-ef6e-48e2-90be-d2b313c1cefd",
                    "transactionDateTime": "2024-07-25T08:49:20.973410318Z",
                    "message": "DEPOSITED",
                    "authCode": "123456",
                    "card": {
                      "cardNumber": "44565300****1096",
                      "cardName": "test",
                      "expiryDate": "2024-12-31",
                      "cardType": "VISA",
                      "cardFundingType": "Unknown",
                      "entryMode": "Contactless",
                      "verificationMethod": "Pin"
                    },
                    "avsResult": "ADDRESS_MATCH_POSTCODE_MATCH"
                  },
                  "status": "Captured",
                  "paymentMethods": [
                    "Card"
                  ],
                  "amount": {
                    "value": 1000,
                    "currencyCode": "GBP"
                  },
                  "totalAmount": {
                    "value": 1000,
                    "currencyCode": "GBP"
                  },
                  "refundedAmount": 0,
                  "billingAddress": {
                    "address1": "",
                    "address2": "",
                    "address3": "",
                    "address4": "",
                    "city": "",
                    "state": "",
                    "postcode": "",
                    "countryCode": ""
                  },
                  "shippingDetails": {
                    "name": "",
                    "address": {
                      "address1": "",
                      "address2": "",
                      "address3": "",
                      "address4": "",
                      "city": "",
                      "state": "",
                      "postcode": "",
                      "countryCode": ""
                    }
                  },
                  "createdAt": "2024-07-25T08:48:38.497Z",
                  "updatedAt": "2024-07-25T08:49:24.761Z",
                  "reference": "Order 234",
                  "description": "Demo payment intent",
                  "itemLines": [],
                  "taxLines": [],
                  "merchantConfig": {
                    "supportedPaymentMethods": {
                      "cardSchemes": [
                        "VISA",
                        "MASTERCARD",
                        "MAESTRO",
                        "DISCOVER",
                        "DCI",
                        "AMEX"
                      ],
                      "wallets": [
                        "APPLE_PAY",
                        "GOOGLE_PAY"
                      ]
                    }
                  },
                  "config": {
                    "branding": {},
                    "tradingName": "I DIM SUM"
                  },
                  "paymentSource": "api",
                  "expireAt": "2024-08-24T08:48:38.498Z",
                  "metadata": {
                    "location-id": "202059233225269"
                  },
                  "paymentEvents": [
                    {
                      "transactionId": "19e4535e-ef6e-48e2-90be-d2b313c1cefd",
                      "transactionDateTime": "2024-07-25T08:49:20.973410318Z",
                      "eventType": "AuthChallenged",
                      "authCode": "",
                      "cardNumber": "44565300****1096",
                      "expiryDate": "2024-12-31",
                      "cardType": "VISA",
                      "cardholderName": "test",
                      "paymentMethodId": ""
                    },
                    {
                      "transactionId": "19e4535e-ef6e-48e2-90be-d2b313c1cefd",
                      "transactionDateTime": "2024-07-25T08:49:20.973410318Z",
                      "eventType": "Captured",
                      "authCode": "123456",
                      "cardNumber": "44565300****1096",
                      "expiryDate": "2024-12-31",
                      "cardType": "VISA",
                      "cardholderName": "test",
                      "paymentMethodId": ""
                    }
                  ],
                  "paymentLink": "https://pay.dojo.tech:443/checkout/pi_sandbox_S_zeCMipQkSG9fFmqS-ceQ",
                  "terminalSessionHistory": [],
                  "captures": []
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Not found"
          }
        },
        "operationId": "PaymentIntents_Get",
        "summary": "Retrieve a payment intent",
        "description": "Retrieves the details of a payment intent."
      },
      "delete": {
        "tags": [
          "Payment intents"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "example": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw",
            "name": "paymentIntentId",
            "description": "The unique identifier of the payment intent.\n",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "in": "path",
            "required": true,
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentIntent"
                },
                "example": {
                  "id": "pi_sandbox_6p477TZOmECe5zUHszJCCg",
                  "captureMode": "Auto",
                  "clientSessionSecret": "DIi9C5SJTyI4V62Eqw00_vD47U3fmFsFSRVvuY--gTRVMb1TxCmudI0Nl4GUTEHTxzwWGqIkYEXQ7aWgwZFC4rmPE8gTLN_rxGeqpihGm1YvSiuKQTREQW50TmDKUMxklbqnenGvnjdKruNFhpBFQBXR-Ni_8g==",
                  "clientSessionSecretExpirationDate": "2024-02-13T02:55:34Z",
                  "status": "Canceled",
                  "paymentMethods": [
                    "Card"
                  ],
                  "amount": {
                    "value": 1000,
                    "currencyCode": "GBP"
                  },
                  "totalAmount": {
                    "value": 1000,
                    "currencyCode": "GBP"
                  },
                  "refundedAmount": 0,
                  "createdAt": "2024-02-13T02:25:34.17Z",
                  "updatedAt": "2024-02-13T02:25:34.17Z",
                  "reference": "Order 234",
                  "description": "Demo payment intent",
                  "itemLines": [],
                  "taxLines": [],
                  "merchantConfig": {
                    "supportedPaymentMethods": {
                      "cardSchemes": [
                        "VISA",
                        "MASTERCARD",
                        "MAESTRO",
                        "DISCOVER",
                        "DCI",
                        "AMEX"
                      ],
                      "wallets": [
                        "APPLE_PAY",
                        "GOOGLE_PAY"
                      ]
                    }
                  },
                  "config": {
                    "branding": {
                      "logoUrl": "https://cdn.dojo.tech/payments/branding/logos/acc_wrr9HHrH10KHXtVxfWNPHw/file_y-_CuT9RLkKK2vvvLaGeUw/90395f2a-029e-4f23-afdb-258bdbb1002b.png",
                      "faviconUrl": "https://cdn.dojo.tech/payments/branding/favicons/acc_wrr9HHrH10KHXtVxfWNPHw/file_v7EuxUbMmkCUMm7lP9PIgg/dojo.png"
                    },
                    "tradingName": "Dojo Cafe (Paymentsense)"
                  },
                  "paymentSource": "api",
                  "expireAt": "2024-03-14T02:25:34.17Z",
                  "metadata": {
                    "location-id": "771402011592305"
                  },
                  "paymentEvents": [],
                  "paymentLink": "https://pay.dojo.tech:443/checkout/pi_sandbox_6p477TZOmECe5zUHszJCCg",
                  "terminalSessionHistory": []
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Not found"
          }
        },
        "operationId": "PaymentIntents_Delete",
        "summary": "Cancel a payment intent",
        "description": "Cancels a payment intent. If a payment intent's status is `Created`, it can be canceled. After cancellation, the payment intent status will change to `Canceled` and any operations will fail with an error."
      }
    },
    "/payment-intents/{paymentIntentId}/captures": {
      "post": {
        "tags": [
          "Captures"
        ],
        "summary": "Captures a payment",
        "description": "Captures a payment intent that has previously been created but not yet refunded or reversed. You can capture the full amount or a partial amount.",
        "operationId": "Captures_Create",
        "parameters": [
          {
            "name": "version",
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "paymentIntentId",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the payment intent.\n",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1,
            "example": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw"
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCaptureRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Capture"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/payment-intents/{paymentIntentId}/charge": {
      "post": {
        "tags": [
          "Payment intents"
        ],
        "summary": "Charge a card",
        "operationId": "PaymentIntents_ChargePaymentIntent",
        "description": "Allows you to charge a card later. This is available for merchant-initiated transactions only.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "paymentIntentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "description": "The unique identifier of the payment intent.\n",
            "x-position": 3,
            "example": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChargeResponse"
                },
                "example": {
                  "paymentIntentId": "pi_sandbox_TRVit9jxx0KLSVW48a-K_w",
                  "status": "Successful",
                  "message": "DEPOSITED"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/payment-intents/{paymentIntentId}/refresh-client-session-secret": {
      "post": {
        "tags": [
          "Payment intents"
        ],
        "operationId": "PaymentIntents_RefreshClientSessionSecret",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "paymentIntentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "description": "The unique identifier of the payment intent.\n",
            "x-position": 1,
            "example": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentIntent"
                },
                "example": {
                  "id": "pi_sandbox_H8tBljY-O0GZZpHA-kC8UQ",
                  "captureMode": "Auto",
                  "clientSessionSecret": "y4I5IegbtuzHR-tLn4S4ONlK0felINimLd_a2x_y3h1zwKTXFRowSZG3amVGmaRBxxCqy7ynJhh8IN9mMwEpFeUPZKJyMWEFPPAmAJ8_5pPtaK11SPvUg-WT2erSkT-e34oo4dwrsBx6igxEPBCEV-OBBu74HA==",
                  "clientSessionSecretExpirationDate": "2024-02-13T14:50:28Z",
                  "status": "Created",
                  "paymentMethods": [
                    "Card"
                  ],
                  "amount": {
                    "value": 1000,
                    "currencyCode": "GBP"
                  },
                  "totalAmount": {
                    "value": 1000,
                    "currencyCode": "GBP"
                  },
                  "refundedAmount": 0,
                  "createdAt": "2024-02-13T14:20:14.418Z",
                  "updatedAt": "2024-02-13T14:20:28.2961052Z",
                  "reference": "Order 234",
                  "description": "Demo payment intent",
                  "itemLines": [],
                  "taxLines": [],
                  "merchantConfig": {
                    "supportedPaymentMethods": {
                      "cardSchemes": [
                        "VISA",
                        "MASTERCARD",
                        "MAESTRO",
                        "DISCOVER",
                        "DCI",
                        "AMEX"
                      ],
                      "wallets": [
                        "APPLE_PAY",
                        "GOOGLE_PAY"
                      ]
                    }
                  },
                  "config": {
                    "branding": {
                      "logoUrl": "https://cdn.dojo.tech/payments/branding/logos/acc_wrr9HHrH10KHXtVxfWNPHw/file_y-_CuT9RLkKK2vvvLaGeUw/90395f2a-029e-4f23-afdb-258bdbb1002b.png",
                      "faviconUrl": "https://cdn.dojo.tech/payments/branding/favicons/acc_wrr9HHrH10KHXtVxfWNPHw/file_v7EuxUbMmkCUMm7lP9PIgg/dojo.png"
                    },
                    "tradingName": "Dojo Cafe (Paymentsense)"
                  },
                  "paymentSource": "api",
                  "expireAt": "2024-03-14T14:20:14.418Z",
                  "metadata": {
                    "location-id": "771402011592305"
                  },
                  "paymentEvents": [],
                  "paymentLink": "https://pay.dojo.tech:443/checkout/pi_sandbox_H8tBljY-O0GZZpHA-kC8UQ",
                  "terminalSessionHistory": []
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "summary": "Update a client session secret",
        "description": "Updates a client session secret if the current secret key has been consumed or expired. These tokens are one-time use only. If you need to retry a payment, you must generate a new token."
      }
    },
    "/payment-intents/search": {
      "post": {
        "tags": [
          "Payment intents"
        ],
        "operationId": "PaymentIntents_Search",
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPaymentIntentRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedPaymentIntent"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "summary": "List all payment intents",
        "description": "Retrieves a list of payment intents.\nResults are paginated. By default, the method returns up to 50 payment intents."
      }
    },
    "/payment-intents/{paymentIntentId}/tips-amount": {
      "post": {
        "tags": [
          "Payment intents"
        ],
        "operationId": "PaymentIntents_SetTipsAmount",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "paymentIntentId",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the payment intent.\n",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1,
            "example": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw"
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetTipsAmountRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentIntent"
                },
                "example": {
                  "id": "pi_sandbox_G_FeegU8WESxtY_Nct8jqw",
                  "captureMode": "Auto",
                  "cardHolderNotPresent": false,
                  "clientSessionSecretExpirationDate": "0001-01-01T00:00:00Z",
                  "status": "Created",
                  "paymentMethods": [
                    "Card"
                  ],
                  "amount": {
                    "value": 1000,
                    "currencyCode": "GBP"
                  },
                  "totalAmount": {
                    "value": 1000,
                    "currencyCode": "GBP"
                  },
                  "refundedAmount": 0,
                  "createdAt": "2024-04-07T23:25:44.802258Z",
                  "updatedAt": "2024-04-07T23:25:44.802258Z",
                  "reference": "Order 234",
                  "description": "Demo payment intent",
                  "itemLines": [],
                  "taxLines": [],
                  "merchantConfig": {
                    "supportedPaymentMethods": {
                      "cardSchemes": [
                        "VISA",
                        "MASTERCARD",
                        "MAESTRO",
                        "DISCOVER",
                        "DCI"
                      ],
                      "wallets": [
                        "APPLE_PAY",
                        "GOOGLE_PAY"
                      ]
                    }
                  },
                  "config": {
                    "branding": {},
                    "tradingName": "Cam Test Ltd"
                  },
                  "paymentSource": "api",
                  "expireAt": "2024-05-07T23:25:44.8023189Z",
                  "metadata": {
                    "location-id": "rpl_bOppxLvOEsS"
                  },
                  "paymentEvents": [],
                  "paymentLink": "https://pay.dojo.tech:443/checkout/pi_sandbox_G_FeegU8WESxtY_Nct8jqw",
                  "terminalSessionHistory": []
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "summary": "Change tips amount",
        "description": "Changes tip amount for a payment intent. Available if you enabled tipping when creating the payment intent.\n<!-- Check if tips or gratuity exists>"
      }
    },
    "/payment-intents/{paymentIntentId}/amount": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetAmountRequest"
              }
            }
          },
          "required": true,
          "x-name": "request",
          "x-position": 2
        },
        "tags": [
          "Payment intents"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "example": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw",
            "name": "paymentIntentId",
            "description": "The unique identifier of the payment intent.\n",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "in": "path",
            "required": true,
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentIntent"
                },
                "example": {
                  "id": "pi_sandbox_xt4SwkRZ60moZFWJ9iOKrw",
                  "captureMode": "Auto",
                  "cardHolderNotPresent": false,
                  "clientSessionSecret": "NoK0mY76TgasoZdQ-X9xDZ3jYGDq1lMg0frwxbOVMz2xXqbRzpseN6dXtoMOzjDZVz82Y0C2xGLj4Zys1PZqu1u7F4mj9fV9aK7C7fQn90tIyp3sM3ws0U8mpgfbPc4WPAxYo8BFHkZ2PggnaUH-vL00kDbreg==",
                  "clientSessionSecretExpirationDate": "2024-04-10T23:23:13Z",
                  "status": "Created",
                  "paymentMethods": [
                    "Card"
                  ],
                  "amount": {
                    "value": 5500,
                    "currencyCode": "GBP"
                  },
                  "requestedAmount": {
                    "value": 1000,
                    "currencyCode": "GBP"
                  },
                  "totalAmount": {
                    "value": 5500,
                    "currencyCode": "GBP"
                  },
                  "refundedAmount": 0,
                  "createdAt": "2024-04-10T22:52:58.037Z",
                  "updatedAt": "2024-04-10T22:53:13.6644908Z",
                  "reference": "Order 234",
                  "description": "Demo payment intent",
                  "itemLines": [],
                  "taxLines": [],
                  "merchantConfig": {
                    "supportedPaymentMethods": {
                      "cardSchemes": [
                        "VISA",
                        "MASTERCARD",
                        "MAESTRO",
                        "DISCOVER",
                        "DCI",
                        "AMEX"
                      ],
                      "wallets": [
                        "APPLE_PAY",
                        "GOOGLE_PAY"
                      ]
                    }
                  },
                  "config": {
                    "payment": {
                      "customAmountAllowed": true,
                      "tipsAllowed": true
                    },
                    "branding": {
                      "logoUrl": "https://cdn.dojo.tech/payments/branding/logos/acc_wrr9HHrH10KHXtVxfWNPHw/file_y-_CuT9RLkKK2vvvLaGeUw/90395f2a-029e-4f23-afdb-258bdbb1002b.png",
                      "faviconUrl": "https://cdn.dojo.tech/payments/branding/favicons/acc_wrr9HHrH10KHXtVxfWNPHw/file_v7EuxUbMmkCUMm7lP9PIgg/dojo.png"
                    },
                    "tradingName": "Dojo Cafe (Paymentsense)"
                  },
                  "paymentSource": "api",
                  "expireAt": "2024-05-10T22:52:58.037Z",
                  "metadata": {
                    "location-id": "771402011592305"
                  },
                  "paymentEvents": [],
                  "paymentLink": "https://pay.dojo.tech:443/checkout/pi_sandbox_xt4SwkRZ60moZFWJ9iOKrw",
                  "terminalSessionHistory": []
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Unauthorized"
          },
          "405": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Method not allowed"
          }
        },
        "operationId": "PaymentIntents_SetCustomAmount",
        "summary": "Change a payment intent amount",
        "description": "Changes the payment intent's amount. Available if you allow amount changes when creating the intent."
      }
    },
    "/payment-intents/{paymentIntentId}/receipt": {
      "post": {
        "tags": [
          "Payment intents"
        ],
        "summary": "Send a receipt",
        "description": "Sends a receipt to the email addresses you specified.",
        "operationId": "Receipt_Create",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "paymentIntentId",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the payment intent.\n",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1,
            "example": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw"
          }
        ],
        "responses": {
          "204": {
            "description": "Payment receipt requested successfully."
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendEmailReceiptRequest"
              }
            }
          },
          "description": "The email receipt request body."
        }
      },
      "parameters": [
        {
          "schema": {
            "type": "string"
          },
          "name": "paymentIntentId",
          "in": "path",
          "required": true
        }
      ]
    },
    "/payment-intents/{paymentIntentId}/refunds": {
      "post": {
        "tags": [
          "Refunds"
        ],
        "summary": "Create a refund",
        "description": "Creates a refund. Refund allows you to return a payment that has previously been created as long as there have been no incremental payments or payment attempts, including unsuccessful payment attempts. You can refund the full amount or a partial amount.\n",
        "operationId": "Refunds_Create",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "paymentIntentId",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the payment intent.\n",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "idempotencyKey",
            "x-originalName": "idempotencyKey",
            "in": "header",
            "required": true,
            "description": "An idempotency key is used to recognize subsequent retries of the same request. How you generate the idempotency key is up to you. The key must be unique for each new refund processed on the payment intent.\n",
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 100
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "createRefundRequest",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRefundRequest"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Refund"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/payment-intents/refunds/{refundId}": {
      "get": {
        "tags": [
          "Refunds"
        ],
        "operationId": "PaymentIntents_GetRefundById",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "refundId",
            "in": "path",
            "required": true,
            "description": "A unique identifier for the refund. It will be used to reference this refund in all operations. It is recommended to use a UUID.",
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 50
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Refund"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "description": "Retrieves the details of a refund that has previously been created.",
        "summary": "Retrieve a refund"
      }
    },
    "/payment-intents/{paymentIntentId}/reversal": {
      "post": {
        "tags": [
          "Reversal"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "paymentIntentId",
            "description": "The unique identifier of the payment intent.\n",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "in": "path",
            "required": true,
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Reversal"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Unauthorized"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "operationId": "Reversal_Create",
        "summary": "Create a reversal",
        "description": "Reverses a payment intent."
      }
    },
    "/setup-intents": {
      "post": {
        "tags": [
          "Setup intents"
        ],
        "operationId": "SetupIntents_Create",
        "summary": "Create a setup intent",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "description": "Creates a setup intent.",
        "requestBody": {
          "x-name": "createSetupIntentRequest",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSetupIntentRequest"
              },
              "example": {
                "reference": "Dojo Cafe | Booking request for Table 4",
                "merchantInitiatedTransactionType": "NoShow",
                "terms": "In case of no-show, the customer authorizes us to charge their card with table booking fee.",
                "intendedAmount": {
                  "value": "1000",
                  "currencyCode": "GBP"
                }
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupIntentResponse"
                },
                "example": {
                  "setupEvents": [],
                  "id": "si_sandbox_c9RbgPcWbkGcUIbsFSzHcA",
                  "clientSessionSecret": "SSd_gFOCjTlpbMyE7A6Pl2MaosE2HObXhC-HnRpIMUR_kdOPsGDaVi_1QMpsl60edYxLtxBmHQZ88SxsabWg5KiNrU-kiZ9Zjdloht_8TWy_rrTF8FqXJwXTil6rgqCSG2dczrQhMpuuTmo2O20sVCaZ119WWA==",
                  "clientSessionSecretExpirationDate": "2024-02-13T12:37:31Z",
                  "status": "Created",
                  "paymentMethods": [
                    "Card"
                  ],
                  "createdAt": "2024-02-13T12:07:31.4793099Z",
                  "updatedAt": "2024-02-13T12:07:31.47931Z",
                  "reference": "Dojo Cafe | Booking request for Table 4",
                  "merchantConfig": {
                    "supportedPaymentMethods": {
                      "cardSchemes": [
                        "VISA",
                        "MASTERCARD",
                        "MAESTRO",
                        "DISCOVER",
                        "DCI"
                      ],
                      "wallets": []
                    }
                  },
                  "config": {
                    "branding": {
                      "logoUrl": "https://cdn.dojo.tech/payments/branding/logos/acc_wrr9HHrH10KHXtVxfWNPHw/file_y-_CuT9RLkKK2vvvLaGeUw/90395f2a-029e-4f23-afdb-258bdbb1002b.png",
                      "faviconUrl": "https://cdn.dojo.tech/payments/branding/favicons/acc_wrr9HHrH10KHXtVxfWNPHw/file_v7EuxUbMmkCUMm7lP9PIgg/dojo.png"
                    },
                    "tradingName": "Dojo Cafe (Paymentsense)"
                  },
                  "metadata": {
                    "location-id": "771402011592305"
                  },
                  "intendedAmount": {
                    "value": 1000,
                    "currencyCode": "GBP"
                  },
                  "merchantInitiatedTransactionType": "NoShow",
                  "terms": "In case of no-show, the customer authorizes us to charge their card with table booking fee.",
                  "paymentSource": "api"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/setup-intents/{setupIntentId}": {
      "get": {
        "tags": [
          "Setup intents"
        ],
        "operationId": "SetupIntents_GetById",
        "summary": "Retrieve a setup intent",
        "parameters": [
          {
            "name": "setupIntentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "description": "The unique identifier for the setup intent.",
            "x-position": 3
          },
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "description": "Get a setup intent by ID.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupIntentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Setup intents"
        ],
        "summary": "Cancel a setup intent",
        "operationId": "SetupIntents_Delete",
        "parameters": [
          {
            "name": "setupIntentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 50,
              "nullable": true
            },
            "description": "The unique identifier for the setup intent."
          },
          {
            "name": "version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": false
            },
            "description": "The API version with format yyyy-mm-dd. The current version is `2025-09-10`."
          }
        ],
        "description": "Cancels a setup intent.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupIntentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/setup-intents/public/{setupIntentId}": {
      "get": {
        "tags": [
          "Setup intents"
        ],
        "operationId": "SetupIntents_GetPublicById",
        "summary": "Retrieve a setup intent (no auth)",
        "parameters": [
          {
            "name": "setupIntentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "description": "The unique identifier for the setup intent.",
            "x-position": 1
          },
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "description": "Get a setup intent by ID.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupIntentPublicResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/setup-intents/{setupIntentId}/refresh-client-session-secret": {
      "post": {
        "tags": [
          "Setup intents"
        ],
        "operationId": "SetupIntents_RefreshPaymentIntentToken",
        "summary": "Update a client session secret",
        "parameters": [
          {
            "name": "setupIntentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "description": "The unique identifier for the setup intent."
          },
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "description": "Updates a client session secret.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupIntentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/setup-intents/public/{setupIntentId}/refresh-client-session-secret": {
      "post": {
        "tags": [
          "Setup intents"
        ],
        "operationId": "SetupIntents_RefreshSetupIntentTokenPublic",
        "summary": "Update a client session secret (no auth)",
        "parameters": [
          {
            "name": "setupIntentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "description": "The unique identifier for the setup intent.",
            "x-position": 1
          },
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "description": "Updates a client session secret.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupIntentPublicResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/webhooks/events": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_GetAllWebhooks",
        "summary": "List all events",
        "description": "Retrieves a list of all events.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookEvents"
                  }
                },
                "example": [
                  {
                    "model": "PaymentIntent",
                    "events": [
                      "payment_intent.created",
                      "payment_intent.updated"
                    ]
                  },
                  {
                    "model": "Payment",
                    "events": [
                      "payment.successful"
                    ]
                  },
                  {
                    "model": "Order",
                    "events": [
                      "order.created"
                    ]
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/webhooks": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_GetAlSubscriptions",
        "summary": "List all subscriptions",
        "description": "Retrieves a list of all subscriptions.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Subscription"
                  },
                  "example": {
                    "id": "ws_aNkU6yob0vOMxUlghg2oynUw",
                    "accountId": "acc_4z3k2xP17e1JQY",
                    "events": [
                      "payment_intent.created",
                      "payment_intent.status_updated"
                    ],
                    "url": "https://example.com.com/incoming-events",
                    "description": "Demo Webhooks",
                    "secrets": [
                      {
                        "id": "sc_qNkU6yob0vOMxUlb2oynUw",
                        "value": "U3Vic2NyaXB0aW9uUmVzcG9uc2VFeGFtcGxlIDogSUV4YW1wbGVQcm92aWRlcjxTdWJ",
                        "createdAt": "2023-12-13T14:15:01",
                        "lastUsedAt": "2023-12-16T13:44:03.3242202Z",
                        "isActive": true
                      }
                    ],
                    "createdAt": "2023-03-30T12:21:04.143Z",
                    "updatedAt": "2023-03-30T12:21:04.143Z"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_Subscribe",
        "summary": "Subscribe to an event",
        "description": "Creates a new subscription.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Subscription"
                },
                "example": {
                  "id": "ws_aNkU6yob0vOMxUlghg2oynUw",
                  "accountId": "acc_4z3k2xP17e1JQY",
                  "events": [
                    "payment_intent.created",
                    "payment_intent.status_updated"
                  ],
                  "url": "https://example.com.com/incoming-events",
                  "description": "Demo Webhooks",
                  "secrets": [
                    {
                      "id": "sc_qNkU6yob0vOMxUlb2oynUw",
                      "value": "U3Vic2NyaXB0aW9uUmVzcG9uc2VFeGFtcGxlIDogSUV4YW1wbGVQcm92aWRlcjxTdWJ",
                      "createdAt": "2023-12-13T14:15:01",
                      "lastUsedAt": "2023-12-16T13:44:03.3242202Z",
                      "isActive": true
                    }
                  ],
                  "createdAt": "2023-03-30T12:21:04.143Z",
                  "updatedAt": "2023-03-30T12:21:04.143Z"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/webhooks/{subscriptionId}/secrets": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_GetSecrets",
        "summary": "List all secrets",
        "description": "Retrieves a list of all secrets.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "description": "The unique identifier for the subscription."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsResponse"
                },
                "example": {
                  "id": "ws_lgQzejyXb0SD8oIDE2zcqA",
                  "secrets": [
                    {
                      "id": "sc_qNkU6yob0vOMxUlb2oynUw",
                      "value": "U3Vic2NyaXB0aW9uUmVzcG9uc2VFeGFtcGxlIDogSUV4YW1wbGVQcm92aWRlcjxTdWJ",
                      "createdAt": "2023-12-13T14:15:01",
                      "lastUsedAt": "2023-12-16T13:44:03.3656144Z",
                      "isActive": true
                    },
                    {
                      "id": "sc_zNkU6yob0vOMxUlb2oynUw",
                      "value": "FGswesdsaXB0aW9uUmVzcG9wbGVQcm92aWRlcjxTdWJ",
                      "createdAt": "2020-12-13T14:15:01",
                      "lastUsedAt": "2023-12-02T13:58:03.3656159Z",
                      "isActive": false
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_GenerateSecret",
        "summary": "Generate a secret",
        "description": "Generates a new secret.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "description": "The unique identifier for the subscription."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsResponse"
                },
                "example": {
                  "secrets": [
                    {
                      "id": "sc_qNkU6yob0vOMxUlb2oynUw",
                      "value": "U3Vic2NyaXB0aW9uUmVzcG9uc2VFeGFtcGxlIDogSUV4YW1wbGVQcm92aWRlcjxTdWJ",
                      "createdAt": "2023-12-13T14:15:01",
                      "lastUsedAt": "2023-12-16T13:44:03.3683851Z",
                      "isActive": true
                    },
                    {
                      "id": "sc_zNkU6yob0vOMxUlb2oynUw",
                      "value": "FGswesdsaXB0aW9uUmVzcG9wbGVQcm92aWRlcjxTdWJ",
                      "createdAt": "2023-12-13T14:15:01",
                      "lastUsedAt": "2023-12-02T13:58:03.3683861Z",
                      "isActive": false
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/webhooks/{subscriptionId}/secrets/{secretId}/activate": {
      "put": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_ActivateSecret",
        "summary": "Activate a secret",
        "description": "Activates a secret.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "description": "The unique identifier for the subscription."
          },
          {
            "name": "secretId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "description": "The unique identifier for the secret."
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/webhooks/{subscriptionId}/secrets/{secretId}": {
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_DeleteSecret",
        "summary": "Delete a secret",
        "description": "Deletes a secret.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "description": "The unique identifier for the subscription."
          },
          {
            "name": "secretId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2,
            "description": "The unique identifier for the secret."
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/webhooks/{subscriptionId}": {
      "patch": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_SubscribeUpdate",
        "summary": "Update a subscription",
        "description": "Updates your subscription details. You can change the URL or the list of events.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "description": "The unique identifier for the subscription."
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionUpdateRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Subscription"
                },
                "example": {
                  "id": "ws_aNkU6yob0vOMxUlghg2oynUw",
                  "accountId": "acc_4z3k2xP17e1JQY",
                  "events": [
                    "payment_intent.created",
                    "payment_intent.status_updated"
                  ],
                  "url": "https://example.com.com/incoming-events",
                  "description": "Demo Webhooks",
                  "secrets": [
                    {
                      "id": "sc_qNkU6yob0vOMxUlb2oynUw",
                      "value": "U3Vic2NyaXB0aW9uUmVzcG9uc2VFeGFtcGxlIDogSUV4YW1wbGVQcm92aWRlcjxTdWJ",
                      "createdAt": "2023-12-13T14:15:01",
                      "lastUsedAt": "2023-12-16T13:44:03.3242202Z",
                      "isActive": true
                    }
                  ],
                  "createdAt": "2023-03-30T12:21:04.143Z",
                  "updatedAt": "2023-03-30T12:21:04.143Z"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_DeleteSubscriptions",
        "summary": "Delete a subscription",
        "description": "Deletes a subscription.",
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1,
            "description": "The unique identifier for the subscription."
          },
          {
            "$ref": "#/components/parameters/Version"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/customers": {
      "post": {
        "tags": [
          "Customers"
        ],
        "operationId": "Customers_Create",
        "summary": "Create a customer",
        "description": "Creates a new customer.",
        "parameters": [
          {
            "$ref": "#/components/parameters/VersionCustomers"
          }
        ],
        "requestBody": {
          "x-name": "obj",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerRequest"
              },
              "example": {
                "name": "Alex",
                "emailAddress": "alex@dojo.com"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerFull"
                },
                "example": {
                  "id": "cust_sandbox_MJj8Flgfik25x47R4LFbxQ",
                  "name": "Alex",
                  "emailAddress": "alex@dojo.com",
                  "createdAt": "2024-02-15T02:46:21.8232496Z",
                  "updatedAt": "2024-02-15T02:46:21.8232496Z",
                  "documentVersion": 0
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/customers/{customerId}": {
      "delete": {
        "tags": [
          "Customers"
        ],
        "operationId": "Customers_Delete",
        "summary": "Delete a customer",
        "description": "Deletes a customer.",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 100
            },
            "x-position": 2,
            "example": "cust_qNkU6yob0vOMxUlb2oynUw",
            "description": "The unique identifier of the customer."
          },
          {
            "$ref": "#/components/parameters/VersionCustomers"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Customers"
        ],
        "operationId": "Customers_Update",
        "summary": "Update information about a customer",
        "description": "Updates information about a customer.",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "example": "cs_qNkU6yob0vOMxUlb2oynUw",
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 100
            },
            "description": "The unique identifier of the customer.",
            "x-position": 2
          },
          {
            "$ref": "#/components/parameters/VersionCustomers"
          }
        ],
        "requestBody": {
          "x-name": "updateData",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerRequest"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerFull"
                },
                "example": {
                  "id": "cs_qNkU6yob0vOMxUlb2oynUw",
                  "name": "Alex",
                  "emailAddress": "alex@dojo.com",
                  "phoneNumber": "078976534161",
                  "documentVersion": 1,
                  "createdAt": "2023-08-24T14:15:22Z",
                  "updatedAt": "2023-09-24T14:15:22Z"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Customers"
        ],
        "operationId": "Customers_Get",
        "summary": "Retrieve a customer",
        "description": "Retrieves the details of a customer.",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 100
            },
            "description": "Unique identifiers for the customers you want to get information about, separated by commas."
          },
          {
            "$ref": "#/components/parameters/VersionCustomers"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerFull"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/customers/{customerId}/create-secret": {
      "post": {
        "tags": [
          "Customers"
        ],
        "operationId": "Customers_CreateCustomerSecret",
        "summary": "Create a customer secret",
        "description": "Creates a unique customer secret key valid within a scope of time. ",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 100
            },
            "x-position": 1,
            "example": "cust_qNkU6yob0vOMxUlb2oynUw",
            "description": "The unique identifier of the customer."
          },
          {
            "$ref": "#/components/parameters/VersionCustomers"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSecret"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/customers/public/{customerId}/payment-methods": {
      "get": {
        "tags": [
          "Customers"
        ],
        "operationId": "Customers_GetPaymentMethods",
        "summary": "Retrieve payment method",
        "description": "Retrieves available payment methods for a customer.",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 100
            },
            "x-position": 1,
            "example": "cust_qNkU6yob0vOMxUlb2oynUw",
            "description": "The unique identifier of the customer."
          },
          {
            "$ref": "#/components/parameters/VersionCustomers"
          },
          {
            "name": "authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 500
            },
            "x-position": 3,
            "example": "Authorization: Basic cs_generated-customer-secret",
            "description": "Basic HTTP authentication to grant access to customer-owned resources.\n\n- The required customer secret key is short-lived and will expire after a pre-configured set of time.\n- The customer secret can be generated by calling [POST /customers/{`customerId`}/create-secret](#operation/Customers_CreateCustomerSecret)\n"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerPaymentMethods"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/customers/public/{customerId}/payment-methods/{paymentMethodId}": {
      "delete": {
        "tags": [
          "Customers"
        ],
        "operationId": "Customers_DeletePaymentMethod",
        "summary": "Remove payment method",
        "description": "Delete a customer payment method.\n",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 100
            },
            "x-position": 1,
            "example": "cust_qNkU6yob0vOMxUlb2oynUw",
            "description": "The unique identifier of the customer."
          },
          {
            "name": "paymentMethodId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 100
            },
            "x-position": 2,
            "example": "pm_otRL98WURbaAKs0sdy7_5w",
            "description": "The unique identifier of the customer payment method."
          },
          {
            "$ref": "#/components/parameters/VersionCustomers"
          },
          {
            "name": "authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true,
              "maxLength": 500
            },
            "x-position": 4,
            "example": "Authorization: Basic cs_generated-customer-secret",
            "description": "Basic HTTP authentication to grant access to customer-owned resources.\n\n- The required customer secret key is short-lived and will expire after a pre-configured set of time.\n- The customer secret can be generated by calling [POST /customers/{`customerId`}/create-secret](#operation/Customers_CreateCustomerSecret)\n"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/customers/search": {
      "post": {
        "tags": [
          "Customers"
        ],
        "operationId": "Customers_Search",
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchCustomerRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfCustomer"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/VersionCustomers"
          }
        ],
        "summary": "List all customers",
        "description": "Retrieves a list of customers.\nResults are paginated. By default, the method returns up to 50 customers."
      }
    },
    "/terminals": {
      "get": {
        "tags": [
          "Terminals"
        ],
        "parameters": [
          {
            "name": "statuses",
            "description": "A machine-readable value describing the state of the terminal. Terminals with any of the statuses provided in this parameter will be listed.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/TerminalStatus"
              }
            },
            "in": "query"
          },
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "$ref": "#/components/parameters/SoftwareHouseId"
          },
          {
            "$ref": "#/components/parameters/ResellerId"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Terminal"
                  }
                },
                "example": [
                  {
                    "id": "tm_sandbox_65c5fe8a104a1222b2d8b968",
                    "properties": {
                      "tid": "VCMPYC8SIP0"
                    },
                    "status": "Available",
                    "updatedAt": "2024-02-09T10:29:30.213Z"
                  },
                  {
                    "id": "tm_sandbox_65c5fe8a104a1222b2d8b666",
                    "properties": {
                      "tid": "VCMPYC8SIP2"
                    },
                    "status": "Available",
                    "updatedAt": "2024-02-09T10:30:30.213Z"
                  }
                ]
              }
            },
            "description": "A list of terminals."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          }
        },
        "operationId": "Terminals_ListTerminals",
        "summary": "Retrieve all terminals",
        "description": "Allows you to retrieve details of all terminals."
      }
    },
    "/terminals/{terminalId}": {
      "get": {
        "tags": [
          "Terminals"
        ],
        "parameters": [
          {
            "example": "tm_sandbox_65c5fe8a104a12xxxxxxxxxx",
            "name": "terminalId",
            "description": "The unique identifier for the terminal.",
            "schema": {
              "type": "string"
            },
            "in": "path",
            "required": true,
            "x-position": 1
          },
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "$ref": "#/components/parameters/SoftwareHouseId"
          },
          {
            "$ref": "#/components/parameters/ResellerId"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Terminal"
                },
                "example": {
                  "id": "tm_sandbox_65c5fe8a104a1222b2d8b968",
                  "properties": {
                    "tid": "VCMPYC8SIP0"
                  },
                  "status": "Available",
                  "updatedAt": "2024-02-09T10:29:30.213Z"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not found"
          }
        },
        "operationId": "Terminals_GetTerminal",
        "summary": "Retrieve a terminal",
        "description": "Retrieve a terminal by using its ID."
      }
    },
    "/terminal-sessions": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTerminalSessionRequest"
              },
              "examples": {
                "Sale": {
                  "value": {
                    "terminalId": "tm_sandbox_65c5fe8a104a1222b2d8b968",
                    "details": {
                      "sale": {
                        "paymentIntentId": "pi_sandbox_81Q7HAZSGkWLKFx_DFEe9Q"
                      },
                      "sessionType": "Sale"
                    }
                  }
                },
                "Matched Refund": {
                  "value": {
                    "terminalId": "tm_sandbox_65cb51f7b8c708df70d75420",
                    "details": {
                      "matchedRefund": {
                        "paymentIntentId": "pi_sandbox_9H-mmJ4hQ0yc3KlwmbInfg",
                        "amount": {
                          "value": 800,
                          "currencyCode": "GBP"
                        }
                      },
                      "sessionType": "MatchedRefund"
                    }
                  }
                },
                "Unlinked Refund": {
                  "value": {
                    "terminalId": "tm_sandbox_65cb51f7b8c708df70d75420",
                    "details": {
                      "unlinkedRefund": {
                        "amount": {
                          "value": 800,
                          "currencyCode": "GBP"
                        }
                      },
                      "sessionType": "UnlinkedRefund"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "tags": [
          "Terminal sessions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "$ref": "#/components/parameters/SoftwareHouseId"
          },
          {
            "$ref": "#/components/parameters/ResellerId"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalSession"
                },
                "example": {
                  "createdAt": "2024-02-15T00:48:10.756Z",
                  "details": {
                    "sale": {
                      "paymentIntentId": "pi_sandbox_OMqImg5ob0mY7QVyg6quJA"
                    },
                    "sessionType": "Sale"
                  },
                  "expireAt": "2024-02-15T00:48:20.756Z",
                  "id": "ts_sandbox_65cd5f4a57ba13ad7424acd0",
                  "notificationEvents": [],
                  "status": "InitiateRequested",
                  "statusEvents": [
                    {
                      "createdAt": "2024-02-15T00:48:10.756Z",
                      "debugMessage": "",
                      "status": "InitiateRequested"
                    }
                  ],
                  "terminalId": "tm_sandbox_65c5fe8a104a1222b2d8b968",
                  "updatedAt": "2024-02-15T00:48:10.756Z"
                }
              }
            },
            "description": "Terminal session created."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Not found"
          }
        },
        "operationId": "TerminalSession_Create",
        "summary": "Create a session on a terminal"
      }
    },
    "/terminal-sessions/{terminalSessionId}": {
      "get": {
        "tags": [
          "Terminal sessions"
        ],
        "parameters": [
          {
            "name": "terminalSessionId",
            "description": "The unique identifier of the terminal session.",
            "schema": {
              "type": "string"
            },
            "in": "path",
            "required": true,
            "x-position": 2
          },
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "$ref": "#/components/parameters/SoftwareHouseId"
          },
          {
            "$ref": "#/components/parameters/ResellerId"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalSession"
                },
                "example": {
                  "createdAt": "2024-02-15T00:48:10.756Z",
                  "customerReceipt": {
                    "lines": [
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "Paymentsense Connect    "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "0808 274 3307"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "www.paymentsense.com"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "M:**********66701"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "TID:****YC8SIP0     "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "SCH ID:00000000006615628"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "TABLE:30808347"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "HANDSET:1"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "VISA CREDIT"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AID: A0000000032010"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "VISA"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "************0226"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "PAN SEQ NO. 01"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "ICC_CHIP"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "SALE"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AMOUNT             £10.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "GRATUITY           £0.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "CASHBACK           £0.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "TOTAL              £10.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeBody",
                          "value": "SUCCESSFUL"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "Thank You"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "2024-02-15T00:48:10Z"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AUTH CODE:282994"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "     CUSTOMER COPY      "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": " PLEASE RETAIN RECEIPT"
                        }
                      }
                    ]
                  },
                  "details": {
                    "sale": {
                      "paymentIntentId": "pi_sandbox_OMqImg5ob0mY7QVyg6quJA"
                    },
                    "sessionType": "Sale"
                  },
                  "expireAt": "2024-02-15T00:49:40.756Z",
                  "id": "ts_sandbox_65cd5f4a57ba13ad7424acd0",
                  "merchantReceipt": {
                    "lines": [
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "Paymentsense Connect    "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "0808 274 3307"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "www.paymentsense.com"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "M:**********66701"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "TID:*****C8SIP0     "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "SCH ID:00000000006615628"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "TABLE:30808347"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "HANDSET:1"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "VISA CREDIT"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AID: A0000000032010"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "VISA"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "************0226"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "PAN SEQ NO. 01"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "ICC_CHIP"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "SALE"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AMOUNT             £10.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "GRATUITY           £0.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "CASHBACK           £0.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "TOTAL              £10.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeBody",
                          "value": "SUCCESSFUL"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "Thank You"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "2024-02-15T00:48:10Z"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AUTH CODE:282994"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "TXN 0028"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "SESSION 1"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "     MERCHANT COPY      "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": " PLEASE RETAIN RECEIPT"
                        }
                      }
                    ]
                  },
                  "notificationEvents": [
                    {
                      "createdAt": "2024-02-15T00:48:11.98Z",
                      "notificationType": "PresentCard"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:16.066Z",
                      "notificationType": "PleaseWait"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:16.176Z",
                      "notificationType": "EnterPin"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:17.307Z",
                      "notificationType": "PleaseWait"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:18.354Z",
                      "notificationType": "RemoveCard"
                    }
                  ],
                  "status": "Captured",
                  "statusEvents": [
                    {
                      "createdAt": "2024-02-15T00:48:10.756Z",
                      "debugMessage": "",
                      "status": "InitiateRequested"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:10.972Z",
                      "debugMessage": "",
                      "status": "Initiated"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:19.448Z",
                      "debugMessage": "",
                      "status": "Captured"
                    }
                  ],
                  "terminalId": "tm_sandbox_65c5fe8a104a1222b2d8b968",
                  "updatedAt": "2024-02-15T00:48:19.448Z"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Not found"
          }
        },
        "operationId": "TerminalSession_Get",
        "summary": "Retrieve a terminal session"
      }
    },
    "/terminal-sessions/{terminalSessionId}/cancel": {
      "put": {
        "tags": [
          "Terminal sessions"
        ],
        "parameters": [
          {
            "name": "terminalSessionId",
            "description": "The unique identifier of the terminal session.",
            "schema": {
              "type": "string"
            },
            "in": "path",
            "required": true,
            "x-position": 2
          },
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "$ref": "#/components/parameters/SoftwareHouseId"
          },
          {
            "$ref": "#/components/parameters/ResellerId"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalSession"
                },
                "example": {
                  "terminalId": "tm_sandbox_amxm22C23",
                  "createdAt": "2024-02-12T14:15:22Z",
                  "updatedAt": "2024-02-12T14:16:22Z",
                  "id": "ts_sandbox_RBMHTJ4fIkmSppDILZVCGw",
                  "status": "CancelRequested",
                  "expireAt": "2024-02-12T14:15:22Z",
                  "notificationEvents": [
                    {
                      "notificationType": "Approved",
                      "createdAt": "2024-02-12T14:15:22Z"
                    }
                  ],
                  "statusEvents": [
                    {
                      "status": "CancelRequested",
                      "createdAt": "2024-02-12T14:16:22Z",
                      "debugMessage": "Troubleshooting message"
                    }
                  ],
                  "details": {
                    "sale": {
                      "paymentIntentId": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw"
                    },
                    "sessionType": "Sale"
                  }
                }
              }
            },
            "description": "Terminal session requested to be canceled."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Session cannot be canceled."
          }
        },
        "operationId": "TerminalSession_Cancel",
        "summary": "Request the cancellation of a terminal session"
      }
    },
    "/terminal-sessions/{terminalSessionId}/signature": {
      "put": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignatureVerificationRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "Terminal sessions"
        ],
        "parameters": [
          {
            "name": "terminalSessionId",
            "description": "The unique identifier of the terminal session.",
            "schema": {
              "type": "string"
            },
            "in": "path",
            "required": true,
            "x-position": 2
          },
          {
            "$ref": "#/components/parameters/Version"
          },
          {
            "$ref": "#/components/parameters/SoftwareHouseId"
          },
          {
            "$ref": "#/components/parameters/ResellerId"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalSession"
                },
                "example": {
                  "createdAt": "2024-02-15T00:48:10.756Z",
                  "customerReceipt": {
                    "lines": [
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "Paymentsense Connect    "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "0808 274 3307"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "www.paymentsense.com"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "M:**********66701"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "TID:****YC8SIP0     "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "SCH ID:00000000006615628"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "TABLE:30808347"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "HANDSET:1"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "VISA CREDIT"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AID: A0000000032010"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "VISA"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "************0226"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "PAN SEQ NO. 01"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "ICC_CHIP"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "SALE"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AMOUNT             £10.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "GRATUITY           £0.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "CASHBACK           £0.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "TOTAL              £10.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeBody",
                          "value": "SUCCESSFUL"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "Thank You"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "2024-02-15T00:48:10Z"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AUTH CODE:282994"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "     CUSTOMER COPY      "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": " PLEASE RETAIN RECEIPT"
                        }
                      }
                    ]
                  },
                  "details": {
                    "sale": {
                      "paymentIntentId": "pi_sandbox_OMqImg5ob0mY7QVyg6quJA"
                    },
                    "sessionType": "Sale"
                  },
                  "expireAt": "2024-02-15T00:49:40.756Z",
                  "id": "ts_sandbox_65cd5f4a57ba13ad7424acd0",
                  "merchantReceipt": {
                    "lines": [
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "Paymentsense Connect    "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "0808 274 3307"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "www.paymentsense.com"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "M:**********66701"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "TID:*****C8SIP0     "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "SCH ID:00000000006615628"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "TABLE:30808347"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "HANDSET:1"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "VISA CREDIT"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AID: A0000000032010"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "VISA"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "************0226"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "PAN SEQ NO. 01"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "ICC_CHIP"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "SALE"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AMOUNT             £10.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "GRATUITY           £0.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "CASHBACK           £0.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeHeader1",
                          "value": "TOTAL              £10.00"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": true,
                          "size": "SizeBody",
                          "value": "SUCCESSFUL"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "Thank You"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "2024-02-15T00:48:10Z"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "AUTH CODE:282994"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "TXN 0028"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "SESSION 1"
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": "     MERCHANT COPY      "
                        }
                      },
                      {
                        "lineType": "Text",
                        "text": {
                          "align": "AlignLeft",
                          "emphasisBold": false,
                          "size": "SizeBody",
                          "value": " PLEASE RETAIN RECEIPT"
                        }
                      }
                    ]
                  },
                  "notificationEvents": [
                    {
                      "createdAt": "2024-02-15T00:48:11.98Z",
                      "notificationType": "PresentCard"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:16.066Z",
                      "notificationType": "PleaseWait"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:16.176Z",
                      "notificationType": "EnterPin"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:17.307Z",
                      "notificationType": "PleaseWait"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:18.354Z",
                      "notificationType": "RemoveCard"
                    }
                  ],
                  "status": "SignatureVerificationAccepted",
                  "statusEvents": [
                    {
                      "createdAt": "2024-02-15T00:48:10.756Z",
                      "debugMessage": "",
                      "status": "InitiateRequested"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:10.972Z",
                      "debugMessage": "",
                      "status": "Initiated"
                    },
                    {
                      "createdAt": "2024-02-15T00:48:19.448Z",
                      "debugMessage": "",
                      "status": "Captured"
                    },
                    {
                      "createdAt": "2024-02-15T01:47:28.85Z",
                      "debugMessage": "",
                      "status": "SignatureVerificationAccepted"
                    }
                  ],
                  "terminalId": "tm_sandbox_65c5fe8a104a1222b2d8b968",
                  "updatedAt": "2024-02-15T01:47:28.85Z"
                }
              }
            },
            "description": "Terminal session signature verification response recorded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsTerminals"
                }
              }
            },
            "description": "Session cannot be canceled."
          }
        },
        "operationId": "TerminalSession_Signature",
        "summary": "Respond to a signature verification request"
      }
    },
    "/epos/events": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "Events"
        ],
        "summary": "Submit an event",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRequest"
                }
              }
            }
          }
        }
      }
    },
    "/epos/integrations": {
      "get": {
        "tags": [
          "Capabilities"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AllIntegrationsResponse"
                }
              }
            },
            "description": "All the registered integrations for this account"
          }
        },
        "summary": "Get all registered integrations"
      }
    },
    "/epos/integrations/rest": {
      "get": {
        "tags": [
          "Capabilities"
        ],
        "responses": {
          "200": {
            "description": "A list of registered REST integrations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RestIntegrationResponse"
                  }
                }
              }
            }
          }
        },
        "summary": "Get registered REST integrations"
      },
      "put": {
        "tags": [
          "Capabilities"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RestIntegrationRequest"
              }
            }
          },
          "required": true
        },
        "summary": "Register a new REST integration",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RestIntegrationResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/epos/integrations/ws": {
      "get": {
        "tags": [
          "Capabilities"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WsIntegrationResponse"
                  }
                }
              }
            },
            "description": "Get all the WebSocket integrations registered to this account."
          }
        },
        "summary": "Get registered WebSocket integrations"
      },
      "put": {
        "tags": [
          "Capabilities"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WsIntegrationRequest"
              }
            }
          },
          "required": true,
          "description": "Register a new WebSocket integration"
        },
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WsIntegrationResponse"
                  }
                }
              }
            }
          }
        },
        "summary": "Register a new WebSocket integration"
      }
    },
    "/epos/integrations/dojo": {
      "get": {
        "tags": [
          "Capabilities"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DojoManagedIntegrationResponse"
                  }
                }
              }
            },
            "description": "All the dojo managed integrations registered for this account"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header"
      }
    },
    "parameters": {
      "Version": {
        "name": "version",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string",
          "format": "date"
        },
        "example": "2025-09-10",
        "description": "The API version with format yyyy-mm-dd. The current version is `2025-09-10`."
      },
      "VersionCustomers": {
        "name": "version",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string",
          "nullable": true
        },
        "example": "2025-09-10",
        "description": "The API version with format yyyy-mm-dd. The current version is `2025-09-10`."
      },
      "SoftwareHouseId": {
        "name": "software-house-id",
        "description": "This field shows the EPOS company whose software is generating the request. This value should not be configurable as it will remain the same for all customers using particular EPOS software.",
        "schema": {
          "type": "string"
        },
        "example": "softwareHouse1",
        "in": "header",
        "required": true
      },
      "ResellerId": {
        "name": "reseller-id",
        "description": "This identifies the reseller of the EPOS. This may be the same as the `software-house-id` if they are also the seller.",
        "schema": {
          "type": "string"
        },
        "example": "reseller1",
        "in": "header",
        "required": false
      }
    },
    "schemas": {
      "CaptureMode": {
        "description": "The type of capture for the payment, where:\n- `Auto` payments are captured automatically, once authorization is complete.\n- `Manual` payments are captured only when a capture request is made.",
        "default": "Auto",
        "enum": [
          "Auto",
          "Manual"
        ],
        "type": "string",
        "x-enumNames": [
          "Auto",
          "Manual"
        ]
      },
      "Money": {
        "description": "The amount intended to be collected by this payment intent excluding `tipsAmount` `serviceChargeAmount` and `cashbackAmount`.\n",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "value",
          "currencyCode"
        ],
        "properties": {
          "value": {
            "description": "The amount in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) minor units, for example, \"100\" for 1.00 GBP.",
            "type": "integer",
            "format": "int64"
          },
          "currencyCode": {
            "description": "Three-letter currency code in [ISO 4217 alpha-3](https://www.iso.org/iso-4217-currency-codes.html) format. Accepts `GBP` and `EUR`.",
            "type": "string",
            "maxLength": 10,
            "minLength": 1
          }
        }
      },
      "Customer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier of the customer."
          },
          "emailAddress": {
            "type": "string",
            "maxLength": 254,
            "description": "The customer's email address.",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "maxLength": 50,
            "description": "The customer's phone number.",
            "nullable": true
          }
        },
        "description": "Details about the customer.",
        "example": {
          "emailAddress": "support@dojo.com",
          "phoneNumber": "+448000443550"
        }
      },
      "PaymentCustomerDetails": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Customer"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "secret": {
                "type": "string",
                "nullable": true,
                "description": "The customer secret value."
              },
              "savedCardId": {
                "type": "string",
                "nullable": true,
                "description": "The unique ID of the customer's saved card."
              }
            }
          }
        ]
      },
      "Address": {
        "type": "object",
        "additionalProperties": false,
        "example": {
          "address1": "The Brunel Building",
          "address2": "2 Canalside Walk",
          "city": "London",
          "postcode": "W2 1DG",
          "countryCode": "GB",
          "county": "UK"
        },
        "description": "Details about the address.",
        "properties": {
          "address1": {
            "type": "string",
            "maxLength": 100,
            "description": "Address line 1 (for example, company name).",
            "nullable": true
          },
          "address2": {
            "type": "string",
            "maxLength": 100,
            "description": "Address line 2 (for example, street, apartment, or suite).",
            "nullable": true
          },
          "address3": {
            "type": "string",
            "maxLength": 100,
            "description": "Address line 3.",
            "nullable": true
          },
          "address4": {
            "type": "string",
            "maxLength": 100,
            "description": "Address line 4.",
            "nullable": true
          },
          "city": {
            "type": "string",
            "maxLength": 100,
            "description": "City, town, district, suburb, or village.",
            "example": "London",
            "nullable": true
          },
          "state": {
            "type": "string",
            "maxLength": 100,
            "description": "State, province, or region.",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "maxLength": 50,
            "description": "ZIP or postal code.",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "maxLength": 10,
            "description": "Two-letter country code in [ISO 3166–1-alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n",
            "example": "GB",
            "nullable": false
          },
          "locality": {
            "type": "string",
            "maxLength": 100,
            "description": "Locality, can use in addition to city.",
            "nullable": true
          },
          "county": {
            "type": "string",
            "maxLength": 100,
            "description": "County or zone.",
            "nullable": true
          }
        },
        "required": [
          "countryCode"
        ]
      },
      "ShippingDetails": {
        "type": "object",
        "additionalProperties": false,
        "description": "Details about the shipping.",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "description": "The name of the customer.",
            "nullable": true
          },
          "deliveryNotes": {
            "maxLength": 1024,
            "type": "string",
            "description": "The delivery notes.",
            "nullable": true
          },
          "address": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "Details about the address."
          }
        }
      },
      "CardHolderNotPresent": {
        "title": "CardHolderNotPresent",
        "description": "Indicates whether this transaction should be completed as Cardholder Not Present (CNP), with manual entry of card details. If the flag is true, the card machine skips the `Present Card` screen and goes directly into Key Card Number.",
        "type": "boolean",
        "nullable": true
      },
      "PaymentIntentConfigCustomerEmail": {
        "type": "object",
        "additionalProperties": false,
        "description": "Include a configurable customer email address as part of the payment intent. Configurable fields can be altered later by [updating](./payments/manage-payments/change-amount) the payment intent.",
        "properties": {
          "collectionRequired": {
            "type": "boolean",
            "description": "Set to `true` if the object requires collection.\n",
            "default": false
          }
        }
      },
      "PaymentIntentConfigDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "showTotal": {
            "type": "boolean",
            "description": "If has the value `true`, the total order amount will be showed."
          },
          "showReference": {
            "type": "boolean",
            "description": "If the value is `true`, the order reference ID will be shown."
          }
        }
      },
      "PaymentIntentConfigBillingAddress": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "collectionRequired": {
            "type": "boolean",
            "description": "Set to `true` if the object requires collection.\n"
          }
        }
      },
      "PaymentIntentConfigShippingDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "collectionRequired": {
            "type": "boolean",
            "description": "Set to `true` if the object requires collection.\n"
          }
        }
      },
      "PaymentConfigDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customAmountAllowed": {
            "type": "boolean",
            "description": "If set to `true` the amount of the payment intent can be changed.\n"
          },
          "tipsAllowed": {
            "type": "boolean",
            "description": "If set to `true`, tip is allowed.\n"
          }
        }
      },
      "PaymentIntentConfigRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 100,
            "description": "The [checkout page’s title](../payments/accept-payments/checkout-page/configuration#add-information-about-your-company).",
            "nullable": true
          },
          "redirectUrl": {
            "type": "string",
            "format": "uri",
            "description": "The URL that a customer will be directed to after payment.",
            "nullable": true
          },
          "cancelUrl": {
            "type": "string",
            "format": "uri",
            "description": "The URL that a customer will be directed to when canceling a payment.",
            "nullable": true
          },
          "customerEmail": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigCustomerEmail"
              }
            ],
            "description": "The customer's email address."
          },
          "details": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigDetails"
              }
            ],
            "description": "The following configuration details of the payment intent. See [detailed information about the order and taxes](../payments/accept-payments/checkout-page/configuration#show-detailed-information-about-the-order-and-taxes).\n\n- The total order amount including tax.\n- The order reference ID.\n"
          },
          "billingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigBillingAddress"
              }
            ],
            "description": "Configuration of the billing address."
          },
          "shippingDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigShippingDetails"
              }
            ],
            "description": "Configuration of the shipping details.\n"
          },
          "payment": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentConfigDetails"
              }
            ],
            "description": "Configuration of the payment."
          }
        }
      },
      "RequestSecurity": {
        "type": "object",
        "additionalProperties": false,
        "description": "Customer's device information.",
        "properties": {
          "userAgent": {
            "type": "string",
            "maxLength": 300,
            "description": "The customer's browser agent.",
            "nullable": true
          },
          "ipAddress": {
            "maxLength": 70,
            "type": "string",
            "description": "The customer's device IP address.",
            "nullable": true
          },
          "device": {
            "maxLength": 120,
            "type": "string",
            "description": "The customer's device type.",
            "nullable": true
          }
        },
        "example": {
          "userAgent": null,
          "ipAddress": null,
          "device": null
        }
      },
      "Modifier": {
        "description": "Modifiers affect how the bill is calculated and therefore change the bill total. Common examples are Buy One, Get One Free deals, or concessionary discounts for students or senior citizens.\n",
        "required": [
          "name",
          "amountPerModifier",
          "quantity",
          "id"
        ],
        "type": "object",
        "properties": {
          "name": {
            "description": "A human-readable name of the modifier.",
            "type": "string"
          },
          "amountPerModifier": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "Total amount to be paid for this modifier. The value will be positive if it's an additional charge, or negative if it's a discount. Note that the modifier price shouldn't be included in the parent `amountTotal`.\n"
          },
          "quantity": {
            "description": "How many times this modifier is applied to the item. Please note that this amount is per single item, so if a customer orders two burgers each with double extra cheese, the quantity should be 2, not 4.",
            "type": "integer"
          },
          "id": {
            "description": "A machine-readable identifier for this modifier.",
            "type": "string"
          }
        }
      },
      "ItemLine": {
        "title": "ItemLine",
        "description": "The item line object.",
        "required": [
          "amountTotal"
        ],
        "type": "object",
        "properties": {
          "id": {
            "description": "The unique identifier for the object.",
            "maxLength": 60,
            "type": "string"
          },
          "quantity": {
            "format": "int32",
            "description": "The quantity of items being purchased.",
            "type": "integer"
          },
          "name": {
            "description": "A name of the item.",
            "maxLength": 100,
            "type": "string"
          },
          "category": {
            "description": "The type of modifier, for easy identification.",
            "type": "string"
          },
          "modifiers": {
            "description": "A list of modifiers applied to a given item.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Modifier"
            }
          },
          "amountTotal": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The total amount, before applying discounts and taxes."
          },
          "plu": {
            "description": "The price look-up code of the item.",
            "maxLength": 200,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "TaxLine": {
        "title": "TaxLine",
        "description": "The tax line object.",
        "required": [
          "amountTotal"
        ],
        "type": "object",
        "properties": {
          "id": {
            "description": "The unique identifier for the object.",
            "maxLength": 60,
            "type": "string"
          },
          "caption": {
            "description": "A name of the tax.",
            "maxLength": 100,
            "type": "string"
          },
          "subCaption": {
            "nullable": true,
            "description": "A sub-name of the tax.",
            "maxLength": 100,
            "type": "string"
          },
          "amountTotal": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "Total amount of taxes."
          },
          "affectedPlu": {
            "description": "The affected price look-up code of the tax.",
            "maxLength": 200,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "PaymentMethod": {
        "type": "string",
        "description": "The payment methods that customers can use to pay.\n(Card, Wallet, SavedCard)"
      },
      "ActionType": {
        "type": "string",
        "x-enumNames": [
          "OpenLink",
          "DownloadFile"
        ],
        "description": "The type of action associated with the link.",
        "enum": [
          "OpenLink",
          "DownloadFile"
        ],
        "default": "OpenLink"
      },
      "ActionLink": {
        "type": "object",
        "additionalProperties": false,
        "description": "The link to the payment's associated actions.",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "The link URL."
          },
          "action": {
            "$ref": "#/components/schemas/ActionType",
            "nullable": true
          },
          "label": {
            "type": "string",
            "maxLength": 60,
            "minLength": 1,
            "description": "Custom label given to the action."
          },
          "fileName": {
            "maxLength": 256,
            "type": "string",
            "description": "Filename of the document.",
            "nullable": true
          }
        },
        "required": [
          "url",
          "label"
        ],
        "example": {
          "url": "https://docs.dojo.tech/payments/getting-started",
          "label": "docs-link"
        }
      },
      "AutoExpireAction": {
        "description": "The action triggered when a `Manual` payment intent expires. This is determined by the expiry time set in the `autoExpireIn` property. Required, if the capture mode is set to `Manual`.",
        "enum": [
          "Release",
          "Capture"
        ],
        "type": "string",
        "x-enumNames": [
          "Release",
          "Capture"
        ]
      },
      "OrderDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "availabilityDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "The payment description."
          },
          "isUpdate": {
            "type": "boolean",
            "nullable": true,
            "description": "An optional true/false field."
          },
          "id": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier of the order in Dojo.\n"
          },
          "externalId": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier of the order in external systems, such as EPOS.\n"
          }
        }
      },
      "CreatePaymentIntentRequest": {
        "description": "The payment intent request object.",
        "required": [
          "amount",
          "reference"
        ],
        "type": "object",
        "properties": {
          "captureMode": {
            "$ref": "#/components/schemas/CaptureMode"
          },
          "amount": {
            "$ref": "#/components/schemas/Money"
          },
          "tipsAmount": {
            "description": "The tip amount.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ]
          },
          "reference": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60,
            "description": "A unique identifier for the payment. For example, `Order 236`."
          },
          "description": {
            "type": "string",
            "maxLength": 4096,
            "description": "The payment description.",
            "nullable": true
          },
          "customer": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentCustomerDetails"
              }
            ],
            "description": "Details about the customer."
          },
          "billingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The recipient's invoicing address."
          },
          "shippingDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ShippingDetails"
              }
            ],
            "description": "The recipient's shipping address."
          },
          "cardHolderNotPresent": {
            "$ref": "#/components/schemas/CardHolderNotPresent"
          },
          "config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigRequest"
              }
            ],
            "description": "Details about the payment intent configuration."
          },
          "requestSecurity": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RequestSecurity"
              }
            ],
            "description": "Customer's device information."
          },
          "itemLines": {
            "type": "array",
            "description": "The line items purchased by the customer.",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ItemLine"
            }
          },
          "taxLines": {
            "type": "array",
            "description": "The taxes applied to the items.",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TaxLine"
            }
          },
          "paymentMethods": {
            "type": "array",
            "description": "The payment methods that customers can use to pay.\n(Card, Wallet, SavedCard)",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PaymentMethod"
            }
          },
          "actionLink": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ActionLink"
              }
            ],
            "description": "The link to the payment's associated actions."
          },
          "expireAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp and date of when a payment intent will be voided, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format. This occurs when a payment intent is created and not yet authorized. If `null`, the payment intent is voided after 30 days.",
            "nullable": true
          },
          "autoExpireIn": {
            "type": "string",
            "format": "timespan",
            "description": "The time interval after which a `Manual` payment intent will be captured or reversed, in `dd.hh:MM:ss` format.\nThe timestamp value must be more than 30 seconds and less than 7 days.",
            "nullable": true
          },
          "autoExpireAction": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AutoExpireAction"
              }
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A set of key-value pairs that you can use to store additional information.",
            "nullable": true
          },
          "setupIntentId": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier for the setup intent."
          },
          "orderDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderDetails"
              }
            ],
            "description": "Details about the order including the type and the details."
          },
          "cashbackAmount": {
            "nullable": true,
            "description": "The amount of cashback applied.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ]
          },
          "serviceChargeAmount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The amount of service charge applied."
          },
          "generateRemoteToken": {
            "type": "boolean",
            "description": "Set to `true` to start accepting online payments immediately. Defaults to `false`."
          }
        },
        "additionalProperties": false
      },
      "CardFundingType": {
        "type": "string",
        "description": "The main funding types are credit, debit, pre-paid, and charge. "
      },
      "TerminalSessionPaymentEntryMode": {
        "type": "string",
        "description": "Entry mode of the payment.\n(Contactless, ContactChip, Magstripe, ManualEntry, Unknown)"
      },
      "TerminalSessionPaymentVerificationMode": {
        "type": "string",
        "description": "Method used to verify that the person presenting the card is the\nlegitimate cardholder. The most common verification methods are PIN and signature.\n(Pin, Signature, Device, None)"
      },
      "Card": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "cardNumber": {
            "type": "string",
            "nullable": true,
            "description": "The card number."
          },
          "cardName": {
            "type": "string",
            "nullable": true,
            "description": "The name of the cardholder."
          },
          "expiryDate": {
            "type": "string",
            "nullable": true,
            "description": "If available, the expiry date of the card in the format 'MM/YY'."
          },
          "cardType": {
            "type": "string",
            "nullable": true,
            "description": "The card scheme."
          },
          "cardFundingType": {
            "$ref": "#/components/schemas/CardFundingType"
          },
          "last4PAN": {
            "type": "string",
            "nullable": true,
            "description": "The last four digits of the Primary Account Number. For Visa and Mastercard, this will be the four numbers at the end of the sixteen-digit card number."
          },
          "entryMode": {
            "$ref": "#/components/schemas/TerminalSessionPaymentEntryMode"
          },
          "verificationMethod": {
            "$ref": "#/components/schemas/TerminalSessionPaymentVerificationMode"
          }
        }
      },
      "PaymentDetails": {
        "type": "object",
        "additionalProperties": false,
        "description": "The payment details object.",
        "properties": {
          "transactionId": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier of the transaction.\n"
          },
          "transactionDateTime": {
            "type": "string",
            "description": "The date and time of the payment in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "The description of the operation.",
            "nullable": true
          },
          "paymentMethodId": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier of the customer payment method."
          },
          "authCode": {
            "type": "string",
            "description": "The acquirer's authorization code. This code is returned on a successful transaction.",
            "nullable": true
          },
          "card": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Card"
              }
            ],
            "description": "Card details, including card number, scheme, and expiry date."
          },
          "avsResult": {
            "type": "string",
            "description": "The result of the Address Verification Service (AVS) check.\n",
            "nullable": true
          }
        }
      },
      "PaymentIntentStatus": {
        "description": "Current status of the payment intent.",
        "enum": [
          "Created",
          "Authorized",
          "Captured",
          "Reversed",
          "Refunded",
          "Canceled"
        ],
        "type": "string"
      },
      "CardScheme": {
        "description": "Supported card schemes (VISA, MASTERCARD, MAESTRO, DISCOVER, DCI, AMEX)",
        "type": "string"
      },
      "WalletPaymentOption": {
        "type": "string",
        "description": "Wallet payment options (e.g., Apple Pay, Google Pay)."
      },
      "SupportedPaymentMethods": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "cardSchemes": {
            "type": "array",
            "nullable": true,
            "description": "Supported card schemes.",
            "items": {
              "$ref": "#/components/schemas/CardScheme"
            }
          },
          "wallets": {
            "type": "array",
            "nullable": true,
            "description": "List of supported payment wallets.",
            "items": {
              "$ref": "#/components/schemas/WalletPaymentOption"
            }
          }
        }
      },
      "MerchantConfig": {
        "type": "object",
        "additionalProperties": false,
        "description": "Details about the merchant configuration.",
        "properties": {
          "supportedPaymentMethods": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SupportedPaymentMethods"
              }
            ],
            "description": "Supported payment methods."
          }
        }
      },
      "PaymentIntentConfigResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 100,
            "description": "The [checkout page’s title](../payments/accept-payments/checkout-page/configuration#add-information-about-your-company).",
            "nullable": true
          },
          "redirectUrl": {
            "type": "string",
            "format": "uri",
            "description": "The URL that a customer will be directed to after payment.",
            "nullable": true
          },
          "cancelUrl": {
            "type": "string",
            "format": "uri",
            "description": "The URL that a customer will be directed to when canceling a payment.",
            "nullable": true
          },
          "customerEmail": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigCustomerEmail"
              }
            ],
            "description": "The customer's email address."
          },
          "details": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigDetails"
              }
            ],
            "description": "The following configuration details of the payment intent. See [detailed information about the order and taxes](../payments/accept-payments/checkout-page/configuration#show-detailed-information-about-the-order-and-taxes).\n\n- The total order amount including tax.\n- The order reference ID.\n"
          },
          "billingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigBillingAddress"
              }
            ],
            "description": "Configuration of the billing address."
          },
          "shippingDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigShippingDetails"
              }
            ],
            "description": "Configuration of the shipping details.\n"
          },
          "payment": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentConfigDetails"
              }
            ],
            "description": "Configuration of the payment."
          }
        }
      },
      "TerminalSessionStatus": {
        "description": "The current status of the terminal session. A finalized, successful session will be `Captured`.",
        "enum": [
          "InitiateRequested",
          "Initiated",
          "Authorized",
          "Captured",
          "CancelRequested",
          "Canceled",
          "SignatureVerificationAccepted",
          "SignatureVerificationRejected",
          "SignatureVerificationRequired",
          "Expired",
          "Declined"
        ],
        "type": "string"
      },
      "TerminalSessionNotificationType": {
        "description": "Terminal notifications.\n(Approved, Declined, InsertCard, EnterPin, PleaseWait, PresentCard, PresentOnlyOneCard, RemoveCard, CardUnsupported, CardError, ReEnterCard)",
        "type": "string"
      },
      "TerminalSessionNotification": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notificationType": {
            "$ref": "#/components/schemas/TerminalSessionNotificationType"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TerminalSessionStatusEvent": {
        "description": "The current progress of the terminal session, including whether it is in-progress or finished.",
        "required": [
          "status",
          "createdAt",
          "debugMessage"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/TerminalSessionStatus"
          },
          "createdAt": {
            "format": "date-time",
            "description": "The creation date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.\n",
            "type": "string"
          },
          "debugMessage": {
            "description": "The message to troubleshoot the terminal session by revealing the internal state of the terminal.\n",
            "type": "string"
          }
        }
      },
      "TerminalSessionUnlinkedRefundDetails": {
        "description": "A refund which is not linked to any previous transaction.",
        "required": [
          "amount"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The value of the unlinked refund, in minor units."
          },
          "cardholderNotPresent": {
            "description": "Indicates whether this transaction should be completed as Cardholder Not Present (CNP), with manual entry of card details. If the flag is true, the card machine skips the `Present Card` screen and goes directly into Key Card Number.",
            "type": "boolean"
          }
        }
      },
      "TerminalSessionMatchedRefundDetails": {
        "description": "A matched refund is associated with the payment intent of the initial transaction.",
        "required": [
          "paymentIntentId"
        ],
        "type": "object",
        "properties": {
          "paymentIntentId": {
            "type": "string",
            "description": "The unique identifier of the payment intent.\n"
          },
          "amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The value of the linked refund, in minor units."
          }
        }
      },
      "TerminalSessionSaleDetails": {
        "description": "Use this field when creating a terminal session request to name a payment intent by its ID to associate with the session.",
        "required": [
          "paymentIntentId"
        ],
        "type": "object",
        "properties": {
          "paymentIntentId": {
            "description": "The unique identifier of the payment intent.\n",
            "type": "string",
            "example": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw"
          }
        }
      },
      "TerminalSessionType": {
        "description": "Decide which type of transaction a terminal session is going to be associated with.",
        "enum": [
          "Sale",
          "MatchedRefund",
          "UnlinkedRefund"
        ],
        "type": "string"
      },
      "TerminalSessionDetails": {
        "description": "Details about the terminal session, including which type of transaction it is associated with.",
        "required": [
          "sessionType"
        ],
        "type": "object",
        "anyOf": [
          {
            "required": [
              "sale"
            ],
            "title": "Sale"
          },
          {
            "required": [
              "unlinkedRefund"
            ],
            "title": "Unlinked Refund"
          },
          {
            "required": [
              "matchedRefund"
            ],
            "title": "Matched Refund"
          }
        ],
        "properties": {
          "unlinkedRefund": {
            "$ref": "#/components/schemas/TerminalSessionUnlinkedRefundDetails"
          },
          "matchedRefund": {
            "$ref": "#/components/schemas/TerminalSessionMatchedRefundDetails"
          },
          "sale": {
            "$ref": "#/components/schemas/TerminalSessionSaleDetails",
            "x-displayName": "Sale"
          },
          "sessionType": {
            "$ref": "#/components/schemas/TerminalSessionType"
          }
        }
      },
      "TerminalSessionResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "terminalId": {
            "description": "The unique identifier for the terminal.",
            "type": "string",
            "nullable": true
          },
          "id": {
            "description": "The unique identifier of the terminal session.",
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/TerminalSessionStatus"
          },
          "expireAt": {
            "description": "The timestamp and date of when a terminal session will be marked as `Expired`, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format. This changes throughout the life cycle of a terminal session as it moves to different states.",
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "description": "The creation date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.\n",
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "description": "The timestamp of the update date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.",
            "type": "string",
            "format": "date-time"
          },
          "notificationEvents": {
            "description": "When a notification is issued, a notification event is created to record when it occurred.",
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TerminalSessionNotification"
            }
          },
          "statusEvents": {
            "description": "Status events include the capture, cancellation, and refund of payments.",
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TerminalSessionStatusEvent"
            }
          },
          "details": {
            "description": "The terminal session details.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TerminalSessionDetails"
              }
            ]
          }
        }
      },
      "TerminalSessionPaymentResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "transactionDateTime": {
            "type": "string",
            "nullable": true
          },
          "cardNumber": {
            "type": "string",
            "nullable": true
          },
          "expiryDate": {
            "type": "string",
            "nullable": true
          },
          "cardType": {
            "type": "string",
            "nullable": true
          },
          "authGatewayTransactionId": {
            "type": "string",
            "nullable": true
          },
          "cardHolderName": {
            "type": "string",
            "nullable": true
          },
          "entryMode": {
            "$ref": "#/components/schemas/TerminalSessionPaymentEntryMode"
          },
          "verificationMode": {
            "$ref": "#/components/schemas/TerminalSessionPaymentVerificationMode"
          }
        }
      },
      "TerminalSessionHistoryResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "terminalSession": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TerminalSessionResponse"
              }
            ]
          },
          "payment": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TerminalSessionPaymentResponse"
              }
            ]
          }
        }
      },
      "CaptureStatus": {
        "type": "string",
        "description": "Current capture status.",
        "x-enumNames": [
          "Created",
          "Successful",
          "Declined",
          "Failed"
        ],
        "enum": [
          "Created",
          "Successful",
          "Declined",
          "Failed"
        ]
      },
      "CaptureDetails": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "type": "integer",
            "format": "int64"
          },
          "tipsAmount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/CaptureStatus"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PaymentIntent": {
        "type": "object",
        "additionalProperties": false,
        "description": "The PaymentIntent object.",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier of the payment intent.\n"
          },
          "captureMode": {
            "nullable": true,
            "$ref": "#/components/schemas/CaptureMode"
          },
          "cardHolderNotPresent": {
            "description": "Indicates whether this transaction should be completed as Cardholder Not Present (CNP), with manual entry of card details. If the flag is true, the card machine skips the `Present Card` screen and goes directly into Key Card Number.",
            "type": "boolean"
          },
          "clientSessionSecret": {
            "type": "string",
            "description": "The client secret.",
            "nullable": true
          },
          "clientSessionSecretExpirationDate": {
            "type": "string",
            "format": "date-time",
            "description": "The expiration date of `clientSessionSecret`."
          },
          "paymentDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentDetails"
              }
            ],
            "description": "These details about the payment will only populate once the status of the transaction is finalized."
          },
          "status": {
            "$ref": "#/components/schemas/PaymentIntentStatus"
          },
          "paymentMethods": {
            "type": "array",
            "description": "The payment methods that customers can use to pay.\n(Card, Wallet, SavedCard)",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PaymentMethod"
            }
          },
          "amount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The amount intended to be collected by this payment intent excluding `tipsAmount` `serviceChargeAmount` and `cashbackAmount`.\n"
          },
          "tipsAmount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The tip amount."
          },
          "requestedAmount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The amount that was requested by this payment intent.\n"
          },
          "totalAmount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The total amount after applying discounts and taxes."
          },
          "refundedAmount": {
            "nullable": true,
            "type": "integer",
            "description": "The amount that was [refunded](/payments/manage-payments/cancelling-payments/refund).\n",
            "format": "int64"
          },
          "customer": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Customer"
              }
            ],
            "description": "Details about the customer."
          },
          "requestSecurity": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RequestSecurity"
              }
            ],
            "description": "Customer's device information."
          },
          "billingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The recipient's invoicing address."
          },
          "shippingDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ShippingDetails"
              }
            ],
            "description": "The recipient's shipping address."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The creation date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.\n"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the update date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format."
          },
          "reference": {
            "type": "string",
            "description": "A unique identifier for the payment. For example, `Order 236`.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The payment description.",
            "nullable": true
          },
          "subtotalLineItems": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The total amount after applying discounts and taxes.",
            "nullable": true
          },
          "itemLines": {
            "type": "array",
            "nullable": true,
            "description": "The line items purchased by the customer.",
            "items": {
              "$ref": "#/components/schemas/ItemLine"
            }
          },
          "taxLines": {
            "type": "array",
            "description": "The taxes applied to the items.",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TaxLine"
            }
          },
          "actionLink": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ActionLink"
              }
            ],
            "description": "The link to the payment's associated actions."
          },
          "merchantConfig": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MerchantConfig"
              }
            ],
            "description": "Details about payment intent merchant configuration."
          },
          "config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigResponse"
              }
            ],
            "description": "Details about the payment intent configuration."
          },
          "autoExpireAction": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AutoExpireAction"
              }
            ]
          },
          "expireAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp and date of when a payment intent will be voided, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format. This occurs when a payment intent is created and not yet authorized. If `null`, the payment intent is voided after 30 days.",
            "nullable": true
          },
          "autoExpireIn": {
            "type": "string",
            "nullable": true,
            "format": "timespan",
            "description": "The time interval after which a `Manual` payment intent will be captured or reversed, in `dd.hh:MM:ss` format.\nThe timestamp value must be more than 30 seconds and less than 7 days."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A set of key-value pairs that you can use to store additional information.",
            "nullable": true
          },
          "orderDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderDetails"
              }
            ],
            "description": "Details about the order including the type and the details."
          },
          "setupIntentId": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier for the setup intent."
          },
          "cashbackAmount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The amount of cashback applied."
          },
          "serviceChargeAmount": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ],
            "description": "The amount of service charge applied."
          },
          "paymentLink": {
            "description": "The URL of the generated payment link. The customer will be redirected to this URL in order to complete the payment.",
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "terminalSessionHistory": {
            "description": "The past events of the terminal session.",
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TerminalSessionHistoryResponse"
            }
          },
          "captures": {
            "description": "Details of captured payments.",
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CaptureDetails"
            }
          }
        }
      },
      "ProblemDetails": {
        "type": "object",
        "description": "Dojo follows the error response format proposed in [RFC 7807](https://datatracker.ietf.org/doc/html/rfc7807), also known as Problem Details for HTTP APIs.",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true,
            "description": "A URI reference [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) that identifies the problem type."
          },
          "title": {
            "type": "string",
            "nullable": true,
            "description": "A short, human-readable summary of the error."
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "The [HTTP status code](#section/Introduction/HTTP-Responses)."
          },
          "detail": {
            "type": "string",
            "nullable": true,
            "description": "An optional, human-readable message giving more details about the error."
          },
          "instance": {
            "type": "string",
            "nullable": true,
            "description": "The URI reference of the problem."
          },
          "extensions": {
            "type": "object",
            "description": "This field names any extension methods that have been configured to help handle errors handling functionality.",
            "additionalProperties": {}
          }
        }
      },
      "CreateCaptureRequest": {
        "description": "The capture request object.",
        "required": [
          "amount"
        ],
        "type": "object",
        "example": {
          "amount": 2000
        },
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64",
            "example": {
              "amount": 2000
            },
            "description": "The capture amount. You can capture a full or partial amount. Multiple partial captures can be made on the same total."
          },
          "tipsAmount": {
            "type": "integer",
            "format": "int64",
            "example": {
              "tipsAmount": 100
            },
            "description": "The tip amount.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Capture": {
        "type": "object",
        "description": "The capture response object.",
        "additionalProperties": false,
        "properties": {
          "message": {
            "type": "string",
            "description": "The description of the operation.",
            "nullable": true
          },
          "captureId": {
            "type": "string",
            "description": "The unique identifier for the capture.",
            "nullable": true
          }
        },
        "example": {
          "message": "Demo capture",
          "captureId": "cp_itIiJMEAvES3ynYF_Yhs2g"
        }
      },
      "ChargeResponse": {
        "type": "object",
        "description": "The charge response object.",
        "additionalProperties": false,
        "properties": {
          "paymentIntentId": {
            "type": "string",
            "description": "The unique identifier of the payment intent.\n",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/CaptureStatus"
          },
          "message": {
            "type": "string",
            "nullable": true,
            "description": "The description of the operation."
          }
        }
      },
      "Cursor": {
        "type": "object",
        "additionalProperties": false,
        "description": "A cursor for use in pagination. ",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 100,
            "example": 20,
            "default": 50,
            "description": "The maximum number of results to be returned in a single page."
          },
          "before": {
            "type": "string",
            "description": "A cursor for use in pagination for the previous page. `before` and `after` are mutually exclusive. Only one of these may be used.",
            "nullable": true
          },
          "after": {
            "type": "string",
            "description": "A cursor for use in pagination for the next page. `before` and `after` are mutually exclusive. Only one of these may be used.\n",
            "nullable": true
          }
        }
      },
      "SearchPaymentIntentRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "Request a list of payment intents with specified filtering criteria.",
        "properties": {
          "statuses": {
            "type": "array",
            "description": "Statuses of requested payment intents.",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PaymentIntentStatus"
            }
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time from which to search, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time expiry of search in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.\n",
            "nullable": true
          },
          "cursor": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Cursor"
              }
            ],
            "description": "A cursor for use in pagination. "
          }
        },
        "example": {
          "statuses": [
            "Created"
          ],
          "startDate": "2023-08-24T14:15:22Z",
          "endDate": "2023-08-24T14:15:22Z",
          "cursor": {
            "limit": 20
          }
        }
      },
      "PagedResultOfPaymentIntent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "description": "An array of payment intents.",
            "items": {
              "$ref": "#/components/schemas/PaymentIntent"
            }
          },
          "before": {
            "type": "string",
            "description": "A cursor for use in pagination for the previous page.",
            "nullable": true
          },
          "after": {
            "type": "string",
            "description": "A cursor for use in pagination for the next page.",
            "nullable": true
          }
        }
      },
      "PagedPaymentIntent": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PagedResultOfPaymentIntent"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "SetTipsAmountRequest": {
        "additionalProperties": false,
        "description": "The tip amount.",
        "type": "object",
        "properties": {
          "tipsAmount": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "tipsAmount"
        ],
        "example": {
          "value": 500,
          "currencyCode": "GBP"
        }
      },
      "SetAmountRequest": {
        "description": "Send a request to set an amount.",
        "required": [
          "amount"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Money"
          },
          "itemLines": {
            "type": "array",
            "nullable": true,
            "description": "The line items purchased by the customer.",
            "items": {
              "$ref": "#/components/schemas/ItemLine"
            }
          },
          "taxLines": {
            "type": "array",
            "nullable": true,
            "description": "The taxes applied to the items.",
            "items": {
              "$ref": "#/components/schemas/TaxLine"
            }
          }
        },
        "additionalProperties": false,
        "example": {
          "amount": {
            "value": 5500,
            "currencyCode": "GBP"
          }
        }
      },
      "SendEmailReceiptRequest": {
        "type": "object",
        "properties": {
          "emails": {
            "type": "array",
            "description": "The list of email addresses to which the receipt should be sent.",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "emails"
        ],
        "description": "Request to send an email receipt to one or more specified addresses.",
        "example": {
          "emails": [
            "gabriel@dojo.com",
            "mari@dojo.com"
          ]
        }
      },
      "CreateRefundRequest": {
        "description": "The create refund request object.",
        "required": [
          "amount"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The refund amount."
          },
          "previousTransactionId": {
            "type": "string",
            "maxLength": 100,
            "nullable": true,
            "description": "The unique identifier for the previous transaction."
          },
          "refundReason": {
            "description": "The reason for the refund.",
            "maxLength": 1024,
            "type": "string",
            "nullable": true
          },
          "notes": {
            "description": "A description for the refund, if applicable.",
            "maxLength": 4096,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "amount": 1000,
          "refundReason": "Demo refund"
        }
      },
      "Refund": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "paymentIntentId": {
            "type": "string",
            "description": "The unique identifier of the payment intent.\n",
            "nullable": true
          },
          "refundId": {
            "type": "string",
            "description": "A unique identifier for the refund. It will be used to reference this refund in all operations. It is recommended to use a UUID.",
            "nullable": true
          },
          "refundReason": {
            "type": "string",
            "description": "The reason for the refund.",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "A description for the refund, if applicable.",
            "nullable": true
          }
        },
        "description": "The refund response object.",
        "example": {
          "paymentIntentId": "pi_sandbox_RBMHTJ4fIkmSppDILZVCGw",
          "refundId": "rfnd_127usj",
          "refundReason": "Demo refund",
          "notes": null
        }
      },
      "Reversal": {
        "description": "The create reversal response object.",
        "type": "object",
        "properties": {
          "message": {
            "description": "The description of the operation.",
            "type": "string",
            "nullable": true
          },
          "reversalId": {
            "description": "The unique identifier for the reversal.",
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": "rvs_127usj"
        }
      },
      "MerchantInitiatedTransactionType": {
        "type": "string",
        "description": "Details about the merchant-initiated transaction type (NoShow, Unscheduled)"
      },
      "CreateSetupIntentRequest": {
        "type": "object",
        "description": "The setup intent request object.",
        "additionalProperties": false,
        "required": [
          "reference",
          "merchantInitiatedTransactionType",
          "terms"
        ],
        "properties": {
          "reference": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60,
            "description": "A unique identifier for the payment. For example, `Order 236`."
          },
          "description": {
            "type": "string",
            "maxLength": 4096,
            "description": "The payment description.",
            "nullable": true
          },
          "customer": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Customer"
              }
            ],
            "description": "Details about the customer."
          },
          "captureMode": {
            "$ref": "#/components/schemas/CaptureMode"
          },
          "paymentMethods": {
            "type": "array",
            "description": "The payment methods that customers can use to pay.\n(Card, Wallet, SavedCard)",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PaymentMethod"
            }
          },
          "billingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The recipient's invoicing address."
          },
          "shippingDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ShippingDetails"
              }
            ],
            "description": "The recipient's shipping address."
          },
          "config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigRequest"
              }
            ],
            "description": "Details about the payment intent configuration."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A set of key-value pairs that you can use to store additional information.",
            "nullable": true
          },
          "intendedAmount": {
            "description": "The amount intended to be collected by this setup intent.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ]
          },
          "merchantInitiatedTransactionType": {
            "$ref": "#/components/schemas/MerchantInitiatedTransactionType"
          },
          "terms": {
            "description": "The terms that customers are required to review before adding a card to the setup intent.",
            "type": "string",
            "maxLength": 10240,
            "minLength": 1
          },
          "orderDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderDetails"
              }
            ],
            "description": "Details about the order including the type and the details."
          },
          "expireAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp and date of when a setup intent will be voided, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. This occurs when a setup intent is created and not yet authorized.",
            "nullable": true
          }
        }
      },
      "SetupIntentStatus": {
        "type": "string",
        "description": "Current status of the setup intent.",
        "x-enumNames": [
          "Created",
          "Authorized",
          "Canceled",
          "Completed",
          "Expired",
          "CardExpired",
          "Closed"
        ],
        "enum": [
          "Created",
          "Authorized",
          "Canceled",
          "Completed",
          "Expired",
          "CardExpired",
          "Closed"
        ]
      },
      "SetupIntentPublicResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier for the setup intent."
          },
          "clientSessionSecret": {
            "type": "string",
            "description": "The client secret.",
            "nullable": true
          },
          "clientSessionSecretExpirationDate": {
            "type": "string",
            "format": "date-time",
            "description": "The expiration date of `clientSessionSecret`.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/SetupIntentStatus"
          },
          "paymentMethods": {
            "type": "array",
            "description": "The payment methods that customers can use to pay.\n(Card, Wallet, SavedCard)",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PaymentMethod"
            }
          },
          "customer": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Customer"
              }
            ],
            "description": "Details about the customer."
          },
          "requestSecurity": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RequestSecurity"
              }
            ],
            "description": "Customer's device information."
          },
          "billingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The recipient's invoicing address."
          },
          "shippingDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ShippingDetails"
              }
            ],
            "description": "The recipient's shipping address."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The creation date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.\n"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the update date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format."
          },
          "expireAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp and date of when a setup intent will be voided, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. This occurs when a setup intent is created and not yet authorized.",
            "nullable": true
          },
          "reference": {
            "type": "string",
            "description": "A unique identifier for the payment. For example, `Order 236`.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The payment description.",
            "nullable": true
          },
          "merchantConfig": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MerchantConfig"
              }
            ],
            "description": "Details about payment intent merchant configuration."
          },
          "config": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentIntentConfigResponse"
              }
            ],
            "description": "Details about the payment intent configuration."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A set of key-value pairs that you can use to store additional information.",
            "nullable": true
          },
          "paymentDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentDetails"
              }
            ]
          },
          "intendedAmount": {
            "description": "The amount intended to be collected by this setup intent.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              }
            ]
          },
          "merchantInitiatedTransactionType": {
            "$ref": "#/components/schemas/MerchantInitiatedTransactionType"
          },
          "terms": {
            "type": "string",
            "nullable": true,
            "description": "The terms that customers are required to review before adding a card to the setup intent."
          },
          "paymentSource": {
            "type": "string",
            "nullable": true,
            "description": "Information about a single payment source type. Invalid if used along with `paymentSources` parameter."
          }
        }
      },
      "paymentEventType": {
        "type": "string",
        "description": "The current state of the payment.",
        "x-enumNames": [
          "Created",
          "Authorized",
          "Captured",
          "Reversed",
          "Refunded",
          "Canceled",
          "AuthChallenged",
          "Declined",
          "ManualAuthReady",
          "Error",
          "Unknown"
        ],
        "enum": [
          "Created",
          "Authorized",
          "Captured",
          "Reversed",
          "Refunded",
          "Canceled",
          "AuthChallenged",
          "Declined",
          "ManualAuthReady",
          "Error",
          "Unknown"
        ]
      },
      "PaymentStatusResponse": {
        "type": "object",
        "additionalProperties": false,
        "title": "PaymentStatusResponse",
        "description": "The current status of the payment.",
        "properties": {
          "transactionId": {
            "type": "string",
            "description": "The unique identifier of the transaction.\n",
            "nullable": true
          },
          "transactionDateTime": {
            "type": "string",
            "description": "The date and time of the payment in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.",
            "nullable": true
          },
          "eventType": {
            "$ref": "#/components/schemas/paymentEventType"
          },
          "authCode": {
            "type": "string",
            "description": "The acquirer's authorization code. This code is returned on a successful transaction.",
            "nullable": true
          },
          "cardNumber": {
            "type": "string",
            "description": "The card number.",
            "nullable": true
          },
          "expiryDate": {
            "type": "string",
            "description": "If available, the expiry date of the card in the format 'MM/YY'.",
            "nullable": true
          },
          "cardType": {
            "type": "string",
            "description": "The card scheme.",
            "nullable": true,
            "example": "VISA"
          },
          "cardholderName": {
            "type": "string",
            "description": "The name of the cardholder.",
            "nullable": true
          },
          "paymentMethodId": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier of the customer payment method."
          }
        }
      },
      "SetupIntentResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SetupIntentPublicResponse"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "setupEvents": {
                "type": "array",
                "nullable": true,
                "description": "Updates related to the setup intent's status.",
                "items": {
                  "$ref": "#/components/schemas/PaymentStatusResponse"
                }
              }
            }
          }
        ]
      },
      "WebhookEvents": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "model": {
            "type": "string",
            "description": "The Webhook type."
          },
          "events": {
            "type": "array",
            "description": "The list of events.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "errors": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SubscriptionSecret": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the secret."
          },
          "value": {
            "type": "string",
            "description": "The secret value."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the created date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format."
          },
          "isActive": {
            "type": "boolean",
            "description": "The status of the secret. It can be activated or deactivated."
          }
        }
      },
      "Subscription": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the subscription."
          },
          "accountId": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier for the account."
          },
          "events": {
            "type": "array",
            "description": "The list of events.",
            "items": {
              "type": "string"
            }
          },
          "url": {
            "type": "string",
            "description": "The URL of the Webhook endpoint.",
            "format": "uri",
            "minLength": 1,
            "pattern": "^https://*.+"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "The subscription description."
          },
          "secrets": {
            "type": "array",
            "description": "The list of secrets associated with the subscription. Used to generate signatures.",
            "items": {
              "$ref": "#/components/schemas/SubscriptionSecret"
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The creation date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.\n"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the update date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format."
          }
        }
      },
      "SubscriptionRequest": {
        "type": "object",
        "example": {
          "events": [
            "payment_intent.created",
            "payment.successful",
            "order.created"
          ],
          "url": "https://example.com/incoming-events"
        },
        "additionalProperties": false,
        "required": [
          "events",
          "url"
        ],
        "properties": {
          "events": {
            "type": "array",
            "description": "The list of events.",
            "items": {
              "type": "string"
            }
          },
          "url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "pattern": "^https://*.+",
            "description": "The URL of the Webhook endpoint."
          },
          "description": {
            "nullable": true,
            "type": "string",
            "description": "The subscription description."
          }
        }
      },
      "SecretsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the subscription."
          },
          "secrets": {
            "type": "array",
            "description": "The list of secrets associated with the subscription. Used to generate signatures.",
            "items": {
              "$ref": "#/components/schemas/SubscriptionSecret"
            }
          }
        }
      },
      "SubscriptionUpdateRequest": {
        "type": "object",
        "example": {
          "events": [
            "payment_intent.created",
            "order.created"
          ]
        },
        "additionalProperties": false,
        "properties": {
          "events": {
            "type": "array",
            "description": "The list of events.",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "The URL of the Webhook endpoint.",
            "format": "uri",
            "pattern": "^https://*.+",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "The subscription description."
          }
        }
      },
      "CreateCustomerRequest": {
        "type": "object",
        "additionalProperties": false,
        "example": {
          "name": "Alex",
          "emailAddress": "alex@dojo.com"
        },
        "properties": {
          "name": {
            "type": "string",
            "nullable": true,
            "maxLength": 100,
            "description": "The customer's name."
          },
          "shippingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The recipient's shipping address."
          },
          "billingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The recipient's invoicing address."
          },
          "emailAddress": {
            "type": "string",
            "maxLength": 254,
            "description": "The customer's email address.",
            "nullable": true
          },
          "phoneNumber": {
            "maxLength": 50,
            "minLength": 5,
            "type": "string",
            "description": "The customer's phone number.",
            "nullable": true
          },
          "vatNumber": {
            "type": "string",
            "nullable": true,
            "maxLength": 50,
            "description": "The customer's VAT number."
          }
        }
      },
      "CustomerFull": {
        "type": "object",
        "additionalProperties": false,
        "example": {
          "id": "cs_qNkU6yob0vOMxUlb2oynUw",
          "name": "Alex",
          "emailAddress": "alex@dojo.com",
          "documentVersion": 0,
          "createdAt": "2023-08-24T14:15:22Z"
        },
        "properties": {
          "id": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier of the customer."
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "The customer's name."
          },
          "shippingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The recipient's shipping address."
          },
          "billingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The recipient's invoicing address."
          },
          "emailAddress": {
            "type": "string",
            "description": "The customer's email address.",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "description": "The customer's phone number.",
            "nullable": true
          },
          "vatNumber": {
            "type": "string",
            "nullable": true,
            "description": "The customer's VAT number."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "The creation date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.\n"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "The timestamp of the update date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format."
          },
          "documentVersion": {
            "type": "integer",
            "format": "int32",
            "description": "The version of the customer's data updated with every change."
          }
        }
      },
      "UpdateCustomerRequest": {
        "type": "object",
        "additionalProperties": false,
        "example": {
          "phoneNumber": "078976534161"
        },
        "properties": {
          "name": {
            "type": "string",
            "nullable": true,
            "description": "The customer's name."
          },
          "billingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The recipient's invoicing address."
          },
          "shippingAddress": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The recipient's shipping address."
          },
          "emailAddress": {
            "type": "string",
            "nullable": true,
            "description": "The customer's email address."
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true,
            "description": "The customer's phone number."
          },
          "vatNumber": {
            "type": "string",
            "nullable": true,
            "description": "The customer's VAT number."
          }
        }
      },
      "CustomerSecret": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "secret": {
            "type": "string",
            "description": "The unique identifier for the secret.",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The creation date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.\n"
          },
          "expireAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp at which the customer secret expires, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.\n"
          }
        },
        "example": {
          "secret": "cs_qNkU6yob0vOMxUlb2oynUw",
          "createdAt": "2022-10-31T10:15:00Z",
          "expireAt": "2022-10-31T10:30:22Z"
        }
      },
      "CardDetails": {
        "type": "object",
        "properties": {
          "pan": {
            "description": "The masked primary account number (PAN) of the customer's saved card.\n",
            "type": "string"
          },
          "expiryDate": {
            "description": "The expiry date of the card saved by the customer.",
            "type": "string"
          },
          "scheme": {
            "$ref": "#/components/schemas/CardScheme"
          }
        },
        "additionalProperties": false
      },
      "CustomerPaymentMethod": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the customer's saved payment method.",
            "nullable": true
          },
          "cardDetails": {
            "nullable": true,
            "description": "The card details saved by the customer.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CardDetails"
              }
            ]
          }
        }
      },
      "CustomerPaymentMethods": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "customerId": {
            "type": "string",
            "description": "The unique identifier of the customer.",
            "nullable": true
          },
          "merchantId": {
            "type": "string",
            "description": "A unique identifier for the merchant. A single merchant can be associated with multiple terminals, point-of-sale machines, and waiters.",
            "nullable": true
          },
          "savedPaymentMethods": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CustomerPaymentMethod"
            },
            "description": "List of the customer saved payment methods."
          },
          "supportedPaymentMethods": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SupportedPaymentMethods"
              }
            ],
            "description": "Supported payment methods."
          }
        },
        "example": {
          "customerId": "cust_qNkU6yob0vOMxUlb2oy123",
          "merchantId": "123456789",
          "savedPaymentMethods": [
            {
              "id": "pm_12345",
              "cardDetails": {
                "pan": "52000000****0056",
                "expiryDate": "2024-12-31",
                "scheme": "MASTERCARD"
              }
            }
          ],
          "supportedPaymentMethods": {
            "cardSchemes": [
              "VISA",
              "MASTERCARD",
              "MAESTRO",
              "DISCOVER",
              "DCI",
              "AMEX"
            ],
            "wallets": [
              "APPLE_PAY",
              "GOOGLE_PAY"
            ]
          }
        }
      },
      "SearchCustomerRequest": {
        "type": "object",
        "additionalProperties": false,
        "description": "A cursor for use in pagination. ",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 100,
            "example": 20,
            "default": 50,
            "description": "The maximum number of results to be returned in a single page."
          },
          "before": {
            "type": "string",
            "maxLength": 200,
            "description": "A cursor for use in pagination for the previous page. `before` and `after` are mutually exclusive. Only one of these may be used.",
            "nullable": true
          },
          "after": {
            "type": "string",
            "maxLength": 200,
            "description": "A cursor for use in pagination for the next page. `before` and `after` are mutually exclusive. Only one of these may be used.\n",
            "nullable": true
          }
        }
      },
      "PagedResultOfCustomer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CustomerFull"
            },
            "description": "An array of customers."
          },
          "before": {
            "type": "string",
            "nullable": true,
            "example": "IjIwMjItMDYtMjJUMTQ6MTc6MjYuMDkyWiI=",
            "description": "A cursor for use in pagination for the previous page."
          },
          "after": {
            "type": "string",
            "nullable": true,
            "example": "IjIwMjItMDYtMjBUMTM6MzI6MjIuNDM1WiI=",
            "description": "A cursor for use in pagination for the next page."
          }
        }
      },
      "TerminalStatus": {
        "title": "TerminalStatus",
        "description": "A machine-readable value describing the state of the terminal.",
        "enum": [
          "Available",
          "Offline",
          "InUse"
        ],
        "type": "string"
      },
      "TerminalProperties": {
        "description": "Properties related to the terminal.",
        "required": [
          "tid"
        ],
        "type": "object",
        "properties": {
          "tid": {
            "description": "An 8-digit identifier printed on receipts.",
            "type": "string",
            "example": "12345678"
          }
        }
      },
      "Terminal": {
        "title": "Terminal",
        "description": "The terminal object.",
        "required": [
          "id",
          "properties",
          "status",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "description": "The unique identifier for the terminal.",
            "type": "string",
            "example": "tm_sandbox_amxm22C23"
          },
          "properties": {
            "$ref": "#/components/schemas/TerminalProperties"
          },
          "status": {
            "$ref": "#/components/schemas/TerminalStatus"
          },
          "updatedAt": {
            "format": "date-time",
            "description": "The timestamp of the update date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.",
            "type": "string"
          }
        }
      },
      "ErrorCode": {
        "description": "Machine-usable code describing an error.\n(INTERNAL_ERROR, TERMINAL_UNAVAILABLE, INVALID_REQUEST)",
        "type": "string"
      },
      "Error": {
        "description": "An object containing information about an error that occurred as part of an API request.",
        "required": [
          "code",
          "title",
          "type",
          "status",
          "traceId",
          "errors"
        ],
        "type": "object",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ErrorCode"
          },
          "title": {
            "description": "A short, human-readable summary of the error.\n",
            "type": "string"
          },
          "type": {
            "description": "A URI reference [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) identifying the problem type.\n",
            "type": "string"
          },
          "status": {
            "description": "The [HTTP status code](#section/Introduction/HTTP-Responses).\n",
            "type": "integer"
          },
          "detail": {
            "description": "A human-readable message giving more details about the error. Not always present.\n",
            "type": "string"
          },
          "traceId": {
            "description": "The unique identifier of the failing request.\n",
            "type": "string"
          },
          "errors": {
            "description": "An object containing information about an error that occurred as part of an API request.",
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      },
      "CreateTerminalSessionRequest": {
        "type": "object",
        "description": "Create a terminal session, and decide what sort of transaction it is going to be associated with. Note that only one of the refund types can be specified, and this selection must be the same as the `sessionType`.",
        "additionalProperties": false,
        "title": "CreateTerminalSessionRequest",
        "required": [
          "terminalId",
          "details"
        ],
        "properties": {
          "terminalId": {
            "description": "The unique identifier for the terminal.",
            "type": "string",
            "example": "tm_sandbox_amxm22C23"
          },
          "details": {
            "$ref": "#/components/schemas/TerminalSessionDetails"
          }
        }
      },
      "TerminalSessionNotificationEvent": {
        "description": "This event is a timestamped record of when a notification was issued.",
        "required": [
          "notificationType",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "notificationType": {
            "$ref": "#/components/schemas/TerminalSessionNotificationType"
          },
          "createdAt": {
            "format": "date-time",
            "description": "This is when the terminal session was created, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.",
            "type": "string"
          }
        }
      },
      "TerminalSessionReceiptLineType": {
        "description": "These are the line types that will form the physical receipt.",
        "enum": [
          "Text",
          "LogoImage",
          "NewLine",
          "SingleLineSeperator",
          "DoubleLineSeperator"
        ],
        "type": "string"
      },
      "TerminalSessionReceiptTextSize": {
        "description": "Decide the size of included receipt text. \n",
        "enum": [
          "SizeHeader1",
          "SizeHeader2",
          "SizeBody"
        ],
        "type": "string"
      },
      "TerminalSessionReceiptAlign": {
        "description": "Align the receipt text to the center, to the left, or to the right. \n",
        "enum": [
          "AlignLeft",
          "AlignCenter",
          "AlignRight"
        ],
        "type": "string"
      },
      "TerminalSessionReceiptText": {
        "description": "Edit the content of text included with the terminal session receipt, and configure the text's appearance.\n",
        "required": [
          "value",
          "size",
          "align",
          "emphasisBold"
        ],
        "type": "object",
        "properties": {
          "value": {
            "description": "This string field is for the actual receipt text body.\n",
            "type": "string"
          },
          "size": {
            "$ref": "#/components/schemas/TerminalSessionReceiptTextSize"
          },
          "align": {
            "$ref": "#/components/schemas/TerminalSessionReceiptAlign"
          },
          "emphasisBold": {
            "description": "Decide whether the terminal session receipt text is bold. True/false.\n",
            "type": "boolean"
          }
        }
      },
      "TerminalSessionReceiptImageLogo": {
        "description": "An optional logo can be added to the terminals receipt. ",
        "required": [
          "value",
          "align"
        ],
        "type": "object",
        "properties": {
          "value": {
            "description": "",
            "type": "string"
          },
          "align": {
            "$ref": "#/components/schemas/TerminalSessionReceiptAlign"
          }
        }
      },
      "TerminalSessionReceiptLine": {
        "description": "The value and configuration of the terminal session receipt line.",
        "required": [
          "lineType"
        ],
        "type": "object",
        "properties": {
          "lineType": {
            "$ref": "#/components/schemas/TerminalSessionReceiptLineType"
          },
          "text": {
            "$ref": "#/components/schemas/TerminalSessionReceiptText"
          },
          "imageLogo": {
            "$ref": "#/components/schemas/TerminalSessionReceiptImageLogo"
          }
        }
      },
      "TerminalSessionReceipt": {
        "description": "The receipt object is a record of the transactions associated with a terminal session.",
        "required": [
          "lines"
        ],
        "type": "object",
        "properties": {
          "lines": {
            "description": "The line items purchased by the customer.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TerminalSessionReceiptLine"
            }
          }
        }
      },
      "TerminalSession": {
        "description": "This is the terminal session object, containing detailed information about the history of the terminal session, and its current status.",
        "required": [
          "createdAt",
          "updatedAt",
          "id",
          "status",
          "notificationEvents",
          "expireAt",
          "statusEvents",
          "terminalId"
        ],
        "type": "object",
        "properties": {
          "terminalId": {
            "description": "The unique identifier for the terminal.",
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "description": "This is when the terminal session was created, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format.",
            "type": "string"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the update date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format."
          },
          "id": {
            "description": "The unique identifier of the terminal session.",
            "type": "string",
            "example": "ts_sandbox_RBMHTJ4fIkmSppDILZVCGw"
          },
          "status": {
            "description": "The current status of the terminal session. A finalized, successful session will be `Captured`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/TerminalSessionStatus"
              }
            ]
          },
          "expireAt": {
            "format": "date-time",
            "description": "The timestamp and date of when a terminal session will be marked as `Expired`, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format. This changes throughout the life cycle of a terminal session as it moves to different states.",
            "type": "string"
          },
          "notificationEvents": {
            "description": "When a notification is issued, a notification event is created to record when it occurred.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TerminalSessionNotificationEvent"
            }
          },
          "statusEvents": {
            "description": "Status events include the capture, cancellation, and refund of payments.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TerminalSessionStatusEvent"
            }
          },
          "receipt": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TerminalSessionReceipt"
              }
            ]
          },
          "details": {
            "$ref": "#/components/schemas/TerminalSessionDetails"
          },
          "paymentDetails": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentDetails"
              }
            ],
            "description": "These details about the payment will only populate once the status of the transaction is finalized."
          }
        }
      },
      "ProblemDetailsTerminals": {
        "type": "object",
        "title": "ProblemDetails",
        "description": "Dojo follows the error response format proposed in [RFC 7807](https://datatracker.ietf.org/doc/html/rfc7807), also known as Problem Details for HTTP APIs.",
        "required": [
          "detail",
          "status",
          "title",
          "traceId",
          "type",
          "errors"
        ],
        "properties": {
          "type": {
            "type": "string",
            "nullable": true,
            "description": "A URI reference [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) that identifies the problem type."
          },
          "title": {
            "type": "string",
            "nullable": true,
            "description": "A short, human-readable summary of the error."
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "The [HTTP status code](#section/Introduction/HTTP-Responses)."
          },
          "detail": {
            "type": "string",
            "nullable": true,
            "description": "An optional, human-readable message giving more details about the error."
          },
          "traceId": {
            "type": "string",
            "nullable": true,
            "description": "The unique identifier of the failing request."
          },
          "errors": {
            "type": "object",
            "nullable": true,
            "description": "A human-readable explanation of errors.",
            "additionalProperties": {}
          }
        }
      },
      "SignatureVerificationRequest": {
        "title": "SignatureVerificationRequest",
        "description": "Request to the EPOS to confirm whether the signature has been accepted or not in a payment that requires signature verification. This request must be replied to within a set period of time defined by the timeout property. If no reply to this request is received (i.e. no confirmation of acceptance), the signature will automatically be accepted.",
        "required": [
          "accepted"
        ],
        "type": "object",
        "properties": {
          "accepted": {
            "description": "True/false. Failed signature verification requests will be false.",
            "type": "boolean"
          }
        }
      },
      "EventType": {
        "description": "OrderUpdated, PartyUpdated, ReservationUpdated",
        "type": "string"
      },
      "OrderEvent": {
        "required": [
          "orderId"
        ],
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string"
          }
        }
      },
      "PartyEvent": {
        "type": "object",
        "properties": {
          "partyId": {
            "description": "The EPOS-internal ID of the updated Party.",
            "type": "string"
          }
        },
        "required": [
          "partyId"
        ]
      },
      "ReservationEvent": {
        "type": "object",
        "properties": {
          "reservationId": {
            "description": "The EPOS-internal ID of the updated Reservation.",
            "type": "string"
          }
        },
        "required": [
          "reservationId"
        ]
      },
      "EventRequest": {
        "description": "",
        "required": [
          "eventType",
          "event"
        ],
        "type": "object",
        "properties": {
          "eventType": {
            "$ref": "#/components/schemas/EventType"
          },
          "event": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/OrderEvent"
              },
              {
                "$ref": "#/components/schemas/PartyEvent"
              },
              {
                "$ref": "#/components/schemas/ReservationEvent"
              }
            ]
          }
        }
      },
      "CapabilityResponse": {
        "title": "Root Type for method",
        "description": "Receive a capability response",
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "name",
          "version",
          "updatedAt"
        ],
        "example": {
          "name": "GetOrder",
          "version": "1.0.0",
          "updatedAt": "2024-03-30T12:00:00Z"
        }
      },
      "WsIntegrationResponse": {
        "title": "Root Type for wsAdapter",
        "description": "WebSockets response",
        "required": [
          "capabilities",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "capabilities": {
            "description": "Receive a response to a WS request",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CapabilityResponse"
            }
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "example": {
          "capabilities": [
            {
              "name": "GetOrder",
              "version": "1.0.0"
            },
            {
              "name": "RecordPayment",
              "version": "1.0.0"
            }
          ],
          "createdAt": "2024-03-30T12:00:00Z"
        }
      },
      "RestBasicAuthResponse": {
        "title": "Root Type for restAuth",
        "description": "The basic authentication response details for REST adapters.",
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          }
        },
        "required": [
          "username"
        ],
        "example": {
          "username": "epos-1"
        }
      },
      "RestAuthResponse": {
        "description": "The authentication details for REST adapters.",
        "required": [
          "authType"
        ],
        "type": "object",
        "properties": {
          "authType": {
            "description": "The authentication flow that Dojo will use to make requests against this REST integration.",
            "enum": [
              "basic"
            ],
            "type": "string"
          },
          "basic": {
            "$ref": "#/components/schemas/RestBasicAuthResponse",
            "description": "The basic auth details, configured if authType == 'basic'"
          }
        },
        "example": {
          "authType": "basic",
          "basic": {
            "username": "epos-1"
          }
        }
      },
      "RestIntegrationResponse": {
        "title": "Root Type for restAdapter response",
        "description": "REST response",
        "required": [
          "capabilities",
          "auth",
          "url",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "capabilities": {
            "description": "Receive a response to a REST request",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CapabilityResponse"
            }
          },
          "auth": {
            "$ref": "#/components/schemas/RestAuthResponse"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "example": {
          "capabilities": [
            {
              "name": "GetOrder",
              "version": "1.0.0"
            },
            {
              "name": "RecordPayment",
              "version": "1.0.0"
            }
          ],
          "url": "https://my-epos.com/orders",
          "auth": {
            "authType": "basic",
            "basic": {
              "username": "epos-1"
            }
          },
          "createdAt": "2024-03-30T12:00:00Z"
        }
      },
      "DojoManagedIntegrationResponse": {
        "title": "Root Type for dojoManagedIntegration",
        "description": "",
        "required": [
          "capabilities",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "capabilities": {
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CapabilityResponse"
            }
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "example": {
          "capabilities": [
            {
              "name": "GetOrder",
              "version": "v1"
            },
            {
              "name": "RecordPayment",
              "version": "v1"
            }
          ],
          "createdAt": "2024-03-30T12:00:00Z"
        }
      },
      "AllIntegrationsResponse": {
        "description": "All the integrations currently registered and active for this account.",
        "required": [
          "restIntegrations",
          "wsIntegrations"
        ],
        "type": "object",
        "properties": {
          "wsIntegrations": {
            "description": "All the WS integrations currently registered and active for this account.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WsIntegrationResponse"
            }
          },
          "restIntegrations": {
            "description": "All the WS integrations currently registered and active for this account.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RestIntegrationResponse"
            }
          },
          "dojoManagedIntegrations": {
            "description": "All the integrations managed by Dojo",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DojoManagedIntegrationResponse"
            }
          }
        },
        "example": {
          "wsIntegrations": [
            {
              "capabilities": [
                {
                  "name": "GetOrder",
                  "version": "1.0.0"
                },
                {
                  "name": "RecordOrderPayment",
                  "version": "1.0.0"
                }
              ],
              "createdAt": "2024-03-30T12:00:00Z"
            }
          ],
          "restIntegrations": [
            {
              "url": "https://my-epos-backend.net/dojo/",
              "capabilities": [
                {
                  "name": "SearchOrders",
                  "version": "1.0.0"
                }
              ],
              "restAuth": {
                "authType": "basic",
                "basic": {
                  "username": "epos-dojo-1"
                }
              },
              "createdAt": "2024-03-30T12:00:00Z"
            }
          ]
        }
      },
      "CapabilityName": {
        "type": "string",
        "description": "The name of a capability.\n(CancelOrderById, CreateOrder, ListAreas, GetOrderById, SearchTables, HandleEvent:payment_intent.created, HandleEvent:payment_intent.status_updated, SearchOrders, GetPartyById, DeletePartyById, SearchParties, UpdatePartyById, CreateParty, GetReservationById, SearchReservations, UpdateReservationById, DeleteReservationById, CreateReservation, RecordOrderPayment, CreateOrderLock, DeleteOrderLock, ExtendOrderLock, GetOrderBill)"
      },
      "CapabilityRequest": {
        "title": "Root Type for method",
        "description": "Send a request.",
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/CapabilityName"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "version"
        ],
        "example": {
          "name": "GetOrder",
          "version": "1.0.0"
        }
      },
      "RestBasicAuthRequest": {
        "title": "Root Type for restAuth",
        "description": "The basic authentication request details for REST adapters.",
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        },
        "required": [
          "username",
          "password"
        ],
        "example": {
          "username": "epos-1",
          "password": "admin"
        }
      },
      "RestAuthRequest": {
        "description": "The authentication details for REST adapters",
        "required": [
          "authType"
        ],
        "type": "object",
        "properties": {
          "authType": {
            "description": "The authentication flow that Dojo will use to make requests against this REST integration",
            "enum": [
              "basic"
            ],
            "type": "string"
          },
          "basic": {
            "$ref": "#/components/schemas/RestBasicAuthRequest",
            "description": "The basic auth details, configured if authType == 'basic'"
          }
        },
        "example": {
          "authType": "basic",
          "basic": {
            "username": "epos-1",
            "password": "hunter2"
          }
        }
      },
      "RestIntegrationRequest": {
        "title": "Root Type for restAdapter request",
        "description": "REST request",
        "required": [
          "capabilities",
          "auth",
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "capabilities": {
            "description": "Send a REST request",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CapabilityRequest"
            }
          },
          "auth": {
            "$ref": "#/components/schemas/RestAuthRequest"
          }
        },
        "example": {
          "capabilities": [
            {
              "name": "GetOrder",
              "version": "1.0.0"
            },
            {
              "name": "RecordPayment",
              "version": "1.0.0"
            }
          ],
          "url": "https://my-epos.com/orders",
          "auth": {
            "authType": "basic",
            "basic": {
              "username": "epos-1",
              "password": "hunter2"
            }
          }
        }
      },
      "WsIntegrationRequest": {
        "title": "Root Type for wsAdapter",
        "description": "WebSockets request",
        "required": [
          "capabilities"
        ],
        "type": "object",
        "properties": {
          "capabilities": {
            "description": "Send a WS request",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CapabilityRequest"
            }
          }
        },
        "example": {
          "capabilities": [
            {
              "name": "GetOrder",
              "version": "1.0.0"
            },
            {
              "name": "RecordPayment",
              "version": "1.0.0"
            }
          ]
        }
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Core payments",
      "tags": [
        "Payment intents",
        "Refunds",
        "Reversal",
        "Captures",
        "Webhooks",
        "Customers",
        "Setup intents"
      ]
    },
    {
      "name": "In-person payments",
      "tags": [
        "Terminals",
        "Terminal sessions"
      ]
    },
    {
      "name": "Capabilities",
      "tags": [
        "Capabilities",
        "Events"
      ]
    }
  ]
}