swagger: "2.0"
schemes:
  - https
host: www.afterbanks.com
basePath: /
info:
  description: La estandarización de la conexión con cualquier banco en tiempo real.
  title: Afterbanks API
  version: 3.0.0
  x-apisguru-categories:
    - financial
  x-description-language: es
  x-logo:
    backgroundColor: "#FFFFFF"
    url: https://twitter.com/AfterbanksAPI/profile_image?size=original
  x-origin:
    - format: swagger
      url: https://www.afterbanks.com/api/documentation/es/swagger.yaml
      version: "2.0"
  x-providerName: afterbanks.com
produces:
  - application/json
paths:
  /forms:
    get:
      description: |
        Obtén una lista completa de los bancos soportados, así como los nombres de los campos necesarios para dibujar un formulario de login similar al oritinal del banco.
      parameters:
        - description: Código del país, formato ISO 3166-1 alpha-2 (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Por ejemplo ES para España. Si no se proporciona ningún código, se devolverá la lista completa.
          in: query
          name: country_code
          required: false
          type: string
      responses:
        "200":
          description: Array con el listado de bancos soportados y la información necesaria para dibujar su formulario de login
          schema:
            items:
              $ref: "#/definitions/Forms"
            type: array
        default:
          description: Unexpected error
          schema:
            $ref: "#/definitions/Error"
      summary: Lista de bancos soportados
      tags:
        - forms
  /me:
    post:
      description: Devuelve información sobre mi licencia y uso de llamadas
      parameters:
        - description: Licencia que identifica al cliente. Si no tienes una, puedes solicitarla en https://www.afterbanks.com
          in: query
          name: servicekey
          required: true
          type: string
      responses:
        "200":
          description: Profile information for a user
          schema:
            $ref: "#/definitions/me"
        default:
          description: Unexpected error
          schema:
            $ref: "#/definitions/Error"
      summary: Información de uso de mi licencia
      tags:
        - User
  /serviceV3:
    post:
      description: |
        Este endpoint devuelve el listado de productos y los movimientos para cada uno de los productos desde la fecha solicidata hasta el día actual. Existe un sandbox donde probar llamadas: https://www.afterbanks.com/sandbox/
      parameters:
        - description: Licencia que identifica al cliente. Si no tienes una, puedes solicitarla en https://www.afterbanks.com
          in: query
          name: servicekey
          required: true
          type: string
        - description: Identificador único para cada banco. El listado de bancos soportados se obtiene de https://www.afterbanks.com/forms/
          in: query
          name: service
          required: true
          type: string
        - description: Algunos bancos, en su formulario de login, solicitan el tipo de documento. En estos casos, se deberá identificar un número entero (de 0 a 4), que corresponde con su posición en el formulario de login del banco.
          format: int32
          in: query
          name: documentType
          required: false
          type: number
        - description: Usuario
          in: query
          name: user
          required: true
          type: string
        - description: Contraseña
          in: query
          name: pass
          required: true
          type: string
        - description: Algunos bancos utilizan una segunda contraseña.
          in: query
          name: pass2
          required: false
          type: string
        - description: Nombres de productos bancarios (cuentas corrientes, tarjetas, etc), separados por coma. Cabe destacar que en la primera llamada a la API, aún no conocemos los nombres de los productos que el usuario tiene contratados, por lo que este parámetro estará vacío.
          in: query
          name: products
          required: false
          type: string
        - description: Fecha desde la que queremos obtener los movimientos en formato dd-mm-aaaa. Obligatorio cuando el valor de "products" es distinto de GLOBAL.
          in: query
          name: startdate
          required: true
          type: string
      responses:
        "200":
          description: Array con listado de productos bancarios y movimientos.
          schema:
            items:
              $ref: "#/definitions/serviceV3"
            type: array
        default:
          description: Unexpected error
          schema:
            $ref: "#/definitions/Error"
      summary: Posición global y movimientos hasta una fecha dada.
      tags:
        - serviceV3
definitions:
  Error:
    properties:
      code:
        description: "Posibles valores: description:  1, Genérico; 2, La web del banco esta fuera de servicio; 3, Algún dato de conexión no es válido; 4, La cuenta solicitada no existe; 5, Conexion cortada, reintente la solicitud; 6, El usuario debe acceder a la web del banco a realizar una acción; 50, Parametro incorrecto en la llamada a la API"
        format: int32
        type: integer
      message:
        description: Texto detallando el error encontrado, en el idioma del banco
        type: string
    type: object
  Forms:
    properties:
      business:
        description: Valor booleano. Hay bancos que tienen accesos diferentes para particulares y para empresas. Si el valor es 1, indica que es acceso de empresas
        type: boolean
      country_code:
        description: Código del país, formato ISO 3166-1 alpha-2 (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
        type: string
      documentType:
        description: 'Lista de valores posibles para el campo de "tipo de documento", separado por el caracter "|" (por ejemplo: NIF|Pasaporte|Tarjeta de residencia). En el caso de que el banco no requiera de esta información en su formulario de login, el valor es 0'
        type: string
      fullname:
        description: Nombre completo del banco.
        type: string
      image:
        description: URL del icono del banco en formato PNG transparente y resolución 128x128.
        type: string
      pass:
        description: Texto que acompaña al input box de password
        type: string
      pass2:
        description: Texto que acompaña al input box del segundo password. En el caso de que el banco no requiera de esta información en su formulario de login, el valor es 0
        type: string
      pass2desc:
        description: Texto de ayuda para rellenar el inputbox de segundo password, en caso de que el formulario original del banco tenga algún texto de ayuda.
        type: string
      pass2type:
        description: Texto que acompaña al input box del segundo password. En el caso de que el banco no requiera de esta información en su formulario de login, el valor es 0
        type: string
      passdesc:
        description: Texto de ayuda para rellenar el inputbox de password, en caso de que el formulario original del banco tenga algún texto de ayuda.
        type: string
      passtype:
        description: Texto que acompaña al input box de password
        type: string
      service:
        description: Identificador único del banco en la API.
        type: string
      swift:
        description: Código SWIFT, formato ISO 9362 (https://en.wikipedia.org/wiki/ISO_9362).
        type: string
      user:
        description: Texto que acompaña al input box de usuario
        type: string
      userdesc:
        description: Texto de ayuda para rellenar el inputbox de usuario, en caso de que el formulario original del banco tenga algún texto de ayuda.
        type: string
      usertype:
        description: Texto que acompaña al input box de usuario
        type: string
    type: object
  Transactions:
    properties:
      amount:
        description: Importe de la transacción
        format: float
        type: number
      balance:
        description: Saldo del producto en el instante posterior a la transacción
        format: float
        type: number
      categoryId:
        description: "Id de categoría. Solo para las servicekeys con la opción contratada. Listado de categorías: https://www.afterbanks.com/serviceV3/categories/?country_code=ES"
        format: int
        type: number
      date:
        description: Fecha del movimiento en formato dd-mm-yyyy
        format: date
        type: string
      date2:
        description: Fecha de valor en formato dd-mm-yyyy
        format: date
        type: string
      description:
        description: Descricipción de la transacción
        type: string
      transactionId:
        description: Identificador único de la transacción de 32 caracteres
        type: string
    type: object
  me:
    properties:
      date_renewal:
        description: Fecha de renovación del contador de llamadas, en formato dd-mm-yyyy
        format: date
        type: string
      remaining_calls:
        description: Llamadas restantes para tu ciclo de facturación actual.
        format: int32
        type: integer
    type: object
  serviceV3:
    properties:
      arranged_balance:
        description: Saldo dispuesto
        format: float
        type: number
      balance:
        description: Saldo disponible del producto. Siempre existirá este saldo, el resto de valores balance podrán existir o no.
        format: float
        type: number
      balance_credit_granted:
        description: Saldo concedido
        format: float
        type: number
      balance_value:
        description: Saldo valor
        format: float
        type: number
      countable_balance:
        description: Saldo contable
        format: float
        type: number
      currency:
        description: Código de la divisa en formato [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).
        type: string
      description:
        description: Nombre del producto. En ocasiones es un alias que ha asignado el usuario, o puede coincidir con el valor de product.
        type: string
      product:
        description: Identificador único para un producto. Por ejemplo, número de cuenta bancaria o numeración de tarjeta de crédito.
        type: string
      transactions:
        items:
          $ref: "#/definitions/Transactions"
        type: array
      type:
        description: 'Tipo de producto. Los valores más habituales son "checking" para cuenta corriente, "card" para tarjeta de crédito, "debit" para tarjeta de débito y "loan" para préstamos. Los valores posibles son: card, checking, debit, deposit, insurance, investment, lineofcredit, loan, other, pensionplan, saving, securities, stocks'
        type: string
    type: object
