openapi: 3.0.0
servers:
  - url: "https://app.payku.cl/"
    description: Default server
  - url: "https://des.payku.cl/"
    description: Sandbox server
info:
  description: |
    Necesitas ver la documentación de los otros países?: <a href="https://docs.payku.com/index-cl-es-v1.html">Chile</a> | Perú | <a href="https://docs.payku.com/index-ve-es-v1.html">Venezuela</a>

    Seleccione el idioma de la documentación: ES | <a href="https://docs.payku.com/index-pe-en-v1.html">EN</a>

    <div style="
    background: #2F39D1;
    width:100%;
    height:6rem;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    ">
    <strong style="color: #fff">Nuevo: Puedes realizar pruebas en vivo de nuestra API</strong>
    <a style="
    margin-top:0.7rem;
    background: #fff;
    border: 1px solid rgb(50, 50, 159);
    color: rgb(50, 50, 159);
    font-weight: normal;
    margin-left: 0.5em;
    width:20%;
    padding: 4px 8px;
    display: inline-block;
    text-decoration: none;
    cursor: pointer;
    text-align: center"
    href="https://testing-apirest.payku.cl/"
    target="_blanck" rel=”noopener noreferrer”
    onMouseOver="this.style.color='#000', this.style.background='#DBDBDB'"
    onMouseOut="this.style.color='#2F39D1', this.style.background='#fff'"
    ">Prueba
    </a>
    </div>

    # Introducción
    Bienvenido a la API de payku. Puedes usar nuestra API para acceder a los distintos
    endpoints de payku, donde podrás generar y gestionar pagos mediante distintos
    métodos y obtener información de ellos.

    El API está organizado alrededor de REST. Posee URLs predecibles y
    orientadas a recursos, y utiliza códigos de respuesta HTTP para indicar el
    resultado de la llamada. Todas las respuestas de la API retornan objetos
    JSON, incluyendo los errores.

    El solicitante debe buscar un código de resultado 200. Si se recibe
    cualquier código de resultado distinto de 200, la solicitud o la respuesta
    no es válida, lo que significa que los campos no pasaron los controles de
    validación de parte de payku. Utilizamos características incluidas en el
    protocolo HTTP, como autenticación, los cuales son soportados por la gran
    mayoría de los clientes HTTP.

    **Importante — ¿Cómo saber si una operación falló?**

    No te fíes solo del código HTTP (por ejemplo, 200). En nuestra API, muchas
    respuestas con error también llegan con código HTTP 200. Esto es intencional y
    forma parte del diseño de la API.

    Siempre revisa el contenido JSON de la respuesta y busca el campo `status`:
    - Si `status` es `"success"`, la operación se realizó correctamente.
    - Si `status` es `"failed"`, hubo un error (por ejemplo, datos inválidos o una
      operación rechazada). Revisa también el mensaje de error que venga en la
      misma respuesta.

    # Autenticación
    payku utiliza Token Based Authentication sobre HTTPS para la autenticación. Para tener acceso a nuestra API, accede a tu cuenta en la sección de Integración encontrarás la opción de Tokens integración y API. Los request no autenticados o incorrectos retornarán una respuesta de token Invalido.


    # API Seguridad
    Cada solicitud es requerido tener incluido en el header:
      - Authorization: Bearer **TOKEN-PÚBLICO**

    # Firma

    En el caso del API de suscripciones, anulación y mall se agregó una capa más de seguridad a través de una firma que se envía en el header del request, para obtener dicha firma es necesario lo siguiente:

    Se debe concatenar en formato para url el Request Path junto a todos los parámetros del request, los cuales deben ser ordenados alfabéticamente por key, tal que key=value. Por lo tanto, si el valor de email cliente es “example@domain.com” el formato correcto sería “example%40domain.com” y luego concatenados con el carácter ‘&’.

    Una vez que los sets de caracteres son ordenados y concatenados, el hash es calculado usando la función HMAC con cifrado tipo sha256, y el token privado.

    **Nota:** Si un elemento de la data, tiene como valor un objeto o arreglo, se excluye de la data. Esta función esta en el ejemplo de PHP y de Javascript.

    ### Ejemplo PHP
    Endpoint de la API:
    ```php
    $request_path = urlencode('/api/suclient');
    ```
    Ordenando los parámetros:
    ```php
    $data = [
      'email' => 'johndoe@example.com',
      'name' => 'John Doe',
      'phone' => '923122312',
      'address' => 'Moneda 101',
      'country' => 'Chile',
      'region' => 'Metropolitana',
      'city' => 'Santiago',
      'postal_code' => '850000',
      'additional_parameters' => [
        'parameter_1' => 'example',
        'parameter_2' => 'example 2',
      ]
    ];
    ksort($data);
    ```
    Transformación de los parámetros a formato url:
    ```php
        $contador = 0;
        $concatenar = null;

        if (!empty($data) && !is_null($data)) {
            foreach ($data as $key => $val) {
                if(gettype($val)!='array' && gettype($val)!='object'){
                    if ($contador>0) {
                        $concatenar .= '&';
                    }
                    $concatenar .= $key . '=' . urlencode($val);
                    $contador++;
                }
            }
        };
    ```
    Concatenación de los parámetros en formato url con el endpoint de la API:
    ```php
    $concat = $request_path.'&'.$concatenar;
    ```
    Firma:
    ```php
    $sign = hash_hmac('sha256', $concat, 'fe551abcef62fcf002dc598922e68f0a');
    ```

    ### Ejemplo JavaScript
    Importar dependencia CryptoJS:
    ```javascript
    const CryptoJS = require("crypto-js");
    ```
    Endpoint de la API:
    ```javascript
    const requestPath = encodeURIComponent('/api/suclient');
    ```
    Ordenando los parámetros:
    ```javascript
    const data = {
      email: "johndoe@example.com",
      name: "John Doe",
      phone: "923122312",
      address: "Moneda 101",
      country: "Chile",
      region: "Metropolitana",
      city: "Santiago",
      postal_code: "850000"
    };
    const orderedData = {};
    Object.keys(data).sort().forEach(function(key) {
      orderedData[key] = data[key];
      if (typeof orderedData[key] === 'object') {
            delete orderedData[key];
      }
    });
    ```
    Transformación de los parámetros a formato url:
    ```javascript
    const arrayConcat = new URLSearchParams(orderedData).toString();
    ```
    Concatenación de los parámetros en formato url con el endpoint de la API:
    ```javascript
    const concat = requestPath + "&" + arrayConcat;
    ```
    Firma:
    ```javascript
    const sign = CryptoJS.HmacSHA256(concat, "fe551abcef62fcf002dc598922e68f0a").toString();
    ```

    El resultado de la firma obtenida para ambos ejemplos es:

    ```javascript
    "c9c86202b1246f6ebeb080d08b3b99a22d36d0e8cffb7fd4e65af0fea4dd12bb"
    ```
    # Errores
    payku usa respuestas HTTP convencionales para indicar el éxito o fracaso de un request.
    En general, códigos en el rango de los 2xx indican éxito, códigos en el rango 4xx indican
    un error que falló debido a la información proporcionada (ej: un parámetro requerido fue
    omitido, un pago falló, etc.), y códigos en el rango de los 5xx indican un error con
    los servidores de payku (estos son raros).

    ## Códigos de error
    <div class="errorContent">
    <table>
      <tbody>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">400</strong>
            <p class="psmall">Bad Request</p>
          </td>
          <td class="errorDescription">Hay un problema con tu request</td>
        </tr>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">401</strong>
            <p class="psmall">Unauthorized</p>
          </td>
          <td class="errorDescription">Tu token es incorrecto o error de firma</td>
        </tr>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">403</strong>
            <p class="psmall">Forbidden</p>
          </td>
          <td class="errorDescription">No tienes permiso para ver esta página</td>
        </tr>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">404</strong>
            <p class="psmall">Not Found</p>
          </td>
          <td class="errorDescription">El recurso especificado no fue encontrado </td>
        </tr>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">405</strong>
            <p class="psmall">Method Not Allowed</p>
          </td>
          <td class="errorDescription">Trataste de ingresar a un recurso con un método inválido</td>
        </tr>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">406</strong>
            <p class="psmall">Not Acceptable</p>
          </td>
          <td class="errorDescription">Solicitaste un formato que no es json</td>
        </tr>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">410</strong>
            <p class="psmall">Gone</p>
          </td>
          <td class="errorDescription">El recurso solicitado fue removido de nuestros servidores</td>
        </tr>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">422</strong>
            <p class="psmall">Unprocessable Entity</p>
          </td>
          <td class="errorDescription">No podemos procesar tu solicitud, revísala.</td>
        </tr>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">429</strong>
            <p class="psmall">Too Many Requests</p>
          </td>
          <td class="errorDescription">¡Estás solicitando muchos recursos! ¡Detente!</td>
        </tr>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">500</strong>
            <p class="psmall">Internal Server Error</p>
          </td>
          <td class="errorDescription">Tuvimos un problema con nuestro servidor. Inténtalo nuevamente más tarde.</td>
        </tr>
        <tr>
          <td style="text-align: right"><strong class="errorTitle">503</strong>
            <p class="psmall">Service Unavailable</p>
          </td>
          <td class="errorDescription">Estamos offline por mantenimiento. Inténtalo nuevamente más tarde</td>
        </tr>
      </tbody>
    </table>
    </div>

    # Acceso a la API
    Si tienes una cuenta en payku, puedes acceder a la API REST mediante los siguientes endpoints:

    <div class="content">
      <table class="center smallTable">
        <thead>
          <tr>
            <th style="text-align:center;"><strong>Site</strong></th>
            <th style="text-align:center;"><strong>BASE URL FOR REST ENDPOINT</strong></th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><strong>Production</strong></td>
            <td align="center"><a target="_blank" href="https://app.payku.cl/api">https://app.payku.cl/api</a></td>
          </tr>
          <tr>
            <td><strong>Sandbox</strong></td>
            <td><a target="_blank" href="https://des.payku.cl/api">https://des.payku.cl/api</a></td>
          </tr>
        </tbody>
      </table>
    </div>

    - **Producción**: proporciona acceso directo para generar transacciones reales.
    - **Sandbox**: permite probar su integración sin afectar los datos reales.

    Cuando aparece el formulario de autenticación con DNI y clave, se debe usar el DNI 11111111 y la clave 123.

  version: "2.1.01"
  title: payku API
  termsOfService: "https://payku.com/legal/"
  contact:
    email: contacto@payku.com
  license:
    name: Apache 2.0
    url: "http://www.apache.org/licenses/LICENSE-2.0.html"
  x-logo:
    url: "https://records.payku.com/public/img/payku2020_2.svg"

tags:
  - name: Transacción
    description: |
      Permite la creación de transacciones y posteriormente consultar su estado.
      <br>
      <div class='container'>
        <img src='assets/img/Diagram-Transaction.png' alt='Avatar' class='image' style='width:100%'>
        <div class='middle'>
          <a target='_blank' href='assets/img/Diagram-Transaction.png' class='text'>Ver diagrama</a>
        </div>
      </div>
  - name: Transacción Escrow
    description: Esta funcionalidad permitirá a las cuentas escrow autorizadas por payku realizar la liquidación de transacciones.
  - name: Anulación
    description: Permite solicitar la anulación de una transacción realizada a través de payku.
  - name: Marketplace
    description: |
      Permite el registro de clientes, para posteriormente realizar la distribución según porcentaje asignado.
      <br>
      <div class='container'>
        <img src='/assets/Diagrama-Marketplace.png' alt='Avatar' class='image' style='width:100%'>
        <div class='middle'>
          <a target='_blank' href='/assets/Diagrama-Marketplace.png' class='text'>Ver diagrama</a>
        </div>
      </div>
  - name: Mall
    description: |
      El producto ha sido diseñado especialmente para aquellas empresas integradoras de distintas marcas con diferentes líneas de negocio las cuales pueden agruparse manteniendo su diversidad en un mismo espacio virtual o mall.

      Ofreciendo la posibilidad de agrupar el pago de las compras realizadas en múltiples tiendas virtuales en una sola transacción.
      <br>
      <div class='container'>
        <img src='/assets/Diagrama-Mall.png' alt='Avatar' class='image' style='width:100%'>
        <div class='middle'>
          <a target='_blank' href='/assets/Diagrama-Mall.png' class='text'>Ver diagrama</a>
        </div>
      </div>
  - name: Evento
    description: Permite la  creación de eventos y posteriormente consultar su estado.
  - name: Suscripción
    description: |
      Permite la vinculación de un plan a un cliente, para posteriormente realizar cargos recurrentes automáticamente, según se defina en cada plan.
      <br>
      <div class='container'>
        <img src='/assets/Diagrama-Suscripcion.png' alt='Avatar' class='image' style='width:100%'>
        <div class='middle'>
          <a target='_blank' href='/assets/Diagrama-Suscripcion.png' class='text'>Ver diagrama</a>
        </div>
      </div>
  - name: Suscripción de consumo
    description: |
      Es el conjunto de métodos que permitirán a nuestros usuarios la creación de clientes, planes, suscripciones y realizar transacciones de planes de consumo.

      El principal uso de estos métodos es para realizar cargos únicos a un cliente por un servicio o producto, como por el ejemplo la contratación de un servicio de delivery de algún producto o la compra de un producto en particular.

      Si se desea que el cliente vaya directo a la pasarela de pago de QR Interoperable es necesario enviar a través de parámetros en la url, en caso de una suscripción con los parámetros básicos como son nombre, apellido, email y teléfono, la url tendría la siguiente forma:
      https://BASE_URL/suscripcion/index?idplan=607&verif=b4280f5e&nombre=vicente&apellido=borjas&email=example@ example.com&telefono=986523565&direct_full=true

      Si se desean agregar otros parámetros estos deben ser concatenados a través de & continuando con la estructura antes mostrada.
  - name: Wallet
    description: Permite generar transacciones bancarias desde tu billetera virtual **payku**.
  - name: Conciliación
    description: Permite obtener las conciliaciones en **payku**.
  - name: Bancos
    description: |
      Permite ver la lista de los bancos asociados.
  - name: Métodos de pago
    description: |
      Permite ver la lista de los métodos de pago utilizados por payku.

x-tagGroups:
  - name: ''
    tags:
      - Transacción
      - Wallet
  - name: Herramientas
    tags:
      - Bancos
      - Métodos de pago

paths:
  /api/banks?currency=pen:
    get:
      tags:
        - Bancos
      summary: "Obtener lista de bancos por el tipo de moneda"
      description: |
        Este método permite obtener una lista de los bancos asociados filtrados por la moneda.
        Para filtrar por la moneda, hay que agregar el query params currency con el valor de la moneda.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BanksCurrencyResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorBanks400get"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X GET \
            https://BASE-URL/api/banks?currency=pen  \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE-URL' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('GET', 'https://BASE_URL/api/banks?currency=pen', [
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async () => {
              const response = await fetch('https://BASE_URL/api/banks?currency=pen', {
                method: 'GET',
                headers: {
                  'Content-Type': 'application/json'
                },
              });
              const result = await response.json();
              console.log(result)
            }
            request();

  /api/paymentmethods?currency=pen:
    get:
      tags:
        - Métodos de pago
      summary: "Obtener lista de métodos de pago por el tipo de moneda"
      description: |
        Este método permite obtener una lista de los métodos de pago en payku.
        Para filtrar por la moneda, hay que agregar el query params currency con el valor de la moneda.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MethodsPaymentCurrencyResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorBanks400get"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X GET \
            https://BASE-URL/api/paymentmethods?currency=pen  \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE-URL' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('GET', 'https://BASE_URL/api/paymentmethods?currency=pen', [
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async () => {
              const response = await fetch('https://BASE_URL/api/paymentmethods?currency=pen', {
                method: 'GET',
                headers: {
                  'Content-Type': 'application/json'
                },
              });
              const result = await response.json();
              console.log(result)
            }
            request();

  /api/wallet/payout:
    post:
      operationId: payoutChile
      tags:
        - Wallet
      summary: Realizar pagos a terceros desde mi wallet
      description: |
        Este método permite crear una orden de pago a un tercero utilizando los fondos de tu billetera virtual **payku**.

        **Nota:** Para fines de prueba (Solo ambiente desarrollo), los montos específicos se procesarán automáticamente:
        <br>
        &bull;  Montos 1000, 2000, 3000: Se marcarán como **aprobados** automáticamente.
        <br>
        &bull;  Montos 1500, 2500, 3500: Se marcarán como **rechazados** automáticamente.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WalletResponseThird"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "cURL"
          source: |
            curl -X POST \
            https://BASE-URL/api/wallet/payout \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN-PUBLICO' \
            -H 'Sign: SHA256-REQUEST-PATH-VALUE-TOKEN-PRIVADO'  \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE-URL' \
            -d '{
                  "email": "johndoe@example.com",
                  "phone": "51906310864",
                  "subject": "test Gmoney peru",
                  "currency": "PEN",
                  "order": "0011010101777",
                  "amount": 1,
                  "accountbank_name": "PAYKU PERU SAC",
                  "accountbank_rut": "47566578",
                  "accountbank_sbif": "011",
                  "accountbank_type": "1",
                  "accountbank_num": "01128901338000251968",
                  "url_notify": "https://www.youwebsite.com/urlnotify?orderClient=98745",
                  "additional_parameters":
                  {
                    "parameter_1": "keyValue",
                    "parameter_2": "keyValue",
                    "order_ext": "fff-777"
                  }
                }'
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('POST', 'https://BASE_URL/api/wallet/payout', [
                'json' => [
                        "email" => "johndoe@example.com",
                        "phone" => "51906310864",
                        "subject" => "test Gmoney peru",
                        "currency" => "PEN",
                        "order" => "0011010101777",
                        "amount" => 1,
                        "accountbank_name" => "PAYKU PERU SAC",
                        "accountbank_rut" => "47566578",
                        "accountbank_sbif" => "011",
                        "accountbank_type" => "1",
                        "accountbank_num" => "01128901338000251968",
                        "url_notify" => "https://www.youwebsite.com/urlnotify?orderClient=98745",
                        "additional_parameters" => [
                            "parameter_1" => "keyValue",
                            "parameter_2" => "keyValue",
                            "order_ext" => "fff-777"
                        ]
                    ],
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO',
                  'Sign' => 'SHA256-REQUEST-PATH-VALUE-TOKEN-PRIVADO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async (data) => {
              const response = await fetch('https://BASE_URL/api/wallet/payout', {
                method: 'POST',
                headers: {
                  'Content-Type': 'application/json',
                  'Sign': 'SHA256-REQUEST-PATH-VALUE-TOKEN-PRIVADO',
                  'Authorization': 'Bearer TOKEN-PUBLICO'
                },
                body: JSON.stringify(data)
              });
              const result = await response.json();
              console.log(result)
            }

            let data = {
                  "email": "johndoe@example.com",
                  "phone": "51906310864",
                  "subject": "test Gmoney peru",
                  "currency": "PEN",
                  "order": "0011010101777",
                  "amount": 1,
                  "accountbank_name": "PAYKU PERU SAC",
                  "accountbank_rut": "47566578",
                  "accountbank_sbif": "011",
                  "accountbank_type": "1",
                  "accountbank_num": "01128901338000251968",
                  "url_notify": "https://www.youwebsite.com/urlnotify?orderClient=98745",
                  "additional_parameters":
                  {
                    "parameter_1": "keyValue",
                    "parameter_2": "keyValue",
                    "order_ext": "fff-777"
                  }
                };

            request(data);
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  pattern: " máximo 50 caracteres"
                  description: Email del usuario
                  type: string
                  format: email
                  example: "johndoe@example.com"
                phone:
                  pattern: " máximo 20 caracteres"
                  description: Télefono del usuario. **Formato:** 519YYYYYYYY
                  type: string
                  example: "51906310864"
                subject:
                  pattern: " máximo 200 caracteres"
                  description: Descripción de la orden
                  type: string
                  example: "test Gmoney peru"
                currency:
                  pattern: " máximo 6 caracteres"
                  description: Tipo de moneda  (Formato ISO)
                  type: string
                  example: "PEN"
                order:
                  pattern: " máximo 50 caracteres"
                  description: Orden del comercio
                  type: string
                  example: "0011010101777"
                amount:
                  pattern: " máximo 14 dígitos"
                  description: |
                    Monto de la orden.

                    **Nota:** el monto mínimo es de 5 soles (PEN) y el monto máximo es de 30000 soles (PEN).
                  type: integer
                  example: 1
                accountbank_name:
                  pattern: " máximo 180 caracteres"
                  description: Nombre del titular de la cuenta
                  type: string
                  example: "PAYKU PERU SAC"
                accountbank_rut:
                  pattern: " entre 7 a 12 caracteres"
                  description: |
                    Documento de identidad del titular de la cuenta en Perú:
                    DNI, Cédula de Extranjería (CE) o Pasaporte.
                    El nombre del campo se mantiene por compatibilidad.
                    Ejemplo (DNI): 47566578
                  type: string
                  example: "47566578"
                accountbank_sbif:
                  pattern: " máximo 4 caracteres"
                  description: |
                    Código del banco al que pertenece la cuenta bancaria.
                  type: string
                  example: "011"
                accountbank_type:
                  pattern: " máximo 1 caracterer"
                  description: |
                    Tipo de cuenta.
                    - 1 Corriente
                    - 3 Ahorro
                  type: string
                  example: "1"
                accountbank_num:
                  pattern: " máximo 20 caracteres"
                  description: |
                    Número de CCI (Código de Cuenta Interbancario) del cliente.

                    **Nota: El CCI interbancario es un número compuesto por 20 dígitos. Solo para el caso de YAPE, puede enviar el número de teléfono asociado.**

                    **Formato:** 519YYYYYYYY
                  type: string
                  example: "01128901338000251968"
                url_notify:
                  pattern: " máximo 600 caracteres"
                  description: |
                    url donde se notificare el resultado del pago.
                    - Nota: Luego de realizar el pago a terceros payku respondera de forma automática al endpoint ingresado en urlnotify el resultado de la operación.
                      - **Ejemplo Aprobado:**
                      - {
                          - "id": "mpexxzxxxx",
                          - "identifier_payout": "mpexxzxxxx",
                          - "order" : "367734544",
                          - "status" : "success",
                          - "update_at" : "2023-08-24 12:29:35",
                          - "customer" : {
                            - "name" : "Jhon Doe",
                            - "phone" : "987654321",
                            - "document" : "87654321",
                            - "number" : "987654321"
                          - }
                      - }
                      - **Ejemplo Rechazado:**
                      - {
                          - "id": "mpexxzxxxx",
                          - "identifier_payout": "mpexxzxxxx",
                          - "order" : "367734544",
                          - "status" : "banking_error",
                          - "update_at" : "2023-08-24 12:29:35",
                          - "customer" : {
                            - "name" : "Jhon Doe",
                            - "phone" : "987654321",
                            - "document" : "87654321",
                            - "number" : "987654321"
                          - }
                      - }
                  type: string
                  example: "https://www.youwebsite.com/urlnotify?orderClient=98745"
                additional_parameters:
                  pattern: " máximo 4000 caracteres"
                  description: Parámetros adicionales del cliente (Opcional).
                  type: object
                  properties:
                    parameter_1:
                      description: Nombre del parámetro dado por el usuario payku
                      type: string
                      example: "keyValue"
                    parameter_2:
                      description: Nombre del parámetro dado por el usuario payku
                      type: string
                      example: "keyValue"
                    order_ext:
                      description: Nombre de la orden externa dado por el usuario payku (Opcional)
                      type: string
                      example: "fff-777"
              required:
                - email
                - subject
                - currency
                - order
                - amount
                - accountbank_name
                - accountbank_rut
                - accountbank_sbif
                - accountbank_type
                - accountbank_num

  /api/payoutv3/{identificadorPayout}:
    get:
      tags:
        - Wallet
      summary: "Obtener payout V3"
      description: |
        Este método permite obtener un movimiento de pagos a terceros de su billetera virtual **payku** mediante un identificador:

        Para realizar la consulta es necesario agregar al final del endpoint lo siguiente /{identificadorPayout} como por ejemplo: **api/payoutv3/mpe33e36b01e8a11b9ee**.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayoutResponseGetv3"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400get"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
        "404":
          description: Identificador no existe.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error404"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X GET \
            https://BASE-URL/api/payoutv3/{identificadorPayout}  \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN-PUBLICO' \
            -H 'Sign: SHA256-REQUEST-PATH-VALUE-TOKEN-PRIVADO'  \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE-URL' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('GET', 'https://BASE_URL/api/payoutv3/{identificadorPayout}', [
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO',
                  'Sign' => 'SHA256-REQUEST-PATH-VALUE-TOKEN-PRIVADO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async () => {
              const response = await fetch('https://BASE_URL/api/payoutv3/{identificadorPayout}', {
                method: 'GET',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN-PUBLICO',
                  'Sign': 'SHA256-REQUEST-PATH-VALUE-TOKEN-PRIVADO'
                },
              });
              const result = await response.json();
              console.log(result)
            }

            request();

  /api/transaction:
    post:
      tags:
        - Transacción
      summary: Crear transacción
      description: |
        Este método permite crear una orden de pago a **payku** y recibe como respuesta la **URL** para redirigir el browser del pagador y el **token** que identifica la transacción.
        Una vez que el pagador efectúe el pago exitoso, **payku** notificará el resultado a la página del comercio que se envió en el parámetro **urlnotify**.

        **additional_parameters** = permite enviar información adicional para ser registrada en payku asociada a la transacción **order_ext** dentro de additional_parameters, es una palabra reservada, y es útil para asociar la transacción a un identificador único del comercio
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionRegisterResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "cURL"
          source: |
            curl -X POST \
            https://BASE-URL/api/transaction \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN-PUBLICO' \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE-URL' \
            -d '{
              "email": "johndoe@example.com",
              "order": "987450011",
              "subject": "test subject",
              "amount": "150.50",
              "currency": "PEN",
              "payment": 21,
              "expired": "2023-10-19 13:05:10",
              "urlreturn": "https://youwebsite.com/urlreturn?orderClient=98745",
              "urlnotify": "https://www.youwebsite.com/urlnotify?orderClient=98745",
              "additional_parameters": {
                "parameters1": "keyValue",
                "parameters2": "keyValue",
                "order_ext": "fff-777"
              }
            }'
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('POST', 'https://BASE_URL/api/transaction', [
                'json' => [
                  'email' => 'johndoe@example.com',
                  'order' => "987450011",
                  'subject' => 'test subject',
                  'amount' => '150.50',
                  'currency'=> "PEN",
                  'payment' => 21,
                  'expired' => '2022-10-19 13:05:10',
                  'urlreturn' => 'https://youwebsite.com/urlreturn?orderClient=123',
                  'urlnotify' => 'https://youwebsite.com/urlnotify?orderClient=123',
                    'additional_parameters' => [
                      'parameters1'=>'keyValue',
                      'parameters2'=>'keyValue2',
                      'order_ext'=>'fff-777'
                    ]
                  ],
                'headers' => [
                  'Authorization' => 'Bearer PUBLIC-TOKEN'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async (data) => {
              const response = await fetch('https://BASE_URL/api/transaction', {
                method: 'POST',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN-PUBLICO'
                },
                body: JSON.stringify(data)
              });
              const result = await response.json();
              console.log(result)
            }

            let data = {
              email: "johndoe@example.com",
              order: "987450011",
              subject: "test subject",
              amount: "150.50",
              currency: "PEN",
              payment: 21,
              expired: "2022-10-19 13:05:10",
              urlreturn: "https://youwebsite.com/urlreturn?orderClient=123",
              urlnotify: "https://youwebsite.com/urlnotify?orderClient=123",
              additional_parameters: {
                parameters1:"keyValue",
                parameters2:"keyValue2",
                order_ext:"fff-777"
              }
            };

            request(data);
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  pattern: " máximo 100 caracteres"
                  description: Email del usuario
                  type: string
                  format: email
                  example: "support@youwebsite.cl"
                order:
                  pattern: " máximo 40 caracteres"
                  description: Orden del comercio
                  type: string
                  example: "987450011"
                subject:
                  pattern: " máximo 2000 caracteres"
                  description: Descripción de la orden
                  type: string
                  example: "test subject"
                amount:
                  pattern: " máximo 14 dígitos"
                  description: |
                    Monto de la orden.

                    **Importante:** si el monto incluye decimales, debe enviarse como texto entre comillas (por ejemplo, "150.50" en vez de 150.50).
                  type: float
                  example: "150.50"
                currency:
                  pattern: " máximo 6 caracteres"
                  description: Moneda.
                  type: string
                  example: "PEN"
                payment:
                  pattern: " máximo 2 caracteres"
                  description: |
                    Identificador del medio de pago. Si se envía el identificador, el pagador será redireccionado directamente al medio de pago que se indique.
                    - 21 QR Interoperable (Yape, Plin y Otros; Moneda PEN)
                    - 25 Débito, Crédito, Mastercard, Visa y Diners Club
                  type: integer
                  example: 21
                expired:
                  description: |
                    Fecha en la cual expira la transacción

                    **Este campo no es requerido.**

                    Formato permitido (Año-mes-día hora:minuto:segundo) Ejemplo: 2023-10-18 23:59:59

                    En caso de ser enviado, debe cumplir con las siguiente reglas:
                      <ul>
                        <li>
                          - Debe ser mayor a 5 minutos de la fecha actual (hora Santiago).
                        </li>
                        <li>
                          - Se requiere urlreturn, se adjuntará como parámetros GET /?message_error=expired&id=trx60dc327d9e4c094
                        </li>
                      </ul>

                  type: string
                  example: "2023-10-19 13:05:10"
                urlreturn:
                  pattern: " máximo 200 caracteres"
                  description: url de retorno del comercio donde payku redirigirá al pagador luego de 3 segundos de obtener el resultado de la transacción.
                  type: string
                  format: url
                  example: https://youwebsite.com/urlreturn?orderClient=98745
                urlnotify:
                  pattern: " máximo 600 caracteres"
                  description: |
                    url callback del comercio donde payku notificara el pago.
                    - Nota: Luego de que el cliente finalice el proceso de pago en su entidad bancaria payku respondera de forma automática al endpoint ingresado en urlnotify el resultado de la operación bancaria.
                      - **Ejemplo Aprobado:**
                      - {
                          - "transaction_id": "9916587765599311",
                          - "payment_key" : "trx32cb779c0a777fc68",
                          - "transaction_key" : "9916581777599311",
                          - "verification_key": "8b3e2202fb086a7de93777ae34d5e18c",
                          - "order": "199",
                          - "status": "success"
                      - }
                      - **Ejemplo Rechazado:**
                      - {
                          - "transaction_id": "9916587765599311",
                          - "payment_key" : "trx32cb779c0a777fc68",
                          - "transaction_key" : "9916581777599311",
                          - "verification_key": "8b3e2202fb086a7de93777ae34d5e18c",
                          - "order": "199",
                          - "status": "failed"
                      - }
                  type: string
                  format: url
                  example: https://www.youwebsite.com/urlnotify?orderClient=98745
                additional_parameters:
                  pattern: " máximo 4000 caracteres"
                  description: |
                    Parámetros adicionales del cliente (Opcional).
                  type: object
                  properties:
                    # gateway:
                    #   description: Código del banco a utilizar en VESS
                    #   type: string
                    #   example: "UNIOVECAP2C"
                    parameters1:
                      description: Nombre del parámetro dado por el usuario payku
                      type: string
                      example: "keyValue"
                    parameters2:
                      description: Nombre del parámetro dado por el usuario payku
                      type: string
                      example: "keyValue"
                    order_ext:
                      description: Identificador único proporcionado por el comercio, que permita a asociar la transacción a un identificador externo
                      type: string
                      example: "fff-777"
              required:
                - email
                - order
                - subject
                - amount

    get:
      tags:
        - Transacción
      summary: "Obtener múltiples transacciones"
      description: |
        Este método permite obtener la información de las transacciones realizados en payku, este método permite una paginación con un máximo de 4000 registros por página, además, posee los siguientes filtros:
          - date_init: indica la fecha desde donde se desea comenzar la búsqueda de transacciones, si este parámetro no es enviado la busqueda iniciara la fecha actual .
          - date_end: indica la fecha donde se desea que termine la búsqueda de transacciones, si este parámetro no es enviado la busque tendrá como fecha final la fecha actual.
          - estatus: se puede filtrar la búsqueda de las transacciones dependiendo del estatus en la que se encuentra.  por ejemplo.  /api/transaction?success=true ó para traer multiples estatus /api/transaction?pending=true&rejected=true.

        para la paginación es necesario agregar al final del endpoint lo siguiente ?page=1&per_page=100 siendo el primer parámetro el número de la página y el segundo el número de registros por página. En caso de querer buscar las transacciones entre las fechas 01-09-2021 y 15-09-2021, además que solo sean las transacciones de estado success, la url a utilizar seria la siguiente:  https://[URL_BASE]/api/transaction?date_init=2021-09-01&date_end=2021-09-15&success=true.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdentifierAllResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400get"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
        "404":
          description: Identificador no existe.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error404"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X GET \
            https://BASE-URL/api/transaction  \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN-PUBLICO' \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE-URL' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('GET', 'https://BASE_URL/api/transaction', [
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async () => {
              const response = await fetch('https://BASE_URL/api/transaction', {
                method: 'GET',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN-PUBLICO'
                },
              });
              const result = await response.json();
              console.log(result)
            }

            request();

  /api/transaction/{identificador}:
    get:
      tags:
        - Transacción
      summary: "Obtener transacción"
      description: "Este método permite obtener la información de una transacción realizado en **payku**"
      operationId: getTransactionById
      parameters:
        - name: id
          in: path
          description: |
            ID de la transacción a solicitar, payku puede recibir como id tanto el identificador de la transacción como el identificador de cobro:
            - payment_key
            - transaction_key
          required: true
          schema:
            type: string
            pattern: " máximo 30 caracteres"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdentifierResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400get"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
        "404":
          description: Identificador no existe.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error404"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X GET \
            https://BASE-URL/api/transaction/ID-IDENTIFICADOR  \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN-PUBLICO' \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE-URL' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('GET', 'https://BASE_URL/api/transaction/trx3b4d77b43acd9a720', [
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async () => {
              const response = await fetch('https://BASE_URL/api/transaction/trx3b4d77b43acd9a720', {
                method: 'GET',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN-PUBLICO'
                },
              });
              const result = await response.json();
              console.log(result)
            }

            request();

  # /api/verificar      <-DEPRECATED->:
  #   post:
  #     tags:
  #       - Transacción
  #     summary: "url Callback Transacción"
  #     description: |
  #       Luego de realizado el pago por parte del usuario, payku notificara al comercio, el resultado de la operación (status), invocando al urlnotify suministrado previamente en la creación del cobro y a su vez entregará una serie de datos para las validaciones internas por parte de la aplicación del comercio, como son el order para que se identifique la transacción en su sistema, el transactionn_id el cual corresponde al identificador único en payku y un verification_key, que corresponde a un hash de validación único por transacción.
  #     responses:
  #       "200":
  #         content:
  #           application/json:
  #             schema:
  #               $ref: "#/components/schemas/NotifyPaymentResponse"
  #       "400":
  #         description: Error en la solicitud.
  #         content:
  #           application/json:
  #             schema:
  #               $ref: "#/components/schemas/Error400"
  #       "401":
  #         description: Token Público incorrecto.
  #         content:
  #           application/json:
  #             schema:
  #               $ref: "#/components/schemas/Error401"

  /api/event:
    post:
      tags:
        - Evento
      summary: Crear un evento
      description: Este método permite crear un evento y recibir como respuesta el detalle del evento.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EventCreateResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400Event"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X POST \
              https://BASE_URL/api/event \
              -H 'Accept: application/json, text/plain, */*' \
              -H 'Authorization: Bearer TOKEN_PUBLICO'  \
              -H 'Content-Type: application/json' \
              -H 'Host: BASE_URL' \
              -d {
                "name": "Event",
                "event": "98374",
                "date_event": "2023-12-20",
                "date_payment": "2023-12-22",
                "date_closing_sales": "2023-12-19 23:59:00",
                "url_logo": "https://www.example.com/logo_event1.png",
                "url_event": "https://www.example.com/event1",
                "service_sale": 10,
                "affiliation": [
                  ["afiliate1@example.com",  50],
                  ["afiliate2@example.com",  50]
                ]
              }'
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('POST', 'https://BASE_URL/api/event', [
                'json' => [
                    'name' => 'Event',
                    'event' => '98374',
                    'date_event' => '2023-12-20',
                    'date_payment' => '2023-12-22',
                    'date_closing_sales' => '2023-12-19 23:59:00',
                    'url_logo' => 'https://www.example.com/logo_event1.png',
                    'url_event' => 'https://www.example.com/event1',
                    'service_sale' => 10,
                    'affiliation' => [
                      ['afiliate1@example.com',  50],
                      ['afiliate2@example.com',  50]
                    ]
                  ],
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async (data) => {
              const response = await fetch('https://BASE_URL/api/event', {
                method: 'POST',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN-PUBLICO'
                },
                body: JSON.stringify(data)
              });
              const result = await response.json();
              console.log(result)
            }

            let data = {
              name: "Event",
              event: "98374",
              date_event: "2023-12-20",
              date_payment: "2023-12-22",
              date_closing_sales: "2023-12-19 23:59:00",
              url_logo: "https://www.example.com/logo_event1.png",
              url_event: "https://www.example.com/event1",
              service_sale: 10,
              affiliation: [
                ["afiliate1@example.com",  50],
                ["afiliate2@example.com",  50]
              ]
            };

            request(data);
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  pattern: " máximo 40 caracteres"
                  description: Indicador del evento.
                  type: string
                  example: "98374"
                name:
                  pattern: " máximo 400 caracteres"
                  description: Nombre del evento.
                  type: string
                  example: "Event"
                date_event:
                  description: Fecha en la cual se realizara el evento.
                  type: datetime
                  example: "2023-12-20"
                date_closing_sales:
                  description: Fecha de cierre de las ventas, debe ser menor o igual a date_event.
                  type: datetime
                  example: "2023-12-19 23:59:00"
                date_payment:
                  description: Fecha de pago del evento, debe ser mayor a la fecha date_event.
                  type: datetime
                  example: "2023-12-20"
                url_event:
                  pattern: " máximo 240 caracteres"
                  description: url en donde se encuentra publicado el evento.
                  type: string
                  format: url
                  example: https://www.example.com/event1
                url_logo:
                  pattern: " máximo 240 caracteres"
                  description: url del logo que identifica al evento.
                  type: string
                  format: url
                  example: https://www.example.com/logo_event1.png
                service_sale:
                  pattern: " máximo 7 caracteres"
                  description: Monto del servicio de ventas, pertenece al monto que recibirá el dueño de la cuenta por transacción.
                  type: integer
                  example: 10
                affiliation:
                  type: array
                  description: Distribución de los beneficiarios.
                  items:
                    type: object
                    description: Objeto de cobro para un lote de cobros.
                    properties:
                      email:
                        pattern: " máximo 50 caracteres"
                        type: string
                        description: Email del beneficiario.
                        example: "afiliate1@domain.com"
                      percent:
                        pattern: " máximo 6 caracteres"
                        type: number
                        description: Porcentaje la cual le corresponde al beneficiario.
                        example: 50
              required:
                - event
                - name
                - date_event
                - date_closing_sales
                - date_payment

  /api/event/{identificadorEvento}:
    get:
      tags:
        - Evento
      summary: Obtener evento
      description: Este método permite obtener el detalle de un evento.
      operationId: getEventById
      parameters:
        - name: id
          in: path
          description: id del evento a solicitar
          required: true
          schema:
            type: string
            pattern: " máximo 40 caracteres"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EventIdResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400Event"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X GET \
              https://BASE_URL/api/event \
              -H 'Accept: application/json, text/plain, */*' \
              -H 'Authorization: Bearer TOKEN_PUBLICO'  \
              -H 'Content-Type: application/json' \
              -H 'Host: BASE_URL' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('GET', 'https://BASE_URL/api/event/98374', [
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async (data) => {
              const response = await fetch('https://BASE_URL/api/event/98374', {
                method: 'GET',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN-PUBLICO'
                },
              });
              const result = await response.json();
              console.log(result)
            }

            request(data);
  /api/maclient:
    post:
      tags:
        - Marketplace
      summary: Crear cliente
      description: Este método permite la inserción de datos de un cliente.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AdminClientMarketResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X POST \
            https://BASE_URL/api/maclient \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN_PUBLICO'  \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE_URL' \
            -d {
                "email": "johndoe@example.com",
                "name": "John Doe",
                "phone": "923122312",
                "bank": {
                  "sbif": "1234",
                  "type": "1",
                  "num": "12312313121",
                  "rut": "111111111"
                }
              }'
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('POST', 'https://BASE_URL/api/maclient', [
                'json' => [
                  'email' => 'johndoe@example.com',
                  'name' => 'John Doe',
                  'phone' => '923122312',
                  'bank' => [
                    "sbif" => "0001 ",
                    "type" => "1",
                    "num" => "1231123567",
                    "rut" => "111111111",
                  ]
                ],
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async (data) => {
              const response = await fetch('https://BASE_URL/api/maclient', {
                method: 'POST',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN_PUBLICO'
                },
                body: JSON.stringify(data)
              });
              const result = await response.json();
              console.log(result)
            }

            let data = {
              email: "johndoe@example.com",
              name: "John Doe",
              phone: "923122312",
              bank: {
                sbif: "1234",
                type: "1",
                num: "12312313121",
                rut: "111111111"
              }
            };

            request(data);
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  pattern: " máximo 50 caracteres"
                  description: Email del cliente.
                  type: string
                  format: email
                  example: "johndoe@example.com"
                name:
                  pattern: " máximo 150 caracteres"
                  description: Nombre del cliente
                  type: string
                  example: "John Doe"
                phone:
                  pattern: " máximo 12 caracteres"
                  description: Teléfono del cliente.
                  type: string
                  example: "923122312"
                bank:
                  pattern: " máximo 58 caracteres"
                  type: object
                  properties:
                    sbif:
                      pattern: " máximo 5 caracteres"
                      description: |
                        Código del banco al que pertenece la cuenta bancaria.
                      type: string
                      example: "0001"
                    type:
                      pattern: " máximo 1 caracter"
                      description: |
                        Tipo de cuenta.
                        - 1 Corriente
                        - 2 Vista
                        - 3 Ahorro
                      type: string
                      example: "1"
                    num:
                      pattern: " máximo 40 caracteres"
                      description: Número de cuenta del cliente.
                      type: string
                      example: "12312313121"
                    rut:
                      pattern: " 12 caracteres requeridos"
                      description: Registro Único Tributario.
                      type: string
                      example: "111111111"
                  required:
                    - sbif
                    - type
                    - num
                    - rut
              required:
                - email
                - name
                - phone
                - bank

  /api/maclient/{identificadorCliente}:
    get:
      tags:
        - Marketplace
      summary: Obtener cliente
      description: Este método permite obtener el detalle de un cliente.
      operationId: getClientMarketById
      parameters:
        - name: id
          in: path
          description: Identificador único por payku.
          required: true
          schema:
            type: string
            pattern: " máximo 20 caracteres"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AdminClientMarketResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400Event"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X GET \
            https://BASE_URL/api/maclient/id \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN_PUBLICO'  \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE_URL' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('GET', 'https://BASE_URL/api/maclient/madb93fc00a2cf6f4449', [
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async () => {
              const response = await fetch('https://BASE_URL/api/maclient/madb93fc00a2cf6f4449', {
                method: 'GET',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN_PUBLICO'
                },
              });
              const result = await response.json();
              console.log(result)
            }

            request();

    put:
      tags:
        - Marketplace
      summary: Actualizar cliente
      description: Este método permite la actualización de los datos de un cliente.
      # operationId: putSuscriptionById
      parameters:
        - name: id
          in: path
          description: Identificador único de marketplace.
          required: true
          schema:
            type: string
            pattern: " máximo 20 caracteres"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateClientResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X PUT \
            https://BASE_URL/api/maclient/id \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Sign: SHA256-REQUEST-PATH-VALUE-TOKEN-PRIVADO'  \
            -H 'Authorization: Bearer TOKEN_PUBLICO'  \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE_URL' \
            -d {
                "name":"John Doe",
                "phone":"923122312",
                "bank": {
                  "sbif": "0001",
                  "type": "3",
                  "num": "9999999",
                  "rut": "261009617"
                  }
                }'
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('PUT', 'https://BASE_URL/api/maclient/madb93fc00a2cf6f4449', [
                'json' => [
                  'name' => 'John Doe',
                  'phone' => '923122312',
                  'bank' => [
                      'num' => '9999999',
                      'rut' => '261009617'
                    ]
                  ],
                ],
              ],
              'headers' => [
                'Sign' => 'SHA256-REQUEST-PATH-VALUE-TOKEN-PRIVADO',
                'Authorization' => 'Bearer TOKEN_PUBLICO'
              ]
            ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async (data) => {
              const response = await fetch('https://BASE_URL/api/maclient/madb93fc00a2cf6f4449', {
                method: 'PUT',
                headers: {
                  'Content-Type': 'application/json',
                  'Sign': 'SHA256-REQUEST-PATH-VALUE-TOKEN-PRIVADO',
                  'Authorization': 'Bearer TOKEN_PUBLICO'
                },
                body: JSON.stringify(data)
              });
              const result = await response.json();
              console.log(result)
            }

            let data = {
            name:"John Doe",
            phone:"923122312",
            bank: {
              sbif: "0001",
              type: "3",
              num: "9999999",
              rut: "261009617"
              }
            };

            request(data);
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  pattern: " máximo 50 caracteres"
                  description: Nombre del cliente
                  type: string
                  example: "John Doe Doe"
                phone:
                  pattern: " máximo 12 dígitos"
                  description: Teléfono del cliente
                  type: string
                  example: "923122312"
                bank:
                  pattern: " máximo 58 caracteres"
                  description: Datos bancarios del cliente
                  type: object
                  properties:
                    sbif:
                      pattern: " máximo 5 caracteres"
                      description: |
                        Código del banco al que pertenece la cuenta bancaria
                      type: string
                      example: "0001"
                    type:
                      pattern: " máximo 1 caracter"
                      description: |
                        Tipo de cuenta.
                        - 1 Corriente
                        - 2 Vista
                        - 3 Ahorro
                      type: int
                      example: 3
                    num:
                      pattern: " máximo 40 caracteres"
                      description: Número de cuenta del cliente.
                      type: string
                      example: "9999999"
                    rut:
                      pattern: " 12 caracteres requeridos"
                      description: Registro Único Tributario.
                      type: string
                      example: "111111111"

    delete:
      tags:
        - Marketplace
      summary: Eliminar cliente
      description: Este método permite la eliminación de un cliente asociado a un ID de usuario.
      operationId: getClientDeleteById
      parameters:
        - name: id
          in: path
          description: Identificador único de cliente por payku.
          required: true
          schema:
            type: string
            pattern: " máximo 20 caracteres"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteClientMarketResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X DELETE \
            https://BASE_URL/api/maclient/id \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN_PUBLICO'  \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE_URL' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('DELETE', 'https://BASE_URL/api/maclient/madb93fc00a2cf6f4449', [
                  'headers' => [
                    'Authorization' => 'Bearer TOKEN_PUBLICO'              ]
                  ])->getBody();
                $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async () => {
              const response = await fetch('https://BASE_URL/api/maclient/madb93fc00a2cf6f4449', {
                method: 'DELETE',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN_PUBLICO'
                },
              });
              const result = await response.json();
              console.log(result)
            }

            request();

  /api/maaffiliation:
    post:
      tags:
        - Marketplace
      summary: Crear afiliación
      description: Este método permite registrar los datos para la afiliación.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AdminAffiliationResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X POST \
            https://BASE_URL/api/maaffiliation \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN_PUBLICO'  \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE_URL' \
            -d {
                "name": "name",
                "percentage": "20",
                "affiliation": [
                  ["ma9fd16221a9645b0036","80"]
                ]
              }'
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('POST', 'https://BASE_URL/api/maclient', [
                'json' => [
                  'name' => 'name',
                  'percentage' => '20',
                  'affiliation' => [
                    [ma9fd16221a9645b0036,80]
                  ]
                ],
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async (data) => {
              const response = await fetch('https://BASE_URL/api/maaffiliation', {
                method: 'POST',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN_PUBLICO'
                },
                body: JSON.stringify(data)
              });
              const result = await response.json();
              console.log(result)
            }

            let data = {
              name: "name",
              percentage: "20",
              affiliation: [
                ["ma9fd16221a9645b0036","80"]
              ]
            };

            request(data);
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  pattern: " máximo 80 caracteres"
                  description: Nombre de afiliación.
                  type: string
                  example: name
                percentage:
                  pattern: " máximo 2 caracteres"
                  description: Porcentaje correspondiente al usuario payku.
                  type: string
                  example: "20"
                affiliation:
                  pattern: " máximo 25 caracteres"
                  type: array
                  description: Arreglo que contiene los clientes, cada cliente es un arreglo que contiene un identificador de cliente creado por payku y el porcentaje que este obtendrá.
                  example:
                    - ["madb93fc00a2cf6f4449", "80"]
              required:
                - name
                - percentage
                - affiliation

  /api/maaffiliation/{identificadorCliente}:
    get:
      tags:
        - Marketplace
      summary: Obtener afiliación
      description: Este método permite obtener el detalle de una afiliación.
      operationId: getAffiliationById
      parameters:
        - name: id
          in: path
          description: Identificador único de afiliación por payku.
          required: true
          schema:
            type: string
            pattern: " máximo 20 caracteres"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AdminAffiliationResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400Event"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X GET \
            https://BASE_URL/api/maaffiliation/id \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN_PUBLICO'  \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE_URL' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('GET', 'https://BASE_URL/api/maaffiliation/sucaab7865dceaff49d8b3', [
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async () => {
              const response = await fetch('https://BASE_URL/api/maaffiliation/sucaab7865dceaff49d8b3', {
                method: 'GET',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN_PUBLICO'
                },
              });
              const result = await response.json();
              console.log(result)
            }

            request();

    delete:
      tags:
        - Marketplace
      summary: Eliminar afiliación
      description: Este método permite la eliminación de una afiliación asociada a un ID.
      operationId: getAffiliationDeleteById
      parameters:
        - name: id
          in: path
          description: Identificador único de cliente por payku.
          required: true
          schema:
            type: string
            pattern: " máximo 20 caracteres"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteAffiliationResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X DELETE \
            https://BASE_URL/api/maaffiliation/id \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN_PUBLICO'  \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE_URL' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('DELETE', 'https://BASE_URL/api/maclient/madb93fc00a2cf6f4449', [
                  'headers' => [
                    'Authorization' => 'Bearer TOKEN_PUBLICO'              ]
                  ])->getBody();
                $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async () => {
              const response = await fetch('https://BASE_URL/api/maaffiliation/sucaab7865dceaff49d8b3', {
                method: 'DELETE',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN_PUBLICO'
                },
              });
              const result = await response.json();
              console.log(result)
            }

            request();

  /api/transaction/:
    post:
      tags:
        - Marketplace
      summary: Crear transacción marketplace
      description:
        Este método permite crear una orden de pago a **payku** y recibe como respuesta la **URL** para redirigir el browser del pagador y el **token** que identifica la transacción.
        Una vez que el pagador efectúe el pago exitoso, **payku** notificará el resultado a la página del comercio que se envió en el parámetro **urlnotify**.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400"
        "401":
          description: Token Público incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "cURL"
          source: |
            curl -X POST \
            https://BASE-URL/api/transaction \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN-PUBLICO' \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE-URL' \
            -d '{
              "email": "johndoe@example.com",
              "order": "5696",
              "subject": "Cliente Test",
              "amount": 25000,
              "payment": 1,
              "urlreturn": "https://youwebsite.com/urlreturn?orderClient=5696",
              "urlnotify": "https://youwebsite.com/urlnotify?orderClient=5696",
              "marketplace": "c1c879f4862d393ea6b326a313022dd98f0baa2869d3e9095c124199c9941030"
            }'
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('POST', 'https://BASE_URL/api/transaction', [
                'json' => [
                  'email' => 'johndoe@example.com',
                  'order' => "98745",
                  'subject' => 'Client Test',
                  'amount' => 25000,
                  'payment' => 1,
                  'urlreturn' => 'https://youwebsite.com/urlreturn?orderClient=98745',
                  'urlnotify' => 'https://www.youwebsite.com/urlnotify?orderClient=98745'
                  'marketplace' => 'c1c879f4862d393ea6b326a313022dd98f0baa2869d3e9095c124199c9941030'
                  ],
                'headers' => [
                  'Authorization' => 'Bearer TOKEN_PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async (data) => {
              const response = await fetch('https://BASE_URL/api/transaction', {
                method: 'POST',
                headers: {
                  'Content-Type': 'application/json',
                  'Authorization': 'Bearer TOKEN-PUBLICO'
                },
                body: JSON.stringify(data)
              });
              const result = await response.json();
              console.log(result)
            }

            let data = {
              email: "johndoe@example.com",
              order: "98745",
              subject: "payment description",
              amount: 25000,
              payment: 1,
              urlreturn: "https://youwebsite.com/urlreturn?orderClient=98745",
              urlnotify: "https://www.youwebsite.com/urlnotify?orderClient=98745",
              marketplace: "c1c879f4862d393ea6b326a313022dd98f0baa2869d3e9095c124199c9941030"
            };

            request(data);
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  pattern: " máximo 50 caracteres"
                  description: Email del usuario
                  type: string
                  format: email
                  example: "johndoe@example.com"
                order:
                  pattern: " máximo 40 caracteres"
                  description: Orden del comercio, este debe ser único.
                  type: string
                  example: "98745"
                subject:
                  pattern: " máximo 2000 caracteres"
                  description: Descripción de la orden.
                  type: string
                  example: payment description
                amount:
                  pattern: " máximo 14 dígitos"
                  description: Monto de la orden.
                  type: integer
                  example: 25000
                payment:
                  pattern: " máximo 2 caracteres"
                  description: |
                    Identificador del medio de pago. Si se envía el identificador, el pagador será redireccionado directamente al medio de pago que se indique.
                    - 21 QR Interoperable (Yape, Plin y Otros; Moneda PEN)
                    - 25 Débito, Crédito, Mastercard, Visa y Diners Club
                  type: integer
                  example: 21
                urlreturn:
                  pattern: " máximo 200 caracteres"
                  description: url de retorno del comercio donde payku redirigirá al pagador.
                  type: string
                  format: url
                  example: https://youwebsite.com/urlreturn?orderClient=98745
                urlnotify:
                  pattern: " máximo 600 caracteres"
                  description: url callback del comercio donde payku notificara el pago.
                  type: string
                  format: url
                  example: https://www.youwebsite.com/urlnotify?orderClient=98745
                marketplace:
                  pattern: " máximo 70 caracteres"
                  description: atributo obligatorio para realizar transacciones a afiliación de Marketplace, este consiste en el token de la afiliación de marketplace a la que se le desea realizar la transacción.
                  type: string
                  example: c1c879f4862d393ea6b326a313022dd98f0baa2869d3e9095c124199c9941030
              required:
                - email
                - order
                - subject
                - amount

  /api/mall:
    post:
      tags:
        - Mall
      summary: Crear transacción Mall
      description: Esto método permite la inserción de datos de una transacción.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/mallPostResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400"
        "401":
          description: Token Publico incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X POST \
            https://BASE_URL/api/mall \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Sign: SHA256-REQUEST-PATH-VALUE-TOKEN-PRIVADO  \
            -H 'Authorization: Bearer TOKEN_PUBLICO  \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE_URL' \
            -d {
                "email": "joedoe@example.com",
                "payment": 1,
                "merchant": [
                  ["81b6179e4feeef2b50af71d660f830de", "30000", "item1", null, "4545"],
                  ["bcf6c06c523d9394be41bc0174c43d1476f274abb342955aac93cc8014737b3b","25000","item2", null, "4546"],
                  ["TOKEN-PUBLICO","15000","item3", null, "4547"]
                ],
                "order": 123,
                "urlreturn": "https://youwebsite.com/urlreturn",
                "urlnotify": "https://youwebsite.com/urlnotify"
              }'
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('POST', 'https://BASE_URL/api/mall', [
                'json' => [
                  'email'         => 'joedoe@example.com',
                  'payment'       => 1,
                  'merchant'      => [
                    ['81b6179e4feeef2b50af71d660f830de', '30000', 'item1', null, '4545'],
                    ['bcf6c06c523d9394be41bc0174c43d1476f274abb342955aac93cc8014737b3b','25000','item2', null, '4546'],
                    ['TOKEN-PUBLICO','15000','item3', null, '4547']
                  ],
                  'order'         => 123,
                  'urlreturn'     => 'https://youwebsite.com/urlreturn',
                  'urlnotify'     => 'https://youwebsite.com/urlnotify'
                  ],
                'headers' => [
                  'Sign' => 'f96ddc14a73a4dd6e009db2514108a3f44832795cd5ac50e6a80fd0b0ae92112',
                  'Authorization' => 'Bearer TOKEN-PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async (data) => {
              const response = await fetch('https://BASE_URL/api/mall', {
                method: 'POST',
                headers: {
                  'Content-Type': 'application/json',
                  'Sign': 'f96ddc14a73a4dd6e009db2514108a3f44832795cd5ac50e6a80fd0b0ae92112',
                  'Authorization': 'Bearer TOKEN-PUBLICO'
                },
                body: JSON.stringify(data)
              });
              const result = await response.json();
              console.log(result)
            }
            let data = {
              email: "joedoe@example.com",
              payment: 1,
              merchant: [
                ["81b6179e4feeef2b50af71d660f830de", "30000", "item1", null, "4545"],
                ["bcf6c06c523d9394be41bc0174c43d1476f274abb342955aac93cc8014737b3b","25000","item2", null, "4546"],
                ["TOKEN-PUBLICO","15000","item3", null, "4547"]
              ],
              order: 123,
              urlreturn: "https://youwebsite.com/urlreturn",
              urlnotify: "https://youwebsite.com/urlnotify"
            };
            request(data);
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  pattern: " máximo 50 caracteres"
                  description: Email del cliente.
                  type: string
                  format: email
                  example: joedoe@example.com
                payment:
                  pattern: " máximo 2 caracteres"
                  description: |
                    Identificador del medio de pago. Si se envía el identificador, el pagador será redireccionado directamente al medio de pago que se indique.
                    - 21 QR Interoperable (Yape, Plin y Otros; Moneda PEN)
                    - 25 Débito, Crédito, Mastercard, Visa y Diners Club
                  type: integer
                  example: 21
                merchant:
                  pattern: " máximo 200 caracteres"
                  type: array of arrays
                  description: Arreglo que contiene los clientes, cada cliente es un arreglo que contiene su token público o id de afiliación de marketplace, valor de transacción, descripción, id del evento en especifico que si no posee debe pasar null y numero de orden individual.
                  example:
                    - [81b6179e4feeef2b50af71d660f830de, 30000, item1,
                        null,
                        "4545"]
                    - [
                        81b6179e4feeef2b50af71d66f7830de,
                        25000,
                        "item2",
                        null,
                        "4546"
                      ]
                    - [81b6179e4fffff2b50af71d66f7830de, 15000, item3,
                        null,
                        "4547"]
                order:
                  pattern: " máximo 40 caracteres"
                  description: Orden del comercio, este debe ser único.
                  type: integer
                  example: 123
                urlreturn:
                  pattern: " máximo 200 caracteres"
                  description: url de retorno del comercio donde payku redirigirá al pagador.
                  type: string
                  format: url
                  example: https://youwebsite.com/urlreturn
                urlnotify:
                  pattern: " máximo 600 caracteres"
                  description: url callback del comercio donde payku notificará el pago.
                  type: string
                  format: url
                  example: https://youwebsite.com/urlnotify
              required:
                - email
                - merchant
                - payment
                - order
                - urlreturn

  /api/mall/{identificadorTrasaccion}:
    get:
      tags:
        - Mall
      summary: "Obtener transacción Mall"
      description: "Este método permite obtener la información de un pago realizado en **payku**"
      operationId: getMallTransactionById
      parameters:
        - name: id
          in: path
          description: id de la transacción a solicitar
          required: true
          schema:
            type: string
            pattern: " máximo 30 caracteres"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdentifierMallResponse"
        "400":
          description: Error en la solicitud.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400get"
        "401":
          description: Token Publico incorrecto.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error401"
        "404":
          description: Identificador no existe.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error404"
      x-codeSamples:
        - lang: "CURL"
          source: |
            curl -X GET \
            https://BASE-URL/api/mall/ID-IDENTIFICADOR  \
            -H 'Accept: application/json, text/plain, */*' \
            -H 'Authorization: Bearer TOKEN-PUBLICO' \
            -H 'Content-Type: application/json' \
            -H 'Host: BASE-URL ' \
        - lang: "PHP"
          source: |
            $client = new \GuzzleHttp\Client();
              $body = $client->request('GET', 'https://BASE_URL/api/mall/malld200058ab44739ddee2adcd2f5', [
                'headers' => [
                  'Sign' => 'f96ddc14a73a4dd6e009db2514108a3f44832795cd5ac50e6a80fd0b0ae92112',
                  'Authorization' => 'Bearer TOKEN-PUBLICO'
                ]
              ])->getBody();
            $response = json_decode($body);
        - lang: "JS"
          source: |
            const request = async () => {
              const response = await fetch('https://BASE_URL/api/mall/malld200058ab44739ddee2adcd2f5', {
                method: 'GET',
                headers: {
                  'Content-Type': 'application/json',
                  'Sign' => 'f96ddc14a73a4dd6e009db2514108a3f44832795cd5ac50e6a80fd0b0ae92112',
                  'Authorization' => 'Bearer TOKEN-PUBLICO'
                },
              });
              const result = await response.json();
              console.log(result)
            }
            request();

components:
  schemas:
    AdminClientResponse:
      description: "Datos de retorno en el registros de un cliente"
      type: object
      properties:
        status:
          description: Estatus del cliente.
          type: string
          example: "active"
        id:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "cl0be4c8e623c167bc8b777"
        rut:
          description: Registro Único Tributario del cliente.
          type: string
          example: "11111111"
        name:
          type: string
          description: Nombre del cliente.
          example: "John Doe"
        phone:
          type: string
          description: Teléfono del cliente.
          example: "923122312"
        email:
          type: string
          description: Email del cliente.
          example: "johndoe@example.com"
        address:
          description: Dirección del cliente.
          type: string
          example: "Moneda 101"
        country:
          description: País del cliente.
          type: string
          example: "Chile"
        region:
          description: Región del cliente.
          type: string
          example: "Metropolitana"
        city:
          description: Ciudad del cliente.
          type: string
          example: "Santiago"
        postal_code:
          description: Código postal del cliente.
          type: string
          example: "850000"
        created_at:
          description: Fecha de registro.
          type: string
          example: "2023-09-29"
          format: datetime
        update_at:
          description: Fecha de modificación.
          type: string
          example: null
          format: datetime
        subcriptions:
          description: suscripciones del cliente.
          type: object
          example: null
        additional_parameters:
          description: Parámetros adicionales del cliente (Opcional).
          type: object
          properties:
            parameter_1:
              description: Nombre del parámetro dado por el usuario payku
              type: string
              example: "example"
            parameter_2:
              description: Nombre del parámetro dado por el usuario payku
              type: string
              example: "example"

    ClientIdResponse:
      description: "Datos de retorno en el registros de un cliente"
      type: object
      properties:
        status:
          description: Estatus del cliente.
          type: string
          example: "active"
        id:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "cl0be4c8e623c167bc8b777"
        rut:
          description: Registro Único Tributario del cliente.
          type: string
          example: "11111111"
        name:
          type: string
          description: Nombre del cliente.
          example: "John Doe"
        phone:
          type: string
          description: Teléfono del cliente.
          example: "923122312"
        email:
          type: string
          description: Email del cliente.
          example: "johndoe@example.com"
        address:
          description: Dirección del cliente.
          type: string
          example: "Moneda 101"
        city:
          description: Ciudad del cliente.
          type: string
          example: "Santiago"
        region:
          description: Región del cliente.
          type: string
          example: "Metropolitana"
        country:
          description: País del cliente.
          type: string
          example: "Chile"
        postal_code:
          description: Código postal del cliente.
          type: string
          example: "850000"
        created_at:
          description: Fecha de registro.
          type: string
          example: "2023-09-29 22:00:00"
          format: datetime
        update_at:
          description: Fecha de modificación.
          type: string
          example: null
          format: datetime
        active_cards:
          type: array
          items:
            type: object
            properties:
              last_4_digits:
                description: Últimos 4 dígitos de la tarjeta afiliada.
                type: string
                example: "XXXXXXXXXXXX6622"
              identifier:
                description: identificador de la tarjeta.
                type: string
                example: "surec804a8ed60c747cb8839"
              card_type:
                description: Tipo de tarjeta.
                type: string
                example: "Visa"
              register:
                description: Fecha de registro.
                type: string
                example: "2023-07-26 08:00:19"
          example:
            - last_4_digits: "XXXXXXXXXXXX6622"
              identifier: "surec804a8ed60c747cb8839"
              card_type: "Visa"
              register: "2023-07-26 08:00:19"
            - last_4_digits: "XXXXXXXXXXXX1234"
              identifier: "surec804a8ed60c747cb8843"
              card_type: "MasterCard"
              register: "2023-01-01 12:00:00"
        additional_parameters:
          description: Parámetros adicionales del cliente (Opcional).
          type: object
          properties:
            parameter_1:
              description: Nombre del parámetro dado por el usuario payku
              type: string
              example: "example"
            parameter_2:
              description: Nombre del parámetro dado por el usuario payku
              type: string
              example: "example"
        subcriptions:
          type: object
          properties:
            id:
              description: Identificador de la suscripción creado por payku.
              type: string
              example: "su867f07772aa5f5175527"
            created_at:
              description: Fecha de registro.
              type: string
              example: "2023-09-29 19:58:35"
              format: datetime
            status:
              description: |
                Estatus de la suscripción. Los posibles estados que puede obtener son los siguientes:
                - register
                - active
                - finish
                - delete
                - cancel
                - suspended
              type: string
              example: "active"
            amount:
              description: Monto de la suscripción.
              type: string
              example: "15000"
            plan:
              type: array
              items:
                type: object
                properties:
                  id:
                    description: Identificador del plan creado por payku.
                    type: string
                    example: "pl9697fb170834ad42dd00"
                  name:
                    description: Nombre del plan.
                    type: string
                    example: "test plan"
                  currency:
                    description: Moneda.
                    type: string
                    example: "PEN"
            cards:
              type: array
              items:
                type: object
                properties:
                  last_4_digits:
                    description: Últimos 4 dígitos de la tarjeta afiliada.
                    type: string
                    example: "XXXXXXXXXXXX6623"
                  card_type:
                    description: Tipo de tarjeta.
                    type: string
                    example: "Visa"
            transactions:
              type: array
              items:
                type: object
                properties:
                  created_at:
                    description: Fecha de creación de la transacción.
                    type: string
                    example: "2023-09-30 19:58:35"
                  date_payment:
                    description: Fecha en que se realizo la transacción.
                    type: string
                    example: "2023-09-30"
                  amount:
                    description: Monto de transacción.
                    type: int
                    example: 10000
                  transaction:
                    description: Número de transacción.
                    type: int
                    example: 204444
                  authorization_code:
                    description: Código de autorización.
                    type: string
                    example: "1234"
                  order:
                    description: Número de orden.
                    type: string
                    example: "001"
                  description:
                    description: Descripción.
                    type: string
                    example: "descripcion"
                  status:
                    description: |
                      Estatus de transacción. Los posibles estados que puede obtener son los siguientes:
                      - pending
                      - success
                      - retry
                      - canceled by customer
                      - canceled by paymaster
                      - canceled by payku
                      - maximum attempt limit
                      - first payment rejected
                      - payment consumes failed
                    type: string
                    example: "success"

    ModifyClientResponse:
      description: "Datos de retorno de la modificación de un cliente"
      type: object
      properties:
        status:
          description: Estatus del cliente.
          type: string
          example: "active"
        id:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "cl0be4c8e623c167bc8b777"
        name:
          type: string
          description: Nombre del cliente.
          example: "John Doe Doe"
        phone:
          type: string
          description: Teléfono del cliente.
          example: "923122312"
        email:
          type: string
          description: Email del cliente.
          example: "johndoe@example.com"
        address:
          description: Dirección del cliente.
          type: string
          example: "Moneda 121"
        city:
          description: Ciudad del cliente.
          type: string
          example: "Santiago"
        region:
          description: Región del cliente.
          type: string
          example: "Metropolitana"
        country:
          description: País del cliente.
          type: string
          example: "Chile"
        postal_code:
          description: Código postal del cliente.
          type: string
          example: "750000"
        created_at:
          description: Fecha de registro.
          type: string
          example: "2023-09-29 22:00:00"
          format: datetime
        update_at:
          description: Fecha de modificación.
          type: string
          example: "2023-10-2 08:32:52"
          format: datetime
        additional_parameters:
          description: Parámetros adicionales del cliente (Opcional).
          type: object
          properties:
            parameter_1:
              description: Nombre del parámetro dado por el usuario payku
              type: string
              example: "example"
            parameter_2:
              description: Nombre del parámetro dado por el usuario payku
              type: string
              example: "example"
        subcriptions:
          type: object
          properties:
            id:
              description: Identificador de la suscripción creado por payku.
              type: string
              example: "su867f07772aa5f5175527"
            created_at:
              description: Fecha de registro.
              type: string
              example: "2023-09-29 19:58:35"
              format: datetime
            status:
              description: |
                Estatus de la suscripción. Los posibles estados que puede obtener son los siguientes:
                - register
                - active
                - finish
                - delete
                - cancel
                - suspended
              type: string
              example: "active"
            amount:
              description: Monto de la suscripción.
              type: string
              example: "15000"
            plan:
              type: array
              items:
                type: object
                properties:
                  id:
                    description: Identificador del plan creado por payku.
                    type: string
                    example: "pl9697fb170834ad42dd00"
                  name:
                    description: Nombre del plan.
                    type: string
                    example: "test plan"
                  currency:
                    description: Moneda.
                    type: string
                    example: "PEN"
            cards:
              type: array
              items:
                type: object
                properties:
                  last_4_digits:
                    description: Últimos 4 dígitos de la tarjeta afiliada.
                    type: string
                    example: "XXXXXXXXXXXX6623"
                  card_type:
                    description: Tipo de tarjeta.
                    type: string
                    example: "Visa"
            transactions:
              type: array
              items:
                type: object
                properties:
                  created_at:
                    description: Fecha de creación de la transacción.
                    type: string
                    example: "2023-09-30 19:58:35"
                  date_payment:
                    description: Fecha en que se realizo la transacción.
                    type: string
                    example: "2023-09-30"
                  amount:
                    description: Monto de transacción.
                    type: int
                    example: 10000
                  transaction:
                    description: Número de transacción.
                    type: int
                    example: 204444
                  authorization_code:
                    description: Código de autorización.
                    type: string
                    example: "1234"
                  order:
                    description: Número de orden.
                    type: string
                    example: "001"
                  description:
                    description: Descripción.
                    type: string
                    example: "descripcion"
                  status:
                    description: |
                      Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
                      - pending
                      - success
                      - retry
                      - canceled by customer
                      - canceled by paymáster
                      - canceled by payku
                      - maximum attempt limit
                      - first payment rejected
                      - payment consumes failed
                    type: string
                    example: "success"

    UpdateClientResponse:
      description: "Datos de retorno de la actualización de un cliente"
      type: object
      properties:
        id:
          type: string
          description: Identificador del marketplace.
          example: "cl0be4c8e623c167bc8b777"
        status:
          description: Estatus del cliente.
          type: string
          example: "register"
        name:
          type: string
          description: Nombre del cliente.
          example: "John Doe"
        phone:
          type: string
          description: Teléfono del cliente.
          example: "923122312"
        email:
          type: string
          description: Correo del cliente.
          example: "923122312"
        bank:
          description: Datos bancarios del cliente.
          type: object
          properties:
            sbif:
              description: |
                Código del banco al que pertenece la cuenta bancaria.
              type: string
              example: "0001"
            type:
              description: Tipo de cuenta del cliente.
              type: string
              example: "3"
            num:
              description: Cuenta bancaria del cliente.
              type: string
              example: "9999999"
            rut:
              description: Rut del cliente.
              type: string
              example: "261009617"
        affiliations:
          type: number
          description: Cantidad de afiliaciones.
          example: 2
        affiliations_details:
          type: array
          items:
            description: "Detalle de las afiliaciones"
            type: object
            properties:
              id:
                type: string
                description: Identificador de la afiliación.
              status:
                type: string
                description: |
                  Estatus de la afiliación:
                    - not found
                    - pending
                    - liquidate
                    - pending for deposit
                    - paid
              token:
                type: string
                description: Token de la afiliación.
              name:
                type: string
                description: Nombre de la afiliación.
              percentage_affiliation:
                type: string
                description: Porcetnaje de la afiliación.
              percentage_client:
                type: string
                description: Porcentaje del cliente.
            example:
              - {
                  id: "s6df85b41df65b21se685",
                  status: "register",
                  token: "sgh65g1ns6fg5n1sfg2sr6j5nfg65shr6gh5s4r6h5fg6",
                  name: "market1",
                  percentage_affiliation: 1,
                  percentage_client: 99,
                }
              - {
                  id: "s6df85b41df65b21se685",
                  status: "register",
                  token: "sgh65g1ns6fg5n1sfg2sr6j5nfg65shr6gh5s4r6h5fg6",
                  name: "market2",
                  percentage_affiliation: 1,
                  percentage_client: 99,
                }

    AllClientResponse:
      description: "Datos de retorno de la modificación de un cliente"
      type: object
      properties:
        Customers:
          type: array
          description: "Arreglo que contiene a los clientes"
          items:
            type: object
            properties:
              id:
                type: string
                description: Identificador de la transacción creado por payku.
                example: "cl0be4c8e623c167bc8b777"
              rut:
                description: Registro Único Tributario del cliente.
                type: string
                example: "11111111"
              name:
                type: string
                description: Nombre del cliente.
                example: "John Doe Doe"
              phone:
                type: string
                description: Teléfono del cliente.
                example: "923122312"
              email:
                type: string
                description: Email del cliente.
                example: "johndoe@example.com"
              address:
                description: Dirección del cliente.
                type: string
                example: "Moneda 121"
              city:
                description: Ciudad del cliente.
                type: string
                example: "Santiago"
              region:
                description: Región del cliente.
                type: string
                example: "Metropolitana"
              country:
                description: País del cliente.
                type: string
                example: "Chile"
              postal_code:
                description: Código postal del cliente.
                type: string
                example: "750000"
              created_at:
                description: Fecha de registro.
                type: string
                example: "2023-09-29 22:00:00"
                format: datetime
              update_at:
                description: Fecha de modificación.
                type: string
                example: "2023-10-20 08:32:52"
                format: datetime
              active_cards:
                type: array
                items:
                  type: object
                  properties:
                    last_4_digits:
                      description: Últimos 4 dígitos de la tarjeta afiliada.
                      type: string
                      example: "XXXXXXXXXXXX6622"
                    identifier:
                      description: identificador de la tarjeta.
                      type: string
                      example: "surec804a8ed60c747cb8839"
                    card_type:
                      description: Tipo de tarjeta.
                      type: string
                      example: "Visa"
                    register:
                      description: Fecha de registro.
                      type: string
                      example: "2023-07-26 08:00:19"
          example:
            - last_4_digits: "XXXXXXXXXXXX6622"
              identifier: "surec804a8ed60c747cb8839"
              card_type: "Visa"
              register: "2023-07-26 08:00:19"
            - last_4_digits: "XXXXXXXXXXXX1234"
              identifier: "surec804a8ed60c747cb8843"
              card_type: "MasterCard"
              register: "2023-01-01 12:00:00"
              additional_parameters:
                type: array
                description: Parámetros adicionales que puede enviar payku.
                example: ""
              subcriptions:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      description: Identificador de la suscripción creado por payku.
                      type: string
                      example: "su867f07772aa5f5175527"
                    created_at:
                      description: Fecha de registro.
                      type: string
                      example: "2023-09-29 19:58:35"
                      format: datetime
                    status:
                      description: |
                        Estatus de la suscripción. Los posibles estados que puede obtener son los siguientes:
                        - register
                        - active
                        - finish
                        - delete
                        - cancel
                        - suspended
                      type: string
                      example: "active"
                    amount:
                      description: Monto de la suscripción.
                      type: string
                      example: "15000"
                    plan:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            description: Identificador del plan creado por payku.
                            type: string
                            example: "pl9697fb170834ad42dd00"
                          name:
                            description: Nombre del plan.
                            type: string
                            example: "test plan"
                          currency:
                            description: Moneda.
                            type: string
                            example: "PEN"
                    cards:
                      type: array
                      items:
                        type: object
                        properties:
                          last_4_digits:
                            description: Últimos 4 dígitos de la tarjeta afiliada.
                            type: string
                            example: "XXXXXXXXXXXX6623"
                          card_type:
                            description: Tipo de tarjeta.
                            type: string
                            example: "Visa"
                    transactions:
                      type: array
                      items:
                        type: object
                        properties:
                          created_at:
                            description: Fecha de creación de la transacción.
                            type: string
                            example: "2023-09-30 19:58:35"
                          date_payment:
                            description: Fecha en que se realizo la transacción.
                            type: string
                            example: "2023-09-30"
                          amount:
                            description: Monto de transacción.
                            type: int
                            example: 10000
                          transaction:
                            description: Número de transacción.
                            type: int
                            example: 204444
                          authorization_code:
                            description: Código de autorización.
                            type: string
                            example: "1234"
                          order:
                            description: Número de orden.
                            type: string
                            example: "001"
                          description:
                            description: Descripción.
                            type: string
                            example: "descripcion"
                          status:
                            description: |
                              Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
                              - pending
                              - success
                              - retry
                              - canceled by customer
                              - canceled by paymaster
                              - canceled by payku
                              - maximum attempt limit
                              - first payment rejected
                              - payment consumes failed
                            type: string
                            example: "success"

    DeleteClientResponse:
      description: "Datos de retorno de la eliminación de un cliente"
      type: object
      properties:
        status:
          type: string
          description: Estatus de cliente.
          example: "success"
        id:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "cl0be4c8e623c167bc8b777"

    DeleteClientMarketResponse:
      description: "Datos de retorno de la eliminación de un cliente"
      type: object
      properties:
        status:
          type: string
          description: Estatus de cliente.
          example: "suspended"
        id:
          type: string
          description: Identificador creado por payku.
          example: "madb93fc00a2cf6f4449"

    DeleteAffiliationResponse:
      description: "Datos de retorno de la eliminación de una afiliación"
      type: object
      properties:
        status:
          type: string
          description: Estatus de afiliación.
          example: "suspended"
        id:
          type: string
          description: Identificador creado por payku.
          example: "maab4462d6133e05e518"

    PlanResponse:
      description: "Datos de retorno en el registros de un plan"
      type: object
      properties:
        status:
          type: string
          description: Estatus.
          example: "success"
        id:
          type: string
          description: Identificador único de plan por payku.
          example: "pl4293e97a87195bb9edcd"

    DeleteSuscriptionResponse:
      description: "Datos de retorno de la eliminación de un cliente"
      type: object
      properties:
        id:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "sucaab7865dceaff49d8b3"
        status:
          type: string
          description: Estatus.
          example: "success"

    CreateSuscriptionResponse:
      description: "Datos de retorno en el registros de datos de una suscripción"
      type: object
      properties:
        status:
          type: string
          description: Estatus.
          example: "register"
        id:
          type: string
          description: Identificador único de suscripción por payku.
          example: "sucaab7865dceaff49d8b3"
        url:
          type: string
          description: Url pago y activación de suscripción.
          example: "http://BASE_URL/gateway/registrosuscripcion?tipoplan=2&plan=true&token=219&validacion=e6c50ba0e0"

    PlanIdResponse:
      description: "Datos de retorno de consulta de plan por id"
      type: object
      properties:
        status:
          type: string
          description: Estatus.
          example: "success"
        plans:
          type: object
          properties:
            id:
              description: Identificador único de plan por payku.
              type: string
              example: "pl4293e97a87195bb9edcd"
            status:
              description: Estatus del plan.
              type: string
              example: "active"
            name:
              description: Nombre del plan.
              type: string
              example: "Test plan"
            code:
              description: Código del plan.
              type: string
              example: "001"
            description:
              description: Descripción del plan.
              type: string
              example: "Test Plan"
            url_notify_payment:
              description:
              type: string
              example: ""
              format: url
            url_notify_suscription:
              description:
              type: string
              example: ""
              format: url
            total_suscription:
              description: Total de suscripciones.
              type: integer
              example: 0
            total_suscription_active:
              description: Total de suscripciones activas.
              type: integer
              example: 0

    PlanAllResponse:
      description: "Datos de retorno de consulta de plan por id"
      type: object
      properties:
        status:
          type: string
          description: Estatus.
          example: "success"
        plans:
          type: array
          items:
            type: object
            properties:
              id:
                description: Identificador único de plan por payku.
                type: string
                example: "pl4293e97a87195bb9edcd"
              status:
                description: Estatus del plan.
                type: string
                example: "active"
              name:
                description: Nombre del plan.
                type: string
                example: "Test plan"
              code:
                description: Código del plan.
                type: string
                example: "001"
              description:
                description: Descripción del plan.
                type: string
                example: "Test Plan"
              url_notify_payment:
                description:
                type: string
                example: ""
                format: url
              url_notify_suscription:
                description:
                type: string
                example: ""
                format: url
              total_suscription:
                description: Total de suscripciones.
                type: integer
                example: 0
              total_suscription_active:
                description: Total de suscripciones.
                type: integer
                example: 0

    CreateSuTransactionResponse:
      description: "Datos de retorno en el registros de datos de una suscripción"
      type: object
      properties:
        status:
          description: |
            Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
            - pending
            - success
            - rejected
            - refunded partial
            - refunded
          type: string
          example: success
        order:
          description: Orden.
          type: string
          example: "001"
        amount:
          description: Monto.
          type: string
          example: "10000"
        transaction_id:
          description: Número de transacción.
          type: string
          example: "204444"
        verification_key:
          description:
          type: string
          example: "025dcad37e071daa8bfc2df35189009db65692a4ff766856108be1675e870839"

    CardSuscriptionResponse:
      description: "Datos de retorno en el registros de datos de una tarjeta"
      type: object
      properties:
        status:
          description: Estatus.
          type: string
          example: success
        id:
          description: Identificador único de suscripción por payku.
          type: string
          example: sucaab7865dceaff49d8b3
        url:
          description: URL pago y activación de suscripción.
          type: string
          example: https://BASE_URL/gateway/registrosuscripcion?plan=true&token=246&validacion=d6b32

    CardDeleteSuscriptionResponse:
      description: "Datos de retorno de la tarjeta eliminada"
      type: object
      properties:
        status:
          description: Status.
          type: string
          example: Delete
        card:
          description: Identificador único de La tarjeta asociada a la suscripción.
          type: string
          example: surec804a8ed60c0a8cb8839

    SuscriptionIdResponse:
      description: "Datos de retorno de la consultada de una suscripción"
      type: object
      properties:
        id:
          type: string
          description: Identificador de la suscripción creado por payku.
          example: "sucaab7865dceaff49d8b7"
        status:
          type: string
          description: |
            Estatus de la suscripción. Los posibles estados que puede obtener son los siguientes:
            - register
            - active
            - finish
            - delete
            - cancel
            - suspended
          example: "active"
        start:
          type: string
          description: Fecha de inicio de la suscripción.
          example: "2019-07-22 18:34:49"
        end:
          type: string
          description: Fecha de termino de la suscripción.
          example: "2023-06-12 00:00:00"
        client:
          type: object
          properties:
            id:
              description: Identificador del cliente creado por payku.
              type: string
              example: "cld0835b9063a5903f4ae7"
            name:
              description: Nombre del cliente.
              type: string
              example: "name"
            email:
              description: Email del cliente.
              type: string
              example: "joedoe@example.com"
            rut:
              description: Rol único Tributario.
              type: string
              example: "11.111.111-1"
            phone:
              description: Teléfono del cliente.
              type: string
              example: "56972756487"
            parámetros:
              description:
              type: array
            additional_parameters:
              type: array
              description: Parámetros adicionales que puede enviar payku.
              example: ""
        plan:
          type: object
          properties:
            id:
              description: Identificador del plan creado por payku.
              type: string
              example: "pl9697fb170834ad42dd00"
            name:
              description: Nombre del plan.
              type: string
              example: "test plan"
            currency:
              description: Moneda.
              type: string
              example: "PEN"
        cards:
          type: object
          properties:
            last_4_digits:
              description: Últimos 4 dígitos de la tarjeta afiliada.
              type: string
              example: "XXXXXXXXXXXX6622"
            card_type:
              description: Tipo de tarjeta.
              type: string
              example: "Visa"
        active_cards:
          type: array
          items:
            type: object
            properties:
              last_4_digits:
                description: Últimos 4 dígitos de la tarjeta afiliada.
                type: string
                example: "XXXXXXXXXXXX6622"
              identifier:
                description: identificador de la tarjeta.
                type: string
                example: "surec804a8ed60c747cb8839"
              card_type:
                description: Tipo de tarjeta.
                type: string
                example: "Visa"
              register:
                description: Fecha de registro.
                type: string
                example: "2023-07-26 08:00:19"
          example:
            - last_4_digits: "XXXXXXXXXXXX6622"
              identifier: "surec804a8ed60c747cb8839"
              card_type: "Visa"
              register: "2023-07-26 08:00:19"
            - last_4_digits: "XXXXXXXXXXXX1234"
              identifier: "surec804a8ed60c747cb8843"
              card_type: "MasterCard"
              register: "2023-01-01 12:00:00"
        transactions:
          type: array
          items:
            type: object
            properties:
              created_at:
                description: Fecha de creación de la transacción.
                type: string
                example: "2023-09-30 19:58:35"
              amount:
                description: Monto de transacción.
                type: int
                example: 10000
              transaction:
                description: Número de transacción.
                type: int
                example: 204444
              authorization_code:
                description: Código de autorización.
                type: string
                example: "1234"
              order:
                description: Número de orden.
                type: string
                example: "001"
              description:
                description: Descripción.
                type: string
                example: "descripcion"
              status:
                description: |
                  Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
                  - pending
                  - success
                  - rejected
                  - refunded partial
                  - refunded
                type: string
                example: "success"
        logs:
          description: Objeto con registros de información sobre las suscripciones
          type: object
          properties:
            status:
              description: Arreglo que contiene los cambios de estatus que se realizaron en la suscripción
              type: array
              items:
                type: object
                properties:
                  change_date:
                    description: Fecha en que se realizo el cambio
                    type: string
                    example: "2021-02-17 16:11:53"
                  initial_status:
                    description: Estatus inicial de la suscripción
                    type: string
                    example: "register"
                  final_status:
                    description: Estatus final de la suscripción
                    type: string
                    example: "active"

    SuscriptionAllResponse:
      type: object
      properties:
        subscriptions:
          type: array
          items:
            description: "Datos de retorno de la consultada de todas las suscripciones"
            type: object
            properties:
              id:
                type: string
                description: Identificador de la suscripción creado por payku.
                example: "sucaab7865dceaff49d8b7"
              status:
                type: string
                description: |
                  Estatus de la suscripción. Los posibles estados que puede obtener son los siguientes:
                  - register
                  - active
                  - finish
                  - delete
                  - cancel
                  - suspended
                example: "active"
              last_status_current_payment:
                type: string
                description: |
                  Último estatus de la suscripción actual.
                example: "pending"
              start:
                type: string
                description: Fecha de inicio de la suscripción.
                example: "2019-07-22 18:34:49"
              end:
                type: string
                description: Fecha de termino de la suscripción.
                example: "2023-06-12 00:00:00"
              client:
                type: object
                properties:
                  id:
                    description: Identificador del cliente creado por payku.
                    type: string
                    example: "su7e5e1c0b1bd2e37ec557"
                  name:
                    description: Nombre del cliente.
                    type: string
                    example: "name"
                  email:
                    description: Email del cliente.
                    type: string
                    example: "johndoe@example.com"
                  rut:
                    description: Rol único Tributario.
                    type: string
                    example: "11.111.111-1"
                  phone:
                    description: Teléfono del cliente.
                    type: string
                    example: "56928265454"
                  parámetros:
                    description:
                    type: array
                  additional_parameters:
                    type: array
                    description: Parámetros adicionales que puede enviar payku.
                    example: ""
              plan:
                type: object
                properties:
                  id:
                    description: Identificador del plan creado por payku.
                    type: string
                    example: "pl9697fb170834ad42dd00"
                  name:
                    description: Nombre del plan.
                    type: string
                    example: "test plan"
                  currency:
                    description: Moneda.
                    type: string
                    example: "PEN"
              cards:
                type: object
                properties:
                  last_4_digits:
                    description: Últimos 4 dígitos de la tarjeta afiliada.
                    type: string
                    example: "XXXXXXXXXXXX6622"
                  card_type:
                    description: Tipo de tarjeta.
                    type: string
                    example: "Visa"
              transactions:
                type: array
                items:
                  type: object
                  properties:
                    created_at:
                      description: Fecha de creación de la transacción.
                      type: string
                      example: "2023-09-30 19:58:35"
                    amount:
                      description: Monto de transacción.
                      type: int
                      example: 10000
                    transaction:
                      description: Número de transacción.
                      type: int
                      example: 204444
                    authorization_code:
                      description: Código de autorización.
                      type: string
                      example: "1234"
                    order:
                      description: Número de orden.
                      type: string
                      example: "001"
                    description:
                      description: Descripción.
                      type: string
                      example: "descripcion"
                    status:
                      description: |
                        Estatus de transacción, los posibles estados que puede obtener son los siguientes:
                        - pending
                        - success
                        - rejected
                        - refunded partial
                        - refunded
                      type: string
                      example: "success"
              logs:
                description: Objeto con registros de información sobre las suscripciones
                type: object
                properties:
                  status:
                    description: Arreglo que contiene los cambios de estatus que se realizaron en la suscripción
                    type: array
                    items:
                      type: object
                      properties:
                        change_date:
                          description: Fecha en que se realizo el cambio
                          type: string
                          example: "2021-02-17 16:11:53"
                        initial_status:
                          description: Estatus inicial de la suscripción
                          type: string
                          example: "register"
                        final_status:
                          description: Estatus final de la suscripción
                          type: string
                          example: "active"

    SuscriptionAllResponse2:
      type: object
      properties:
        subscriptions:
          type: array
          items:
            description: "Datos de retorno de la consultada de todas las suscripciones"
            type: object
            properties:
              id:
                type: string
                description: Identificador de la suscripción creado por payku.
                example: "sucaab7865dceaff49d8b7"
              estatus:
                type: string
                description: |
                  Estatus de la suscripción. Los posibles estados que puede obtener son los siguientes:
                  - register
                  - active
                  - finish
                  - delete
                  - cancel
                  - suspended
                example: "active"
              start:
                type: string
                description: Fecha de inicio de la suscripción.
                example: "2019-07-22 18:34:49"
              end:
                type: string
                description: Fecha de termino de la suscripción.
                example: "2023-06-12 00:00:00"
              client:
                type: object
                properties:
                  id:
                    description: Identificador del cliente creado por payku.
                    type: string
                    example: "su7e5e1c0b1bd2e37ec557"
                  name:
                    description: Nombre del cliente.
                    type: string
                    example: "name"
                  email:
                    description: Email del cliente.
                    type: string
                    example: "johndoe@example.com"
                  rut:
                    description: Rol único Tributario.
                    type: string
                    example: "11.111.111-1"
                  phone:
                    description: Teléfono del cliente.
                    type: string
                    example: "56928265454"
                  parámetros:
                    description:
                    type: array
                  additional_parameters:
                    type: array
                    description: Parámetros adicionales que puede enviar payku.
                    example: ""
              plan:
                type: object
                properties:
                  id:
                    description: Identificador del plan creado por payku.
                    type: string
                    example: "pl9697fb170834ad42dd00"
                  name:
                    description: Nombre del plan.
                    type: string
                    example: "test plan"
                  currency:
                    description: Moneda.
                    type: string
                    example: "PEN"
              active_cards:
                type: object
                properties:
                  last_4_digits:
                    description: Últimos 4 dígitos de la tarjeta afiliada.
                    type: string
                    example: "XXXXXXXXXXXX6622"
                  card_type:
                    description: Tipo de tarjeta.
                    type: string
                    example: "Visa"
              logs:
                description: Objeto con registros de información sobre las suscripciones
                type: object
                properties:
                  status:
                    description: Arreglo que contiene los cambios de estatus que se realizaron en la suscripción
                    type: array
                    items:
                      type: object
                      properties:
                        change_date:
                          description: Fecha en que se realizo el cambio
                          type: string
                          example: "2021-02-17 16:11:53"
                        initial_status:
                          description: Estatus inicial de la suscripción
                          type: string
                          example: "register"
                        final_status:
                          description: Estatus final de la suscripción
                          type: string
                          example: "active"

              paid:
                type: array
                items:
                  description: "Información sobre pagos"
                  type: object
                  properties:
                    payment_cycle_day:
                      type: string
                      description: Fecha estimada de pago.
                      example: "2021-07-09"
                    payment_day:
                      type: string
                      description: Fecha de pago.
                      example: "2021-07-09"
                    status:
                      type: string
                      description: Estado del pago.
                      example: "success"
                    amount_paid:
                      type: string
                      description: Monto del pago realizado.
                      example: 2500
                    try_number:
                      type: int
                      description: Numero de intentos.
                      example: 1
                    paid_number:
                      type: int
                      description: Numero de pagos.
                      example: 1
                    transactions:
                      type: array
                      items:
                        type: object
                        properties:
                          created_at:
                            description: Fecha de creación de la transacción.
                            type: string
                            example: "2023-09-30 19:58:35"
                          amount:
                            description: Monto de transacción.
                            type: int
                            example: 2500
                          transaction:
                            description: Número de transacción.
                            type: int
                            example: 204444
                          payment_key:
                            description: Identificador único de cobro creado por payku.
                            type: string
                            example: null
                          transaction_key:
                            description: Identificador de la transacción creado por payku.
                            type: string
                            example: null
                          authorization_code:
                            description: Código de autorización.
                            type: string
                            example: "1234"
                          order:
                            description: Número de orden.
                            type: string
                            example: "001"
                          description:
                            description: Descripción.
                            type: string
                            example: "descripcion"
                          status:
                            description: |
                              Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
                              - pending
                              - success
                              - rejected
                              - refunded partial
                              - refunded
                            type: string
                            example: "success"

    nullificationResponse:
      description: "Datos de retorno de la creación de una solicitud de anulación"
      type: object
      properties:
        status:
          type: string
          description: "Estado del registro."
          example: "success"
        nullify:
          type: object
          description: ""
          properties:
            id:
              type: string
              description: "Identificador de la transacción la cual se desea anular."
              example: "trxpr2a45s1dytg1"
            amount:
              type: number
              description: "Monto de la transacción"
              example: 25000
            currency:
              type: string
              description: "Moneda"
              example: "PEN"
            type:
              type: string
              description: |
                Tipos del registro:
                  - **total** ( Dinero disponible, anulación fue ejecutada con éxito )
                  - **partial** ( No se encuentra disponible el total de los fondos, se encuentra a la espera )
              example: "total"
            status_nullify:
              type: string
              description: |
                Estatus de la anulación:
                  - **pending** ( Registrado  pending old--> (register) )
                  - **awaiting_funds** ( En proceso (Faltan fondos) (partial) )
                  - **waiting_bank_details** ( Aprobado (En espera de datos bancarios cliente)  Solo Débito y otros medios de pago  (waiting_bank_details) )
                  - **complete** ( (Dinero recolectado)  (complete) )
                  - **reverse_deleted** ( Solicitud eliminada por sistema  (request_deleted) )
                  - **reverse_completed** ( Anulación realizada   (request_made) )
                  - **reverse_deleted** ( Inhabilitada (request_deleted) )
              example: "complete"
            payment:
              type: object
              properties:
                gateway:
                  type: string
                  description: "Medio de pago"
                  example: "QR Interoperable"
                payment_type:
                  type: string
                  description: "Tipo de pago"
                  example: "VC"
            created_at:
              type: string
              description: "Fecha de creación de solicitud de anulación"
              example: "2023-05-17T19:12:57.189Z"
            updated_at:
              type: string
              description: "Fecha de actualización de solicitud de anulación"
              example: "2023-05-17T19:12:57.189Z"
        gateway_response:
          type: object
          description: "Respuesta de la solicitud de anulación"
          properties:
            status:
              type: string
              description: "Estado del registro de la solicitud de anulación"
              example: "Successfully registered request"
            message:
              type: string
              description: "Mensaje del proceso de la solicitud"
              example: "The cancellation will be executed after the amount requested is deducted from your next settlement"
            notify:
              type: string
              description: "Notificación sobre el estado de la solicitud de anulación"
              example: "No availability in the wallet"

    nullificationResponseGet:
      description: "Datos de retorno de la creación de una solicitud de anulación"
      type: object
      properties:
        nullify:
          type: object
          description: "Datos de retorno de la creación de una solicitud de anulación"
          properties:
            id:
              type: string
              description: "Identificador de la transferencia de la cual se desea solicitar anulación."
              example: "trxpr2a45s1dytg1"
            amount:
              type: number
              description: "Monto de la transacción"
              example: 25000
            currency:
              type: string
              description: "Moneda"
              example: "PEN"
            type:
              type: string
              description: |
                Tipos del registro:
                  - total
                  - partial
              example: "total"
            status_nullify:
              type: string
              description: |
                Estatus de la anulación:
                  - pending **( En proceso (Faltan fondos) (partial) )**
                  - awaiting_funds **( En proceso (Faltan fondos) (partial) )**
                  - waiting_bank_details **( Aprobado (En espera de datos bancarios cliente)  Solo Débito y otros medios de pago  (waiting_bank_details) )**
                  - complete **( (Dinero recolectado)  (complete) )**
                  - reverse_deleted **( Solicitud eliminada por sistema  (request_deleted) )**
                  - **reverse_completed ( Anulación realizada   (request_made) )**
                  - reverse_deleted **( Inhabilitada (request_deleted) )**
              example: "complete"
            payment:
              type: object
              properties:
                gateway:
                  type: string
                  description: "Medio de pago"
                  example: "QR Interoperable"
                payment_type:
                  type: string
                  description: "Tipo de pago"
                  example: "VC"
            created_at:
              type: string
              description: "Fecha de creación de solicitud de anulación"
              example: "2023-05-17T19:12:57.189Z"
            updated_at:
              type: string
              description: "Fecha de actualización de solicitud de anulación"
              example: "2023-05-17T19:12:57.189Z"

    BanksResponse:
      description: "Datos de retorno de la creación de la lista de bancos"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus del endpoint. Los posibles estados que puede obtener son los siguientes:
            - success
          example: "success"
        banks:
          type: array
          items:
            description: "Datos de retorno de la lista de bancos"
            type: object
            properties:
              code:
                type: string
                description: |
                  Código del banco al que pertenece la cuenta bancaria.


                example: Banco de Chile
              name:
                type: string
                description: Nombre de la entidad bancaria.
                example: Banco de Chile
              currency:
                type: string
                description: Moneda
                Example: PEN
          example:
            - {
                code: "007",
                name: "Citibank Perú S.A.",
                currency: "PEN"
              }

    BanksCurrencyResponse:
      description: "Datos de retorno de la lista de bancos"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus del endpoint. Los posibles estados que puede obtener son los siguientes:
            - success
          example: "success"
        banks:
          type: array
          items:
            description: "Datos de retorno de estado de la lista de bancos"
            type: object
            properties:
              code:
                type: string
                description: |
                  Código del banco al que pertenece la cuenta bancaria.

                example: Citibank Perú S.A.
              name:
                type: string
                description: Nombre de la entidad bancaria.
                example: Citibank Perú S.A.
              currency:
                type: string
                description: Moneda
                Example: PEN
          example:
            - {
                code: "007",
                name: "Citibank Perú S.A.",
                currency: "PEN"
              }

    MethodsPaymentResponse:
      description: "Datos de retorno de la creación de la lista de métodos de pago"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus del endpoint. Los posibles estados que puede obtener son los siguientes:
            - success
          example: "success"
        payment_methods:
          type: array
          items:
            description: "Datos de retorno de la lista de los métodos de pago"
            type: object
            properties:
              description:
                type: string
                description: |
                  Breve descripción del método de pago.
                example: Utiliza tu banco, simplifica tus transferencias.
              payment:
                type: number
                description: |
                  Código que pertenece al método de pago.
                example: 20
              name:
                type: string
                description: Nombre del método de pago.
                example: Vepuy
              currency:
                type: string
                description: Moneda
                Example: PEN
          example:
            - {
                currency: "PEN",
                payment: 21,
                name: "QR Interoperable",
                description: ""
              }

    MethodsPaymentCurrencyResponse:
      description: "Datos de retorno de la creación de la lista de métodos de pago"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus del endpoint. Los posibles estados que puede obtener son los siguientes:
            - success
          example: "success"
        payment_methods:
          type: array
          items:
            description: "Datos de retorno de estado de la lista de métodos de pago"
            type: object
            properties:
              description:
                type: string
                description: |
                  Breve descripción del método de pago.
              payment:
                type: number
                description: |
                  Código que pertenece al método de pago.
                example: 21
              name:
                type: string
                description: Nombre del método de pago.
                example: QR Interoperable
              currency:
                type: string
                description: Moneda
                example: PEN
          example:
            - {
                currency: "PEN",
                payment: 21,
                name: "QR Interoperable",
                description: ""
              }

    EscrowResponse:
      description: "Datos de retorno de la creación de una transacción"
      type: object
      properties:
        transactions:
          type: array
          items:
            description: "Datos de retorno de estado de una transacción"
            type: object
            properties:
              status:
                type: string
                description: |
                  Estatus de la transacción:
                  - not found
                  - pending
                  - liquidate
                  - pending for deposit
                  - paid
              transaction_id:
                type: string
                description: Identificador de la transacción creado por payku.
              amount:
                type: integer
                description: Monto total de la tracción.
              availability_date:
                type: string
                description: Fecha de disponibilidad para autorizar la liquidación.
              deposit_date:
                type: string
                description: Fecha de pago de la liquidación.
          example:
            - {
                status: liquidate,
                transaction_id: trx3b4d77b43acd9a720,
                amount: 15000,
                availability_date: "2021-07-01",
                deposit_date: "2021-07-06",
              }
            - {
                status: pending,
                transaction_id: trx3b4d77b43bdd9a540,
                amount: 20000,
                availability_date: "2021-07-25",
                deposit_date: "N/D",
              }

    TransactionResponse:
      description: "Datos de retorno de la creación de una transacción"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
            - pending
            - success
            - rejected
          example: "pending"
        id:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "trx3b4d77b43acd9a720"
        url:
          type: string
          description: URL a redireccionar al usuario.
          example: "https://BASE_URL/url_de_pago"
        hash:
          type: string
          description: Hash de la transacción para generar el QR.
          example: "00020000000000000111111222233339030226304E245"
        qr_image:
          type: string
          description: Imagen del QR.
          example: "data:image/png;base64,......"

    TransactionRegisterResponse:
      description: "Datos de retorno de la creación de una transacción"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus de transacción. Los posibles estados que puede obtener son los siguientes:
            - register
            - pending
            - success
            - rejected
          example: "pending"
        id:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "trx3b4d77b43acd9a720"
        url:
          type: string
          description: URL a redireccionar al usuario.
          example: "https://BASE_URL/url_de_pago"
        hash:
          type: string
          description: Hash de la transacción para generar el QR.
          example: "00020000000000000111111222233339030226304E245"
        qr_image:
          type: string
          description: Imagen del QR.
          example: "data:image/png;base64,......"

    IdentifierResponse:
      description: "Datos de retorno de estado de una transacción"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
            - register
            - pending
            - success
            - rejected
          example: "success"
        id:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "trx3b4d77b43acd9a720"
        created_at:
          type: string
          description: Fecha de registro.
          example: "2019-10-25 14:10:03"
        order:
          type: string
          description: Número de orden.
          example: "1572023402"
        email:
          type: string
          description: Email del usuario
          example: "johndoe@example.com"
        subject:
          type: string
          description: Descripción de la orden de compra.
          example: "Description"
        amount:
          type: string
          description: Monto.
          example: "98745"
        payment:
          type: object
          properties:
            start:
              type: string
              description: Inicio de la transacción.
              example: "2023-12-16 15:10:33"
            end:
              type: string
              description: Fin de la transacción.
              example: "2023-12-16 15:10:36"
            media:
              type: string
              description: Medio de pago, utilizado por el usuario.
              example: "QR Interoperable"
            transaction_id:
              type: int
              description: Identificador de la transacción creado por payku.
              example: 107999
            payment_key:
              type: string
              description: Identificador del cobro creado por payku.
              example: "pra934939d607922f9e"
            transaction_key:
              type: string
              description: Identificador de la transacción creado por payku.
              example: null
            deposit_date:
              type: string
              description: Fecha el cual se realizará el depósito al cliente.
              example: "2023-10-05"
            verification_key:
              type: string
              description: Código de verificación creado por payku.
              example: "6669cbd982ef54c28f2f15fb9dc5262d"
            authorization_code:
              type: string
              description: Código de autorización.
              example: "107742"
            last_4_digits:
              type: string
              description: Últimos 4 dígitos de la tarjeta afiliada.
              example: "1233"
            installments:
              type: int
              description: Cuotas.
              example: 0
            card_type:
              type: string
              description: Tipo de tarjeta.
              example: "VN"
            additional_parameters:
              type: object
              description: |
                **Ejemplo** de parámetros adicionales que puede enviar payku.
              properties:
                identificador:
                  type: string
                  description: |
                    **Ejemplo** del Identificador de la transacción:
                  example: "11.111.111-1"
                banco:
                  type: string
                  description: |
                    **Ejemplo** del banco el cual se realizo la transacción:
                  example: "Banco Estado"
                numero_cuenta:
                  type: string
                  description: |
                    **Ejemplo** del número de cuenta el cual se realizo la transacción:
                  example: "00126544977"
                network:
                  type: object
                  description: |
                    Datos de la red del usuario:
                  properties:
                    ip_address:
                      type: string
                      description: |
                        **Ejemplo** de IP Address del usuario:
                      example: "192.0.2.123"
            currency:
              type: string
              description: Moneda.
              example: "PEN"
        nullify:
          description: "Objeto que contiene información de la respuesta de la anulación"
          type: object
          properties:
            status:
              type: string
              description: |
                Estatus de anulación. Los posibles estados que puede obtener son los siguientes:
                - pending
                - awaiting_funds
                - waiting_bank_details
                - complete
                - reverse_deleted
                - reverse_completed
              example: "complete"
        gateway_response:
          description: "Objeto que contiene información de la respuesta de la transacción"
          type: object
          properties:
            status:
              type: string
              description: |
                Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
                - pending
                - success
                - rejected
                - refunded partial
                - refunded
              example: "success"
            message:
              type: string
              description: |
                Mensaje que describe el estado.
                  - successful transaction
                  - Rechazo de transacción.
                  - Transacción debe reintentarse.
                  - Error en transacción.
                  - Rechazo por error de tasa.
                  - Excede cupo máximo mensual.
                  - Excede límite diario por transacción.
                  - Rubro no autorizado.
              example: "successful transaction"

    IdentifierAllResponse:
      type: object
      properties:
        transaction:
          type: array
          items:
            description: "Datos de retorno de estado de una transacción"
            type: object
            properties:
              id:
                type: string
                description: Identificador de la transacción creado por payku.
                example: "107999"
              status:
                type: string
                description: |
                  Estatus de transacción. Los posibles estados que puede obtener son los siguientes:
                  - register
                  - pending
                  - success
                  - rejected
                example: "success"
              created_at:
                type: string
                description: Fecha de registro.
                example: "2019-10-25 14:10:03"
              email:
                type: string
                description: Email del usuario
                example: "johndoe@example.com"
              amount:
                type: int
                description: Monto.
                example: 98745
              order:
                type: string
                description: Número de orden.
                example: "1572023402"
              subject:
                type: string
                description: Descripción de la orden de compra.
                example: "Description"
              payment:
                type: object
                properties:
                  start:
                    type: string
                    description: Inicio de la transacción.
                    example: "2023-12-16 15:10:33"
                  end:
                    type: string
                    description: Fin de la transacción.
                    example: "2023-12-16 15:10:36"
                  media:
                    type: string
                    description: Medio de pago, utilizado por el usuario.
                    example: "QR Interoperable"
                  transaction_id:
                    type: int
                    description: Identificador de la transacción creado por payku.
                    example: 107999
                  payment_key:
                    type: string
                    description: Identificador del cobro creado por payku.
                    example: "pra934939d607922f9e"
                  transaction_key:
                    type: string
                    description: Identificador de la transacción creado por payku.
                    example: null
                  deposit_date:
                    type: string
                    description: Fecha el cual se realizará el depósito al cliente.
                    example: "2023-10-05"
                  verification_key:
                    type: string
                    description: Código de verificación creado por payku.
                    example: "6669cbd982ef54c28f2f15fb9dc5262d"
                  authorization_code:
                    type: string
                    description: Código de autorización.
                    example: "107742"
                  last_4_digits:
                    type: string
                    description: Últimos 4 dígitos de la tarjeta afiliada.
                    example: "1233"
                  installments:
                    type: int
                    description: Cuotas.
                    example: 0
                  card_type:
                    type: string
                    description: Tipo de tarjeta.
                    example: "VN"
                  additional_parameters:
                    type: object
                    description: |
                      **Ejemplo** de parámetros adicionales que puede enviar payku.
                    properties:
                      identificador:
                        type: string
                        description: |
                          **Ejemplo** del Identificador de la transacción:
                        example: "11.111.111-1"
                      banco:
                        type: string
                        description: |
                          **Ejemplo** del banco el cual se realizo la transacción:
                        example: "Banco Estado"
                      numero_cuenta:
                        type: string
                        description: |
                          **Ejemplo** del número de cuenta el cual se realizo la transacción:
                        example: "00126544977"
                  currency:
                    type: string
                    description: Moneda.
                    example: "PEN"
              nullify:
                description: "Objeto que contiene información de la respuesta de la anulación"
                type: object
                properties:
                  status:
                    type: string
                    description: |
                      Estatus de anulación. Los posibles estados que puede obtener son los siguientes:
                      - pending
                      - awaiting_funds
                      - waiting_bank_details
                      - complete
                      - reverse_deleted
                      - reverse_completed
                      - reverse_deleted
                    example: "complete"
              gateway_response:
                description: "Objeto que contiene información de la respuesta de la transacción"
                type: object
                properties:
                  status:
                    type: string
                    description: |
                      Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
                      - pending
                      - success
                      - rejected
                      - refunded partial
                      - refunded
                    example: "success"
                  message:
                    type: string
                    description: |
                      Mensaje que describe el estado.
                        - successful transaction
                        - Rechazo de transacción.
                        - Transacción debe reintentarse.
                        - Error en transacción.
                        - Rechazo por error de tasa.
                        - Excede cupo máximo mensual.
                        - Excede límite diario por transacción.
                        - Rubro no autorizado.
                    example: "successful transaction"

    IdentifierMallResponse:
      description: "Datos de retorno de estado de una transacción"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
            - pending
            - success
            - rejected
            - refunded partial
            - refunded
          example: "success"
        id:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "malld200058ab44739ddee2adcd2f5"
        created_at:
          type: string
          description: Fecha de registro.
          example: "2023-10-16 11:23:19"
        amount:
          type: string
          description: Monto.
          example: "30000"
        payment:
          type: object
          properties:
            media:
              type: string
              description: Medio de pago, utilizado por el usuario.
              example: "QR Interoperable"
            verification_key:
              type: string
              description: Código de verificación creado por payku.
              example: "d60aaa661ea74d824373806c8aa38137"
            authorization_code:
              type: string
              description: Código de autorización.
              example: "441864"
            last_4_digits:
              type: string
              description: Últimos 4 dígitos de la tarjeta afiliada.
              example: "5135"
            card_type:
              type: string
              description: Tipo de tarjeta.
              example: ""
            currency:
              type: string
              description: Moneda.
              example: "PEN"
        merchant:
          type: array
          description: Arreglo que contiene información de los beneficiarios.
          items:
            type: object
            properties:
              name:
                type: string
                description: Nombre del beneficiario.
              amount:
                type: string
                description: Monto del producto o servicio.
              subject:
                type: string
                description: Descripción del producto o servicio.
          example:
            - { name: John Doe, amount: 30000, subject: item1 }
            - { name: Jane Doe, amount: 25000, subject: item2 }
            - { name: Enteprise, amount: 15000, subject: item3 }

    VerificationResponse:
      description: "Datos de retorno de la creación de una transacción"
      type: object
      properties:
        order:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "9123123"
        status:
          type: string
          description: Validación exitosa = Recibirá el string ‘VALID’.
            Validación rechazada = Recibirá diferente a ‘INVALID’.
          example: "VALID"

    NotifySuscriptionResponse:
      description: "Datos de retorno de la activación de una suscripción"
      type: object
      properties:
        id:
          type: string
          description: Identificador de la suscripción creado por payku.
          example: "su74866857980c7d2b4306"
        status:
          type: string
          description: |
            Estatus de la suscripción. Los posibles estados que puede obtener son los siguientes:
            - register
            - active
            - finish
            - delete
            - cancel
            - suspended
          example: "active"

    NotifyPaymentResponse:
      description: "Datos de retorno del cobro de una suscripción"
      type: object
      properties:
        transaction_id:
          description: Identificador numerico único de transacción por payku.
          type: number
          example: 9123123
        payment_key:
          description: Identificador único de cobro creado por payku.
          type: string
          example: trxf45c298937ea16ab3
        transaction_key:
          description: Identificador único de transacción por payku.
          type: string
          example: dv032360ead078acd4b
        verification_key:
          description: Hash único de transacción.
          type: string
          example: 2ba83615f863e72sdca5dfd0a6df2782
        order:
          description: Identificador único de transacción enviado por el comercio.
          type: string
          example: 1568041684
        status:
          type: string
          description: |
            Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
            - pending
            - success
            - rejected
            - refunded partial
            - refunded
          example: "success"

    NotifyPaymentSuscriptionResponse:
      description: "Datos de retorno del cobro de una suscripción"
      type: object
      properties:
        transaction_id:
          description: Identificador único de transacción por payku.
          type: number
          example: 9123123
        verification_key:
          description: Hash único de transacción.
          type: string
          example: 2ba83615f863e72sdca5dfd0a6df2782
        order:
          description: Identificador único de transacción enviado por el comercio.
          type: string
          example: 1568041684
        status:
          type: string
          description: |
            Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
            - pending
            - success
            - rejected
            - refunded partial
            - refunded
          example: "success"
        subscriptions:
          type: object
          description: "Contiene los id de la suscripción y el cliente suscrito"
          properties:
            id:
              type: string
              description: Identificador único de suscripción por payku.
              example: "su3ce571420e90b600eafb"
            client:
              type: string
              description: Identificador único del cliente por payku
              example: "cl795704ece0a3690baaf"

    EventCreateResponse:
      description: "Datos de retorno de la creación de un evento"
      type: object
      properties:
        status:
          type: string
          description: Estatus de la solicitud.
          example: "success"
        id:
          type: string
          description: Identificador del evento.
          example: "98374"
        event:
          type: string
          description: Nombre del evento.
          example: "Event"
        date_event:
          type: datetime
          description: Fecha en la cual se realizara el evento.
          example: "2023-12-20"
        date_payment:
          type: datetime
          description: Fecha de pago del evento, debe ser mayor a la fecha date_event .
          example: "2023-12-22"
        date_closing_sales:
          type: datetime
          description: Fecha de cierre de las ventas, debe ser menor o igual a date_event.
          example: "2023-12-19 23:59:00"
        url_logo:
          type: string
          description: url del logo que pertenece al evento .
          format: url
          example: "https://www.example.com/logo_event1.png"
        url_event:
          type: string
          description: url en donde se encuentra publicado el evento.
          format: url
          example: "https://www.example.com/event1"
        distribution:
          type: object
          description: Distribución de las transacciones.
          properties:
            affiliate:
              type: string
              description: Monto a distribuir a los beneficiarios.
              example: "100.00"
            service_sale:
              type: string
              description: Monto a distribuir en el servicio de venta .
              example: "10.00"
        affiliation:
          type: array
          items:
            type: object
            description: Información de los afiliados.
            properties:
              id:
                type: string
                description: Identificador del beneficiario.
                example: "b99dfd8193ebfd37d4b9"
              email:
                type: string
                description: Correo del beneficiario.
                example: "afiliate1@domain.com"
              percent:
                type: string
                description: Porcentaje la cual le corresponde al beneficiario.
                example: "100.00"
              status:
                type: string
                description: Estatus del beneficiario.
                example: "pending"
          paymentData:
            type: object
            description: Distribución de los beneficiarios.
            properties:
              count:
                type: number
                description: Cantidad de ventas.
                example: 0
              amount_general:
                type: number
                description: Monto general de todas las transacciones.
                example: 0
              amount_affiliate:
                type: number
                description: Monto a distribuir a los beneficiarios.
                example: 0
              fee:
                type: number
                description: Comisión general.
                example: 0
              balance:
                type: number
                description: Monto a depositar.
                example: 0

    EventIdResponse:
      description: "Datos de retorno de la creación de un evento"
      type: object
      properties:
        id:
          type: string
          description: Identificador del evento.
          example: "98374"
        event:
          type: string
          description: Nombre del evento.
          example: "Event"
        date_event:
          type: datetime
          description: Fecha en la cual se realizara el evento.
          example: "2023-12-20"
        date_payment:
          type: datetime
          description: Fecha de pago del evento, debe ser mayor a la fecha date_event .
          example: "2023-12-22"
        date_closing_sales:
          type: datetime
          description: Fecha de cierre de las ventas, debe ser menor o igual a date_event.
          example: "2023-12-19 23:59:00"
        url_logo:
          type: string
          description: url del logo que pertenece al evento .
          format: url
          example: "https://www.example.com/logo_event1.png"
        url_event:
          type: string
          description: url en donde se encuentra publicado el evento.
          format: url
          example: "https://www.example.com/event1"
        distribution:
          type: object
          description: Distribución de las transacciones.
          properties:
            affiliate:
              type: string
              description: Monto a distribuir a los beneficiarios.
              example: "100.00"
            service_sale:
              type: string
              description: Monto a distribuir en el servicio de venta .
              example: "10.00"
        affiliations:
          type: array
          items:
            type: object
            description: Información de los afiliados.
            properties:
              id:
                type: string
                description: Identificador del beneficiario.
                example: "b99dfd8193ebfd37d4b9"
              email:
                type: string
                description: Correo del beneficiario.
                example: "afiliate1@domain.com"
              percent:
                type: string
                description: Porcentaje la cual le corresponde al beneficiario.
                example: "100.00"
              status:
                type: string
                description: Estatus del beneficiario.
                example: "pending"
          paymentData:
            type: object
            description: Distribución de los beneficiarios.
            properties:
              count:
                type: number
                description: Cantidad de ventas.
                example: 0
              amount_general:
                type: number
                description: Monto general de todas las transacciones.
                example: 0
              amount_affiliate:
                type: number
                description: Monto a distribuir a los beneficiarios.
                example: 0
              fee:
                type: number
                description: Comisión general.
                example: 0
              balance:
                type: number
                description: Monto a depositar.
                example: 0

    AdminClientMarketResponse:
      description: "Datos de retorno en el registros de un cliente"
      type: object
      properties:
        id:
          description: Identificador creado por payku.
          type: string
          example: "madb93fc00a2cf6f4449"
        status:
          description: Estatus del cliente.
          type: string
          example: "register"
        name:
          description: Nombre del cliente.
          type: string
          example: "John Doe"
        phone:
          description: Teléfono del cliente.
          type: string
          example: "923122312"
        email:
          description: Email del cliente.
          type: string
          format: email
          example: "johndoe@example.com"
        bank:
          type: object
          properties:
            sbif:
              description: Código banco.
              type: string
              example: "1234"
            rut:
              description: Registro Único Tributario.
              type: string
              example: "111111111"
            type:
              description: |
                Tipo de cuenta.
                - 1 Corriente
                - 2 Vista
                - 3 Ahorro
              type: int
              example: 1
            num:
              description: Número de cuenta del cliente.
              type: string
              example: "12312313121"
        affiliations:
          description: Cantidad de afiliaciones.
          type: integer
          example: 0
        created_at:
          description: Fecha de registro.
          type: string
          example: "2023-09-28 20:42:59"
          format: datetime
        update_at:
          description: Fecha de modificación.
          type: string
          example: "null"
          format: datetime

    AdminAffiliationResponse:
      description: "Datos de retorno en el registros de un afiliado"
      type: object
      properties:
        id:
          description: Identificador único de suscripción por payku.
          type: string
          example: "sucaab7865dceaff49d8b3"
        status:
          description: Estatus.
          type: string
          example: "register"
        name:
          description: Nombre de la afiliación.
          type: string
          example: "name"
        token:
          description: Token de afiliación que se ingresa en el comercio.
          type: string
          example: "eecd92fdbb8bf615e8215d6fbb30bb6ae6f82c9e1810f85b65bbeb472794c4a4"
        percentage:
          description: Porcentaje de afiliación usuario payku.
          type: string
          example: "20.00"
        affiliations:
          type: array
          items:
            type: object
            properties:
              id:
                description: Identificar.
                type: string
                example: "ma9fd16221a9645b0036"
              name:
                description: Nombre del afiliado.
                type: string
                example: "name"
              percentage:
                description: Porcentaje correspondiente a cada afiliado.
                type: string
                example: "80.00"

    mallPostResponse:
      description: "Datos de retorno de la creación de una transacción Mall"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus de transacción.Los posibles estados que puede obtener son los siguientes:
            - pending
            - success
            - rejected
            - refunded partial
            - refunded
          example: "success"
        id:
          type: string
          description: Identificador de la transacción creado por payku.
          example: "malld200058ab44739ddee2adcd2f5"
        individual_orders:
          type: array
          description: Arreglo que contiene información de los beneficiarios.
          items:
            type: object
            properties:
              merchant:
                type: string
                description: Nombre del beneficiario.
              amount:
                type: string
                description: Monto del producto o servicio.
              detail:
                type: string
                description: Descripción de la transacción.
              event:
                type: string
                description: ID del evento, si no poseé evento debe pasar null.
              identificador:
                type: string
                description: Identificador de la transacción.
                example: "9917068816213146"
              individual_order:
                type: string
                description: Identificador individual de la transacción.
                example: "4546"
          example:
            - { merchant: 81b6179e4feeef2b50af71d660f830de, amount: 30000, subject: item1, event: null, identificador: "9917068816213146", individual_order: "9654" }
            - { merchant: 81b6179e4feeef2b50af71d66f7830de, amount: 25000, subject: item2, event: null, identificador: "9917068816213146", individual_order: "9654" }
            - { merchant: 81b6179e4fffff2b50af71d66f7830de, amount: 15000, subject: item3, event: null, identificador: "9917068816213146", individual_order: "9654" }
        url:
          type: string
          description: URL a redireccionar al usuario.
          example: "https://BASE_URL/gateway/mall/malld200058ab44739ddee2adcd2f5"

    customerPostResponse:
      description: "Datos de retorno de la creación de una transacción Mall"
      type: object
      properties:
        status:
          type: string
          description: Estatus de la solicitud.
          example: "success"
        usuario:
          type: string
          description: Identificador del usuario.
          example: "us500f77e28752dc937e7d"
        cuenta:
          type: string
          description: Identificador del cuenta.
          example: "cu245a17e00f7ce3715f5a"

    Error:
      type: object
      properties:
        status:
          type: string
          description: Estatus de la solicitud.
          example: failed
        type:
          type: string
          description: Tipo de error ocurrido.
          example: Unprocessable Entity
        message_error:
          type: string
          description: Mensaje de error
          example: subject:invalid,amount:is empty,email:is empty,order:invalid

    Error400:
      type: object
      properties:
        status:
          type: string
          description: Estatus de la solicitud.
          example: failed
        type:
          type: string
          description: Tipo de error ocurrido.
          example: Unprocessable Entity
        message_error:
          type: string
          description: Mensaje de error
          example: subject:invalid,amount:is empty,email:is empty,order:invalid

    Error400CardDelete:
      type: object
      properties:
        status:
          type: string
          description: Estatus de la solicitud.
          example: failed
        type:
          type: string
          description: Tipo de error ocurrido.
          example: card
        message_error:
          type: string
          description: Mensaje de error
          example: is not valid

    Error400Event:
      type: object
      properties:
        status:
          type: string
          description: Estatus de la solicitud.
          example: failed
        type:
          type: string
          description: Tipo de error ocurrido.
          example: Unprocessable Entity
        message_error:
          type: string
          description: Mensaje de error
          example: subject:invalid,amount:is empty,email:is empty,order:invalid

    Error400get:
      type: object
      properties:
        status:
          type: string
          description: Estatus de la solicitud.
          example: failed
        type:
          type: string
          description: Tipo de error ocurrido.
          example: Unprocessable Entity
        message_error:
          type: string
          description: Mensaje de error
          example: subject:invalid,amount:is empty,email:is empty,order:invalid

    ErrorBanks400get:
      type: object
      properties:
        status:
          type: string
          description: Estatus de la solicitud.
          example: failed
        type:
          type: string
          description: Tipo de error ocurrido.
          example: Unprocessable Entity
        message_error:
          type: string
          description: Mensaje de error
          example: "Hay un problema con tu request"

    Error401:
      type: object
      properties:
        type:
          type: string
          description: Tipo de error ocurrido.
          example: Unauthorized
        message_error:
          type: object
          properties:
            error:
              type: string
              description: Mensaje de error
              example: waiting token public

    Error404:
      type: object
      properties:
        status:
          type: string
          description: Estatus de la solicitud.
          example: failed
        type:
          type: string
          description: Tipo de error ocurrido.
          example: Not Found
        id:
          type: string
          description: Información de id
          example: is not valid

    WalletResponseThird:
      description: "Datos de retorno de la carga a la wallet"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus de la carga a la wallet.Los posibles estados que puede obtener son los siguientes:
            - success
            - failed
          example: "success"
        identifier_wallet:
          type: string
          description: Identificador del movimiento de la billetera virtual de payku.
          example: "wab5f7232dafff18f9"
        identifier_payout:
          type: string
          description: Identificador del pago a tercero.
          example: "mpe33e36b01e8a11b9ee"

    WalletResponse:
      description: "Datos de retorno de la carga a la wallet"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus de la carga a la wallet.Los posibles estados que puede obtener son los siguientes:
            - success
          example: "success"
        identifier_wallet:
          type: string
          description: Identificador del movimiento de la billetera virtual de payku.
          example: "wab5f7232dafff18f9"

    WalletResponseGet:
      description: "Datos de retorno de la carga a la wallet"
      type: object
      properties:
        status:
          type: string
          description: |
            Estatus de la carga a la wallet. Los posibles estados que puede obtener son los siguientes:
            - success
          example: "success"
        current_id:
          type: string
          description: Identificador de la billetera virtual de payku "último movimiento".
          example: "wa8a6171ab83323c37"
        amount_available:
          type: integer
          description: Monto disponible en la biletera virtual de payku.
          example: 1766
        currency:
          type: string
          description: Descripción de la moneda.
          example: "PEN"
        filter:
          type: object
          description: Datos específicos para filtrar los datos.
          properties:
            page:
              type: integer
              description: Página actual.
              example: 1
            per_page:
              type: integer
              description: Cantidad de movimientos por página.
              example: 1000
            currency:
              type: string
              description: Descripción de la moneda.
              example: "PEN"
            id:
              type: string
              description: Identificador de la cuenta wallet.
              example: "wa8a6171ab83323c37"
        wallet_movements:
          type: array
          items:
            type: object
            description: Objeto de cobro para un lote de cobros.
            properties:
              id:
                type: string
                description: Identificador de la billetera virtual.
                example: "wa8a6171ab83323c37"
              order:
                type: string
                description: Identificador de la orden.
                example: "tme5"
              subject:
                type: string
                description: Descripción del movimiento.
                example: "tme5 asunto"
              created_at:
                type: string
                description: Fecha de ejecución del movimiento.
                example: "2023-06-09 20:07:02"
              income_expense:
                type: string
                description: Pago a tercero o retiro a tu cuenta.
                example: "expense"
              status:
                type: string
                description: Estatus del moviminto.
                example: "current"
              amount:
                type: string
                description: Monto del movimiento.
                example: "3680"
              actual_amount:
                type: string
                description: Monto del saldo actual.
                example: "1766"
              origin_liquidation:
                type: string
                description: Origen de la liquidación.
                example: null
              currency:
                type: string
                description: Descripción de la moneda.
                example: "PEN"
              payout:
                type: object
                description: Datos cuenta destino.
                properties:
                  id:
                    type: string
                    description: Identificador de la cuenta destino.
                    example: "war3999847529816f2"
                  phone:
                    type: string
                    description: Teléfono del titular de cuenta destino.
                    example: "987654321"
                  email:
                    type: string
                    description: Correo del titular de cuenta destino.
                    example: "test@test.com"
                  subject:
                    type: string
                    description: Estatus de la solicitud.
                    example: "subject order"
                  amount:
                    type: string
                    description: Monto a depositado en la cuenta destino.
                    example: "3680"
                  accountbank_rut:
                    type: string
                    description: "Documento de identidad del titular de la cuenta destino: DNI, Cédula de Extranjería (CE) o Pasaporte."
                    example: "111111111111"
                  accountbank_name:
                    type: string
                    description: Nombre del titular de la cuenta destino.
                    example: "test"
                  accountbank_type:
                    type: integer
                    description: Tipo de cuenta del banco destino.
                    example: 1
                  accountbank_num:
                    type: integer
                    description: Número de CCI (Código de Cuenta Interbancario) del banco destino o en caso de YAPE el número celular del beneficiario.
                    example: 123123123
                  accountbank_sbif:
                    type: string
                    description: Código del banco al que pertenece la cuenta bancaria.
                    example: "0001"
                  status:
                    type: string
                    description: Estatus del movimiento.
                    example: "pending"
                  update_at:
                    type: string
                    description: Fecha que se realizo la solicitud.
                    example: "2023-06-09 21:10:46"

    PayoutResponseGetv3:
      description: "Datos de retorno de la carga del payout"
      type: object
      properties:
        payout:
          type: object
          description: Datos cuenta destino.
          properties:
            id:
              type: string
              description: Identificador de la cuenta destino.
              example: "war3999847529816f2"
            phone:
              type: string
              description: Teléfono del titular de cuenta destino.
              example: "987654321"
            email:
              type: string
              description: Correo del titular de cuenta destino.
              example: "test@test.com"
            subject:
              type: string
              description: Estatus de la solicitud.
              example: "subject order"
            amount:
              type: string
              description: Monto a depositado en la cuenta destino.
              example: "3680"
            accountbank_rut:
              type: string
              description: "Documento de identidad del titular de la cuenta destino: DNI, Cédula de Extranjería (CE) o Pasaporte."
              example: "111111111111"
            accountbank_name:
              type: string
              description: Nombre del titular de la cuenta destino.
              example: "test"
            accountbank_type:
              type: integer
              description: Tipo de cuenta del banco destino.
              example: 1
            accountbank_num:
              type: integer
              description: Número de CCI (Código de Cuenta Interbancario) del banco destino o en caso de YAPE el número celular del beneficiario.
              example: 123123123
            accountbank_sbif:
              type: string
              description: Código del banco al que pertenece la cuenta bancaria.
              example: "0001"
            status:
              type: string
              description: |
                Estatus del movimiento.
                - pending  ("payout registrado")
                - processing  ("payout en proceso de pago")
                - success  ("payout depositado exitosamente")
                - banking_error  ("payout rechazado por el banco")
                - fraud_prevention  ("payout rechazado por compliance")
              example: "pending"
            update_at:
              type: string
              description: Fecha que se realizo la solicitud.
              example: "2023-06-09 21:10:46"
            origin_wallet:
              type: string
              description: Id de la wallet origen.
              example: "wa1933f37cdaf7d1c6"
            reason_rejection:
              type: string
              description: Motivo del rechazo.
              example: " Error CCA 51. Cuenta Beneficiario no Existe, error_creditor_account_not_found"
