openapi: 3.0.1
info:
  license:
    name: Khipu Open Data API
    url: https://khipu.com
  title: DemoBank
  description: ''
  version: v1.0
servers:
  - url: https://api.khipu.com
    description: Production
security:
  - JWT: []
  - Api-Key: []
paths:
  /v1/cl/banking/personal/demo-bank.khipu.com/token:
    post:
      summary: Account Link
      deprecated: true
      description: >-
        {% admonition type="warning" name="Deprecado" %} Este método está
        deprecado y se retirará en los próximos meses. Por favor, migre su
        implementación actual para usar [tokens
        OAuth](https://docs.khipu.com/data-solutions/open-finance/authentication)
        en su lugar. {% /admonition %}


        Éste método conecta con la cuenta del usuario en **DemoBank** y devuelve
        un token vinculado a esa cuenta que puede ser usado en operaciones
        posteriores, evitando la necesidad de enviar sus credenciales en texto
        plano al llamar a los servicios bancarios.
      operationId: fetchToken_1
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountAuthCredential'
        required: true
      responses:
        '200':
          description: >-
            Operación exitosa. Devuelve un objeto JSON con el token para la
            cuenta en el campo `Data`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponseOk'
        '400':
          description: Solicitud incorrecta
        '401':
          description: No autorizado - Credenciales inválidas o faltantes
        '404':
          description: No encontrado - Recurso no disponible
        '500':
          description: Error en el servicio remoto :(
  /v1/cl/banking/personal/demo-bank.khipu.com/transactions:
    post:
      summary: Transactions
      description: >-
        Éste método conecta con la cuenta del usuario especificada en
        **DemoBank** y devuelve las transacciones del día actual. El uso del
        campo `CallbackUrl` desencadenará un proceso asíncrono y los datos
        resultantes se enviarán más tarde al webhook especificado. Esta es la
        forma preferida de interactuar con nuestros servicios, ya que asegura
        que se harán todos los esfuerzos para extraer los datos y cumplir  con
        su solicitud dentro de un plazo razonable. Si desea la respuesta de
        inmediato, omita el campo `CallbackUrl` pero tenga en cuenta que puede
        provocar tiempos de espera dependiendo del tamaño del resultado de los
        datos y las condiciones de la red.
      operationId: fetchTransactions_1
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Request'
        required: true
      responses:
        '200':
          description: >-
            Operación exitosa. Retorna un objeto JSON con las transacciones de
            la cuenta especificada en el campo `Data`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionsResponseSyncOk'
        '202':
          description: >-
            Operación exitosa. Retorna un mensaje JSON informando el resultado
            de la operación solicitada. La respuesta completa, con el mismo
            esquema que la versión síncrona, se enviará al URL de callback
            proporcionado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionsResponseAsync'
        '400':
          description: Solicitud incorrecta
        '401':
          description: No autorizado - Credenciales inválidas o faltantes
        '404':
          description: No encontrado - Recurso no disponible
        '500':
          description: Error en el servicio remoto :(
components:
  securitySchemes:
    JWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
    Api-Key:
      type: apiKey
      in: header
      name: x-api-key
  schemas:
    AccountAuthCredential:
      type: object
      description: >-
        Valores necesarios para autenticar al usuario y obtener el token de
        acceso a la cuenta.
      required:
        - Username
        - Password
      properties:
        Username:
          maxLength: 12
          minLength: 1
          type: string
          description: >-
            Identificación del usuario con acceso a la cuenta del banco (RUN,
            DNI).
          example: 11.111.111-1
        Password:
          maxLength: 24
          minLength: 1
          type: string
          description: Clave de acceso del usuario a la cuenta del banco.
          example: wxyz1234!@#$
    error:
      type: object
      nullable: true
      description: >-
        Objeto con los detalles del error, utilizado cuando `Status=ERROR`. Si
        `Status=OK` este campo será `null`. Puedes leer una explicación completa
        de este objeto visitando [este
        enlace](https://docs.khipu.com/data-solutions/open-finance/codes-errors).
      example: null
      properties:
        Code:
          type: string
          description: Código interno del sistema que identifica el error.
          example: E201
        Type:
          type: string
          enum:
            - RETRY_IMMEDIATELY
            - DO_NOT_RETRY
            - WAIT_4_HOURS_BEFORE_RETRY
            - RETRY_AFTER_NOTIFICATION
          description: >-
            Indica cómo tratar este código de error específico, según el tipo de
            error.
          example: RETRY_IMMEDIATELY
        Description:
          type: string
          description: >-
            Descripción asociada al código de error, que explica el problema
            ocurrido y cómo solucionarlo.
          example: >-
            El servicio destino utilizado para la extracción de datos no se
            encuentra disponible.
    TokenResponseOk:
      type: object
      description: |-
        Objeto con la respuesta del servicio OpenData para la generación del
          token, que permite llamar a los servicios sin necesidad de enviar las
          credenciales de autenticación. Si la generación del token es exitosa, se
          colocará en el elemento `Data`.
      required:
        - OperationId
        - Status
        - Data
        - AdditionalInformation
        - Error
        - LifeSpan
      properties:
        OperationId:
          maxLength: 36
          type: string
          description: Identificador único de la operación.
          example: 6baf6c19-e485-463b-ae24-a821b025c8a4
        Status:
          type: string
          enum:
            - OK
          description: >-
            Estado de la operación, "OK" significa que las credenciales son
            correctas
              y se generó el enlace de la cuenta. (AccountLink)
          example: OK
        Data:
          type: object
          nullable: true
          description: >-
            Si la autenticación fue exitosa, incluye el enlace para la
            cuenta.(AccountLink)
          required:
            - AccountLink
          properties:
            AccountLink:
              type: string
              description: Token generado para acceder a la cuenta bancaria.
              example: >-
                dFyRCVYNM0aGb1LSR/0B8e+eSVr1Zf1xj9YHmMVoiZWk28XtWEyIxEbGXnr1EdvS+QBPzjweau7tbf5QlDv97IQ2jwfUB==
        AdditionalInformation:
          type: string
          description: >-
            Éste campo puede ser usado para mostrar información relevante
            específica  de la respuesta, por ejemplo indicando que el campo
            `Data` está incompleto.
          example: null
          nullable: true
        Error:
          $ref: '#/components/schemas/error'
          nullable: true
        LifeSpan:
          type: string
          description: |-
            Esté campo debe ser `null` en peticiones síncronas, ya que el token
              generado no tiene una duración definida. En peticiones asíncronas, indica
              el tiempo estimado en que el token generado será válido, en formato ISO 8601.
          example: null
          nullable: true
    AccountLinkCredential:
      type: object
      description: >-
        Usa este valor para llamar al servicio usando el enlace de cuenta
        pre-generado.
      required:
        - AccountLink
      properties:
        AccountLink:
          type: string
          description: Token generado para acceder a la cuenta bancaria.
          example: >-
            dFyRCVYNM0aGb1LSR/0B8e+eSVr1Zf1xj9YHmMVoiZWk28XtWEyIxEbGXnr1EdvS+QBPzjweau7tbf5QlDv97IQ2jwfUB==
    AccountNumber:
      type: string
      maxLength: 20
      description: Número de cuenta bancaria.
      example: '000011887755'
    RequestDataAccountCredential:
      type: object
      description: >-
        Información necesaria para conectarse a la cuenta del banco del usuario
        y
          extraer datos. Los campos obligatorios indican los valores que son necesarios
          para identificar la cuenta deseada.
      required:
        - AccountNumber
      properties:
        AccountCredential:
          deprecated: true
          description: >-
            {% admonition type="warning" name="Atención" %} El uso de este campo
            es obligatorio al usar autenticación con Api Key. {% /admonition %}
            Autenticación de la cuenta del usuario para realizar operaciones.
          oneOf:
            - $ref: '#/components/schemas/AccountLinkCredential'
            - $ref: '#/components/schemas/AccountAuthCredential'
        AccountNumber:
          $ref: '#/components/schemas/AccountNumber'
    Request:
      type: object
      description: Objeto para realizar una solicitud al servicio OpenData.
      required:
        - RequestData
      properties:
        RequestData:
          $ref: '#/components/schemas/RequestDataAccountCredential'
        CallbackUrl:
          maxLength: 255
          type: string
          description: >-
            URL al que se enviará la respuesta del servicio usando el método
            POST.
          example: https://my-api.my-business.com/api/open-data-response
    CreditDebitIndicator:
      type: string
      enum:
        - Credit
        - Debit
      description: Indica si la transacción es un abono o un cargo. (Credit o Debit)
      example: Credit
    AmountTransaction:
      type: object
      description: Cantidad de dinero en la entrada de transacción de efectivo.
      required:
        - Amount
        - Currency
      properties:
        Amount:
          type: number
          format: float
          description: >-
            Monto de unidades monetarias especificado en una moneda activa donde
            la unidad de moneda es explícita y cumple con ISO 4217.
          example: 10000
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Código asignado a una moneda por una Agencia de Mantenimiento bajo
            un esquema
              internacional de identificación, como se describe en la última edición de
              la norma internacional ISO 4217 "Códigos para la representación de monedas
              y fondos".
          example: CLP
    AmountBalanceTransaction:
      type: object
      description: >-
        Balance de dinero del saldo de efectivo después de que se aplica una
        entrada de dinero a la cuenta.
      required:
        - Amount
        - Currency
      properties:
        Amount:
          type: number
          format: float
          description: >-
            Monto de unidades monetarias especificado en una moneda activa donde
            la unidad de moneda es explícita y cumple con ISO 4217.
          example: 10000
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Código asignado a una moneda por una Agencia de Mantenimiento bajo
            un esquema
              internacional de identificación, como se describe en la última edición de
              la norma internacional ISO 4217 "Códigos para la representación de monedas
              y fondos".
          example: CLP
    BalanceTransaction:
      type: object
      description: |-
        Conjunto de elementos utilizados para definir el saldo como una
          representación numérica de los aumentos y disminuciones netas en una cuenta
          después de que se aplica una transacción a la cuenta.
      required:
        - CreditDebitIndicator
        - Type
        - Amount
      properties:
        CreditDebitIndicator:
          $ref: '#/components/schemas/CreditDebitIndicator'
        Type:
          type: string
          enum:
            - ClosingAvailable
            - ClosingBooked
            - ClosingCleared
            - Expected
            - ForwardAvailable
            - Information
            - InterimAvailable
            - InterimBooked
            - InterimCleared
            - OpeningAvailable
            - OpeningBooked
            - OpeningCleared
            - PreviouslyClosedBooked
          description: Balance type, in a coded form.
          example: ClosingBooked
        Amount:
          $ref: '#/components/schemas/AmountBalanceTransaction'
    BankTransactionCode:
      type: object
      description: >-
        Conjunto de elementos utilizados para identificar completamente el tipo
        de
          transacción subyacente que resulta en una entrada.
      required:
        - Code
        - SubCode
      properties:
        Code:
          type: string
          pattern: ^[A-Z]{4,4}$
          description: Specifies the family within a domain.
          example: RCDT
        SubCode:
          type: string
          pattern: ^[A-Z]{4,4}$
          description: Specifies the sub-product family within a specific family.
          example: DMCT
    CardInstrument:
      type: object
      description: >-
        Conjunto de elementos para describir la tarjeta utilizada en la
        transacción.
      required:
        - CardSchemeName
      properties:
        AuthorisationType:
          type: string
          enum:
            - ConsumerDevice
            - Contactless
            - None
            - PIN
          description: The card authorisation type.
          example: Contactless
        CardSchemeName:
          type: string
          enum:
            - AmericanExpress
            - Diners
            - Discover
            - MasterCard
            - VISA
          description: Name of the card scheme.
          example: AmericanExpress
        Identification:
          maxLength: 34
          type: string
          description: >-
            Identificación asignada por una institución para identificar la
            tarjeta  utilizada en la transacción. Esta identificación es
            conocida por  el propietario de la cuenta y puede estar enmascarada.
          example: BLACK CARD ****6328
        Name:
          maxLength: 70
          type: string
          description: Name of the cardholder using the card instrument.
          example: JOHN DOE
    ChargeAmount:
      type: object
      description: Cargos a ser pagados por el portador del cargo.
      required:
        - Amount
        - Currency
      properties:
        Amount:
          type: number
          format: float
          description: >-
            Monto de unidades monetarias especificado en una moneda activa donde
            la unidad de moneda es explícita y cumple con ISO 4217.
          example: 10000
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Código asignado a una moneda por una Agencia de Mantenimiento bajo
            un esquema
              internacional de identificación, como se describe en la última edición de
              la norma internacional ISO 4217 "Códigos para la representación de monedas
              y fondos".
          example: CLP
    CreditorAccount:
      type: object
      description: |-
        Identificación inequívoca de la cuenta del acreedor, en el caso de una
          transacción de débito.
      properties:
        Identification:
          maxLength: 256
          type: string
          description: >-
            Identificación asignada por una institución para identificar una
            cuenta.
              Esta identificación es conocida por el propietario de la cuenta.
          example: '99056723'
        Name:
          maxLength: 350
          type: string
          description: >-
            El nombre de la cuenta es el nombre o los nombres del propietario(s)
            de la
              cuenta representados a nivel de cuenta, tal como se muestra en los canales
              en línea del ASPSP. Nota, el nombre de la cuenta no es el nombre del
              producto o el apodo de la cuenta.
          example: JOHN DOE
        SchemeName:
          type: string
          description: >-
            Name of the identification scheme, in a coded form as published in
            an external list. Nombre del esquema de identificación, en una forma
            codificada como se
              publica en una lista externa.
          example: BBAN
        SecondaryIdentification:
          maxLength: 34
          type: string
          description: |-
            Identificación secundaria de la cuenta, según lo asignado por la
              institución que presta el servicio de la cuenta. Esto puede ser utilizado
              por sociedades de construcción para identificar adicionalmente cuentas con
              un número de rollo (además de una combinación de código de clasificación y
              número de cuenta).
          example: 1373-86353478
    PostalAddress:
      type: object
      description: >-
        Información que localiza e identifica una dirección específica, según lo
        definido por los servicios postales.
      properties:
        AddressLine:
          type: array
          maxItems: 7
          minItems: 0
          description: >-
            Información que localiza e identifica una dirección específica, 
            según lo definido por los servicios postales, presentada en texto de
            formato libre.
          items:
            maxLength: 70
            type: string
            example: AGUSTINAS 1234, SANTIAGO
        AddressType:
          type: string
          enum:
            - Business
            - Correspondence
            - DeliveryTo
            - MailTo
            - POBox
            - Postal
            - Residential
            - Statement
          description: Identifica la naturaleza de la dirección postal.
          example: Business
        BuildingNumber:
          maxLength: 16
          type: string
          description: Número que identifica la posición de un edificio en una calle.
          example: '1234'
        Country:
          type: string
          pattern: ^[A-Z]{2,2}$
          description: Nación independiente con su propio gobierno.
          example: CL
        CountrySubDivision:
          maxLength: 35
          type: string
          description: >-
            Identifica una subdivisión de un país, como estado, región o
            condado.
          example: REGION METROPOLITANA
        Department:
          maxLength: 70
          type: string
          description: Identtificación de una división de una gran organización o edificio.
          example: OFICINA SANTIAGO CENTRO
        PostCode:
          maxLength: 16
          type: string
          description: |-
            Identificador que consiste en un grupo de letras y/o números que se
              añade a una dirección postal para ayudar en la clasificación del correo.
          example: '8340422'
        StreetName:
          maxLength: 70
          type: string
          description: Nombre de una calle o vía pública.
          example: CALLE MONEDA
        SubDepartment:
          maxLength: 70
          type: string
          description: >-
            Identificación de una subdivisión de una gran organización o
            edificio.
          example: BANCA PERSONAS
        TownName:
          maxLength: 35
          type: string
          description: >-
            Nombre de una zona urbanizada, con límites definidos y un gobierno
            local.
          example: SANTIAGO
    CreditorAgent:
      type: object
      description: Institución financiera que presta servicios a una cuenta del acreedor.
      properties:
        Identification:
          maxLength: 35
          type: string
          description: >-
            Identificación única e inequivoca de una institución financiera o
            una sucursal de una institución financiera.
          example: DEMO BANK
        Name:
          maxLength: 140
          type: string
          description: >-
            Nombre por el cual se conoce a un agente y que normalmente se
            utiliza para identificar a ese agente.
          example: DEMO BANK CHILE
        SchemeName:
          type: string
          description: >-
            Nombre del esquema de identificación, en una forma codificada como
            se
              publica en una lista externa.
          example: BICFI
        PostalAddress:
          $ref: '#/components/schemas/PostalAddress'
    InstructedAmount:
      type: object
      description: >-
        Cantidad de dinero a ser transferida entre el deudor y acreedor, antes
        de la
          deducción de cargos, expresada en la moneda ordenada por la parte iniciadora.
      required:
        - Amount
        - Currency
      properties:
        Amount:
          type: number
          format: float
          description: >-
            Monto de unidades monetarias especificado en una moneda activa donde
            la unidad de moneda es explícita y cumple con ISO 4217.
          example: 5000
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Código asignado a una moneda por una Agencia de Mantenimiento bajo
            un esquema
              internacional de identificación, como se describe en la última edición de
              la norma internacional ISO 4217 "Códigos para la representación de monedas
              y fondos".
          example: USD
    CurrencyExchange:
      type: object
      description: >-
        Conjunto de elementos utilizados para proporcionar detalles sobre el
        cambio de divisas.
      required:
        - ExchangeRate
        - SourceCurrency
      properties:
        ContractIdentification:
          maxLength: 35
          type: string
          description: >-
            Identificación única para identificar de forma inequívoca el
            contrato de
              cambio de divisas.
          example: '84783113'
        ExchangeRate:
          type: string
          description: >-
            Factor usado para convertir un monto de una moneda a otra.  Esto
            refleja el precio al que se compró una moneda con otra moneda.  Uso:
            ExchangeRate expresa la relación entre UnitCurrency y 
            QuotedCurrency (ExchangeRate = UnitCurrency/QuotedCurrency).
          example: '691.907186'
        QuotationDate:
          type: string
          format: date-time
          description: Fecha y hora en que se cotiza un tipo de cambio.
          example: 2019-05-15T09:45:00-0400
        SourceCurrency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Moneda desde la que se convertirá un monto en una conversión de
            divisas.
          example: USD
        TargetCurrency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Moneda a la que se convertirá un monto en una conversión de divisas.
          example: CLP
        UnitCurrency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Moneda en la que se expresa la tasa de cambio en un cambio de
            divisas. En el ejemplo 1USD = xxxCLP, la moneda unitaria es USD.
          example: USD
        InstructedAmount:
          $ref: '#/components/schemas/InstructedAmount'
    DebtorAccount:
      type: object
      description: |-
        Identificación inequívoca de la cuenta del deudor, en el caso de una
          transacción de crédito.
      properties:
        Identification:
          maxLength: 256
          type: string
          description: >-
            Identificación asignada por una institución para identificar una
            cuenta.
              Esta identificación es conocida por el propietario de la cuenta.
          example: '99056723'
        Name:
          maxLength: 350
          type: string
          description: >-
            Nombre de la cuenta es el nombre o los nombres del propietario(s) de
            la
              cuenta representada a nivel de cuenta, como se muestra en los canales
              en línea del ASPSP. Nota, el nombre de la cuenta no es el nombre del
              producto o el apodo de la cuenta.
          example: JOHN DOE
        SchemeName:
          type: string
          description: >-
            Name of the identification scheme, in a coded form as published in
            an external list. Nombre del esquema de identificación, en un
            formato codificado
              publicado en una lista externa.
          example: BBAN
        SecondaryIdentification:
          maxLength: 34
          type: string
          description: |-
            Identificación secundaria de la cuenta, asignada por la
              institución que presta servicios a la cuenta. Esto puede ser utilizado
              por sociedades de construcción para identificar adicionalmente cuentas
              con un número de rollo (además de una combinación de código de orden y
              número de cuenta).
          example: 1373-86353478
    DebtorAgent:
      type: object
      description: Institución financiera que presta servicios a una cuenta del deudor.
      properties:
        Identification:
          maxLength: 35
          type: string
          description: >-
            Identificación única e inequívoca de una institución financiera o
            una sucursal de una institución financiera.
          example: DEMO BANK
        Name:
          maxLength: 140
          type: string
          description: >-
            Nombre por el cual se conoce a un agente y que normalmente se
            utiliza para identificar a ese agente.
          example: DEMO BANK CHILE
        SchemeName:
          type: string
          description: >-
            Nombre del esquema de identificación, en un formato codificado como
            se
              publica en una lista externa.
          example: BICFI
        PostalAddress:
          $ref: '#/components/schemas/PostalAddress'
    MerchantDetails:
      type: object
      description: Detalles de la entidad comercial involucrada en la transacción.
      properties:
        MerchantCategoryCode:
          maxLength: 4
          minLength: 3
          type: string
          description: >-
            Código de categoría conforme a ISO 18245, relacionado con el tipo
            de  servicios o bienes que provee el comercio para la transacción.
          example: '2741'
        MerchantName:
          maxLength: 350
          type: string
          description: Nombre por el cual se conoce al comercio.
          example: MI COMERCIO
    ProprietaryBankTransactionCode:
      type: object
      description: >-
        Conjunto de elementos para identificar completamente un código de
        transacción bancaria propietario.
      required:
        - Code
      properties:
        Code:
          maxLength: 35
          type: string
          description: >-
            Código de transacción bancaria propietario para identificar la
            transacción subyacente.
          example: TRANSFERENCIA
        Issuer:
          maxLength: 35
          type: string
          description: >-
            Identificación del emisor del código de transacción bancaria
            propietario.
          example: DEMO BANK
    Transaction:
      type: array
      minItems: 0
      description: Proveé más detalles sobre una entrada en el reporte.
      items:
        type: object
        required:
          - AccountId
          - BookingDateTime
          - CreditDebitIndicator
          - Status
          - Amount
        properties:
          AccountId:
            maxLength: 40
            type: string
            description: >-
              Identificador único e inmutable utilizado para identificar el
              recurso de cuenta. Éste identificador no tiene significado para el
              propietario de la cuenta.
            example: '873458'
          AddressLine:
            maxLength: 70
            type: string
            description: >-
              Información que localiza e identifica una dirección específica
              para una entrada de transacción, que se presenta en texto de
              formato libre.
            example: SUCURSAL SANTIAGO CENTRO
          BookingDateTime:
            type: string
            format: date-time
            description: >-
              Date and time when a transaction entry is posted to an account on
              the account servicer's books. Usage: Booking date is the expected
              booking date, unless the status is booked, in which case it is the
              actual booking date. Fecha y hora en que una entrada de
              transacción es registrada en la cuenta.  Uso: La fecha de registro
              es la fecha de registro esperada, a menos que el estado sea
              "registrado", en cuyo caso es la fecha de registro real.
            example: 2017-07-22T00:00:00-0400
          CreditDebitIndicator:
            $ref: '#/components/schemas/CreditDebitIndicator'
          StatementReference:
            type: array
            minItems: 0
            description: >-
              Referencia única para el estado de cuenta. Esta referencia puede
              ser opcionalmente enviada si está disponible.
            items:
              maxLength: 35
              type: string
              example: a2c557c63450
          Status:
            type: string
            enum:
              - Booked
              - Pending
              - Rejected
            description: >-
              Estado de la transacción en los libros contables del prestador de
              servicios de la cuenta.
            example: Booked
          TransactionId:
            maxLength: 210
            type: string
            description: >-
              Identificador único para la transacción dentro de una institución
              de servicio. Éste identificador es único e inmutable.
            example: c830d0c9a0904ea6badbaf8e25ff6e87
          TransactionInformation:
            maxLength: 500
            type: string
            description: >-
              Detalles adicionales de la transacción. Esta es la narrativa de la
              transacción, que es texto no estructurado.
            example: PAGO DE CUENTAS
          TransactionMutability:
            type: string
            enum:
              - Mutable
              - Immutable
            description: Espécifica la mutabilidad del registro de transacción.
            example: Immutable
          TransactionReference:
            maxLength: 210
            type: string
            description: Referencia única para la transacción.
            example: 09cce92d-494b-4f29-8584-6a0409a052c7
          ValueDateTime:
            type: string
            format: date-time
            description: >-
              Fecha y hora en que los activos se vuelven disponibles para el
              propietario de la cuenta en caso de una entrada de crédito, o
              dejan de estar disponibles para el propietario de la cuenta en
              caso de una entrada de débito. Uso: Si el estado de la entrada de
              transacción es pendiente y ValueDateTime está presente, entonces
              ValueDateTime se refiere a una fecha esperada/solicitada. Para
              entradas de transacción sujetas a disponibilidad/flotación y para
              las cuales se proporciona información de disponibilidad,
              ValueDateTime no debe ser utilizada. En este caso, el componente
              de disponibilidad identifica el número de días de disponibilidad.
            example: 2017-07-21T17:32:28-0400
          Amount:
            $ref: '#/components/schemas/AmountTransaction'
          Balance:
            $ref: '#/components/schemas/BalanceTransaction'
          BankTransactionCode:
            $ref: '#/components/schemas/BankTransactionCode'
          CardInstrument:
            $ref: '#/components/schemas/CardInstrument'
          ChargeAmount:
            $ref: '#/components/schemas/ChargeAmount'
          CreditorAccount:
            $ref: '#/components/schemas/CreditorAccount'
          CreditorAgent:
            $ref: '#/components/schemas/CreditorAgent'
          CurrencyExchange:
            $ref: '#/components/schemas/CurrencyExchange'
          DebtorAccount:
            $ref: '#/components/schemas/DebtorAccount'
          DebtorAgent:
            $ref: '#/components/schemas/DebtorAgent'
          MerchantDetails:
            $ref: '#/components/schemas/MerchantDetails'
          ProprietaryBankTransactionCode:
            $ref: '#/components/schemas/ProprietaryBankTransactionCode'
          SupplementaryData:
            type: array
            description: >-
              Información adicional que no puede ser capturada en los campos
              estructurados y/o en cualquier otro bloque específico.
            items: {}
    DataTransaction:
      type: object
      nullable: true
      description: Contener para las transacciones. Puede ser un array vacío.
      properties:
        Transaction:
          $ref: '#/components/schemas/Transaction'
    TransactionsResponseSyncOk:
      type: object
      description: |-
        Objeto con la respuesta del servicio OpenData para las operaciones de
          transacciones, en modo síncrono, cuando `Status` es "OK".
      required:
        - OperationId
        - Status
        - Data
        - AdditionalInformation
        - Error
        - LifeSpan
      properties:
        OperationId:
          maxLength: 36
          type: string
          description: Identificador único de la operación.
          example: 6baf6c19-e485-463b-ae24-a821b025c8a4
        Status:
          type: string
          enum:
            - OK
            - ERROR
          description: |-
            Estado de la operación. `OK` significa que el servicio se ejecutó
              correctamente, incluso si no devuelve datos. `ERROR` indica que ocurrió
              algo que impidió la finalización exitosa del proceso.
          example: OK
        Data:
          $ref: '#/components/schemas/DataTransaction'
          nullable: true
        AdditionalInformation:
          type: string
          description: >-
            Éste campo puede ser usado para mostrar información relevante
            específica
              de la respuesta, por ejemplo indicando que el campo `Data` está incompleto.
          example: null
          nullable: true
        Error:
          $ref: '#/components/schemas/error'
          nullable: true
        LifeSpan:
          type: string
          description: '`null` en operaciones síncronas.'
          example: null
          nullable: true
    TransactionsResponseAsync:
      type: object
      description: |-
        Objeto con la respuesta del servicio OpenData para las operaciones de
          transacciones, en modo asíncrono.
      required:
        - OperationId
        - Status
        - Data
        - AdditionalInformation
        - Error
        - LifeSpan
      properties:
        OperationId:
          maxLength: 36
          type: string
          description: Identificador único de la operación.
          example: 6baf6c19-e485-463b-ae24-a821b025c8a4
        Status:
          type: string
          description: >-
            Estado de la operación. Cuando se realizan solicitudes asíncronas,
            siempre devolverá `OK`.
          example: OK
        Data:
          type: object
          description: '`null` en operaciones asíncronas.'
          example: null
        AdditionalInformation:
          type: string
          description: >-
            Mensaje de la operación, puede ser utilizado para mostrar
            información adicional.
          example: Los datos serán enviados a la URL de callback.
        Error:
          type: object
          description: '`null` en operaciones asíncronas.'
          example: null
        LifeSpan:
          type: string
          format: date-time
          description: >-
            Fecha máxima estimada de entrega para solicitudes asíncronas, en
            formato de fecha ISO 8601, UTC.
          example: 2017-07-22T00:00:00-0400
