{
  "openapi": "3.1.0",
  "info": {
    "title": "Tilopay API",
    "version": "v1",
    "summary": "Server-to-server API of the Tilopay payment gateway.",
    "description": "Payments, payment links, card tokenization and recurring billing for Central America, the Caribbean and Latin America.\n\nGenerated from the Tilopay Developer Portal reference pages. Every operation links back to its reference page under `externalDocs`.\n\n**Environments.** There is no separate sandbox host: the API and the SDK live on a single host and the mode is switched from the merchant account in the Tilopay portal.\n\n**Authentication.** Call `POST /api/v1/login` to obtain a bearer token and send it in the `Authorization` header of every other call. `POST /api/v1/loginSdk` returns the token passed to `Tilopay.Init()` in the browser SDK.\n\n**Errors.** A non-successful response carries the outcome in the body rather than in the HTTP status. See the error reference page.",
    "contact": {
      "name": "Tilopay support",
      "email": "sac@tilopay.com",
      "url": "https://www.tilopay.com/developers"
    },
    "license": {
      "name": "Proprietary",
      "identifier": "LicenseRef-Tilopay"
    }
  },
  "externalDocs": {
    "description": "Tilopay Developer Portal",
    "url": "https://www.tilopay.com/developers"
  },
  "servers": [
    {
      "url": "https://app.tilopay.com",
      "description": "Single host for production and test mode."
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Authentication",
      "description": "Obtain the API token and the SDK token."
    },
    {
      "name": "Hosted payment page",
      "description": "Create a transaction and receive a payment URL."
    },
    {
      "name": "Tokenization",
      "description": "Store cards in the merchant's private vault."
    },
    {
      "name": "Recurring - Plans",
      "description": "Create and manage recurring billing plans."
    },
    {
      "name": "Recurring - Subscribers",
      "description": "Manage the subscribers of a plan."
    },
    {
      "name": "Recurring - Coupons",
      "description": "Discount coupons for recurring plans."
    },
    {
      "name": "Recurring - Payments",
      "description": "Charge a card already stored for a plan."
    },
    {
      "name": "Payment links",
      "description": "Create, query and delete payment links."
    },
    {
      "name": "Operations",
      "description": "Query transactions, modify them and split settlements."
    }
  ],
  "paths": {
    "/api/v1/login": {
      "post": {
        "operationId": "login",
        "summary": "Get the API token",
        "tags": [
          "Authentication"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/autenticacion/token-api"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "apiuser": {
                    "type": "string",
                    "description": "Merchant API user, obtained in Admin - Tilopay Checkout."
                  },
                  "password": {
                    "type": "string",
                    "description": "Merchant API password, obtained in Admin - Tilopay Checkout."
                  }
                }
              },
              "example": {
                "apiuser": "<api_user>",
                "password": "<api_password>"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "access_token": "<jwt>",
                  "token_type": "bearer",
                  "expires_in": 86400
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/api/v1/loginSdk": {
      "post": {
        "operationId": "loginSdk",
        "summary": "Get the SDK token",
        "tags": [
          "Authentication"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/autenticacion/token-sdk"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "apiuser": {
                    "type": "string",
                    "description": "Merchant API user."
                  },
                  "password": {
                    "type": "string",
                    "description": "Merchant API password."
                  },
                  "key": {
                    "type": "string",
                    "description": "Merchant API key."
                  }
                }
              },
              "example": {
                "apiuser": "<api_user>",
                "password": "<api_password>",
                "key": "<api_key>"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "access_token": "351d477adaaa51cdbb33ae4b4b8c843aa759f131c1c38415180b5035543d59d2f23f4e049706f5fa71c5f0d9ff763960a3cd035b4c1cefa428c90bedb672f780",
                  "token_type": "bearer",
                  "expires_in": "2023-06-05 13:32:06"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/api/v1/processPayment": {
      "post": {
        "operationId": "processPayment",
        "summary": "Create a hosted payment page transaction",
        "tags": [
          "Hosted payment page"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/hosted-payment-page/process-payment"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "redirect": {
                    "type": "string",
                    "description": "Site where you expect the transaction response, for example `mywebsite.com`. It must support the GET method. Example redirect response: `mywebsite.com?code=1&description=Transaction%20is%20approved.&auth=123456&order=TPYS-881WROIBQA1405468&tpt=4300&crd=&tilopay-transaction=4300&OrderHash=b02927cb...&returnData=Tilopay-dataReturn123456789&form_update=ok`. If `code = 1` the transaction is approved; in any other case it is declined. `OrderHash` is a unique string per transaction: to use it on the merchant side, write to sac@tilopay.com and request the instructions."
                  },
                  "key": {
                    "type": "string",
                    "description": "Key associated with the customer. Obtained in Admin - Tilopay Checkout."
                  },
                  "amount": {
                    "type": "string",
                    "description": "Purchase amount."
                  },
                  "currency": {
                    "type": "string",
                    "description": "Purchase currency in ISO format, for example USD, CRC, GTQ."
                  },
                  "orderNumber": {
                    "type": "string",
                    "description": "Order number; it may be alphanumeric."
                  },
                  "capture": {
                    "type": "string",
                    "description": "Capture and authorize: 1 yes, 0 no."
                  },
                  "billToFirstName": {
                    "type": "string",
                    "description": "First name."
                  },
                  "billToLastName": {
                    "type": "string",
                    "description": "Last name."
                  },
                  "billToAddress": {
                    "type": "string",
                    "description": "Address."
                  },
                  "billToAddress2": {
                    "type": "string",
                    "description": "Address line 2."
                  },
                  "billToCity": {
                    "type": "string",
                    "description": "City."
                  },
                  "billToState": {
                    "type": "string",
                    "description": "State in ISO format, for example CR-SJ (San Jose, Costa Rica) or US-CA (California, USA)."
                  },
                  "billToZipPostCode": {
                    "type": "string",
                    "description": "Postal code."
                  },
                  "billToCountry": {
                    "type": "string",
                    "description": "Country in ISO Alpha-2 code, for example CR (Costa Rica), US (USA) or GT (Guatemala)."
                  },
                  "billToTelephone": {
                    "type": "string",
                    "description": "Phone number."
                  },
                  "billToEmail": {
                    "type": "string",
                    "description": "Buyer email."
                  },
                  "shipToFirstName": {
                    "type": "string",
                    "description": "First name."
                  },
                  "shipToLastName": {
                    "type": "string",
                    "description": "Last name."
                  },
                  "shipToAddress": {
                    "type": "string",
                    "description": "Address."
                  },
                  "shipToAddress2": {
                    "type": "string",
                    "description": "Address line 2."
                  },
                  "shipToCity": {
                    "type": "string",
                    "description": "City."
                  },
                  "shipToState": {
                    "type": "string",
                    "description": "State in ISO format, for example CR-SJ (San Jose, Costa Rica) or US-CA (California, USA)."
                  },
                  "shipToZipPostCode": {
                    "type": "string",
                    "description": "Postal code."
                  },
                  "shipToCountry": {
                    "type": "string",
                    "description": "Country in ISO Alpha-2 code, for example CR (Costa Rica), US (USA) or GT (Guatemala)."
                  },
                  "shipToTelephone": {
                    "type": "string",
                    "description": "Phone number."
                  },
                  "subscription": {
                    "type": "string",
                    "description": "Set to 1 to force the customer to save the card in Tilopay, 0 otherwise."
                  },
                  "platform": {
                    "type": "string",
                    "description": "Name of the platform where the transaction originates."
                  },
                  "returnData": {
                    "type": "string",
                    "description": "Value Tilopay returns in the final response. Sending a base64 string is recommended."
                  },
                  "hashVersion": {
                    "type": "string",
                    "description": "Used only when implementing hash verification. Possible values [V1, V2]; defaults to V1."
                  },
                  "token_version": {
                    "type": "string",
                    "description": "Send the literal value \"v2\"."
                  }
                },
                "required": [
                  "amount",
                  "billToAddress",
                  "billToAddress2",
                  "billToCity",
                  "billToCountry",
                  "billToEmail",
                  "billToFirstName",
                  "billToLastName",
                  "billToState",
                  "billToTelephone",
                  "billToZipPostCode",
                  "capture",
                  "currency",
                  "key",
                  "orderNumber",
                  "platform",
                  "redirect",
                  "shipToAddress",
                  "shipToAddress2",
                  "shipToCity",
                  "shipToCountry",
                  "shipToFirstName",
                  "shipToLastName",
                  "shipToState",
                  "shipToTelephone",
                  "shipToZipPostCode",
                  "subscription"
                ]
              },
              "example": {
                "redirect": "https://www.urlToRedirect.com",
                "key": "<api_key>",
                "amount": "1.00",
                "currency": "USD",
                "orderNumber": "1212122",
                "capture": "1",
                "billToFirstName": "DEMO",
                "billToLastName": "DEMO",
                "billToAddress": "San Jose",
                "billToAddress2": "Catedral",
                "billToCity": "JS",
                "billToState": "SJ",
                "billToZipPostCode": "10061",
                "billToCountry": "CR",
                "billToTelephone": "88888888",
                "billToEmail": "cliente@ejemplo.com",
                "shipToFirstName": "DEMO",
                "shipToLastName": "DEMO",
                "shipToAddress": "San Jose",
                "shipToAddress2": "Catedral",
                "shipToCity": "JS",
                "shipToState": "SJ",
                "shipToZipPostCode": "10061",
                "shipToCountry": "CR",
                "shipToTelephone": "88888888",
                "subscription": "0",
                "platform": "api",
                "returnData": "dXNlcl9pZD0xMg==",
                "hashVersion": "V2",
                "token_version": "v2"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "100",
                  "html": "Use url redirect",
                  "url": "https://secure.tilopay.com/htmls/1212122_574572148file.html"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/consult": {
      "post": {
        "operationId": "consult",
        "summary": "Get a transaction by order number",
        "tags": [
          "Operations"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/procesos-operativos/consult"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "orderNumber": {
                    "type": "string",
                    "description": "Order number queried."
                  },
                  "merchantId": {
                    "type": "string",
                    "description": "Merchant id."
                  }
                }
              },
              "example": {
                "key": "<api_key>",
                "orderNumber": "1212122",
                "merchantId": ""
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "message": "",
                  "response": [
                    {
                      "id_tilopay": 734312,
                      "orderNumber": "1212122",
                      "amount": "5.00",
                      "currency": "USD",
                      "merchantId": "88803956",
                      "code": "1",
                      "response": "Transacción aprobada",
                      "auth": "123456",
                      "commission": 0.18,
                      "iva_commission": 0.02,
                      "retention_iva": 0.27,
                      "retention_rent": 0.09,
                      "cost": 0.35,
                      "cost_iva": 0.05,
                      "net_to_liquidate": "4.04",
                      "capture": "Capture",
                      "card": "4021",
                      "last": "5221",
                      "environment": "Test",
                      "type": "Payment",
                      "date": "2024-07-31 16:59:20"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/consultTransactions": {
      "post": {
        "operationId": "consultTransactions",
        "summary": "List transactions in a date range",
        "tags": [
          "Operations"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/procesos-operativos/consult-transactions"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "startDate": {
                    "type": "string",
                    "description": "Start date, `Y-m-d H:i:s` format - for example \"2022-01-15 00:00:00\"."
                  },
                  "endDate": {
                    "type": "string",
                    "description": "End date, `Y-m-d H:i:s` format - for example \"2022-08-01 23:59:59\"."
                  },
                  "onlyAproved": {
                    "type": "integer",
                    "description": "Whether to retrieve approved transactions only. 0 = any, 1 = approved only."
                  },
                  "environment": {
                    "type": "integer",
                    "description": "Environment of the transactions to retrieve. 0 = production, 1 = test."
                  },
                  "currency": {
                    "type": "array",
                    "items": {},
                    "description": "Array of currencies to retrieve, for example [\"USD\", \"CRC\"]."
                  },
                  "merchantId": {
                    "type": "string",
                    "description": "Merchant id."
                  },
                  "orderNumber": {
                    "type": "string",
                    "description": "Order number."
                  },
                  "email": {
                    "type": "string",
                    "description": "Customer email."
                  },
                  "auth": {
                    "type": "string",
                    "description": "Authorization number."
                  }
                },
                "required": [
                  "endDate",
                  "key",
                  "startDate"
                ]
              },
              "example": {
                "key": "<api_key>",
                "startDate": "2023-06-01 00:00:00",
                "endDate": "2023-06-30 23:59:59",
                "onlyAproved": 1,
                "environment": 1,
                "currency": [
                  "USD",
                  "CRC"
                ],
                "merchantId": "<merchantId>",
                "orderNumber": "12135",
                "email": "customer@example.com",
                "auth": "123456"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "message": "",
                  "response": [
                    {
                      "id": 734329,
                      "orderNumber": "12135",
                      "amount": "5.00",
                      "taxes": "0.00",
                      "discount": "0.00",
                      "discount_name": "",
                      "currency": "USD",
                      "merchantId": "<merchantId>",
                      "code": "1",
                      "response": "Transacción aprobada",
                      "auth": "123456",
                      "card": "4021",
                      "last": "5221",
                      "email": "customer@example.com",
                      "commission": 0.18,
                      "iva_commission": 0.02,
                      "retention_iva": 0.27,
                      "retention_rent": 0.09,
                      "cost": 0.35,
                      "cost_iva": 0.05,
                      "net_to_liquidate": 4.04,
                      "capture": "Capture",
                      "type": "Payment",
                      "environment": "Production",
                      "date": "2024-07-31 16:59:20"
                    },
                    {
                      "id": 734330,
                      "orderNumber": "12136",
                      "amount": "5.00",
                      "taxes": "0.00",
                      "discount": "0.00",
                      "discount_name": "",
                      "currency": "USD",
                      "merchantId": "<merchantId>",
                      "code": "1",
                      "response": "Transacción aprobada",
                      "auth": "123456",
                      "card": "4021",
                      "last": "5221",
                      "email": "customer@example.com",
                      "commission": 0.18,
                      "iva_commission": 0.02,
                      "retention_iva": 0.27,
                      "retention_rent": 0.09,
                      "cost": 0.35,
                      "cost_iva": 0.05,
                      "net_to_liquidate": 4.04,
                      "capture": "Capture",
                      "type": "Payment",
                      "environment": "Production",
                      "date": "2024-07-31 17:25:35"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/orders/liquidation/split": {
      "post": {
        "operationId": "split",
        "summary": "Split the settlement of an approved order",
        "tags": [
          "Operations"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/procesos-operativos/split"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "order_id": {
                    "type": "string",
                    "description": "Id of the approved order in Tilopay."
                  },
                  "commerces": {
                    "type": "array",
                    "items": {},
                    "description": "Associative array with the `email` and `amount` keys of each merchant the settlement is split with. Including the owning merchant is optional: if its amount is not specified it receives the remainder of the split, and if it is included and there is a remainder, the remainder is added to it."
                  },
                  "lang": {
                    "type": "string",
                    "description": "Request language."
                  }
                }
              },
              "example": {
                "order_id": "1",
                "commerces": [
                  {
                    "email": "commerce-1@example.com",
                    "amount": "7.5"
                  },
                  {
                    "email": "commerce-2@example.com",
                    "amount": "5.5"
                  }
                ],
                "lang": "en"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "message": "Great",
                  "description": "Order splitted successfully",
                  "response": {
                    "total_order_splitted": 3,
                    "order_id": 1,
                    "order_number": "PFC000069-TYP785237_313",
                    "order_key": "<api_key>",
                    "order_currency": "USD",
                    "order_amount": "33.00",
                    "splitted_orders": [
                      {
                        "id": 1,
                        "amount": 20,
                        "commerce_name": "Commerce owner name",
                        "commerce_email": "owner@example.com"
                      },
                      {
                        "id": 2,
                        "amount": 7.5,
                        "commerce_name": "Commerce name",
                        "commerce_email": "commerce-1@example.com"
                      },
                      {
                        "id": 3,
                        "amount": 5.5,
                        "commerce_name": "Commerce name",
                        "commerce_email": "commerce-2@example.com"
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/processModification": {
      "post": {
        "operationId": "processModification",
        "summary": "Capture, refund or reverse a transaction",
        "tags": [
          "Operations"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/procesos-operativos/process-modification"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "orderNumber": {
                    "type": "string",
                    "description": "Example: `1214352`"
                  },
                  "type": {
                    "type": "string",
                    "description": "Example: `2`"
                  },
                  "amount": {
                    "type": "string",
                    "description": "Example: `1.00`"
                  },
                  "key": {
                    "type": "string",
                    "description": "Key associated with the customer. Obtained in Admin - Tilopay Checkout."
                  }
                }
              },
              "example": {
                "orderNumber": "1214352",
                "type": "2",
                "amount": "1.00",
                "key": "<api_key>"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "Type of modification applied."
                    },
                    "transactionId": {
                      "type": "string",
                      "description": "Transaction identifier."
                    },
                    "ReasonCode": {
                      "type": "string",
                      "description": "Result code of the modification."
                    },
                    "ReasonCodeDescription": {
                      "type": "string",
                      "description": "Result text."
                    },
                    "OrderHash": {
                      "type": "string",
                      "description": "Order hash. See the note on `orderHash` in the webhooks page."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/createLinkPayment": {
      "post": {
        "operationId": "createLinkPayment",
        "summary": "Create a payment link",
        "tags": [
          "Payment links"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/links-de-pago/create-link-payment"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "amount": {
                    "type": "string",
                    "description": "Amount of the payment link."
                  },
                  "currency": {
                    "type": "string",
                    "description": "Currency code in ISO 4217 format."
                  },
                  "reference": {
                    "type": "string",
                    "description": "Payment link reference."
                  },
                  "type": {
                    "type": "integer",
                    "description": "Link type: 0 unlimited, 1 single use."
                  },
                  "description": {
                    "type": "string",
                    "description": "Payment description."
                  },
                  "client": {
                    "type": "string",
                    "description": "Customer name; applies only when type is 1."
                  },
                  "callback_url": {
                    "type": "string",
                    "description": "Optional. URL, called with GET, the customer is redirected to with the response once the payment completes. Example payload: `code=Val&description=Val&auth=Val&tilopayLinkId=Val&orderNumber=Val&tilopayOrderId=Val&creditCardToken=Val&creditCardBrand=Val&last4CreditCardNumber=Val&orderHash=Val`"
                  },
                  "webhook_url": {
                    "type": "string",
                    "description": "Optional. URL that receives the response webhook when the payment completes. It must accept POST in order to receive the data. Example payload: `{\"code\": \"1\", \"codeDescription\": \"Aprobada\", \"auth\": \"123456\", \"tilopayLinkId\": 54421, \"orderNumber\": \"TPT123\", \"tilopayOrderId\": 12233, \"creditCardToken\": \"41111******11111\", \"creditCardBrand\": \"Visa\", \"last4CreditCardNumber\": \"1111\", \"linkDescription\": \"Payment link description\", \"orderHash\": \"\"}`"
                  }
                },
                "required": [
                  "amount",
                  "currency",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "amount": "10",
                "currency": "USD",
                "reference": "123456",
                "type": 0,
                "description": "Description",
                "client": "Client name",
                "callback_url": "",
                "webhook_url": ""
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "message": "Success",
                  "url": "https://app.tilopay.com/link/MjMwMjQ=",
                  "id": 1
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/deleteLinkPayment": {
      "post": {
        "operationId": "deleteLinkPayment",
        "summary": "Delete a payment link",
        "tags": [
          "Payment links"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/links-de-pago/delete-link-payment"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "string",
                    "description": "Payment link id."
                  }
                },
                "required": [
                  "id",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": "35"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "status": 1,
                  "message": "Success"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/getDetailLinkPayment/{link_payment_id}/{api_key}": {
      "get": {
        "operationId": "getDetailLinkPayment",
        "summary": "Get a payment link with its payments",
        "tags": [
          "Payment links"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/links-de-pago/detail-link-payment"
        },
        "parameters": [
          {
            "name": "link_payment_id",
            "in": "path",
            "required": true,
            "description": "Id of the payment link to query.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api_key",
            "in": "path",
            "required": true,
            "description": "Merchant API key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "message": "Success",
                  "detail": {
                    "id": 6201,
                    "amount": "45.00",
                    "currency": "USD",
                    "reference": "Producto de prueba 1 TP-Shop",
                    "client": "NA",
                    "type": "Unlimited",
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
                    "callback_url": null,
                    "create": "2022-10-24 08:45:14"
                  },
                  "payments": []
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/getLinkPaymentById/{link_payment_id}/{api_key}": {
      "get": {
        "operationId": "getLinkPaymentById",
        "summary": "Get a payment link by id",
        "tags": [
          "Payment links"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/links-de-pago/payment-by-id"
        },
        "parameters": [
          {
            "name": "link_payment_id",
            "in": "path",
            "required": true,
            "description": "Id of the payment link to query.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api_key",
            "in": "path",
            "required": true,
            "description": "Merchant API key.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "message": "Success",
                  "data": {
                    "id": 1,
                    "amount": "45.00",
                    "currency": "USD",
                    "reference": "Producto de prueba 1 TP-Shop",
                    "url": "https://admin.tilopay.com/link/loNj8E2MA==",
                    "callback_url": null,
                    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
                    "times_used": null,
                    "picture": "https://storage.googleapis.com/tilo-uploads/items/51087219_.png",
                    "create": "2022-10-24 08:45:14",
                    "payments": []
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/getLinkPaymentList/{api_key}/{limit}": {
      "get": {
        "operationId": "getLinkPaymentList",
        "summary": "List payment links",
        "tags": [
          "Payment links"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/links-de-pago/payment-item-list"
        },
        "parameters": [
          {
            "name": "api_key",
            "in": "path",
            "required": true,
            "description": "Merchant API key.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "path",
            "required": true,
            "description": "Number of records per page.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "message": "Success",
                  "data": {
                    "current_page": 1,
                    "first_page_url": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=1",
                    "from": 1,
                    "last_page": 2,
                    "last_page_url": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=2",
                    "next_page_url": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=2",
                    "path": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10",
                    "per_page": 10,
                    "prev_page_url": null,
                    "to": 10,
                    "total": 16,
                    "payment_link": [
                      {
                        "id": 1,
                        "amount": "45.00",
                        "currency": "USD",
                        "reference": "Producto de prueba 1 TP-Shop",
                        "url": "https://admin.tilopay.com/link/3dNjE2MA3sdd==",
                        "callback_url": null,
                        "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
                        "times_used": null,
                        "picture": "https://storage.googleapis.com/tilo-uploads/items/51087219_.png",
                        "create": "2022-10-24 08:45:14"
                      },
                      {
                        "id": 2,
                        "amount": "35.00",
                        "currency": "USD",
                        "reference": "Producto de prueba 2",
                        "url": "https://admin.tilopay.com/link/dwNjE2see3MA==",
                        "callback_url": null,
                        "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
                        "times_used": null,
                        "picture": "https://storage.googleapis.com/tilo-uploads/items/64156766_.png",
                        "create": "2022-10-24 08:45:14"
                      },
                      {
                        "id": 3,
                        "amount": "45.00",
                        "currency": "USD",
                        "reference": "Producto de prueba 3",
                        "url": "https://admin.tilopay.com/link/f4NjE2MwsdA==",
                        "callback_url": null,
                        "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
                        "times_used": null,
                        "picture": "https://storage.googleapis.com/tilo-uploads/items/88435879_.png",
                        "create": "2022-10-24 08:45:14"
                      },
                      {
                        "id": 4,
                        "amount": "45.00",
                        "currency": "USD",
                        "reference": "test",
                        "url": "https://admin.tilopay.com/link/ceNjE2sxw2MA==",
                        "callback_url": null,
                        "description": "ddd",
                        "times_used": null,
                        "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png",
                        "create": "2022-10-24 08:45:14"
                      },
                      {
                        "id": 5,
                        "amount": "45.00",
                        "currency": "USD",
                        "reference": "test",
                        "url": "https://admin.tilopay.com/link/cweNjE2Mfd5A==",
                        "callback_url": null,
                        "description": "ddd",
                        "times_used": null,
                        "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png",
                        "create": "2022-10-24 08:45:14"
                      },
                      {
                        "id": 6,
                        "amount": "45.00",
                        "currency": "USD",
                        "reference": "test",
                        "url": "https://admin.tilopay.com/link/ce3NjE2fg5eMA==",
                        "callback_url": null,
                        "description": "ddd",
                        "times_used": null,
                        "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png",
                        "create": "2022-10-24 08:45:14"
                      },
                      {
                        "id": 7,
                        "amount": "45.00",
                        "currency": "USD",
                        "reference": "test",
                        "url": "https://admin.tilopay.com/link/dsNjE2MAd32==",
                        "callback_url": null,
                        "description": "ddd",
                        "times_used": null,
                        "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png",
                        "create": "2022-10-24 08:45:14"
                      },
                      {
                        "id": 8,
                        "amount": "45.00",
                        "currency": "USD",
                        "reference": "test",
                        "url": "https://admin.tilopay.com/link/NjE2sd32MA==",
                        "callback_url": null,
                        "description": "ddd",
                        "times_used": null,
                        "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png",
                        "create": "2022-10-24 08:45:14"
                      },
                      {
                        "id": 9,
                        "amount": "45.00",
                        "currency": "USD",
                        "reference": "test",
                        "url": "https://admin.tilopay.com/link/sd3NjE2MA==",
                        "callback_url": null,
                        "description": "ddd",
                        "times_used": null,
                        "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png",
                        "create": "2022-10-24 08:45:14"
                      },
                      {
                        "id": 10,
                        "amount": "45.00",
                        "currency": "USD",
                        "reference": "test",
                        "url": "https://admin.tilopay.com/link/d3dNjE2MA==",
                        "callback_url": null,
                        "description": "ddd",
                        "times_used": null,
                        "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png",
                        "create": "2022-10-24 08:45:14"
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/createCoupon": {
      "post": {
        "operationId": "createCoupon",
        "summary": "Create a coupon",
        "tags": [
          "Recurring - Coupons"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/cupones/create-coupon"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "planId": {
                    "type": "integer",
                    "description": "Recurring plan id."
                  },
                  "active_users": {
                    "type": "integer",
                    "description": "User permission. 0 = allow new users only, 1 = allow already registered users."
                  },
                  "type_discount": {
                    "type": "integer",
                    "description": "Discount type. 1 = percentage, 2 = fixed amount."
                  },
                  "discount": {
                    "type": "integer",
                    "description": "Numeric value of the discount."
                  },
                  "expire": {
                    "type": "string",
                    "description": "Coupon expiration date, `Y-m-d` format (for example 2025-10-20)."
                  },
                  "email_group": {
                    "type": "integer",
                    "description": "Email permission. 1 = specific emails, 2 = any email."
                  },
                  "email": {
                    "type": "string",
                    "description": "Comma-separated list of emails. Required when `email_group` is sent as 1."
                  },
                  "usage": {
                    "type": "integer",
                    "description": "Total number of uses."
                  },
                  "renews": {
                    "type": "integer",
                    "description": "Total number of valid renewals."
                  },
                  "renews_by_user": {
                    "type": "integer",
                    "description": "Total uses by the same user."
                  }
                },
                "required": [
                  "active_users",
                  "discount",
                  "email_group",
                  "expire",
                  "key",
                  "planId",
                  "type_discount"
                ]
              },
              "example": {
                "key": "<api_key>",
                "planId": 10,
                "active_users": 1,
                "type_discount": 1,
                "discount": 40,
                "expire": "2025-10-20",
                "email_group": 1,
                "email": "cliente@ejemplo.com, cliente@ejemplo.com",
                "usage": 1,
                "renews": 2,
                "renews_by_user": 2
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/deleteCoupon": {
      "post": {
        "operationId": "deleteCoupon",
        "summary": "Delete a coupon",
        "tags": [
          "Recurring - Coupons"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/cupones/delete-coupon"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "string",
                    "description": "Coupon id."
                  }
                },
                "required": [
                  "id",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": "1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/getCoupon": {
      "post": {
        "operationId": "getCoupon",
        "summary": "Get a coupon",
        "tags": [
          "Recurring - Coupons"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/cupones/get-coupon"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "string",
                    "description": "Coupon id."
                  }
                },
                "required": [
                  "id",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": "1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/getRepeatCoupons": {
      "post": {
        "operationId": "getRepeatCoupons",
        "summary": "List the coupons of a plan",
        "tags": [
          "Recurring - Coupons"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/cupones/get-coupons"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "string",
                    "description": "Recurring plan id."
                  }
                },
                "required": [
                  "id",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": "1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/processRecurrentPayment": {
      "post": {
        "operationId": "processRecurrentPayment",
        "summary": "Charge a stored card",
        "tags": [
          "Recurring - Payments"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/realizar-pago/process-recurrent-payment"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key associated with the customer. Obtained in Admin - Tilopay Checkout."
                  },
                  "amount": {
                    "type": "string",
                    "description": "Purchase amount."
                  },
                  "currency": {
                    "type": "string",
                    "description": "Purchase currency in ISO format, for example USD, CRC, GTQ."
                  },
                  "orderNumber": {
                    "type": "string",
                    "description": "Order number; it may be alphanumeric."
                  },
                  "capture": {
                    "type": "string",
                    "description": "Capture and authorize: 1 yes, 0 no."
                  },
                  "email": {
                    "type": "string",
                    "description": "Cardholder email."
                  },
                  "card": {
                    "type": "string",
                    "description": "Card token; it must be the v2 token. When implementing hash verification, use the `hashVersion` field, possible values [V1, V2], defaults to V1."
                  }
                },
                "required": [
                  "amount",
                  "capture",
                  "card",
                  "currency",
                  "email",
                  "key",
                  "orderNumber"
                ]
              },
              "example": {
                "key": "<api_key>",
                "amount": "10.00",
                "currency": "USD",
                "orderNumber": "1213",
                "capture": "1",
                "email": "myemail@exapmle.com",
                "card": "511111_00GOB1111"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "response": "1",
                  "description": "Transacción aprobada",
                  "auth": "123456",
                  "tpt": 734329,
                  "order_id": "12135",
                  "tilopayTransaction": 734329,
                  "orderHash": "f3ad85046d249bc7a781eed5285a5ded92045a2e11108063504deec72ec9b338"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/createPlanRepeat": {
      "post": {
        "operationId": "createPlanRepeat",
        "summary": "Create a recurring plan",
        "tags": [
          "Recurring - Plans"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/planes/create-plan"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "title": {
                    "type": "string",
                    "description": "Title of the recurring plan."
                  },
                  "description": {
                    "type": "string",
                    "description": "Plan description."
                  },
                  "frecuency": {
                    "type": "integer",
                    "description": "Billing frequency. 1 = daily, 2 = weekly, 3 = monthly, 4 = yearly, 5 = biweekly, 6 = bimonthly, 7 = quarterly, 8 = every four months, 9 = every six months."
                  },
                  "currency": {
                    "type": "string",
                    "description": "Currency code in ISO 4217 format."
                  },
                  "first_amount": {
                    "type": "integer",
                    "description": "Amount of the initial payment."
                  },
                  "trial": {
                    "type": "integer",
                    "description": "Enables the free trial period: 0 no, 1 yes."
                  },
                  "trial_days": {
                    "type": "integer",
                    "description": "Number of days in the free trial period."
                  },
                  "attempts": {
                    "type": "integer",
                    "description": "Number of retries for failed charges."
                  },
                  "modality": {
                    "type": "array",
                    "items": {},
                    "description": "Array of plan modalities."
                  },
                  "thanks_url": {
                    "type": "string",
                    "description": "Optional. Merchant's own thank-you URL; it must support the GET method."
                  },
                  "webhook_subscribe": {
                    "type": "string",
                    "description": "Optional. Webhook URL, called with POST, that receives the callback in the request body when a customer subscribes successfully. Example payload: `{'id_plan': 1, 'email': 'email@email.com', 'modality': 'ModalityName', 'amount': 25, 'frequency': '', 'coupon': '5HT5W8YT', 'free_trial': 1, 'next_payment_date': '2023-02-25'}`"
                  },
                  "webhook_payment": {
                    "type": "string",
                    "description": "Optional. Webhook URL, called with POST, that receives the callback in the request body when the customer is charged successfully. Example payload: `{'id_plan': 1, 'email': 'email@email.com', 'amount': 25, 'auth': '123456', 'orderNumber': 'PRE123456'}`"
                  },
                  "webhook_rejected": {
                    "type": "string",
                    "description": "Optional. Webhook URL, called with POST, that receives the callback in the request body when a payment fails. Example payload: `{'id_plan': 1, 'email': 'email@email.com', 'amount': 25}`"
                  },
                  "webhook_unsubscribe": {
                    "type": "string",
                    "description": "Optional. Webhook URL, called with POST, that receives the callback in the request body when a customer cancels the subscription to one of their plans. Example payload: `{'id_plan': 1, 'email': 'email@email.com', 'expire': '2023-02-25'}`"
                  },
                  "webhook_reactive": {
                    "type": "string",
                    "description": "Optional. Webhook URL, called with POST, that receives the callback in the request body when a customer reactivates the subscription to one of their plans. Example payload: `{'id_plan': 1, 'email': 'email@email.com', 'next_payment_date': '2023-02-25'}`"
                  },
                  "end_at": {
                    "type": "string",
                    "description": "End date of the recurring plan, `d-m-Y` format (for example 25-09-2022). Send it empty if the plan has no end date."
                  },
                  "notify": {
                    "type": "integer",
                    "description": "Set to 1 to append the `notify_detail` and `notify_note` text to the notification email. Set to 0 to append neither."
                  },
                  "notify_detail_es": {
                    "type": "string",
                    "description": "Detail text in Spanish. Optional when `notify` is 0."
                  },
                  "notify_detail_en": {
                    "type": "string",
                    "description": "Detail text in English. Optional when `notify` is 0."
                  },
                  "notify_note_es": {
                    "type": "string",
                    "description": "Notes text in Spanish. Optional when `notify` is 0."
                  },
                  "notify_note_en": {
                    "type": "string",
                    "description": "Notes text in English. Optional when `notify` is 0."
                  }
                },
                "required": [
                  "attempts",
                  "currency",
                  "first_amount",
                  "key",
                  "modality",
                  "title",
                  "trial",
                  "trial_days"
                ]
              },
              "example": {
                "key": "<api_key>",
                "title": "Plan title",
                "description": "Plan description",
                "frecuency": 1,
                "currency": "USD",
                "first_amount": 0,
                "trial": 0,
                "trial_days": 0,
                "attempts": 1,
                "modality": [
                  {
                    "title": "Basic",
                    "amount": 10
                  },
                  {
                    "title": "Premium",
                    "amount": 30
                  }
                ],
                "thanks_url": "",
                "webhook_subscribe": "",
                "webhook_payment": "",
                "webhook_rejected": "",
                "webhook_unsubscribe": "",
                "webhook_reactive": "",
                "end_at": "25-10-2023",
                "notify": 0,
                "notify_detail_es": "",
                "notify_detail_en": "",
                "notify_note_es": "",
                "notify_note_en": ""
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "status": 1,
                  "message": "Success",
                  "id": 624,
                  "url": "https://app.tilopay.com/link/TmpJMHwx"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/deletePlanRepeat": {
      "post": {
        "operationId": "deletePlanRepeat",
        "summary": "Delete a recurring plan",
        "tags": [
          "Recurring - Plans"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/planes/delete-plan"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "string",
                    "description": "Recurring plan id."
                  }
                },
                "required": [
                  "id",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": "625"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "status": 1,
                  "message": "Success"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/editPlanRepeat": {
      "post": {
        "operationId": "editPlanRepeat",
        "summary": "Edit a recurring plan",
        "tags": [
          "Recurring - Plans"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/planes/edit-plan"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "integer",
                    "description": "Recurring plan id."
                  },
                  "title": {
                    "type": "string",
                    "description": "Title of the recurring plan."
                  },
                  "description": {
                    "type": "string",
                    "description": "Plan description."
                  },
                  "frecuency": {
                    "type": "integer",
                    "description": "Billing frequency. 1 = daily, 2 = weekly, 3 = monthly, 4 = yearly, 5 = biweekly, 6 = bimonthly, 7 = quarterly, 8 = every four months, 9 = every six months."
                  },
                  "currency": {
                    "type": "string",
                    "description": "Currency code in ISO 4217 format."
                  },
                  "first_amount": {
                    "type": "integer",
                    "description": "Amount of the initial payment."
                  },
                  "trial": {
                    "type": "integer",
                    "description": "Enables the free trial period: 0 no, 1 yes."
                  },
                  "trial_days": {
                    "type": "integer",
                    "description": "Number of days in the free trial period."
                  },
                  "attempts": {
                    "type": "integer",
                    "description": "Number of retries for failed charges."
                  },
                  "status": {
                    "type": "integer",
                    "description": "Recurring plan status. 0 = inactive, 1 = active, 2 = active but closed to new registrations."
                  },
                  "thanks_url": {
                    "type": "string",
                    "description": "Optional. Merchant's own thank-you URL; it must support the GET method."
                  },
                  "webhook_subscribe": {
                    "type": "string",
                    "description": "Optional. Webhook URL, called with POST, that receives the callback in the request body when a customer subscribes successfully. Example payload: `{'id_plan': 1, 'email': 'email@email.com', 'modality': 'ModalityName', 'amount': 25, 'frequency': '', 'coupon': '5HT5W8YT', 'free_trial': 1, 'next_payment_date': '2023-02-25'}`"
                  },
                  "webhook_payment": {
                    "type": "string",
                    "description": "Optional. Webhook URL, called with POST, that receives the callback in the request body when the customer is charged successfully. Example payload: `{'id_plan': 1, 'email': 'email@email.com', 'amount': 25, 'auth': '123456', 'orderNumber': 'PRE123456'}`"
                  },
                  "webhook_rejected": {
                    "type": "string",
                    "description": "Optional. Webhook URL, called with POST, that receives the callback in the request body when a payment fails. Example payload: `{'id_plan': 1, 'email': 'email@email.com', 'amount': 25}`"
                  },
                  "webhook_unsubscribe": {
                    "type": "string",
                    "description": "Optional. Webhook URL, called with POST, that receives the callback in the request body when a customer cancels the subscription to one of their plans. Example payload: `{'id_plan': 1, 'email': 'email@email.com', 'expire': '2023-02-25'}`"
                  },
                  "webhook_reactive": {
                    "type": "string",
                    "description": "Optional. Webhook URL, called with POST, that receives the callback in the request body when a customer reactivates the subscription to one of their plans. Example payload: `{'id_plan': 1, 'email': 'email@email.com', 'next_payment_date': '2023-02-25'}`"
                  },
                  "end_at": {
                    "type": "string",
                    "description": "End date of the recurring plan, `d-m-Y` format (for example 25-09-2022). Send it empty if the plan has no end date."
                  }
                },
                "required": [
                  "attempts",
                  "currency",
                  "first_amount",
                  "id",
                  "key",
                  "status",
                  "title",
                  "trial",
                  "trial_days"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": 3,
                "title": "Plan title",
                "description": "Plan description",
                "frecuency": 2,
                "currency": "USD",
                "first_amount": 0,
                "trial": 0,
                "trial_days": 0,
                "attempts": 5,
                "status": 1,
                "thanks_url": "",
                "webhook_subscribe": "",
                "webhook_payment": "",
                "webhook_rejected": "",
                "webhook_unsubscribe": "",
                "webhook_reactive": "",
                "end_at": "25-10-2023"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/getPlanRepeat": {
      "post": {
        "operationId": "getPlanRepeat",
        "summary": "Get a recurring plan",
        "tags": [
          "Recurring - Plans"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/planes/get-plan"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "string",
                    "description": "Recurring plan id."
                  }
                },
                "required": [
                  "id",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": "3"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "message": "Success",
                  "plan": {
                    "id": 232,
                    "title": "Prueba repeat",
                    "description": "Plan repeat de prueba mensual",
                    "frequency": 3,
                    "currency": "USD",
                    "first_amount": "5.00",
                    "trial": 0,
                    "trial_days": 0,
                    "attempts": 5,
                    "thanks_url": null,
                    "webhook_subscribe": null,
                    "webhook_payment": null,
                    "webhook_rejected": null,
                    "webhook_unsubscribe": null,
                    "webhook_reactive": null,
                    "modality": [
                      {
                        "id": 292,
                        "title": "Pago mensual prueba repeat modalidad",
                        "amount": "10.00"
                      }
                    ],
                    "end_at": null
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/getPlansRepeat": {
      "post": {
        "operationId": "getPlansRepeat",
        "summary": "List recurring plans",
        "tags": [
          "Recurring - Plans"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/planes/get-plans"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  }
                },
                "required": [
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/deleteSuscriptorRepeat": {
      "post": {
        "operationId": "deleteSuscriptorRepeat",
        "summary": "Delete a subscriber",
        "tags": [
          "Recurring - Subscribers"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/suscriptores/delete-suscriptor-plan"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id_suscriptor": {
                    "type": "string",
                    "description": "Subscriber id."
                  }
                },
                "required": [
                  "id_suscriptor",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id_suscriptor": "1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "status": 1,
                  "message": "Success"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/editSuscriptorRepeat": {
      "post": {
        "operationId": "editSuscriptorRepeat",
        "summary": "Edit a subscriber",
        "tags": [
          "Recurring - Subscribers"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/suscriptores/edit-suscriptor-plan"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "string",
                    "description": "Subscriber id."
                  },
                  "status": {
                    "type": "string",
                    "description": "Subscriber status. 1 = active, 3 = paused, 4 = deleted."
                  },
                  "expire": {
                    "type": "string",
                    "description": "Plan expiration date, `yy-m-d` format."
                  }
                },
                "required": [
                  "id",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": "2",
                "status": "2",
                "expire": "2023-10-25"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "status": 1,
                  "message": "Success"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/getSuscriptorPayments": {
      "post": {
        "operationId": "getSuscriptorPayments",
        "summary": "List the payments of a plan's subscribers",
        "tags": [
          "Recurring - Subscribers"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/suscriptores/suscriptor-payments"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "string",
                    "description": "Recurring plan id."
                  }
                },
                "required": [
                  "id",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": "1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/getSuscriptorRepeat": {
      "post": {
        "operationId": "getSuscriptorRepeat",
        "summary": "List the subscribers of a plan",
        "tags": [
          "Recurring - Subscribers"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/suscriptores/get-suscriptor-plan"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "string",
                    "description": "Recurring plan id."
                  }
                },
                "required": [
                  "id",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": "2"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "message": "Success",
                  "suscriptor": [
                    {
                      "id": 360,
                      "name": "Jhon 1",
                      "lastname": "D",
                      "email": "customer1@example.com",
                      "modality": "Pago mensual prueba repeat modalidad",
                      "amount": "10.00",
                      "expire": "2023-03-26",
                      "coupon": "",
                      "status": "Delete",
                      "create": "2022-10-19 12:48:59"
                    },
                    {
                      "id": 33364,
                      "name": "Jhon 2",
                      "lastname": "D",
                      "email": "customer2@example.com",
                      "modality": "Pago mensual prueba repeat modalidad",
                      "amount": "10.00",
                      "expire": "2023-08-05",
                      "coupon": "",
                      "status": "Active",
                      "create": "2023-06-05 14:24:18"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/pauseSuscriptorRepeat": {
      "post": {
        "operationId": "pauseSuscriptorRepeat",
        "summary": "Pause a subscriber",
        "tags": [
          "Recurring - Subscribers"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/suscriptores/pause-suscriptor-plan"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id_suscriptor": {
                    "type": "string",
                    "description": "Subscriber id."
                  }
                },
                "required": [
                  "id_suscriptor",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id_suscriptor": "1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "status": 1,
                  "message": "Success"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/reactiveSuscriptorRepeat": {
      "post": {
        "operationId": "reactiveSuscriptorRepeat",
        "summary": "Reactivate a subscriber",
        "tags": [
          "Recurring - Subscribers"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/suscriptores/reactive-suscriptor-plan"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id_suscriptor": {
                    "type": "string",
                    "description": "Subscriber id."
                  }
                },
                "required": [
                  "id_suscriptor",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id_suscriptor": "1"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "status": 1,
                  "message": "Success"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/recurrentUrl": {
      "post": {
        "operationId": "recurrentUrl",
        "summary": "Get the registration or renewal URL of a plan",
        "tags": [
          "Recurring - Subscribers"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/recurrentes/suscriptores/consult-url"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key of the Tilopay integration."
                  },
                  "id": {
                    "type": "string",
                    "description": "Recurring plan id."
                  },
                  "email": {
                    "type": "string",
                    "description": "Email of the user the registration link is created for."
                  }
                },
                "required": [
                  "id",
                  "key"
                ]
              },
              "example": {
                "key": "<api_key>",
                "id": "1",
                "email": "email@user.com"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "200",
                  "message": "",
                  "url_register": "https://app.tilopay.com/admin/recurrent/register/MjMy?email=email@user.com",
                  "url_renew": ""
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/processTokenize": {
      "post": {
        "operationId": "processTokenize",
        "summary": "Tokenize a card",
        "tags": [
          "Tokenization"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/tokenizacion/process-tokenize"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "redirect": {
                    "type": "string",
                    "description": "Site where the transaction response is expected."
                  },
                  "key": {
                    "type": "string",
                    "description": "Key associated with the merchant."
                  },
                  "email": {
                    "type": "string",
                    "description": "Cardholder email address."
                  },
                  "language": {
                    "type": "string",
                    "description": "Language [es, en]."
                  },
                  "firstName": {
                    "type": "string",
                    "description": "Cardholder first name."
                  },
                  "lastName": {
                    "type": "string",
                    "description": "Cardholder last name."
                  },
                  "token_version": {
                    "type": "string",
                    "description": "Send the literal value \"v2\"."
                  }
                }
              },
              "example": {
                "redirect": "https://urlToRedirect.com",
                "key": "<api_key>",
                "email": "email@user.com",
                "language": "es",
                "firstName": "name",
                "lastName": "lastname",
                "token_version": "v2"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "type": "100",
                  "url": "https://secure.tilopay.com/htmls/TOK-5063-740506121440_1648145457file.html"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/user/card-remove": {
      "post": {
        "operationId": "cardremove",
        "summary": "Delete a stored card token",
        "tags": [
          "Tokenization"
        ],
        "externalDocs": {
          "description": "Reference page",
          "url": "https://www.tilopay.com/developers/api/tokenizacion/remove-card"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Key associated with the merchant."
                  },
                  "email": {
                    "type": "string",
                    "description": "Email of the customer associated with the token."
                  },
                  "token": {
                    "type": "string",
                    "description": "Token to delete."
                  }
                },
                "required": [
                  "email",
                  "key"
                ]
              },
              "example": {
                "key": "1234-1234-1234-1234-1234",
                "email": "email@card.com",
                "token": "411111.......1111"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Token returned by `POST /api/v1/login`, sent as `Authorization: Bearer <token>`."
      }
    },
    "responses": {
      "Unauthorized": {
        "description": "Missing or expired API token.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object"
            }
          }
        }
      }
    }
  }
}