openapi: 3.0.0
info:
  title: BANKSapi API Reference
  description: ""
  contact: {}
  version: "2.0"
servers:
  - url: https://banksapi.io
    variables: {}
paths:
  /auth/mgmt/v1/tenants/{tenant-name}/users:
    post:
      tags:
        - Auth
      summary: Create User
      description: Creates a technical user corresponding (one-to-one) a tenant's user. Users are needed to use BANKSapi's core features like adding accounts or performing payments. After creating a user, they're automatically activated.
      operationId: CreateUser
      parameters:
        - $ref: '#/components/parameters/tenant-name'
      requestBody:
        $ref: '#/components/requestBodies/CreateUser'
      responses:
        "201":
          description: Returns with a location header under which the user data can be retrieved.
          headers:
            Location:
              schema:
                type: string
                example: https://banksapi.io/auth/tenants/demo/users/8fb65b0e-9418-412d-9865-b960ef81b43f
      deprecated: false
    get:
      tags:
        - Auth
      summary: Get Users
      description: Get all activated users
      operationId: GetUsers
      parameters:
        - $ref: '#/components/parameters/tenant-name'
        - name: includeInactive
          in: query
          description: Whether or not to also include inactive users
          schema:
            type: boolean
            example: true
            default: false
      responses:
        "200":
          description: Returns an array of User
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
              example:
                - userReference: 1c5b33f6-9c4d-11e6-ba80-480fcfb9550f
                  username: demo-user
      deprecated: false
  /auth/oauth2/token:
    post:
      tags:
        - Auth
      summary: Create Token
      description: Creates a client or user token valid for 24 hours. Client tokens are needed for administrative use cases such as creating users. User tokens are needed when creating or querying banking accounts.
      operationId: CreateToken
      requestBody:
        description: The request body contains form object with following parameters
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreateToken'
            example:
              grant_type: client_credentials
              scope: http://banksapi.io/provider/read
        required: true
      responses:
        "200":
          description: Returns token object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
              example:
                scope: http://banksapi.io/customer/read http://banksapi.io/customer/modify
                tenant: demo
                client: demo-client
                user: 1fad71ee-6dbf-49c7-9cb2-fff588de011f
                additionalData:
                  username: demouser
                validTo: "2021-10-16 10:46:47"
                access_token: 0defaced-1337-d00d-c0de-face8badcafe
                token_type: Bearer
        "401":
          description: The basic authorization header was not sent or the value was incorrect.
      deprecated: false
      security:
        - basicAuth: []
        - httpBearer: []
  /auth/oauth2/token/one:
    post:
      tags:
        - Auth
      summary: Create ONE/Connect Token
      description: Creates a ONE/Connect token using API key authentication. This endpoint is specifically for ONE/Connect integrations and uses a different authentication method than the standard token endpoint.
      operationId: CreateOneConnectToken
      parameters:
        - name: Authorization
          description: ONE/Connect API-Key provided using the "Basic" authentication scheme.
          in: header
          required: true
          schema:
            type: string
          example: Basic NDJlMjNhOD...NzU0ZDc1NA==
      responses:
        "200":
          description: Returns token object for ONE/Connect
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
              example:
                scope: http://banksapi.io/provider/read http://banksapi.io/customer/read http://banksapi.io/customer/modify http://banksapi.io/customer/ueberweisung auth/tenants/users/create
                tenant: oneconnect
                client: oneconnectClient
                user: 414c52e4-4a10-490d-bee1-53c70d9671ff
                additionalData:
                  username: 5b62aa28-d2cc-41ce-b388-4179c9d9ad45
                validTo: "2023-11-21 13:16:38"
                access_token: 0f194994-b4fa-461a-8757-7909aa9d37e9
                token_type: Bearer
      deprecated: false
      security:
        - ApiKeyAuth: []
  /auth/mgmt/v1/tenants:
    get:
      tags:
        - Auth
      summary: Get Tenants
      description: Get all tenants
      operationId: GetTenants
      responses:
        "200":
          description: Returns an array of Tenant
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tenant'
              example:
                - name: demo
                  description: A Tenant for demonstration purposes
      deprecated: false
  /auth/mgmt/v1/tenants/{tenant-name}/users/{user-id}:
    get:
      tags:
        - Auth
      summary: Get User
      description: This function can be used to retrieve a single activated user.
      operationId: GetUser
      parameters:
        - $ref: '#/components/parameters/tenant-name'
        - $ref: '#/components/parameters/user-id'
      responses:
        "200":
          description: Returns a User object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
              example:
                userReference: 1c5b33f6-9c4d-11e6-ba80-480fcfb9550f
                username: demo-user
      deprecated: false
    delete:
      tags:
        - Auth
      summary: Delete User
      description: Deletes a single user. The user must be deactivated beforehand.
      operationId: DeleteUser
      parameters:
        - $ref: '#/components/parameters/tenant-name'
        - $ref: '#/components/parameters/user-id'
        - name: reftype
          in: query
          description: Reference type of user ID ("id" (default) or "username")
          schema:
            type: string
            example: username
      responses:
        "200":
          description: Returns HTTP status of 200 (OK)
        "405":
          description: Returns HTTP status of 405 (Method Not Allowed) if user has not been deactivated.
    put:
      tags:
        - Auth
      summary: Change user details
      description: Changes user details, such as username, first name or last name
      operationId: ChangeUserDetails
      parameters:
        - $ref: '#/components/parameters/tenant-name'
        - $ref: '#/components/parameters/user-id'
        - name: reftype
          in: query
          description: Reference type of user ID ("id" (default) or "username")
          schema:
            type: string
            example: username
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeUserDetails'
            example:
              username: demouser
              firstname: demo
              lastname: user
      responses:
        "200":
          description: Change successful
        "409":
          description: Username already exists
  /auth/mgmt/v1/tenants/{tenant-name}/users/{user-id}/deactivate:
    put:
      tags:
        - Auth
      summary: Deactivate User
      description: Deactivates a single user
      operationId: DeactivateUser
      parameters:
        - $ref: '#/components/parameters/tenant-name'
        - $ref: '#/components/parameters/user-id'
        - name: reftype
          in: query
          description: Reference type of user ID ("id" (default) or "username")
          schema:
            type: string
            example: username
      responses:
        "200":
          description: Returns HTTP status of 200 (OK)
      deprecated: false
  /auth/mgmt/v1/tenants/{tenant-name}/users/{user-id}/reactivate:
    post:
      tags:
        - Auth
      summary: Reactivate User
      description: Reactivate a single deactivated user
      operationId: ReactivateUser
      parameters:
        - $ref: '#/components/parameters/tenant-name'
        - $ref: '#/components/parameters/user-id'
        - name: reftype
          in: query
          description: Reference type of user ID ("id" (default) or "username")
          schema:
            type: string
            example: username
      requestBody:
        $ref: '#/components/requestBodies/CreateUser'
      responses:
        "200":
          description: Returns HTTP status of 200 (OK)
      deprecated: false
  /auth/oauth2/revoke:
    post:
      tags:
        - Auth
      summary: Revoke Token
      description: To revoke a token, the user token is sent to the URL `https://banksapi.io/auth/oauth2/revoke` via a POST request.
      operationId: RevokeToken
      requestBody:
        description: The request body contains form object with following parameters
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                token:
                  type: string
                  format: uuid
                  description: The token to be revoked
            example:
              token: 0defaced-1337-d00d-c0de-face8badcafe
        required: true
      responses:
        "200":
          description: Returns HTTP status of 200 (OK)
      deprecated: false
      security:
        - basicAuth: []
  /auth/oauth2/introspect:
    get:
      tags:
        - Auth
      summary: Introspect Token
      description: Returns information about a token
      operationId: IntrospectToken
      parameters:
        - name: token
          in: query
          description: The Token to introspect
          required: true
          schema:
            type: string
            format: uuid
            example: 0defaced-1337-d00d-c0de-face8badcafe
      responses:
        "200":
          description: Returns token object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
              example:
                scope: http://banksapi.io/customer/read http://banksapi.io/customer/modify
                tenant: demo
                tenantId: 550e8400-e29b-41d4-a716-446655440000
                client: demo-client
                user: CN=Demo User,OU=Personal,DC=banksapi,DC=io
                additionalData:
                  username: demouser
                validTo: "2021-10-16 10:46:47"
                access_token: 0defaced-1337-d00d-c0de-face8badcafe
                token_type: Bearer
        "400":
          description: No token was provided.
        "401":
          description: The basic authorization header was not sent or the value was incorrect.
        "403":
          description: The provided token is not valid.
      deprecated: false
      security: []
  /encrypt:
    put:
      tags:
        - Encrypt
      summary: Encrypt plaintexts
      description: Encrypt a given plaintext for the tenant identified by the given bearer token.
      operationId: EncryptByToken
      requestBody:
        description: Plaintext to encrypt encoded in Base64
        content:
          application/octet-stream+base64:
            schema:
              type: string
            example: aGCZBgX ... 8Fi7xMQ=
        required: true
      responses:
        "200":
          description: Ciphertext (encrypted plaintext) encoded in Base64
          content:
            application/octet-stream+base64:
              schema:
                type: string
              example: aGCZBgX ... 8Fi7xMQ=
  /providers/v2:
    get:
      tags:
        - Providers
      summary: Get Providers
      description: Retrieve a list of and information for all providers.
      operationId: GetProviders
      responses:
        "200":
          description: Returns an array of providers.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Provider'
              example:
                - id: 00000000-0000-0000-0000-000000000000
                  name: Demo Provider
                  consumerRelevant: true
                  group: demo
                  blz: "12345678"
                  bic: DEMO1234
                  relations:
                    - rel: self
                      href: https://banksapi.io/providers/v2/00000000-0000-0000-0000-000000000000
                    - rel: logo
                      href: https://banksapi.io/providers/v2/demo.svg
                  capabilities:
                    - KONTEN
                    - KARTEN
                    - DEPOTS
                  channels:
                    - - GIROKONTO
                    - - KREDITKARTE
                      - TAGESGELDKONTO
                  authenticationInfo:
                    loginHint: Der Demo Provider bietet drei Zugänge demo1/demo1, demo2/demo2 und demo3/demo3
                    fields:
                      - fieldkey: userid
                        label: Demo-User
                        secret: false
                        hint: demo1, demo2 oder demo3
                        format: '^.{1,50}$'
                      - fieldkey: pin
                        label: Demo-Passwort
                        secret: true
                        hint: demo1, demo2 oder demo3
                        format: '^.{1,50}$'
      deprecated: false
  /providers/v2/coredata:
    get:
      tags:
        - Providers
      summary: Get Providers core data
      description: Retrieve a list of core data for all providers.
      operationId: GetProvidersCoreData
      parameters:
        - name: capability
          in: query
          description: Filter providers by capability
          required: false
          schema:
            type: string
            enum:
              - KONTEN
              - KARTEN
              - DEPOTS
              - BAUSPAR
        - name: iban
          in: query
          description: Filter providers by iban
          required: false
          schema:
            type: string
        - name: channels
          in: query
          description: Comma-separated list of channels to filter providers by. Valid channels are EBICS, XS2A, FINTS, SCRAPER, CUSTOM. Default behavior excludes EBICS-only providers.
          required: false
          schema:
            type: string
            example: "EBICS"
        - name: useCache
          in: query
          description: Flag to control cache usage
          required: false
          schema:
            type: boolean
            default: false
            example: true
      responses:
        "200":
          description: Returns an array of core data for providers.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProviderCoreData'
              example:
                - id: 00000000-0000-0000-0000-000000000000
                  name: Demo Provider
                  group: demo
                  blz: "12345678"
                  bic: DEMO1234
                  logo: https://banksapi.io/providers/v2/demo.svg
      deprecated: false
  /providers/v2/statistics/jobs:
    get:
      tags:
        - Providers
      summary: Get Providers job statistics
      description: Retrieve a list of provider logos with statistical data about the data jobs. If there were no successful data jobs or no data jobs at all in the specified time period, no entry is returned for the corresponding logo.
      operationId: GetProvidersJobStatistics
      parameters:
        - name: days
          in: query
          description: Specifies the number of past days for fetching job statistics. When used together with "hours", their values are summed. If none of the parameters are specified, 2 hours are fetched.
          required: false
          schema:
            type: integer
            format: int32
        - name: hours
          in: query
          description: Specifies the number of past hours for fetching job statistics. When used together with "days", their values are summed. If none of the parameters are specified, 2 hours are fetched.
          required: false
          schema:
            type: integer
            format: int32
        - name: ebics
          in: query
          description: If only EBICS jobs should be considered for the response.
          required: false
          schema:
            type: boolean
            example: false
        - name: sca
          in: query
          description: If only provider logos with at least one job including a strong customer authentication (SCA) should be considered for the response. In case of `false` it will not be checked whether there was an SCA or not.
          required: false
          schema:
            type: boolean
            example: false
      responses:
        "200":
          description: Returns a list of job statistics for providers.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProviderJobStatistics'
              example:
                - logo: demo
                  latestSuccessDate: 2023-09-20 11:21:02
                  averageDuration: 29962
                  successRate: 1.00
                - logo: sparkasse
                  latestSuccessDate: 2023-09-20 11:28:57
                  averageDuration: 54186
                  successRate: 0.99
      deprecated: false
  /providers/v2/{provider-id}:
    get:
      tags:
        - Providers
      summary: Get Provider
      description: Retrieve information for a specific provider.
      operationId: GetProvider
      parameters:
        - $ref: '#/components/parameters/provider-id'
      responses:
        "200":
          description: Returns a single provider object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Provider'
              example:
                id: 00000000-0000-0000-0000-000000000000
                name: Demo Provider
                consumerRelevant: true
                group: demo
                blz: "12345678"
                bic: DEMO1234
                relations:
                  - rel: self
                    href: https://banksapi.io/providers/v2/00000000-0000-0000-0000-000000000000
                  - rel: logo
                    href: https://banksapi.io/providers/v2/demo.svg
                capabilities:
                  - KONTEN
                  - KARTEN
                  - DEPOTS
                channels:
                  - - GIROKONTO
                  - - KREDITKARTE
                    - TAGESGELDKONTO
                authenticationInfo:
                  loginHint: Der Demo Provider bietet drei Zugänge demo1/demo1, demo2/demo2 und demo3/demo3
                  fields:
                    - fieldkey: userid
                      label: Demo-User
                      secret: false
                      hint: demo1, demo2 oder demo3
                      format: '^.{1,50}$'
                    - fieldkey: pin
                      label: Demo-Passwort
                      secret: true
                      hint: demo1, demo2 oder demo3
                      format: '^.{1,50}$'
          links:
            self:
              $ref: '#/components/links/self'
            logo:
              description: Provider logo in SVG format
        "404":
          description: If the URL does not point to a provider, you will get the HTTP status 404 (Not found).
      deprecated: false
  /providers/v2/{provider-id}/ebics:
    get:
      tags:
        - Providers
      summary: Get Provider EBICS Info
      description: Retrieve EBICS information for a specific provider (if available).
      operationId: GetProviderEbicsInfo
      parameters:
        - $ref: '#/components/parameters/provider-id'
      responses:
        "200":
          description: Returns an EBICS info object for a specific provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderEbicsInfo'
              example:
                hostId: "HOSTIDXY"
                hostUrl: "https://ebics.bank.com/ebics"
        "404":
          description: If the URL does not point to a provider, you will get the HTTP status 404 (Not found).
      deprecated: false
  /providers/v2/{provider-id}/instant-payment-supported:
    post:
      tags:
        - Providers
      summary: Check Instant Payment Support
      description: |
        Determines whether instant payments from a specific provider are supported based on the
        the transfer type.
      operationId: CheckInstantPaymentSupport
      parameters:
        - $ref: '#/components/parameters/provider-id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckInstantPaymentSupport'
      responses:
        "200":
          description: Returns information about whether instant payments are supported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstantPaymentSupportResult'
        "400":
          description: Bad request if the input parameters are incorrect.
        "404":
          description: If the URL does not point to a provider, you will get the HTTP status 404 (Not found).
      deprecated: false
  /customer/v2:
    get:
      tags:
        - Customer
      summary: Get Customer
      description: Retrieves the customer object for the authenticated user. It is also the entry point to the deeper functions of the interface.
      operationId: GetCustomer
      responses:
        "200":
          description: Returns customer object of the user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer'
              example:
                bankzugaenge:
                  4000fda7-18af-463f-b694-bbafe5d23a48:
                    messages:
                      - level: INFO
                        code: BA3010
                        message: SCA benötigt
                        details: Bitte wählen Sie eine SCA-Methode aus
                    sicherheitsverfahren:
                      - kodierung: 980
                        name: mTAN
                        hinweis: mTAN
                      - name: SMS_OTP
                        kodierung: "942"
                        hinweis: SMS OTP
                    relations:
                      - rel: startSCA
                        href: https://banksapi.io/v2/customer/consent/1345340218050910215PSDDE-BAFIN-152070CO4960JJ
                relations:
                  - rel: self
                    href: https://banksapi.io/customer/v2
                  - rel: get_bankzugaenge
                    href: https://banksapi.io/customer/v2/bankzugaenge
                  - rel: add_bankzugaenge
                    href: https://banksapi.io/customer/v2/bankzugaenge
                  - rel: delete_bankzugaenge
                    href: https://banksapi.io/customer/v2/bankzugaenge
          links:
            self:
              $ref: '#/components/links/self'
            get_bankzugaenge:
              $ref: '#/components/links/get_bankzugaenge'
            add_bankzugaenge:
              $ref: '#/components/links/add_bankzugaenge'
            delete_bankzugaenge:
              $ref: '#/components/links/delete_bankzugaenge'
            delete_regprotect_sessions:
              $ref: '#/components/links/delete_regprotect_sessions'
            get_contracts:
              $ref: '#/components/links/get_contracts'
            get_sales_triggers:
              $ref: '#/components/links/get_sales_triggers'
            get_life_events:
              $ref: '#/components/links/get_life_events'
            get_life_stages:
              $ref: '#/components/links/get_life_stages'
            get_cashflow:
              $ref: '#/components/links/get_cashflow'
            get_credit_check:
              $ref: '#/components/links/get_credit_check'
            get_disposable_money:
              $ref: '#/components/links/get_disposable_money'
            get_affinities:
              $ref: '#/components/links/get_affinities'
            get_credit_attributes:
              $ref: '#/components/links/get_credit_attributes'
            get_tagging_rules:
              $ref: '#/components/links/get_tagging_rules'
            delete_tagging_rules:
              $ref: '#/components/links/delete_tagging_rules'
            add_tagging_rules:
              $ref: '#/components/links/add_tagging_rules'
      deprecated: false
    delete:
      tags:
        - Customer
      summary: Delete Customer
      description: Deletes all customer related data.
      operationId: DeleteCustomer
      responses:
        "200":
          description: Customer data has been deleted
  /customer/v2/bankzugaenge:
    post:
      tags:
        - Customer Bank Access
      summary: Add Bank Access
      description: Adds a bank access for the given user and set of credentials.
      operationId: AddBankAccess
      parameters:
        - $ref: '#/components/parameters/customer-ip-address'
        - $ref: '#/components/parameters/callbackUrl'
        - name: refresh
          in: query
          description: If the bank access already exists, regardless of the **background** update, all revenues and information are retrieved by the provider, if true
          required: false
          schema:
            type: boolean
            default: false
            example: false
        - $ref: '#/components/parameters/queryTanSettings'
        - name: headOnly
          in: query
          description: Flag to solely fetch header data of the account without balances and transactions (e.g. to get the list of selectable bank products). If this flag is `true` the flag `sync` in the request payload has to be `false` and no `selectedBankProducts` can be specified.
          required: false
          schema:
            type: boolean
            default: false
            example: "true"
        - name: maxTransactions
          in: query
          description: Indicator if transactions older than 90 days should be fetched.
          required: false
          schema:
            $ref: '#/components/schemas/MaxTransactions'
        - name: paymentAccountsOnly
          in: query
          description: Flag to solely fetch payment accounts. Other accounts will be ignored, which can result in fewer SCAs.
          required: false
          schema:
            type: boolean
            default: false
            example: "true"
      requestBody:
        description: The body contains information about the bank access. REG/Hosting tenants need to provide credentials in case this is not a "refresh"-request. In case of a REG/Protect tenant or a "refresh"-request the value for the access-id-key should be an empty object.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBankAccess'
            example:
              815251d6-c062-4f61-bec0-182bc14a48fb:
                providerId: 00000000-0000-0000-0000-000000000000
                credentials:
                  userid: mOd2uKYr+2 ... TWOPCAt5zP
                  pin: Hhnc+aW/eM ... 7F+XRSHasW
                sync: true
                selectedBankProducts:
                  - DE00123456789012345679
        required: true
      responses:
        "201":
          $ref: '#/components/responses/bankAccessCreated'
        "429":
          description: Too Many Requests - The same bank access is already being created concurrently
          headers:
            Location:
              description: URL to get the existing bank access that is being created. Only included if the existing access belongs to the same user but has a different access ID.
              schema:
                type: string
                example: https://banksapi.io/customer/v2/bankzugaenge/da7ac19e-9409-4c95-9a4c-18ba70bb6c67
        "451":
          $ref: '#/components/responses/regprotect'
        "504":
          description: The started request could not be answered in the given time
      deprecated: false
    get:
      tags:
        - Customer Bank Access
      summary: Get Bank Accesses
      description: Retrieves all bank accesses for this user.
      operationId: GetBankAccesses
      responses:
        "200":
          description: The success response contains an collection of bank accesses.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOfBankAccesses'
              example:
                0b7f4783-4c93-4820-8e73-354a0f1c469e:
                  id: 0b7f4783-4c93-4820-8e73-354a0f1c469e
                  providerId: 00000000-0000-0000-0000-000000000000
                  aktualisierungszeitpunkt: "2021-10-15 09:13:44"
                  tanMedien:
                    - name: Mobil
                      medienklasse: MOBIL
                      gueltigVon: "2021-10-15 09:13:44"
                      gueltigBis: "2021-10-15 09:13:44"
                  sicherheitsverfahren:
                    - kodierung: 1
                      name: mockTAN
                      hinweis: Gib eine durch 2 teilbare Zahl ein
                    - kodierung: 999
                      name: iTAN
                      hinweis: Gib die TAN "12" an.
                  aktivesSicherheitsverfahren:
                    kodierung: 999
                    name: iTAN
                    hinweis: Gib die TAN "12" an.
                  relations:
                    - rel: self
                      href: https://banksapi.io/customer/v2/bankzugaenge/0b7f4783-4c93-4820-8e73-354a0f1c469e
                    - rel: delete_bankzugang
                      href: https://banksapi.io/customer/v2/bankzugaenge/0b7f4783-4c93-4820-8e73-354a0f1c469e
                  status: VOLLSTAENDIG
                  bankprodukte:
                    - id: DE00123456789012345679
                      status: VOLLSTAENDIG
                      bezeichnung: Tagesgeldkonto
                      kategorie: TAGESGELDKONTO
                      saldo: 27365.56
                      aktualisierungszeitpunkt: "2021-10-15 09:13:44"
                      saldoDatum: "2021-10-15 00:00:00"
                      waehrung: EUR
                      kontonummer: "9012345679"
                      iban: DE00123456789012345679
                      bic: XXX12345678
                      blz: "12345678"
                      kreditinstitut: Demo Provider
                      inhaber: Fritz Testmüller
                      transferSupport: true
                      relations:
                        - rel: get_kontoumsaetze
                          href: https://banksapi.io/customer/v2/bankzugaenge/0b7f4783-4c93-4820-8e73-354a0f1c469e/DE00123456789012345679/kontoumsaetze
                        - rel: initiate_single_transfer
                          href: https://banksapi.io/customer/v2/payment/single-transfer
                        - rel: initiate_bulk_transfer
                          href: https://banksapi.io/customer/v2/payment/bulk-transfer
                      messages: []
                      verfuegungsrahmen: 27365.56
                      verfuegterBetrag: 0.0
                  sync: true
                4000fda7-18af-463f-b694-bbafe5d23a48:
                  status: VOLLSTAENDIG
                  tanMedien:
                    - gueltigVon: "2016-06-03 17:17:41"
                      gueltigBis: "2016-06-03 17:17:41"
                      name: Mobil
                      medienklasse: MOBIL
                  sicherheitsverfahren:
                    - kodierung: 2
                      name: mTAN
                      hinweis: mTAN
                    - kodierung: 1
                      name: Mock-TAN
                      hinweis: Mock-TAN
                  aktivesSicherheitsverfahren:
                    kodierung: 1
                    name: Mock-TAN
                    hinweis: Mock-TAN
                  aktualisierungszeitpunkt: "2016-06-10 17:17:40"
                  timeout: "2016-12-24 13:37:42"
                  messages: []
                  bankprodukte: []
                  relations: []
                  sync: false
        "401":
          description: The bearer authorization header was not sent or the value was incorrect.
      deprecated: false
    delete:
      tags:
        - Customer Bank Access
      summary: Delete All Bank Accesses
      description: Removes all bank accesses of the authenticated user.
      operationId: DeleteBankAccesses
      parameters:
        - $ref: '#/components/parameters/customer-ip-address'
      responses:
        "200":
          description: The HTTP status 200 returns without any further response body.
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}:
    get:
      tags:
        - Customer Bank Access
      summary: Get Bank Access
      description: Retrieves a specific bank access for this user.
      operationId: GetBankAccess
      parameters:
        - $ref: '#/components/parameters/access-id'
      responses:
        "200":
          description: Returns a bank access object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccess'
              example:
                status: VOLLSTAENDIG
                tanMedien:
                  - gueltigVon: "2016-06-03 17:17:41"
                    gueltigBis: "2016-06-03 17:17:41"
                    name: Mobil
                    medienklasse: MOBIL
                sicherheitsverfahren:
                  - kodierung: 2
                    name: mTAN
                    hinweis: mTAN
                  - kodierung: 1
                    name: Mock-TAN
                    hinweis: Mock-TAN
                aktivesSicherheitsverfahren:
                  kodierung: 1
                  name: Mock-TAN
                  hinweis: Mock-TAN
                aktualisierungszeitpunkt: "2016-06-10 17:17:40"
                timeout: "2016-12-24 13:37:42"
                messages: []
                bankprodukte: []
                relations: []
                sync: false
          links:
            self:
              $ref: '#/components/links/self'
            delete_bankzugang:
              $ref: '#/components/links/delete_bankzugang'
            get_issues:
              $ref: '#/components/links/get_issues'
            get_challenge_pdf:
              $ref: '#/components/links/get_challenge_pdf'
            set_method:
              $ref: '#/components/links/set_method'
            set_medium:
              $ref: '#/components/links/set_medium'
            authenticate:
              $ref: '#/components/links/authenticate'
            authenticate_decoupled:
              $ref: '#/components/links/authenticate_decoupled'
            cancel:
              $ref: '#/components/links/cancel'
            redirect_url:
              $ref: '#/components/links/redirect_url'
            refresh_bankzugang:
              $ref: '#/components/links/refresh_bankzugang'
        "504":
          description: The started request could not be answered in the given time
      deprecated: false
    delete:
      tags:
        - Customer Bank Access
      summary: Delete Bank Access
      description: Deletes a specific bank access.
      operationId: DeleteBankAccess
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/customer-ip-address'
      responses:
        "200":
          description: Returns without any further response body.
        "404":
          description: The bank access with the given access-id was not found / does not exist.
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/issues:
    get:
      tags:
        - Customer Bank Access
      summary: Get Bank Access Issues
      description: Retrieves last known issues for a specific bank access for this user.
      operationId: GetBankAccessIssues
      parameters:
        - $ref: '#/components/parameters/access-id'
      responses:
        "200":
          description: Returns a bank access issues object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccessIssues'
              example:
                id: 815251d6-c062-4f61-bec0-182bc14a48fb
                providerId: 00000000-0000-0000-0000-000000000000
                tanMedien:
                  - gueltigVon: "2016-06-03 17:17:41"
                    gueltigBis: "2016-06-03 17:17:41"
                    name: Mobil
                    medienklasse: MOBIL
                sicherheitsverfahren:
                  - kodierung: 2
                    name: mTAN
                    hinweis: mTAN
                  - kodierung: 1
                    name: Mock-TAN
                    hinweis: Mock-TAN
                aktivesSicherheitsverfahren:
                  kodierung: 1
                  name: Mock-TAN
                  hinweis: Mock-TAN
                challenge:
                  name: Mock-TAN-Verfahren
                  content:
                    instructions: Enter a TAN that is divisible by 2
                  decoupled: false
                  redirect: false
                aktualisierungszeitpunkt: "2016-06-10 17:17:40"
                messages:
                  - level: INFO
                    code: BA3010
                    message: SCA benötigt
                    details: Bitte wählen Sie eine SCA-Methode aus
                relations:
                  - rel: set_method
                    href: https://banksapi.io/v2/customer/consent/1345340218050910215PSDDE-BAFIN-152070CO4960JJ
          links:
            self:
              $ref: '#/components/links/self'
            delete_bankzugang:
              $ref: '#/components/links/delete_bankzugang'
            get_issues:
              $ref: '#/components/links/get_issues'
            set_method:
              $ref: '#/components/links/set_method'
            set_medium:
              $ref: '#/components/links/set_medium'
            authenticate:
              $ref: '#/components/links/authenticate'
            authenticate_decoupled:
              $ref: '#/components/links/authenticate_decoupled'
            cancel:
              $ref: '#/components/links/cancel'
            redirect_url:
              $ref: '#/components/links/redirect_url'
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/challenge/pdf:
    get:
      tags:
        - Customer Bank Access
      summary: Get Bank Access Challenge PDF
      description: Retrieves the PDF file from the bank access challenge if available.
      operationId: GetBankAccessChallengePdf
      parameters:
        - $ref: '#/components/parameters/access-id'
      responses:
        "200":
          description: Returns the PDF file from the bank access challenge if available.
          content:
            application/pdf:
              schema:
                type: string
                format: binary
              example: <binary PDF document>
        "404":
          description: The PDF file for the given access-id was not found / does not exist.
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/{product-id}:
    get:
      tags:
        - Customer Bank Access
      summary: Get Bank Product
      description: Retrieve information for a single bank product.
      operationId: GetBankProduct
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/product-id'
      responses:
        "200":
          description: Returns data of the bank product.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
              example:
                kategorie: GIROKONTO
                produktbezeichnung: Demo-Girokonto
                produktId: DE1235233452324553423442A
                inhaber: Dan Cooper
                aktualisierungszeitpunkt: "2016-05-23 13:37:00"
                saldo: "200000.00"
                waehrung: USD
                saldoDatum: "2016-05-23 13:37:00"
                kontonummer: "0123456789"
                iban: DE1235233452324553423442
                bic: BICIS133742
                blz: "12345678"
                kreditinstitut: Demo-Bank
                messages: []
                relations:
                  - rel: get_kontoumsaetze
                    href: https://test.banksapi.io/customer/v2/bankzugaenge/cba09da4-57fb-4262-b11c-3192b3438265/DE00123456789012345679/kontoumsaetze
                  - rel: initiate_single_transfer
                    href: https://banksapi.io/customer/v2/payment/single-transfer
                  - rel: initiate_bulk_transfer
                    href: https://banksapi.io/customer/v2/payment/bulk-transfer
          links:
            self:
              $ref: '#/components/links/self'
            get_kontoumsaetze:
              $ref: '#/components/links/get_kontoumsaetze'
            initiate_single_transfer:
              $ref: '#/components/links/initiate_single_transfer'
            initiate_bulk_transfer:
              $ref: '#/components/links/initiate_bulk_transfer'
            initiate_single_transfer_with_saved_credentials:
              $ref: '#/components/links/initiate_single_transfer_with_saved_credentials'
            initiate_bulk_transfer_with_saved_credentials:
              $ref: '#/components/links/initiate_bulk_transfer_with_saved_credentials'
            get_depotpositionen:
              $ref: '#/components/links/get_depotpositionen'
            get_kontoumsaetze_categories:
              $ref: '#/components/links/get_kontoumsaetze_categories'
            get_kontoumsaetze_business_partners:
              $ref: '#/components/links/get_kontoumsaetze_business_partners'
            get_kontoumsaetze_periods:
              $ref: '#/components/links/get_kontoumsaetze_periods'
            get_kontoumsaetze_insurance_types:
              $ref: '#/components/links/get_kontoumsaetze_insurance_types'
            get_kontoumsaetze_freelancer_categories:
              $ref: '#/components/links/get_kontoumsaetze_freelancer_categories'
        "504":
          description: The started request could not be answered in the given time
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/{product-id}/kontoumsaetze:
    get:
      tags:
        - Customer Bank Access
      summary: Get Transactions
      description: Retrieves all transactions for a specific product of a specific access of this user.
      operationId: GetTransactions
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/product-id'
        - name: from
          in: query
          description: Only return transactions with a booking date after this Date/Time (ISO 8601 formatted timestamp); may be used with `to` to specify a time window
          required: false
          schema:
            type: string
            format: date-time
            example: 2022-02-20T00:00:00
        - name: to
          in: query
          description: Only return transactions with a booking date before this Date/Time (ISO 8601 formatted timestamp); may be used with `from` to specify a time window
          required: false
          schema:
            type: string
            format: date-time
            example: 2022-03-20T00:00:00
        - name: tag
          in: query
          description: The resulting transactions will each contain Categorization objects of the corresponding tag type
          required: false
          schema:
            enum:
              - categories
              - business-partners
              - periods
              - insurance-types
              - freelancer-categories
              - custom-categories
        - name: filter
          in: query
          description: Filter to apply to result set. Filter expression must be URL-encoded. Filter expression must be in the form `<field-selector><predicate><value>`.
          schema:
            type: string
            description: URL-encoded filter expression in the form <field-selector><predicate><value>
            example: "identifier.batchId%3Df257c0de-c5f0-4ffd-b942-94b1e631babb"
        - name: bookingStatus
          in: query
          description: |
            Only return transactions with a certain booking status. `pending` transactions are currently 
            supported via EBICS only. AI capabilities can only be used for `booked` transactions.
          required: false
          schema:
            type: string
            enum:
              - booked
              - pending
              - both
            default: booked
            example: both
      responses:
        "200":
          description: Returns an array of transactions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Transaction'
              example:
                - betrag: -70
                  verwendungszweck: EC 68096654 140215204106OC3 Ref. 5CC15048A1824480/89280
                  buchungsdatum: "2016-11-17 00:00:00"
                  wertstellungsdatum: "2016-11-15 00:00:00"
                  gegenkontoInhaber: La Sopia GmbH München
                  gegenkontoIban: DE00123456789012345679
                  gegenkontoBic: XXX12345678
                  primanotaNummer: "421337"
    post:
      tags:
        - Customer Bank Access Builder
      summary: Push transactions for the given product
      description: Pushes transactions for the given product identified by an access and a product ID
      operationId: PushProductTransactions
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/product-id'
      requestBody:
        description: List of transactions for this product
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/TransactionData'
            example:
              - betrag: -70
                verwendungszweck: "EC 68096654 140215204106OC3 Ref. 5CC15048A1824480/89280"
                buchungsdatum: "2016-11-17 00:00:00"
                wertstellungsdatum: "2016-11-15 00:00:00"
                gegenkontoInhaber: "La Sopia GmbH München"
                gegenkontoIban: "DE00123456789012345679"
                gegenkontoBic: "XXX12345678"
                primanotaNummer: "421337"
                identifier:
                  batchId: eeToqu2V
              - betrag: -42.23
                verwendungszweck: "My in-app purchase"
                buchungsdatum: "2022-11-17 00:00:00"
                wertstellungsdatum: "2022-11-17 00:00:00"
                gegenkontoInhaber: "Gaming Now"
                gegenkontoIban: "DE80123456789012345777"
                gegenkontoBic: "XXX12345678"
                identifier:
                  batchId: eeToqu2V
        required: true
      responses:
        "201":
          description: Created
  /customer/v2/bankzugaenge/{access-id}/{product-id}/kontoumsaetze/{transaction-id}:
    put:
      tags:
        - Customer Bank Access
      summary: modify categorisation of transactions
      description: |-
        This method applies corrections to the categorization of transactions.
        Initial categorization is required before recategorization.

        Input contains the tag tree item that should be used for recategorization.
        A valid tag tree item has to be provided.

        The flag createRule creates a user specific rule that automatically categorizes this
        counterparty with the provided tag tree item in all future transactions.
        This is a smart solution to eradicate a recurring recategorization process.

        The flag changeExisting recategorizes all existing transactions of the same
        counterparty.

        The tagTreeItem has to include a tagTree and has to be wrapped in tags: [].

        The recategorization currently relies on the systemName value of tagTreeItem and
        tagTree, but as this might change in the future, both systemName and systemId should
        be included in the payload, all other fields are ignored.

        To get a full list of tag tree items, use:
        GET https://banksapi.io/tags/v1/tags/tag_trees/1/tag_tree_items/
      operationId: modifyTransaction
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/product-id'
        - $ref: '#/components/parameters/transaction-id'
        - name: changeExisting
          in: query
          description: ""
          required: false
          schema:
            type: boolean
            example: "true"
        - name: createRule
          in: query
          description: ""
          required: false
          schema:
            type: boolean
            example: "true"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WrappedTags'
        required: true
      responses:
        "200":
          description: transaction was successfully modified
        "400":
          description: error in request body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        "404":
          description: transaction was not found
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/{product-id}/depotpositionen:
    get:
      tags:
        - Customer Bank Access
      summary: Get Portfolio
      description: Retrieves all investments in a specific banking product of type brokerage account (portfolio depot) for this user.
      operationId: GetPortfolio
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/product-id'
      responses:
        "200":
          description: Returns an array of investments, e.g. stocks, bonds and other positions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Investment'
              example:
                - name: Aberdeen Global - Emer. Markets Equity E2
                  menge: 210.819609
                  handelseinheit: STUECK
                  isin: LU0498181733
                  wkn: A1C5UV
                  kurs: 15.4117
                  kursDatum: "2021-10-15 15:50:20"
                  waehrung: EUR
                  waehrungskurs: 1.0
                  handelsplatz: KAG
                  gesamtwert: 3249.09
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/consent:
    post:
      tags:
        - Customer Bank Access Consent
      summary: Start SCA
      description: Starts the SCA renewal process
      operationId: StartSca
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/customer-ip-address'
        - $ref: '#/components/parameters/callbackUrl'
        - $ref: '#/components/parameters/queryTanSettings'
        - name: maxTransactions
          in: query
          description: Indicator if transactions older than 90 days should be fetched.
          required: false
          schema:
            $ref: '#/components/schemas/MaxTransactions'
      requestBody:
        description: Login data for the access. Only needed if access is not being automatically synchronized with the provider (`sync=false`).
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBankAccess'
            example:
              815251d6-c062-4f61-bec0-182bc14a48fb:
                providerId: 00000000-0000-0000-0000-000000000000
                credentials:
                  userid: mOd2uKYr+2 ... TWOPCAt5zP
                  pin: Hhnc+aW/eM ... 7F+XRSHasW
                sync: true
                selectedBankProducts:
                  - DE00123456789012345679
        required: false
      responses:
        "201":
          $ref: '#/components/responses/bankAccessCreated'
        "451":
          $ref: '#/components/responses/regprotect'
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/consent/{consent-id}:
    post:
      tags:
        - Customer Bank Access Consent
      summary: Update Bank Access Consent
      description: Submits a SCA method, medium or authentication data for the current SCA (e.g. when creating a bank access).
      operationId: UpdateBankAccessConsent
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/consent-id'
      requestBody:
        $ref: '#/components/requestBodies/SubmitScaData'
      responses:
        "200":
          description: Returns a bank access object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccess'
              example:
                status: VOLLSTAENDIG
                tanMedien:
                  - gueltigVon: "2016-06-03 17:17:41"
                    gueltigBis: "2016-06-03 17:17:41"
                    name: Mobil
                    medienklasse: MOBIL
                sicherheitsverfahren:
                  - kodierung: 2
                    name: mTAN
                    hinweis: mTAN
                  - kodierung: 1
                    name: Mock-TAN
                    hinweis: Mock-TAN
                aktivesSicherheitsverfahren:
                  kodierung: 1
                  name: Mock-TAN
                  hinweis: Mock-TAN
                aktualisierungszeitpunkt: "2016-06-10 17:17:40"
                timeout: "2016-12-24 13:37:42"
                messages: []
                bankprodukte: []
                relations: []
                sync: false
          links:
            set_method:
              $ref: '#/components/links/set_method'
            set_medium:
              $ref: '#/components/links/set_medium'
            authenticate:
              $ref: '#/components/links/authenticate'
            authenticate_decoupled:
              $ref: '#/components/links/authenticate_decoupled'
            cancel:
              $ref: '#/components/links/cancel'
      deprecated: false
    get:
      tags:
        - Customer Bank Access Consent
      summary: Poll Bank Access Consent
      description: Can be used for the decoupled SCA approach to check if the SCA has already been confirmed.
      operationId: PollBankAccessConsent
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/consent-id'
      responses:
        "200":
          description: Returns a bank access object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccess'
              example:
                status: VOLLSTAENDIG
                tanMedien:
                  - gueltigVon: "2016-06-03 17:17:41"
                    gueltigBis: "2016-06-03 17:17:41"
                    name: Mobil
                    medienklasse: MOBIL
                sicherheitsverfahren:
                  - kodierung: 2
                    name: mTAN
                    hinweis: mTAN
                  - kodierung: 1
                    name: Mock-TAN
                    hinweis: Mock-TAN
                aktivesSicherheitsverfahren:
                  kodierung: 1
                  name: Mock-TAN
                  hinweis: Mock-TAN
                aktualisierungszeitpunkt: "2016-06-10 17:17:40"
                timeout: "2016-12-24 13:37:42"
                messages: []
                bankprodukte: []
                relations: []
                sync: false
          links:
            set_method:
              $ref: '#/components/links/set_method'
            set_medium:
              $ref: '#/components/links/set_medium'
            authenticate:
              $ref: '#/components/links/authenticate'
            authenticate_decoupled:
              $ref: '#/components/links/authenticate_decoupled'
            cancel:
              $ref: '#/components/links/cancel'
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/consent/{consent-id}/cancel:
    post:
      tags:
        - Customer Bank Access Consent
      summary: Cancel Bank Access Consent
      description: Cancels an SCA redirect and stops the corresponding access synchronization. This request is permitted only for the redirect SCA approach.
      operationId: CancelBankAccessConsentRedirect
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/consent-id'
      responses:
        "200":
          description: Returns a bank access object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccess'
              example:
                id: 815251d6-c062-4f61-bec0-182bc14a48fb
                providerId: 00000000-0000-0000-0000-000000000000
                aktualisierungszeitpunkt: "2022-02-02 22:22:22"
                messages:
                  - level: ERROR
                    code: BA3040
                    message: SCA fehlgeschlagen
                    details: Redirect-SCA wurde abgebrochen
                  - level: INFO
                    code: BA3000
                    message: SCA notwendig
                tanMedien: []
                sicherheitsverfahren: []
                relations:
                  - rel: self
                    href: https://banksapi.io/customer/v2/bankzugaenge/815251d6-c062-4f61-bec0-182bc14a48fb
                  - rel: delete_bankzugang
                    href: https://banksapi.io/customer/v2/bankzugaenge/815251d6-c062-4f61-bec0-182bc14a48fb
                  - rel: get_issues
                    href: https://banksapi.io/customer/v2/bankzugaenge/815251d6-c062-4f61-bec0-182bc14a48fb/issues
                  - rel: start_sca
                    href: https://banksapi.io/customer/v2/bankzugaenge/815251d6-c062-4f61-bec0-182bc14a48fb/consent
                status: VOLLSTAENDIG
                bankprodukte: []
                sync: false
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/{product-id}/payment/single-transfer:
    post:
      tags:
        - Customer Bank Access Payment
      summary: Initiate a single transfer
      description: Initiates a payment for the given bank access, without providing access credentials
      operationId: InitiateSingleTransferBankAccess
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/product-id'
        - $ref: '#/components/parameters/customer-ip-address'
        - $ref: '#/components/parameters/rejection-nofunds-preferred'
        - $ref: '#/components/parameters/callbackUrl'
        - $ref: '#/components/parameters/editableDetails'
        - $ref: '#/components/parameters/autoConfirm'
      requestBody:
        description: The request body object carries the data for a payment. It is expected when creating a payment. It is not required for REG/Protect tenants when requesting with `editableDetails=true`.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BasicSingleTransferData'
        required: false
      responses:
        "200":
          $ref: '#/components/responses/singleTransferInitiated'
        "404":
          description: Bank Access Credentials could not be found
        "451":
          $ref: '#/components/responses/regprotectPayment'
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/{product-id}/payment/bulk-transfer:
    post:
      tags:
        - Customer Bank Access Payment
      summary: Initiate a bulk transfer
      description: Initiates a payment for the given bank access, without providing access credentials
      operationId: InitiateBulkTransferBankAccess
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/product-id'
        - $ref: '#/components/parameters/customer-ip-address'
        - $ref: '#/components/parameters/rejection-nofunds-preferred'
        - $ref: '#/components/parameters/callbackUrl'
        - $ref: '#/components/parameters/autoConfirm'
      requestBody:
        description: The request body object carries the data for a payment. It is expected when creating a payment.
        content:
          application/json:
            schema:
              description: Request data to start a transfer
              required:
                - transferDetails
              title: BulkTransferData
              type: object
              properties:
                instant:
                  type: boolean
                  description: |
                    If set to true, the transfer will be executed as an instant payment.
                    Please note that instant payments may not be supported
                    or may incur additional costs depending on the bank.
                requestedExecutionDate:
                  type: string
                  format: YYYY-MM-DD
                  description: |
                    The requested execution date of the transfer.
                    Please note that transfers with execution date may not be supported depending on the bank.
                transferDetails:
                  type: array
                  items:
                    $ref: '#/components/schemas/TransferDetails'
            example:
              instant: false
              requestedExecutionDate: 2024-09-19
              transferDetails:
                - recipient: UNICEF
                  purpose: Spende UNICEF
                  iban: DE57370205000000300000
                  bic: BFSWDE33XXX
                  currency: EUR
                  amount: 150.00
                  endToEndId: be7649876d5f439886fa816993ac9f9f
                - recipient: netzpolitik.org e. V.
                  purpose: Spende netzpolitik.de
                  iban: DE62430609671149278400
                  bic: GENODEM1GLS
                  currency: EUR
                  amount: 75.00
                  endToEndId: be7649876d5f439886fa816993ac9f9f
        required: true
      responses:
        "200":
          $ref: '#/components/responses/bulkTransferInitiated'
        "404":
          description: Bank Access Credentials could not be found
        "451":
          $ref: '#/components/responses/regprotectPayment'
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/{product-id}/payment/single-debit:
    post:
      tags:
        - Customer Bank Access Payment
      summary: Initiate a single debit
      description: Initiates a payment for the given bank access, without providing access credentials
      operationId: InitiateSingleDebitBankAccess
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/product-id'
      requestBody:
        description: The request body object carries the data for a payment. It is expected when creating a payment.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleDebitDataBankAccess'
            example:
              business: false
              sequenceType: OOFF
              creditorSchemeIdentification: GlauebigerId
              requestedCollectionDate: "2022-02-22"
              debitDetails:
                amount: 1337.42
                currency: EUR
                purpose: Verwendungszweck
                endToEndId: "123"
                debtorName: Max Mustermann
                debtorIban: DE62430609671149278400
                debtorAccountNumber: "1149278400"
                debtorBankCode: "43060967"
                debtorBic: GENODEM1GLS
                mandateIdentification: MandatsId
                mandateDateOfSignature: "2022-02-02"
        required: true
      responses:
        "200":
          $ref: '#/components/responses/singleDebitInitiated'
        "404":
          description: Bank Access Credentials could not be found
        "451":
          $ref: '#/components/responses/regprotectPayment'
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/{product-id}/payment/bulk-debit:
    post:
      tags:
        - Customer Bank Access Payment
      summary: Initiate a bulk debit
      description: Initiates a payment for the given bank access, without providing access credentials
      operationId: InitiateBulkDebitBankAccess
      parameters:
        - $ref: '#/components/parameters/access-id'
        - $ref: '#/components/parameters/product-id'
      requestBody:
        description: The request body object carries the data for a payment. It is expected when creating a payment.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkDebitDataBankAccess'
            example:
              business: false
              sequenceType: OOFF
              creditorSchemeIdentification: GlauebigerId
              requestedCollectionDate: "2022-02-22"
              debitDetails:
                - amount: 1337.42
                  currency: EUR
                  purpose: Verwendungszweck
                  endToEndId: "123"
                  debtorName: Max Mustermann
                  debtorIban: DE62430609671149278400
                  debtorAccountNumber: "1149278400"
                  debtorBankCode: "43060967"
                  debtorBic: GENODEM1GLS
                  mandateIdentification: MandatsId
                  mandateDateOfSignature: "2022-02-02"
                - amount: 42
                  currency: EUR
                  purpose: Verwendungszweck 2
                  endToEndId: "124"
                  debtorName: Maxi Mustermann
                  debtorIban: DE00123456789012345678
                  debtorAccountNumber: "9012345678"
                  debtorBankCode: "12345678"
                  debtorBic: SSKMDEMMXXX
                  mandateIdentification: MandatsId
                  mandateDateOfSignature: "2022-02-02"
        required: true
      responses:
        "200":
          $ref: '#/components/responses/bulkDebitInitiated'
        "404":
          description: Bank Access Credentials could not be found
        "451":
          $ref: '#/components/responses/regprotectPayment'
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/payment/xml:
    post:
      tags:
        - Customer Bank Access Payment
      summary: Initiate an XML payment
      description: |
        Initiates an XML payment in PAIN format for the given bank access, without providing access credentials.
        Currently only EBICS transfers and debits are supported.
      operationId: InitiateXmlPaymentBankAccess
      parameters:
        - $ref: '#/components/parameters/access-id'
      requestBody:
        required: true
        description: The request body object carries the PAIN XML data.
        content:
          application/xml:
            schema:
              type: string
              format: binary
      responses:
        "200":
          $ref: '#/components/responses/xmlPaymentInitiated'
        "404":
          description: Bank Access Credentials could not be found
      deprecated: false
  /customer/v2/ueberweisung/{provider-id}/{product-id}:
    post:
      tags:
        - Customer Ueberweisung
      summary: Create Transfer
      description: Creates a payment (i.e. initializes a SEPA transfer).
      operationId: CreateTransfer
      parameters:
        - $ref: '#/components/parameters/provider-id'
        - $ref: '#/components/parameters/product-id'
        - $ref: '#/components/parameters/customer-ip-address'
        - $ref: '#/components/parameters/callbackUrl'
        - $ref: '#/components/parameters/editableDetails'
      requestBody:
        description: The request body object carries the data for a payment. It is expected when creating a payment. It is not required for REG/Protect tenants when requesting with `editableDetails=true`.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTransfer'
            example:
              credentials:
                userid: mXlkGe+ukAEs+2iHjc ... 6uyURWRD/MOfGsd8HY=
                pin: XO2jgZX9V5GvB9rg8 ... CbzjWKilAXdeBXVHC9W1Rv5GfhKpZmw=
              empfaenger: netzpolitik.org e. V.
              verwendungszweck: Spende netzpolitik.de
              iban: DE62430609671149278400
              bic: GENODEM1GLS
              waehrung: EUR
              betrag: 1337.42
              ausfuehrungsdatum: "2016-12-24"
              sicherheitsverfahrenKodierung: "1"
              tanMediumName: Mobil
        required: false
      responses:
        "200":
          description: Returns object with the transfer status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScaInteraction'
              example:
                ueberweisung:
                  empfaenger: netzpolitik.org e. V.
                  verwendungszweck: Spende netzpolitik.de
                  iban: DE62430609671149278400
                  bic: GENODEM1GLS
                  waehrung: EUR
                  betrag: 1337.42
                ausfuehrungsdatum: "2016-12-24"
                tanMediumName: Mobil
                tanMedien:
                  - gueltigVon: "2016-06-03 17:17:41"
                    gueltigBis: "2016-06-03 17:17:41"
                    name: Mobil
                    medienklasse: MOBIL
                sicherheitsverfahren:
                  - kodierung: 2
                    name: mTAN
                    hinweis: mTAN
                  - kodierung: 1
                    name: Mock-TAN
                    hinweis: Mock-TAN
                messages:
                  - level: INFO
                    code: BA3010
                    message: SCA benötigt
                    details: Bitte wählen Sie eine SCA-Methode aus
                relations:
                  - rel: set_method
                    href: https://banksapi.io/customer/v2/ueberweisung/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7/consent
          links:
            set_method:
              description: Set SCA method
      deprecated: true
  /customer/v2/ueberweisung/bulk/{provider-id}/{product-id}:
    post:
      tags:
        - Customer Ueberweisung
      summary: Create Bulk Transfer
      description: Creates a bulk payment (i.e. initializes a SEPA transfer).
      operationId: CreateBulkTransfer
      parameters:
        - $ref: '#/components/parameters/provider-id'
        - $ref: '#/components/parameters/product-id'
        - $ref: '#/components/parameters/customer-ip-address'
        - $ref: '#/components/parameters/callbackUrl'
      requestBody:
        description: The request body object carries the data for a payment. It is expected when creating a payment.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkTransferLegacy'
            example:
              credentials:
                userid: mXlkGe+u ... /MOfGsd8HY=
                pin: XO2jgZX ... v5GfhKpZmw=
              payments:
                - empfaenger: UNICEF
                  verwendungszweck: Spende UNICEF
                  iban: DE57370205000000300000
                  bic: BFSWDE33XXX
                  waehrung: EUR
                  betrag: 150.00
                - empfaenger: netzpolitik.org e. V.
                  verwendungszweck: Spende netzpolitik.de
                  iban: DE62430609671149278400
                  bic: GENODEM1GLS
                  waehrung: EUR
                  betrag: 75.00
              sicherheitsverfahrenKodierung: "1"
              tanMediumName: Mobil
        required: true
      responses:
        "200":
          description: Returns object with the transfer status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScaInteraction'
              example:
                payments:
                  - empfaenger: UNICEF
                    verwendungszweck: Spende UNICEF
                    iban: DE57370205000000300000
                    bic: BFSWDE33XXX
                    waehrung: EUR
                    betrag: 150.00
                  - empfaenger: netzpolitik.org e. V.
                    verwendungszweck: Spende netzpolitik.de
                    iban: DE62430609671149278400
                    bic: GENODEM1GLS
                    waehrung: EUR
                    betrag: 75.00
                ausfuehrungsdatum: "2016-12-24"
                tanMediumName: Mobil
                tanMedien:
                  - gueltigVon: "2016-06-03 17:17:41"
                    gueltigBis: "2016-06-03 17:17:41"
                    name: Mobil
                    medienklasse: MOBIL
                sicherheitsverfahren:
                  - kodierung: 2
                    name: mTAN
                    hinweis: mTAN
                  - kodierung: 1
                    name: Mock-TAN
                    hinweis: Mock-TAN
                messages:
                  - level: INFO
                    code: BA3010
                    message: SCA benötigt
                    details: Bitte wählen Sie eine SCA-Methode aus
                relations:
                  - rel: set_method
                    href: https://banksapi.io/customer/v2/ueberweisung/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7/consent
          links:
            set_method:
              description: Set SCA method
      deprecated: true
  /customer/v2/ueberweisung/{provider-id}/{product-id}/{payment-id}:
    put:
      tags:
        - Customer Ueberweisung
      summary: Submit TAN
      description: Submits a TAN for a previously created payment.
      operationId: SubmitTextTan
      parameters:
        - $ref: '#/components/parameters/provider-id'
        - $ref: '#/components/parameters/product-id'
        - $ref: '#/components/parameters/payment-id'
      requestBody:
        description: Object required to submit a TAN.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTextTan'
            example:
              tan: "4103582"
        required: true
      responses:
        "200":
          description: Returns the transfer status. If the TAN was wrong, the hint has changed accordingly and there is still a timeout and the relation `submit_text_tan`. If the TAN was correct then Timeout and the Relations disappear.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Interaction'
              example:
                hinweis: Bitte geben Sie die SMS-TAN ein
                timeout: "2016-12-24 20:00:00"
                relations:
                  - rel: submit_text_tan
                    href: https://banksapi.io/customer/v2/ueberweisung/DE1235233452324553423442/9b90127c-9b85-11e6-82d8-480fcfb9550f
          links:
            submit_text_tan:
              description: Submit TAN
      deprecated: true
  /customer/v2/ueberweisung/bulk/{provider-id}/{product-id}/{payment-id}:
    put:
      tags:
        - Customer Ueberweisung
      summary: Submit TAN (Bulk)
      description: Submits a TAN for a previously created bulk payment. Confer [Submit TAN](#submit-tan) for details.
      operationId: SubmitTextTanBulk
      parameters:
        - $ref: '#/components/parameters/provider-id'
        - $ref: '#/components/parameters/product-id'
        - $ref: '#/components/parameters/payment-id'
      responses:
        "200":
          description: Returns the transfer status. If the TAN was wrong, the hint has changed accordingly and there is still a timeout and the relation `submit_text_tan`. If the TAN was correct then Timeout and the Relations disappear.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Interaction'
      deprecated: true
  /customer/v2/payment/single-transfer:
    post:
      tags:
        - Customer Payment
      summary: Initiate Single Transfer
      description: Initiates a single transfer (e.g. a SEPA transfer).
      operationId: InitiateSingleTransfer
      parameters:
        - $ref: '#/components/parameters/customer-ip-address'
        - $ref: '#/components/parameters/rejection-nofunds-preferred'
        - $ref: '#/components/parameters/callbackUrl'
        - $ref: '#/components/parameters/queryTanSettings'
        - $ref: '#/components/parameters/editableDetails'
      requestBody:
        description: The request body object carries the data for a payment. It is expected when creating a payment. It is not required for REG/Protect tenants when requesting with `editableDetails=true`.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleTransferData'
            example:
              provider: ca650b48-3edc-45f4-938d-d21df8cba761
              credentials:
                userid: mXlkGe+ukAEs+2iH ... D/MOfGsd8HY=
                pin: XO2jgZ ... 5GfhKpZmw=
              product: DE89370400440532013000
              instant: false
              requestedExecutionDate: 2024-09-19
              transferDetails:
                recipient: netzpolitik.org e. V.
                purpose: Spende netzpolitik.de
                iban: DE62430609671149278400
                bic: GENODEM1GLS
                currency: EUR
                amount: 1337.42
                endToEndId: be7649876d5f439886fa816993ac9f9f
        required: true
      responses:
        "200":
          $ref: '#/components/responses/singleTransferInitiated'
        "451":
          $ref: '#/components/responses/regprotectPayment'
      deprecated: false
  /customer/v2/payment/single-transfer/{payment-id}:
    get:
      tags:
        - Customer Payment
      summary: Get Single Transfer
      description: Get the current status of the single transfer.
      operationId: GetSingleTransfer
      parameters:
        - $ref: '#/components/parameters/payment-id'
      responses:
        "200":
          description: Returns the current status of the single transfer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SingleTransferResult'
              example:
                messages:
                  - level: INFO
                    code: BA3010
                    message: SCA Methode auswählen
                    details: Bitte wählen Sie eine SCA-Methode aus
                scaMethods:
                  - code: 2
                    name: mTAN
                    hint: mTAN
                  - code: 1
                    name: Mock-TAN
                    hint: Mock-TAN
                relations:
                  - rel: self
                    href: https://banksapi.io/customer/v2/payment/single-transfer/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
                  - rel: set_method
                    href: https://banksapi.io/customer/v2/payment/single-transfer/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7/consent
                transfer:
                  provider: ca650b48-3edc-45f4-938d-d21df8cba761
                  product: DE89370400440532013000
                  paymentId: 5208b5cb-2f88-4bba-87a5-c5e0356c460c
                  ebics: false
                  instant: false
                  requestedExecutionDate: 2024-09-19
                  transferDetails:
                    recipient: netzpolitik.org e. V.
                    purpose: Spende netzpolitik.de
                    iban: DE62430609671149278400
                    bic: GENODEM1GLS
                    currency: EUR
                    amount: 1337.42
                    endToEndId: be7649876d5f439886fa816993ac9f9f
        "404":
          description: Payment could not be found
      deprecated: false
  /customer/v2/payment/bulk-transfer:
    post:
      tags:
        - Customer Payment
      summary: Initiate Bulk Transfer
      description: Initiates a bulk transfer (e.g. a SEPA bulk transfer).
      operationId: InitiateBulkTransfer
      parameters:
        - $ref: '#/components/parameters/customer-ip-address'
        - $ref: '#/components/parameters/rejection-nofunds-preferred'
        - $ref: '#/components/parameters/callbackUrl'
        - $ref: '#/components/parameters/queryTanSettings'
      requestBody:
        description: The request body object carries the data for a payment. It is expected when creating a payment.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkTransferData'
            example:
              provider: ca650b48-3edc-45f4-938d-d21df8cba761
              credentials:
                userid: mXlkGe+ukAEs+2iH... D/MOfGsd8HY=
                pin: XO2jgZ... 5GfhKpZmw=
              product: DE89370400440532013000
              instant: false
              requestedExecutionDate: 2024-09-19
              transferDetails:
                - recipient: UNICEF
                  purpose: Spende UNICEF
                  iban: DE57370205000000300000
                  bic: BFSWDE33XXX
                  currency: EUR
                  amount: 150.00
                  endToEndId: be7649876d5f439886fa816993ac9f9f
                - recipient: netzpolitik.org e. V.
                  purpose: Spende netzpolitik.de
                  iban: DE62430609671149278400
                  bic: GENODEM1GLS
                  currency: EUR
                  amount: 75.00
                  endToEndId: be7649876d5f439886fa816993ac9f9f
        required: true
      responses:
        "200":
          $ref: '#/components/responses/bulkTransferInitiated'
        "451":
          $ref: '#/components/responses/regprotectPayment'
      deprecated: false
  /customer/v2/payment/bulk-transfer/{payment-id}:
    get:
      tags:
        - Customer Payment
      summary: Get Bulk Transfer
      description: Get the current status of the bulk transfer.
      operationId: GetBulkTransfer
      parameters:
        - $ref: '#/components/parameters/payment-id'
      responses:
        "200":
          description: Returns the current status of the bulk transfer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkTransferResult'
              example:
                messages:
                  - level: INFO
                    code: BA3010
                    message: SCA Methode auswählen
                    details: Bitte wählen Sie eine SCA-Methode aus
                scaMethods:
                  - code: 2
                    name: mTAN
                    hint: mTAN
                  - code: 1
                    name: Mock-TAN
                    hint: Mock-TAN
                relations:
                  - rel: self
                    href: https://banksapi.io/customer/v2/payment/bulk-transfer/fdc61bcd-d0ee-4999-9c77-eff3ba8db0ce
                  - rel: set_method
                    href: https://banksapi.io/customer/v2/payment/bulk-transfer/fdc61bcd-d0ee-4999-9c77-eff3ba8db0ce/consent
                transfer:
                  provider: ca650b48-3edc-45f4-938d-d21df8cba761
                  product: DE89370400440532013000
                  paymentId: 5208b5cb-2f88-4bba-87a5-c5e0356c460c
                  ebics: false
                  instant: false
                  requestedExecutionDate: 2024-09-19
                  transferDetails:
                    - recipient: UNICEF
                      purpose: Spende UNICEF
                      iban: DE57370205000000300000
                      bic: BFSWDE33XXX
                      currency: EUR
                      amount: 150.00
                      endToEndId: be7649876d5f439886fa816993ac9f9f
                    - recipient: netzpolitik.org e. V.
                      purpose: Spende netzpolitik.de
                      iban: DE62430609671149278400
                      bic: GENODEM1GLS
                      currency: EUR
                      amount: 75.00
                      endToEndId: be7649876d5f439886fa816993ac9f9f
        "404":
          description: Payment could not be found
      deprecated: false
  /customer/v2/payment/single-debit:
    post:
      tags:
        - Customer Payment
      summary: Initiate Single Debit
      description: Initiates a single debit (e.g. a SEPA debit).
      operationId: InitiateSingleDebit
      parameters:
        - $ref: '#/components/parameters/queryTanSettings'
      requestBody:
        description: The request body object carries the data for a payment. It is expected when creating a payment.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleDebitData'
            example:
              provider: ca650b48-3edc-45f4-938d-d21df8cba761
              credentials:
                userid: mXlkGe+ukAEs+2iH ... D/MOfGsd8HY=
                pin: XO2jgZ ... 5GfhKpZmw=
              product: DE89370400440532013000
              business: false
              sequenceType: OOFF
              creditorSchemeIdentification: GlauebigerId
              requestedCollectionDate: "2022-02-22"
              debitDetails:
                amount: 1337.42
                currency: EUR
                purpose: Verwendungszweck
                endToEndId: "123"
                debtorName: Max Mustermann
                debtorIban: DE62430609671149278400
                debtorAccountNumber: "1149278400"
                debtorBankCode: "43060967"
                debtorBic: GENODEM1GLS
                mandateIdentification: MandatsId
                mandateDateOfSignature: "2022-02-02"
        required: true
      responses:
        "200":
          $ref: '#/components/responses/singleDebitInitiated'
        "451":
          $ref: '#/components/responses/regprotectPayment'
      deprecated: false
  /customer/v2/payment/single-debit/{payment-id}:
    get:
      tags:
        - Customer Payment
      summary: Get Single Debit
      description: Get the current status of the single debit.
      operationId: GetSingleDebit
      parameters:
        - $ref: '#/components/parameters/payment-id'
      responses:
        "200":
          $ref: '#/components/responses/singleDebitInitiated'
        "404":
          description: Payment could not be found
      deprecated: false
  /customer/v2/payment/bulk-debit:
    post:
      tags:
        - Customer Payment
      summary: Initiate Bulk Debit
      description: Initiates a bulk debit (e.g. a SEPA debit).
      operationId: InitiateBulkDebit
      parameters:
        - $ref: '#/components/parameters/queryTanSettings'
      requestBody:
        description: The request body object carries the data for a payment. It is expected when creating a payment.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkDebitData'
            example:
              provider: ca650b48-3edc-45f4-938d-d21df8cba761
              credentials:
                userid: mXlkGe+ukAEs+2iH ... D/MOfGsd8HY=
                pin: XO2jgZ ... 5GfhKpZmw=
              product: DE89370400440532013000
              business: false
              sequenceType: OOFF
              creditorSchemeIdentification: GlauebigerId
              requestedCollectionDate: "2022-02-22"
              debitDetails:
                - amount: 1337.42
                  currency: EUR
                  purpose: Verwendungszweck
                  endToEndId: "123"
                  debtorName: Max Mustermann
                  debtorIban: DE62430609671149278400
                  debtorAccountNumber: "1149278400"
                  debtorBankCode: "43060967"
                  debtorBic: GENODEM1GLS
                  mandateIdentification: MandatsId
                  mandateDateOfSignature: "2022-02-02"
                - amount: 42
                  currency: EUR
                  purpose: Verwendungszweck 2
                  endToEndId: "124"
                  debtorName: Maxi Mustermann
                  debtorIban: DE00123456789012345678
                  debtorAccountNumber: "9012345678"
                  debtorBankCode: "12345678"
                  debtorBic: SSKMDEMMXXX
                  mandateIdentification: MandatsId
                  mandateDateOfSignature: "2022-02-02"
        required: true
      responses:
        "200":
          $ref: '#/components/responses/bulkDebitInitiated'
        "451":
          $ref: '#/components/responses/regprotectPayment'
      deprecated: false
  /customer/v2/payment/bulk-debit/{payment-id}:
    get:
      tags:
        - Customer Payment
      summary: Get Bulk Debit
      description: Get the current status of the bulk debit.
      operationId: GetBulkDebit
      parameters:
        - $ref: '#/components/parameters/payment-id'
      responses:
        "200":
          $ref: '#/components/responses/bulkDebitInitiated'
        "404":
          description: Payment could not be found
      deprecated: false
  /customer/v2/payment/xml/{payment-id}:
    get:
      tags:
        - Customer Payment
      summary: Get XML Payment
      description: Get the current status of the XML payment.
      operationId: GetXmlPayment
      parameters:
        - $ref: '#/components/parameters/payment-id'
      responses:
        "200":
          $ref: '#/components/responses/xmlPaymentInitiated'
        "404":
          description: Payment could not be found
      deprecated: false
  /customer/v2/consent/{consent-id}:
    get:
      tags:
        - Customer Consent
      summary: Get Consent
      description: Get the current status of the consent, without polling the provider
      operationId: GetConsent
      parameters:
        - $ref: '#/components/parameters/consent-id'
      responses:
        "200":
          description: Returns the current status of the consent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Consent'
              example:
                messages:
                  - level: INFO
                    code: BA3020
                    message: SCA Medium auswählen
                    details: Bitte wählen Sie ein SCA-Medium aus
                scaMediums:
                  - name: Handy Eins
                    mediaClass: MOBILE
                relations:
                  - rel: self
                    href: https://banksapi.io/customer/v2/consent/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
                  - rel: set_medium
                    href: https://banksapi.io/customer/v2/consent/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
          links:
            self:
              $ref: '#/components/links/self'
            set_method:
              $ref: '#/components/links/set_method'
            set_medium:
              $ref: '#/components/links/set_medium'
            authenticate:
              $ref: '#/components/links/authenticate'
            authenticate_decoupled:
              $ref: '#/components/links/authenticate_decoupled'
            cancel:
              $ref: '#/components/links/cancel'
            get_single_transfer:
              $ref: '#/components/links/get_single_transfer'
            get_bulk_transfer:
              $ref: '#/components/links/get_bulk_transfer'
            get_single_debit:
              $ref: '#/components/links/get_single_debit'
            get_bulk_debit:
              $ref: '#/components/links/get_bulk_debit'
      deprecated: false
    post:
      tags:
        - Customer Consent
      summary: Update Consent
      description: Submits a SCA method, medium or authentication data for the current SCA.
      operationId: UpdateConsent
      parameters:
        - $ref: '#/components/parameters/consent-id'
      requestBody:
        $ref: '#/components/requestBodies/SubmitScaData'
      responses:
        "200":
          description: Returns the current status of the consent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Consent'
              example:
                messages:
                  - level: INFO
                    code: BA3020
                    message: SCA Medium auswählen
                    details: Bitte wählen Sie ein SCA-Medium aus
                scaMediums:
                  - name: Handy Eins
                    mediaClass: MOBILE
                relations:
                  - rel: self
                    href: https://banksapi.io/customer/v2/consent/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
                  - rel: set_medium
                    href: https://banksapi.io/customer/v2/consent/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
          links:
            self:
              $ref: '#/components/links/self'
            set_method:
              $ref: '#/components/links/set_method'
            set_medium:
              $ref: '#/components/links/set_medium'
            authenticate:
              $ref: '#/components/links/authenticate'
            authenticate_decoupled:
              $ref: '#/components/links/authenticate_decoupled'
            cancel:
              $ref: '#/components/links/cancel'
            get_single_transfer:
              $ref: '#/components/links/get_single_transfer'
            get_bulk_transfer:
              $ref: '#/components/links/get_bulk_transfer'
            get_single_debit:
              $ref: '#/components/links/get_single_debit'
            get_bulk_debit:
              $ref: '#/components/links/get_bulk_debit'
      deprecated: false
  /customer/v2/consent/{consent-id}/poll:
    get:
      tags:
        - Customer Consent
      summary: Poll Consent
      description: Can be used for the decoupled SCA approach to check if the SCA has already been confirmed.
      operationId: PollConsent
      parameters:
        - $ref: '#/components/parameters/consent-id'
      responses:
        "200":
          description: Returns the current status of the consent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Consent'
              example:
                messages:
                  - level: INFO
                    code: BA3030
                    message: SCA Challenge
                    details: Bitte autorisieren Sie den Vorgang
                challenge:
                  name: Entkoppelte Authentifizierung
                  content:
                    instructions: Bitte führen Sie die entkoppelte Authentifizierung durch.
                  decoupled: true
                  redirect: false
                relations:
                  - rel: self
                    href: https://banksapi.io/customer/v2/consent/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
                  - rel: authenticate
                    href: https://banksapi.io/customer/v2/consent/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
                  - rel: authenticate_decoupled
                    href: https://banksapi.io/customer/v2/consent/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7/poll
          links:
            self:
              $ref: '#/components/links/self'
            set_method:
              $ref: '#/components/links/set_method'
            set_medium:
              $ref: '#/components/links/set_medium'
            authenticate:
              $ref: '#/components/links/authenticate'
            authenticate_decoupled:
              $ref: '#/components/links/authenticate_decoupled'
            cancel:
              $ref: '#/components/links/cancel'
            get_single_transfer:
              $ref: '#/components/links/get_single_transfer'
            get_bulk_transfer:
              $ref: '#/components/links/get_bulk_transfer'
            get_single_debit:
              $ref: '#/components/links/get_single_debit'
            get_bulk_debit:
              $ref: '#/components/links/get_bulk_debit'
      deprecated: false
  /customer/v2/consent/{consent-id}/cancel:
    post:
      tags:
        - Customer Consent
      summary: Cancel a Consent
      description: Cancels an SCA redirect and stops the corresponding access synchronization. This request is permitted only for the redirect SCA approach.
      operationId: CancelConsentRedirect
      parameters:
        - $ref: '#/components/parameters/consent-id'
      responses:
        "200":
          description: Returns the current status of the consent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Consent'
              example:
                messages:
                  - level: ERROR
                    code: BA3040
                    message: SCA fehlgeschlagen
                    details: Redirect-SCA wurde abgebrochen
      deprecated: false
  /customer/v2/regprotect/sessions:
    delete:
      tags:
        - Customer REG/Protect
      summary: Delete all REG/Protect sessions
      description: Invalidates all REG/Protect sessions of the authenticated user.
      operationId: DeleteAllRegprotectSessions
      responses:
        "200":
          description: The HTTP status 200 returns without any further response body.
      deprecated: false
  /customer/v2/bankzugaenge/{access-id}/selectedbankproducts:
    put:
      tags:
        - Customer REG/Protect
      summary: Change bank product selection
      description: Change the selected products of the given bank access
      operationId: ChangeBankProductSelection
      parameters:
        - $ref: '#/components/parameters/access-id'
      responses:
        "451":
          $ref: '#/components/responses/regprotect'
      deprecated: false
  /customer/v2/bankzugaenge/builder:
    put:
      tags:
        - Customer Bank Access Builder
      summary: Create Bank Access Builder
      description: Creates a builder instance for a bank access.
      operationId: CreateBankAccessBuilder
      requestBody:
        description: The body contains information about the bank access to create the builder for.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBankAccessBuilder'
            example:
              id: 815251d6-c062-4f61-bec0-182bc14a48fb
              providerId: e966438b-83cf-49b7-bdcb-3d0550bfd8b2
              bankprodukte:
                - id: DE89370400440532013000
                  bezeichnung: Tagesgeldkonto
                  kategorie: TAGESGELDKONTO
                  saldo: 27365.56
                  saldoDatum: "2021-10-15 00:00:00"
                  waehrung: EUR
                  kontonummer: "32013000"
                  iban: DE89370400440532013000
                  bic: XXX12345678
                  blz: "12345678"
                  kreditinstitut: Fnord Bank GmbH
                  inhaber: Jane and John Doe
                - id: DE00123456789012345679
                  saldo: 42.00
                  iban: DE00123456789012345679
                  inhaber: Jane Doe
        required: true
      responses:
        "201":
          $ref: '#/components/responses/bankAccessCreated'
  /verification-of-payee/single:
    post:
      tags:
        - Verification of Payee
      summary: Verify Single Payee
      description: |
        Verifies if the provided recipient name or organization identification matches the account 
        holder information for the given IBAN.
        This service can be used standalone to validate payee information before making payments.
        
        **Demo Mode**: Currently returns demo results based on recipient name - use "Schmidt" for NO_MATCH, 
        "Mueller" for CLOSE_MATCH, "Unknown" for NOT_APPLICABLE, all other names return MATCH. 
        Identification verification always returns MATCH.
      operationId: VerifySinglePayee
      requestBody:
        description: The verification request containing transfer details to verify
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VopSingleRequest'
            example:
              transferDetails:
                recipient: "Max Mueller"
                iban: "DE00123456789012345679"
                bic: "DEMO1234"
        required: true
      responses:
        "200":
          description: Verification check completed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VopSingleResponse'
              example:
                transferDetails:
                  recipient: "Max Mueller"
                  iban: "DE00123456789012345679"
                  bic: "DEMO1234"
                  verificationOfPayee:
                    result: "CLOSE_MATCH"
                    matchedName: "M. Mueller"
        "400":
          description: Bad request - invalid input data
        "401":
          description: Unauthorized - invalid or missing authentication
        "403":
          description: Forbidden - insufficient permissions
        "500":
          description: Internal server error
      deprecated: false
  /verification-of-payee/batch:
    post:
      tags:
        - Verification of Payee
      summary: Verify Batch of Payees
      description: |
        Submits a batch of payee verifications for processing.
        Returns a batch ID that can be used to retrieve results.
        
        **Demo Mode**: Returns a batch ID immediately. Results will be available after 30 seconds 
        via the GET endpoint.
      operationId: VerifyBatchPayees
      requestBody:
        description: The batch verification request containing an array of transfer details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VopBatchRequest'
            example:
              transferDetails:
                - recipient: "Max Mueller"
                  iban: "DE00123456789012345679"
                  bic: "DEMO1234"
                - recipient: "John Schmidt"
                  iban: "DE00987654321098765432"
                  bic: "DEMO5678"
        required: true
      responses:
        "201":
          description: Batch verification submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VopBatchResponse'
              example:
                batchVopId: "550e8400-e29b-41d4-a716-446655440000"
        "400":
          description: Bad request - invalid input data
        "401":
          description: Unauthorized - invalid or missing authentication
        "403":
          description: Forbidden - insufficient permissions
        "500":
          description: Internal server error
      deprecated: false
  /verification-of-payee/batch/{batch-vop-id}:
    get:
      tags:
        - Verification of Payee
      summary: Get Batch Verification Results
      description: |
        Retrieves the results of a batch verification request.
        
        **Demo Mode**: 
        - If called within 30 seconds of batch creation: returns only the batch ID (processing)
        - If called after 30 seconds: returns batch ID with demo verification results
      operationId: GetBatchVerificationResults
      parameters:
        - name: batch-vop-id
          in: path
          description: The batch verification ID returned from the batch submission
          required: true
          schema:
            type: string
            example: "550e8400-e29b-41d4-a716-446655440000"
      responses:
        "200":
          description: Batch verification results retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VopBatchResponse'
              examples:
                processing:
                  summary: Still processing
                  value:
                    batchVopId: "550e8400-e29b-41d4-a716-446655440000"
                completed:
                  summary: Processing completed
                  value:
                    batchVopId: "550e8400-e29b-41d4-a716-446655440000"
                    transferDetails:
                      - recipient: "Max Mueller"
                        iban: "DE00123456789012345679"
                        bic: "DEMO1234"
                        verificationOfPayee:
                          result: "CLOSE_MATCH"
                          matchedName: "M. Mueller"
                      - recipient: "John Schmidt"
                        iban: "DE00987654321098765432"
                        bic: "DEMO5678"
                        verificationOfPayee:
                          result: "NO_MATCH"
        "404":
          description: Batch verification ID not found
        "401":
          description: Unauthorized - invalid or missing authentication
        "403":
          description: Forbidden - insufficient permissions
        "500":
          description: Internal server error
      deprecated: false
components:
  schemas:
    AuthenticationInfo:
      title: AuthenticationInfo
      description: The AuthenticationInfo object provides detailed information about the sign-in process to the provider. With the included data, it is possible to optimize the user experience of the own application in the provider system, which on the one hand reduce the nerve factor for the user but can also minimize their own support expenses due to login problems.
      required:
        - fields
      type: object
      properties:
        loginHint:
          type: string
          description: Note text for the registration process, which applies to the complete registration process
        fields:
          type: array
          description: Array with login parameters
          items:
            $ref: '#/components/schemas/Field'
      example:
        loginHint: Die User-ID setzt sich aus Ihrer 8-stelligen Hauptkontonummer und der 2-stelligen Unterkontonummer zusammen.
        fields:
          - fieldkey: userid
            label: KOMnet-Key
            secret: false
            hint: Der DEMOnet-Key ist ist auf Ihrer DEMO-EC-Karte aufgedruckt
            format: '^.{1,50}$'
          - fieldkey: pin
            label: Demo-Passwort
            secret: true
            hint: demo1, demo2 oder demo3
            format: '^.{1,50}$'
    Backends:
      title: Backends
      required:
        - scraperName
        - defaultProcess
        - accountsAccess
        - loginAccess
        - saldoAccess
        - turnoverAccess
        - transactionAccess
        - bausparListAccess
        - bausparDetailAccess
        - bausparTurnoverAccess
        - creditcardsListAccess
        - creditcardsDetailAccess
        - creditcardsTurnoverAccess
        - depotsListAccess
        - depotsDetailAccess
        - depotsSecuritiesAccess
        - tanmethodAccess
        - maxSyncsPerDayAndUser
      type: object
      properties:
        scraperName:
          type: string
        defaultProcess:
          type: string
        accountsAccess:
          type: string
        loginAccess:
          type: string
        saldoAccess:
          type: string
        turnoverAccess:
          type: string
        transactionAccess:
          type: string
        bausparListAccess:
          type: string
        bausparDetailAccess:
          type: string
        bausparTurnoverAccess:
          type: string
        creditcardsListAccess:
          type: string
        creditcardsDetailAccess:
          type: string
        creditcardsTurnoverAccess:
          type: string
        depotsListAccess:
          type: string
        depotsDetailAccess:
          type: string
        depotsSecuritiesAccess:
          type: string
        tanmethodAccess:
          type: string
        maxSyncsPerDayAndUser:
          type: integer
          format: int32
      example:
        scraperName: mock
        defaultProcess: SCRAPER
        accountsAccess: SCRAPER
        loginAccess: SCRAPER
        saldoAccess: SCRAPER
        turnoverAccess: SCRAPER
        transactionAccess: SCRAPER
        bausparListAccess: SCRAPER
        bausparDetailAccess: SCRAPER
        bausparTurnoverAccess: SCRAPER
        creditcardsListAccess: SCRAPER
        creditcardsDetailAccess: SCRAPER
        creditcardsTurnoverAccess: SCRAPER
        depotsListAccess: SCRAPER
        depotsDetailAccess: SCRAPER
        depotsSecuritiesAccess: SCRAPER
        tanmethodAccess: SCRAPER
        maxSyncsPerDayAndUser: 4
    Balance:
      title: Balance
      type: object
      properties:
        saldo:
          type: number
          description: Balance/value of bank product
          example: "200000.13"
        waehrung:
          type: string
          description: Currency in which the bank product is valued/managed (Alphabetic Code ISO 4217)
          example: EUR
        saldoDatum:
          type: string
          format: YYYY-MM-DD hh:mm:ss
          description: Balance/value date as reported by the bank/service provider
          example: "2023-02-23 13:37:00"
    BankAccess:
      allOf:
        - title: Bank Access
          required:
            - id
            - providerId
            - aktualisierungszeitpunkt
            - relations
            - status
            - bankprodukte
            - sync
          type: object
          description: The Bank Access contains all information about a single bank access for a specific user.
          properties:
            id:
              type: string
              format: uuid
              description: The id of the bank access in UUID format.
            providerId:
              type: string
              format: uuid
              description: The id of the provider the bank access belongs to, in UUID format.
            aktualisierungszeitpunkt:
              type: string
              format: YYYY-MM-DD hh:mm:ss
              description: Date and time of the last query at the bank / service provider
              example: "2016-06-10 17:17:40"
            messages:
              type: array
              description: List of messages that show which steps are required to continue further.
              items:
                $ref: '#/components/schemas/Message'
            tanMedien:
              type: array
              description: Lis tof available TAN media.
              items:
                $ref: '#/components/schemas/TanMedium'
            sicherheitsverfahren:
              type: array
              description: List of possible security procedures for this account.
              items:
                $ref: '#/components/schemas/SecurityProcedure'
            aktivesSicherheitsverfahren:
              $ref: '#/components/schemas/SecurityProcedure'
            challenge:
              $ref: '#/components/schemas/Challenge'
            relations:
              type: array
              description: List of relations that are available as next steps.
              items:
                $ref: '#/components/schemas/Relation'
            type:
              type: string
              description: Type of the bank access. This field will not be returned if the value is 'DEFAULT'.<br/><br/>Type list:<li>`DEFAULT`</li><li>`EBICS`</li><li>`BUILDER`</li>
              enum:
                - DEFAULT
                - EBICS
                - BUILDER
            status:
              type: string
              description: 'Retrieval status of the bank account<br/><br/>Status list:<li>`INTERAKTION` - **Interaction**: User intervention required, e.g. SCA required, see messages and relations</li><li>`VOLLSTAENDIG` - **Finished**: The data retrieval is completed</li>'
              enum:
                - INTERAKTION
                - VOLLSTAENDIG
            timeout:
              type: string
              format: YYYY-MM-DD hh:mm:ss
              description: Lifetime of the data in seconds from the time of the update.
              example: "2016-12-24 13:37:42"
            bankprodukte:
              type: array
              description: The banking products available in the access.
              items:
                $ref: '#/components/schemas/Product'
              example: []
            sync:
              type: boolean
              description: Whether the bank account is automatically updated in the background or not.
              example: false
          example:
            status: VOLLSTAENDIG
            tanMedien:
              - gueltigVon: "2016-06-03 17:17:41"
                gueltigBis: "2016-06-03 17:17:41"
                name: Mobil
                medienklasse: MOBIL
            sicherheitsverfahren:
              - kodierung: 2
                name: mTAN
                hinweis: mTAN
              - kodierung: 1
                name: Mock-TAN
                hinweis: Mock-TAN
            aktivesSicherheitsverfahren:
              kodierung: 1
              name: Mock-TAN
              hinweis: Mock-TAN
            aktualisierungszeitpunkt: "2016-06-10 17:17:40"
            timeout: "2016-12-24 13:37:42"
            bankprodukte: []
            sync: false
      example:
        status: VOLLSTAENDIG
        aktivesSicherheitsverfahren:
          kodierung: 1
          name: Mock-TAN
          hinweis: Mock-TAN
        aktualisierungszeitpunkt: "2016-06-10 17:17:40"
        timeout: "2016-12-24 13:37:42"
        bankprodukte: []
        sync: false
        tanMedien:
          - gueltigVon: "2016-06-03 17:17:41"
            gueltigBis: "2016-06-03 17:17:41"
            name: Mobil
            medienklasse: MOBIL
        sicherheitsverfahren:
          - kodierung: 2
            name: mTAN
            hinweis: mTAN
          - kodierung: 1
            name: Mock-TAN
            hinweis: Mock-TAN
        messages:
          - level: INFO
            code: BA3010
            message: SCA benötigt
            details: Bitte wählen Sie eine SCA-Methode aus
        relations:
          - rel: set_method
            href: https://banksapi.io/v2/customer/bankzugaenge/4c45b12f-ae68-4933-86df-ff2578a7a203/consent/0dd14633-1853-4d22-92f9-776429850a6b
    BankAccessIssues:
      title: Bank Access Issues
      required:
        - relations
      type: object
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/Message'
          description: Messages transport both errors and analysis events.
        relations:
          type: array
          items:
            $ref: '#/components/schemas/Relation'
          description: The relations available for bank access
        tanMedien:
          type: array
          items:
            $ref: '#/components/schemas/TanMedium'
          description: List of available TAN media in the access
        aktivesSicherheitsverfahren:
          $ref: '#/components/schemas/SecurityProcedure'
        aktualisierungszeitpunkt:
          description: Time of the last query at the bank / service provider
          example: "2016-06-10 17:17:40"
        id:
          type: string
          description: ID of the bank access
          example: 815251d6-c062-4f61-bec0-182bc14a48fb
        providerId:
          type: string
          description: ID of the provider
          example: 00000000-0000-0000-0000-000000000000
        challenge:
          $ref: '#/components/schemas/Challenge'
      description: The issues endpoint holds the last known issues for a bank access (useful to retrieve the reason for delayed / failed background or manual sync) This method communicates all messages, also errors, that are not displayed in the stable bank access
      example:
        id: 815251d6-c062-4f61-bec0-182bc14a48fb
        providerId: 00000000-0000-0000-0000-000000000000
        tanMedien:
          - gueltigVon: "2016-06-03 17:17:41"
            gueltigBis: "2016-06-03 17:17:41"
            name: Mobil
            medienklasse: MOBIL
        sicherheitsverfahren:
          - kodierung: 2
            name: mTAN
            hinweis: mTAN
          - kodierung: 1
            name: Mock-TAN
            hinweis: Mock-TAN
        aktivesSicherheitsverfahren:
          kodierung: 1
          name: Mock-TAN
          hinweis: Mock-TAN
        challenge:
          name: Mock-TAN-Verfahren
          content:
            instructions: Enter a TAN that is divisible by 2
          decoupled: false
          redirect: false
        aktualisierungszeitpunkt: "2016-06-10 17:17:40"
        messages:
          - level: INFO
            code: BA3010
            message: SCA benötigt
            details: Bitte wählen Sie eine SCA-Methode aus
        relations:
          - rel: set_method
            href: https://banksapi.io/v2/customer/consent/1345340218050910215PSDDE-BAFIN-152070CO4960JJ
    BankProductStatus:
      title: BankProductStatus
      description: 'Retrieval status of the bank product, which always equals the status of the corresponding bank access<br/><br/>Status list :<li>`INTERAKTION` - **Interaction**: User intervention required, e.g. SCA required, see messages and relations</li><li>`VOLLSTAENDIG` - **Finished**: The data retrieval is completed</li>'
      type: string
      enum:
        - INTERAKTION
        - VOLLSTAENDIG
      example: VOLLSTAENDIG
    BulkDebitData:
      allOf:
        - $ref: '#/components/schemas/PaymentInitializationDetails'
        - $ref: '#/components/schemas/DebitBaseInfo'
        - description: Request data to start a debit
          required:
            - debitDetails
          title: BulkDebitData
          type: object
          properties:
            debitDetails:
              type: array
              items:
                $ref: '#/components/schemas/DebitDetails'
      example:
        provider: ca650b48-3edc-45f4-938d-d21df8cba761
        credentials:
          userid: mXlkGe+ukAEs+2iH ... D/MOfGsd8HY=
          pin: XO2jgZ ... 5GfhKpZmw=
        product: DE89370400440532013000
        business: false
        sequenceType: OOFF
        creditorSchemeIdentification: GlauebigerId
        requestedCollectionDate: "2022-02-22"
        debitDetails:
          - amount: 1337.42
            currency: EUR
            purpose: Verwendungszweck
            endToEndId: "123"
            debtorName: Max Mustermann
            debtorIban: DE62430609671149278400
            debtorAccountNumber: "1149278400"
            debtorBankCode: "43060967"
            debtorBic: GENODEM1GLS
            mandateIdentification: MandatsId
            mandateDateOfSignature: "2022-02-02"
          - amount: 42
            currency: EUR
            purpose: Verwendungszweck 2
            endToEndId: "124"
            debtorName: Maxi Mustermann
            debtorIban: DE00123456789012345678
            debtorAccountNumber: "9012345678"
            debtorBankCode: "12345678"
            debtorBic: SSKMDEMMXXX
            mandateIdentification: MandatsId
            mandateDateOfSignature: "2022-02-02"
    BulkDebitDataBankAccess:
      allOf:
        - $ref: '#/components/schemas/DebitBaseInfo'
        - description: Request data to start a bulk debit
          required:
            - debitDetails
          title: BulkDebitDataBankAccess
          type: object
          properties:
            debitDetails:
              type: array
              items:
                $ref: '#/components/schemas/DebitDetails'
    BulkDebitResult:
      allOf:
        - $ref: '#/components/schemas/Consent'
        - description: Current status of debit
          required:
            - debit
          title: BulkDebitResult
          type: object
          properties:
            debit:
              allOf:
                - $ref: '#/components/schemas/DebitBaseInfo'
                - required:
                    - provider
                    - product
                    - paymentId
                    - ebics
                    - debitDetails
                  type: object
                  properties:
                    provider:
                      type: string
                      format: uuid
                    product:
                      type: string
                    paymentId:
                      type: string
                      format: uuid
                      description: Unique id generated for each payment.
                    ebics:
                      type: boolean
                      description: Whether this debit was submitted via EBICS or not.
                    debitDetails:
                      type: array
                      items:
                        $ref: '#/components/schemas/DebitDetails'
      example:
        messages:
          - level: INFO
            code: BA3010
            message: SCA Methode auswählen
            details: Bitte wählen Sie eine SCA-Methode aus
        scaMethods:
          - code: 2
            name: mTAN
            hint: mTAN
          - code: 1
            name: Mock-TAN
            hint: Mock-TAN
        relations:
          - rel: self
            href: https://banksapi.io/customer/v2/payment/bulk-debit/0b1937c7-82eb-49d4-99cb-6fdca765c450
          - rel: set_method
            href: https://banksapi.io/customer/v2/payment/bulk-debit/0b1937c7-82eb-49d4-99cb-6fdca765c450/consent
        debit:
          provider: ca650b48-3edc-45f4-938d-d21df8cba761
          product: DE89370400440532013000
          business: false
          sequenceType: OOFF
          creditorSchemeIdentification: GlauebigerId
          requestedCollectionDate: "2022-02-22"
          debitDetails:
            - amount: 1337.42
              currency: EUR
              purpose: Verwendungszweck
              endToEndId: "123"
              debtorName: Max Mustermann
              debtorIban: DE62430609671149278400
              debtorAccountNumber: "1149278400"
              debtorBankCode: "43060967"
              debtorBic: GENODEM1GLS
              mandateIdentification: MandatsId
              mandateDateOfSignature: "2022-02-02"
            - amount: 42
              currency: EUR
              purpose: Verwendungszweck 2
              endToEndId: "124"
              debtorName: Maxi Mustermann
              debtorIban: DE00123456789012345678
              debtorAccountNumber: "9012345678"
              debtorBankCode: "12345678"
              debtorBic: SSKMDEMMXXX
              mandateIdentification: MandatsId
              mandateDateOfSignature: "2022-02-02"
    BulkTransferData:
      allOf:
        - $ref: '#/components/schemas/PaymentInitializationDetails'
        - $ref: '#/components/schemas/BasicBulkTransferData'
      example:
        provider: ca650b48-3edc-45f4-938d-d21df8cba761
        credentials:
          userid: mXlkGe+ukAEs+2iH... D/MOfGsd8HY=
          pin: XO2jgZ... 5GfhKpZmw=
        product: DE89370400440532013000
        instant: false
        requestedExecutionDate: 2024-09-19
        transferDetails:
          - recipient: UNICEF
            purpose: Spende UNICEF
            iban: DE57370205000000300000
            bic: BFSWDE33XXX
            currency: EUR
            amount: 150.00
            endToEndId: be7649876d5f439886fa816993ac9f9f
          - recipient: netzpolitik.org e. V.
            purpose: Spende netzpolitik.de
            iban: DE62430609671149278400
            bic: GENODEM1GLS
            currency: EUR
            amount: 75.00
            endToEndId: be7649876d5f439886fa816993ac9f9f
    TransferDataBase:
      type: object
      required:
        - transferDetails
      properties:
        instant:
          type: boolean
          description: |
            If set to true, the transfer will be executed as an instant payment.
            Please note that instant payments may not be supported
            or may incur additional costs depending on the bank.
        requestedExecutionDate:
          type: string
          format: YYYY-MM-DD
          description: |
            The requested execution date of the transfer.
            Please note that transfers with execution date may not be supported depending on the bank.
    BasicBulkTransferData:
      allOf:
        - $ref: '#/components/schemas/TransferDataBase'
        - type: object
          properties:
            transferDetails:
              type: array
              items:
                $ref: '#/components/schemas/TransferDetails'
          description: Request payload to start a bulk transfer
      example:
        instant: false
        requestedExecutionDate: 2024-09-19
        transferDetails:
          - recipient: UNICEF
            purpose: Spende UNICEF
            iban: DE57370205000000300000
            bic: BFSWDE33XXX
            currency: EUR
            amount: 150.00
            endToEndId: be7649876d5f439886fa816993ac9f9f
          - recipient: netzpolitik.org e. V.
            purpose: Spende netzpolitik.de
            iban: DE62430609671149278400
            bic: GENODEM1GLS
            currency: EUR
            amount: 75.00
            endToEndId: be7649876d5f439886fa816993ac9f9f
    BasicSingleTransferData:
      allOf:
        - $ref: '#/components/schemas/TransferDataBase'
        - type: object
          properties:
            transferDetails:
                $ref: '#/components/schemas/TransferDetails'
          description: Request payload to start a single transfer
      example:
        instant: false
        requestedExecutionDate: 2024-09-19
        transferDetails:
          recipient: netzpolitik.org e. V.
          purpose: Spende netzpolitik.de
          iban: DE62430609671149278400
          bic: GENODEM1GLS
          currency: EUR
          amount: 1337.42
          endToEndId: be7649876d5f439886fa816993ac9f9f
    BulkTransferResult:
      allOf:
        - $ref: '#/components/schemas/Consent'
        - description: Current status of transfer
          required:
            - transfer
          title: BulkTransferResult
          type: object
          properties:
            transfer:
              required:
                - provider
                - product
                - paymentId
                - ebics
                - transferDetails
              type: object
              properties:
                provider:
                  type: string
                  format: uuid
                product:
                  type: string
                paymentId:
                  type: string
                  format: uuid
                  description: Unique id generated for each payment.
                ebics:
                  type: boolean
                  description: Whether this transfer was submitted via EBICS or not.
                instant:
                  type: boolean
                  description: Whether this transfer was initiated as an instant payment or not.
                requestedExecutionDate:
                  type: string
                  format: YYYY-MM-DD
                  description: |
                    The requested execution date of the transfer.
                    Please note that transfers with execution date may not be supported depending on the bank.
                transferDetails:
                  type: array
                  items:
                    $ref: '#/components/schemas/TransferDetails'
      example:
        messages:
          - level: INFO
            code: BA3010
            message: SCA Methode auswählen
            details: Bitte wählen Sie eine SCA-Methode aus
        scaMethods:
          - code: 2
            name: mTAN
            hint: mTAN
          - code: 1
            name: Mock-TAN
            hint: Mock-TAN
        relations:
          - rel: self
            href: https://banksapi.io/customer/v2/payment/bulk-transfer/fdc61bcd-d0ee-4999-9c77-eff3ba8db0ce
          - rel: set_method
            href: https://banksapi.io/customer/v2/payment/bulk-transfer/fdc61bcd-d0ee-4999-9c77-eff3ba8db0ce/consent
        transfer:
          provider: ca650b48-3edc-45f4-938d-d21df8cba761
          product: DE89370400440532013000
          paymentId: df5afff2-43e7-4fca-95fa-0d06251c9ce9
          ebics: false
          instant: false
          requestedExecutionDate: 2024-09-19
          transferDetails:
            - recipient: UNICEF
              purpose: Spende UNICEF
              iban: DE57370205000000300000
              bic: BFSWDE33XXX
              currency: EUR
              amount: 150.00
              endToEndId: be7649876d5f439886fa816993ac9f9f
            - recipient: netzpolitik.org e. V.
              purpose: Spende netzpolitik.de
              iban: DE62430609671149278400
              bic: GENODEM1GLS
              currency: EUR
              amount: 75.00
              endToEndId: be7649876d5f439886fa816993ac9f9f
    XmlPaymentResult:
      allOf:
        - $ref: '#/components/schemas/Consent'
        - description: Current status of XML payment
          required:
            - payment
          title: XmlPaymentResult
          type: object
          properties:
            payment:
              required:
                - provider
                - product
                - paymentId
                - ebics
                - painXml
              properties:
                provider:
                  type: string
                  format: uuid
                product:
                  type: string
                paymentId:
                  type: string
                  format: uuid
                  description: Unique id generated for each payment.
                ebics:
                  type: boolean
                  description: Whether this payment was submitted via EBICS or not.
                painXml:
                  type: string
                  description: The PAIN XML from the request as a string.
    Challenge:
      title: Challenge
      required:
        - name
        - content
      description: Contains information about TAN generation
      type: object
      properties:
        name:
          type: string
          description: Name of the TAN procedure
        content:
          $ref: '#/components/schemas/ChallengeContent'
        decoupled:
          type: boolean
          description: Indicates whether the SCA approach is decoupled, thus not expecting `scaAuthenticationData` within [Submit SCA Data](#/components/schemas/SubmitScaData), but just an empty object to confirm the user indicated that he meanwhile confirmed the activity, e.g. through the bank app, independently.
        redirect:
          type: boolean
          description: Indicates whether the SCA approach is redirect.
      example:
        challenge:
          name: chipTAN optisch
          content:
            instructions: Nutzen sie Ihren TAN-Generator und geben sie anschließend Ihre TAN ein.
            HHD: 11048714955205123456789F14302C303107
            HHDUC: 1234567891234567891234567890,01
          decoupled: false
          redirect: false
    ChallengeContent:
      title: ChallengeContent
      type: object
      properties:
        instructions:
          type: string
          description: Textual description on how to perform authentication
          example: Nutzen sie Ihren TAN-Generator und geben sie anschließend Ihre TAN ein.
        HHD:
          type: string
          description: Textual representation of flicker code when using optical ChipTAN
          example: 11048714955205123456789F14302C303107
        HHDUC:
          type: string
          description: Textual representation of code when using FlickerTAN
          example: 1234567891234567891234567890,01
        photo:
          type: string
          description: Base64-encoded png of the mosaic photo to be displayed to the user when using PhotoTAN
          example: data:image/png;base64,iVBORw0KGgoAAA...
        PDF:
          type: string
          description: Base64-encoded PDF needed for the challenge
          example: data:application/pdf;base64,JVBERi0xLjQNCj...
      description: Challenge data needed to perform the authentication with the chosen authentication method
      example:
        instructions: Nutzen sie Ihren TAN-Generator und geben sie anschließend Ihre TAN ein.
        HHD: 11048714955205123456789F14302C303107
        HHDUC: 1234567891234567891234567890,01
    Categorization:
      title: Categorization
      description: A Categorization object corresponds to a sales category
      type: object
      required:
        - category
        - displayName
      properties:
        category:
          type: string
          description: Unique category name of sales category
        systemName:
          type: string
          description: Unique system name of sales category
        displayName:
          type: string
          description: User friendly name of sales category
        parentCategory:
          type: string
          description: If it is a subcategory, this field includes the name of the main category
        parent:
          type: string
          description: If it is a subcategory, this field includes the system name of the main category
        tagScope:
          type: string
          description: The scope of the tag
        tagType:
          type: string
          description: The type of the tag
        tagId:
          type: string
          description: Unique id of the tag
        tagVersion:
          type: string
          description: The version of the tag
      example:
        category: bills_electricity
        parentCategory: bills
        displayName: Strom
        confidenceLevel: 0.8
    ChangeUserDetails:
      title: ChangeUserDetails
      description: Parameters to supply when changing user details
      type: object
      properties:
        username:
          type: string
          description: The unique username
        firstname:
          type: string
          description: The first name
        lastname:
          type: string
          description: Last name
        password:
          type: string
          description: Password
      example:
        username: demouser
        firstname: demo
        lastname: user
    CreateBankAccess:
      title: CreateBankAccess
      type: object
      description: A map where the key is the id of the bank access to be created, in UUID format (see example below), and the value is a CreateBankAccessData object.
      additionalProperties:
        $ref: '#/components/schemas/CreateBankAccessData'
      example:
        d48744c0-132c-4ae4-a909-1ff771f61503:
          providerId: 00000000-0000-0000-0000-000000000000
          credentials:
            userid: mOd2uKYr+2 ... TWOPCAt5zP
            pin: Hhnc+aW/eM ... 7F+XRSHasW
          sync: true
          selectedBankProducts:
            - DE00123456789012345679
    CreateBankAccessBuilder:
      title: CreateBankAccessBuilder
      type: object
      description: An object with all details necessary to create a bank access builder instance.
      required:
        - id
        - providerId
        - bankprodukte
      properties:
        id:
          type: string
          description: The ID of the access to create
          format: uuid
          example: 7cc37535-6d50-4ec5-82df-31e4fa19c271
        providerId:
          type: string
          description: The ID of the access provider (bank or service provider) according to the provider list
          format: uuid
          example: 92858552-1f5f-4264-8c37-67edd4b7af60
        bankprodukte:
          type: array
          description: The banking products available in the access.
          items:
            $ref: '#/components/schemas/SimpleProduct'
      example:
        id: 815251d6-c062-4f61-bec0-182bc14a48fb
        providerId: 00000000-0000-0000-0000-000000000000
        bankprodukte:
          - id: DE89370400440532013000
            status: VOLLSTAENDIG
            bezeichnung: Tagesgeldkonto
            kategorie: TAGESGELDKONTO
            saldo: 27365.56
            aktualisierungszeitpunkt: "2021-10-15 09:13:44"
            saldoDatum: "2021-10-15 00:00:00"
            waehrung: EUR
            kontonummer: "9012345679"
            iban: DE89370400440532013000
            bic: XXX12345678
            blz: "12345678"
            kreditinstitut: Demo Provider
            inhaber: Fritz Testmüller
    CreateBankAccessData:
      title: Create Bank Access Data
      type: object
      properties:
        providerId:
          type: string
          description: The ID of the access provider (bank or service provider) according to the provider list
          format: uuid
          example: 92858552-1f5f-4264-8c37-67edd4b7af60
        credentials:
          $ref: '#/components/schemas/Credentials'
        sync:
          type: boolean
          description: Whether an automatic regular background update is to be performed or not
          example: true
        selectedBankProducts:
          type: array
          description: The set of selected bank products that should be fetched.
          uniqueItems: true
          items:
            type: string
        ebics:
          type: boolean
          description: Whether this credentials are for EBICS or not.
          example: false
        hostId:
          type: string
          description: Host-ID for EBICS as provided by the bank
        hostUrl:
          type: string
          description: Host-URL for EBICS as provided by the bank
      example:
        815251d6-c062-4f61-bec0-182bc14a48fb:
          providerId: 00000000-0000-0000-0000-000000000000
          credentials:
            userid: mOd2uKYr+2 ... TWOPCAt5zP
            pin: Hhnc+aW/eM ... 7F+XRSHasW
          sync: true
          selectedBankProducts:
            - DE00123456789012345679
    CreateBulkTransferLegacy:
      allOf:
        - title: CreateBulkTransfer
          required:
            - payments
          type: object
          properties:
            credentials:
              $ref: '#/components/schemas/Credentials'
            sicherheitsverfahrenKodierung:
              type: integer
              description: Coding of the security procedure to use , see Bank product
              format: int32
            ausfuehrungsdatum:
              $ref: '#/components/schemas/DateTime'
            tanMediumName:
              type: string
              description: The TAN medium to be used
            payments:
              type: array
              items:
                $ref: '#/components/schemas/UeberweisungDetails'
          description: Request data to start a transfer
          example:
            credentials:
              userid: mXlkGe+ukA ... MOfGsd8HY=
              pin: XO2jg ... 5GfhKpZmw=
            payments:
              - empfaenger: UNICEF
                verwendungszweck: Spende UNICEF
                iban: DE57370205000000300000
                bic: BFSWDE33XXX
                waehrung: EUR
                betrag: 150.00
              - empfaenger: netzpolitik.org e. V.
                verwendungszweck: Spende netzpolitik.de
                iban: DE62430609671149278400
                bic: GENODEM1GLS
                waehrung: EUR
                betrag: 75.00
            sicherheitsverfahrenKodierung: "1"
            tanMediumName: Mobil
      example:
        payments:
          - empfaenger: UNICEF
            verwendungszweck: Spende UNICEF
            iban: DE57370205000000300000
            bic: BFSWDE33XXX
            waehrung: EUR
            betrag: 150.00
          - empfaenger: netzpolitik.org e. V.
            verwendungszweck: Spende netzpolitik.de
            iban: DE62430609671149278400
            bic: GENODEM1GLS
            waehrung: EUR
            betrag: 75.00
        ausfuehrungsdatum: "2016-12-24"
        sicherheitsverfahrenKodierung: "1"
        tanMediumName: Mobil
        tanMedien:
          - gueltigVon: "2016-06-03 17:17:41"
            gueltigBis: "2016-06-03 17:17:41"
            name: Mobil
            medienklasse: MOBIL
        sicherheitsverfahren:
          - kodierung: 2
            name: mTAN
            hinweis: mTAN
          - kodierung: 1
            name: Mock-TAN
            hinweis: Mock-TAN
        messages:
          - level: INFO
            code: BA3010
            message: SCA benötigt
            details: Bitte wählen Sie eine SCA-Methode aus
        relations:
          - rel: set_method
            href: https://banksapi.io/customer/v2/ueberweisung/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7/consent
    CreateTextTan:
      title: CreateTextTan
      required:
        - tan
      type: object
      properties:
        tan:
          type: string
          description: The TAN to confirm the transfers
      example:
        tan: "4103582"
    CreateToken:
      title: CreateToken
      required:
        - grant_type
      type: object
      description: Parameters to supply upon client token request
      properties:
        grant_type:
          type: string
          description: 'Must be one of the following:<br><ul><li>`password`: Get a user token, which is needed when creating or querying banking accounts.</li> <li>`client_credentials`: Get a client token, which is needed for administrative use cases such as creating users.</li></ul>'
          enum:
            - password
            - client_credentials
        username:
          type: string
          description: Username of user. **REQUIRED** if 'grant_type' is 'password'!
        password:
          type: string
          description: Password of user. **REQUIRED** if 'grant_type' is 'password'!
        scope:
          type: string
          description: Space-separated list of desired scopes. A scope names a class of access rules. It is a string, usually in the form of a (fictitious) URL. The available scopes depend on the scope of services booked. You therefore receive the scope list together with your cooperation agreement.
      example:
        grant_type: client_credentials
        scope: http://banksapi.io/provider/read
    CreateTransfer:
      allOf:
        - $ref: '#/components/schemas/UeberweisungDetails'
        - title: CreateTransfer
          required:
            - empfaenger
            - verwendungszweck
            - iban
            - betrag
            - bic
            - waehrung
          type: object
          properties:
            credentials:
              $ref: '#/components/schemas/Credentials'
            sicherheitsverfahrenKodierung:
              type: integer
              description: Coding of the security procedure to use , see Bank product
              format: int32
            ausfuehrungsdatum:
              $ref: '#/components/schemas/DateTime'
            tanMediumName:
              type: string
              description: The TAN medium to be used
          description: Request data to start a transfer
          example:
            credentials:
              userid: mXlkGe+ukA ... MOfGsd8HY=
              pin: XO2jg ... 5GfhKpZmw=
            empfaenger: netzpolitik.org e. V.
            verwendungszweck: Spende netzpolitik.de
            iban: DE62430609671149278400
            bic: GENODEM1GLS
            waehrung: EUR
            betrag: 1337.42
            ausfuehrungsdatum: "2016-12-24"
            sicherheitsverfahrenKodierung: "1"
            tanMediumName: Mobil
    CreateUser:
      title: CreateUser
      description: Parameters to supply upon user creation
      required:
        - username
        - password
      type: object
      properties:
        username:
          type: string
          description: The unique username
        password:
          type: string
          description: 'The password of the user. The password policy is as follows: <li>at least 10 characters</li> <li>at least 2 letters</li> <li>at least 2 special characters (numbers or any other characters like ,.-;:_&%$ etc.)</li>'
        firstname:
          type: string
          description: The first name
        lastname:
          type: string
          description: Last name
      example:
        username: demouser
        password: secret
        firstname: demo
        lastname: user
    Credentials:
      title: Credentials
      description: |-
        The Credentials object is a map of encrypted and Base64-encoded access data, corresponding
        to the provider's authentication fields. The Base64 encoding must not use line wrapping.

        The encryption method used is described in the chapter Encryption.
        
        The Credentials object is not required for REG/Protect tenants only.
      required:
        - userid
        - pin
      type: object
      properties:
        userid:
          type: string
          example: cust0815
          description: 'Encrypted and Base64-encoded username of the user at the bank, e.g. used in his online banking.<br/>EBICS: The User-ID (Teilnehmer-ID) as provided by the bank must be transmitted.'
        pin:
          type: string
          example: verySecret
          description: 'Encrypted and Base64-encoded pin / password of the user at the bank, e.g. used in his online banking.<br/>EBICS: A pin must not be transmitted.'
        partnerid:
          type: string
          example: PID0001
          description: Encrypted and Base64-encoded partner id (Kunden-ID) only required for EBICS.
        corporateid:
          type: string
          example: 123456
          description: Encrypted and Base64-encoded corporate id required by some banks for business accounts.
      example:
        userid: mOd2uKYr+2 ... TWOPCAt5zP
        pin: Hhnc+aW/eM ... 7F+XRSHasW
    Customer:
      title: Customer
      type: object
      description: The Customer object maps the data of the unique user on the interface. It also forms the entry point into the deeper functions of the interface.
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/Message'
        bankzugaenge:
          type: object
        relations:
          type: array
          items:
            $ref: '#/components/schemas/Relation'
      example:
        bankzugaenge:
          4000fda7-18af-463f-b694-bbafe5d23a48:
            messages:
              - level: INFO
                code: BA3010
                message: SCA benötigt
                details: Bitte wählen Sie eine SCA-Methode aus
            sicherheitsverfahren:
              - kodierung: 980
                name: mTAN
                hinweis: mTAN
              - name: SMS_OTP
                kodierung: "942"
                hinweis: SMS OTP
            relations:
              - rel: start_sca
                href: https://banksapi.io/v2/customer/consent/1345340218050910215PSDDE-BAFIN-152070CO4960JJ
        relations:
          - rel: start_sca
            href: https://banksapi.io/customer/v2
          - rel: authenticate
            href: https://banksapi.io/customer/v2
          - rel: set_method
            href: https://banksapi.io/customer/v2/consent/{consent-id}
          - rel: set_medium
            href: https://banksapi.io/customer/v2/consent/{consent-id}
          - rel: self
            href: https://banksapi.io/customer/v2
          - rel: get_bankzugaenge
            href: https://banksapi.io/customer/v2/bankzugaenge
          - rel: add_bankzugaenge
            href: https://banksapi.io/customer/v2/bankzugaenge
          - rel: delete_bankzugaenge
            href: https://banksapi.io/customer/v2/bankzugaenge
    DateTime:
      title: DateTime
      description: 'This object represents a timestamp. Format: `YYYY-MM-DD hh:mm:ss`. Data will be interpreted according to the time zone Europe/Berlin.'
      type: string
      example: "2019-12-04 13:37:00"
    DebitBaseInfo:
      required:
        - creditorSchemeIdentification
        - requestedCollectionDate
      type: object
      properties:
        business:
          type: boolean
          description: 'Indicates whether the debit should be submitted for business or private customers.<br/><br/> It is recommended to assign this field together with `sequenceType` on the top layer (here) and not in debitDetails. Moreover, it is not allowed to assign these fields on both levels at the same time.'
        sequenceType:
          $ref: '#/components/schemas/DebitSequenceType'
        creditorSchemeIdentification:
          type: string
          description: The scheme identification of the creditor.
        requestedCollectionDate:
          type: string
          format: YYYY-MM-DD
          description: The requested collection date of the debit.
    DebitDetails:
      allOf:
        - title: DebitDetails
          required:
            - amount
            - currency
            - purpose
            - endToEndId
            - debtorName
            - debtorIban
            - mandateIdentification
            - mandateDateOfSignature
          type: object
          properties:
            amount:
              type: number
              format: double
              description: Debit amount
            currency:
              type: string
              description: Currency of the debit
            purpose:
              type: string
              description: Purpose of the debit.
            endToEndId:
              type: string
              description: End to End Identification of the debit.
            debtorName:
              type: string
              description: Name of the debtor.
            debtorIban:
              type: string
              description: IBAN of the debtor.
            debtorAccountNumber:
              type: string
              description: Account number of the debtor.
            debtorBankCode:
              type: string
              description: Bank code of the debtor.
            debtorBic:
              type: string
              description: BIC of the debtor.
            mandateIdentification:
              type: string
              description: Identification of the mandate.
            mandateDateOfSignature:
              type: string
              format: YYYY-MM-DD
              description: The signature date of the mandate.
            business:
              type: boolean
              description: 'Indicates whether the debit should be submitted for business or private customers.<br/><br/> The mixing of true / false is not allowed in the same request.<br/><br/> It is recommended to assign this field together with `sequenceType` on the top layer and not in debitDetails. Moreover, it is not allowed to assign these fields on both levels at the same time.'
            sequenceType:
              $ref: '#/components/schemas/DebitSequenceType'
          description: DebitDetails are used in InitiateSingleDebit and InitiateBulkDebit
    DebitSequenceType:
      title: DebitSequenceType
      description: 'Sequence type of the debit.<br/><br/> It is recommended to assign this field together with `business` on the top layer and not in debitDetails. Moreover, it is not allowed to assign these fields on both levels at the same time.<br/><br/> Sequence types: <li>`FRST` - first debit</li> <li>`RCUR` - recurrent debit</li> <li>`FNAL` - final debit</li> <li>`OOFF` - one-off debit</li>'
      enum:
        - FRST
        - RCUR
        - FNAL
        - OOFF
      type: string
    EntitySchema:
      properties:
        displayName:
          description: Display name of the entity
          example: TRANSACTION
          type: string
        entityClass:
          description: Class of the entity, such as TRANSACTION or USER
          example: TRANSACTION
          type: string
        id:
          description: Transaction UUID or USER UUID.
          example: 156ca508-c0e2-52c5-3202-8de20e7ed12b
          type: string
        userId:
          description: UUID of the USER. Same as id field for USER entities.
          example: 156ca508-c0e2-52c5-3202-8de20e7ed12b
          type: string
      required:
        - displayName
        - entityClass
        - id
      type: object
    Field:
      title: Field
      required:
        - fieldkey
        - label
        - secret
        - format
      type: object
      properties:
        fieldkey:
          type: string
          description: Name of the parameter in the **Credentials** object
        label:
          type: string
          description: Name of the field for the ad
        secret:
          type: boolean
          description: Specifies whether the field contains a secret, for example, should be hidden or only optionally stored
        hint:
          type: string
          description: An explanation text for display next to the field
        format:
          type: string
          description: A regular expression (regex) pattern specifying the format for the input field
      example:
        fieldkey: pin
        label: Demo-Passwort
        secret: true
        hint: demo1, demo2 oder demo3
        format: '^.{1,50}$'
    Interaction:
      title: Interaction
      required:
        - relations
        - messages
      type: object
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/Message'
          description: Messages for TAN input or error texts for transfer
        relations:
          type: array
          items:
            $ref: '#/components/schemas/Relation'
          description: Relations for follow-up actions
        timeout:
          type: string
          format: date
          description: Time to wait for follow-up actions
        challenge:
          $ref: '#/components/schemas/Challenge'
      description: Result of a request if further interaction is required
      example:
        messages:
          - code: BA1110
            level: INFO
            message: TAN-Eingabe nötig
            details: Bitte geben Sie die TAN ein
        timeout: "2017-08-31 16:08:55"
        relations:
          - rel: submit_text_tan
            href: https://banksapi.io/customer/v2/ueberweisung/00000000-0000-0000-0000-000000000000/DE00123456789012345679/c612b2f3-f797-4f66-bec4-2064812c8736
        challenge:
          name: chipTAN optisch
          content:
            HHD: 11048714955205123456789F14302C303107
            HHDUC: 1234567891234567891234567890,01
          decoupled: false
          redirect: false
    Investment:
      title: Investment
      description: A securities account item corresponds to a security position of a securities account.
      type: object
      properties:
        name:
          type: string
          description: Name of the deposit position, usually the name of the financial instrument
        menge:
          type: number
          description: Amount with decimal places
        handelseinheit:
          type: string
          description: Trade item, STUECK or NOMINAL
          enum:
            - STUECK
            - NOMINAL
        isin:
          type: string
          description: ISIN of the financial instrument
        wkn:
          type: string
          description: WKN of the financial instrument
        kurs:
          type: number
          description: Price in trading currency
        kursDatum:
          type: string
          format: YYYY-MM-DD hh:mm:ss
          description: The quote date
        waehrung:
          type: string
          description: Trading currency (Alphabetic Code ISO 4217)
        waehrungskurs:
          type: number
          description: Conversion rate from EUR to the trading currency
        handelsplatz:
          type: string
          description: Trading place of the price determination
        gesamtwert:
          type: number
          description: Total value of the stock in the currency given in 'waehrung' as at the end of the financial statements
      example:
        name: GENERAL ELECTRIC CO
        menge: 167.0
        handelseinheit: STUECK
        isin: US3696041033
        wkn: "851144"
        kurs: 24.32
        kursDatum: "2021-10-15 15:31:20"
        waehrung: USD
        waehrungskurs: 1.18
        handelsplatz: Xetra
        gesamtwert: 3441.9
    IsoDateTime:
      title: IsoDateTime
      description: 'This object represents an ISO timestamp. Format: ISO 8601 in the form `YYYY-MM-DDThh:mm:ss`. Data will be interpreted according to the time zone Europe/Berlin.'
      type: string
      example: 2019-12-04T13:37:00
    Job:
      title: Job
      required:
        - jobType
        - engine
      type: object
      properties:
        jobType:
          type: string
        engine:
          type: string
        prio:
          type: integer
          format: int32
      example:
        jobType: SAMMLER
        engine: SCRAPER
        prio: 1
    ListOfBankAccesses:
      title: ListOfBankAccesses
      type: object
      description: Collection of bank accesses as an object. For each bank access, the object will contain properties where the name is the *id* of the bank access and the value is the bank access data.
      additionalProperties:
        $ref: '#/components/schemas/BankAccess'
      example:
        0b7f4783-4c93-4820-8e73-354a0f1c469e:
          id: 0b7f4783-4c93-4820-8e73-354a0f1c469e
          providerId: 00000000-0000-0000-0000-000000000000
          aktualisierungszeitpunkt: "2021-10-15 09:13:44"
          tanMedien:
            - name: Mobil
              medienklasse: MOBIL
              gueltigVon: "2021-10-15 09:13:44"
              gueltigBis: "2021-10-15 09:13:44"
          sicherheitsverfahren:
            - kodierung: 1
              name: mockTAN
              hinweis: Gib eine durch 2 teilbare Zahl ein
            - kodierung: 999
              name: iTAN
              hinweis: Gib die TAN "12" an.
          aktivesSicherheitsverfahren:
            kodierung: 999
            name: iTAN
            hinweis: Gib die TAN "12" an.
          relations:
            - rel: self
              href: https://banksapi.io/customer/v2/bankzugaenge/0b7f4783-4c93-4820-8e73-354a0f1c469e
            - rel: delete_bankzugang
              href: https://banksapi.io/customer/v2/bankzugaenge/0b7f4783-4c93-4820-8e73-354a0f1c469e
          status: VOLLSTAENDIG
          bankprodukte:
            - id: DE00123456789012345679
              status: VOLLSTAENDIG
              bezeichnung: Tagesgeldkonto
              kategorie: TAGESGELDKONTO
              saldo: 27365.56
              aktualisierungszeitpunkt: "2021-10-15 09:13:44"
              saldoDatum: "2021-10-15 00:00:00"
              waehrung: EUR
              kontonummer: "9012345679"
              iban: DE00123456789012345679
              bic: XXX12345678
              blz: "12345678"
              kreditinstitut: Demo Provider
              inhaber: Fritz Testmüller
              transferSupport: true
              relations:
                - rel: get_kontoumsaetze
                  href: https://banksapi.io/customer/v2/bankzugaenge/0b7f4783-4c93-4820-8e73-354a0f1c469e/DE00123456789012345679/kontoumsaetze
                - rel: initiate_single_transfer
                  href: https://banksapi.io/customer/v2/payment/single-transfer
                - rel: initiate_bulk_transfer
                  href: https://banksapi.io/customer/v2/payment/bulk-transfer
              messages: []
              verfuegungsrahmen: 27365.56
              verfuegterBetrag: 0.0
          sync: true
        4000fda7-18af-463f-b694-bbafe5d23a48:
          status: VOLLSTAENDIG
          tanMedien:
            - gueltigVon: "2016-06-03 17:17:41"
              gueltigBis: "2016-06-03 17:17:41"
              name: Mobil
              medienklasse: MOBIL
          sicherheitsverfahren:
            - kodierung: 2
              name: mTAN
              hinweis: mTAN
            - kodierung: 1
              name: Mock-TAN
              hinweis: Mock-TAN
          aktivesSicherheitsverfahren:
            kodierung: 1
            name: Mock-TAN
            hinweis: Mock-TAN
          aktualisierungszeitpunkt: "2016-06-10 17:17:40"
          timeout: "2016-12-24 13:37:42"
          messages: []
          bankprodukte: []
          relations: []
          sync: false
    MaxTransactions:
      title: MaxTransactions
      description: 'Indicator if transactions older than 90 days should be fetched<br/><br/> MaxTransactions: <li>`none` - default value</li> <li>`all` - all accounts</li> <li>`paymentAccounts` - only payment accounts</li>'
      enum:
        - none
        - all
        - paymentAccounts
      type: string
    MediaClass:
      title: MediaClass
      description: 'Media Classes: <li>`LISTE` - Paper-TAN list</li> <li>`GENERATOR` - TAN generator</li> <li>`MOBILE` - mobile phone</li> <li>`SECODER` - TAN matrix generator</li> <li>`PUSHTAN` - Push message</li> <li>`ALL` - All classes</li> <li>`PROPRIETARY` - Proprietary media</li>'
      type: string
      enum:
        - LISTE
        - GENERATOR
        - MOBILE
        - SECODER
        - PUSHTAN
        - ALL
        - PROPRIETARY
      example: MOBILE
    Message:
      title: Message
      required:
        - level
        - code
        - message
      type: object
      properties:
        level:
          type: string
          description: Level of the message, INFO or ERROR
          enum:
            - INFO
            - ERROR
        code:
          $ref: '#/components/schemas/MessageCode'
        message:
          type: string
          description: '**Error** text for display by the end customer according to **errors and messages**'
        details:
          type: string
          description: Further information on the display at the end customer, which can change from message to message.
      example:
        - level: INFO
          code: BA3010
          message: SCA benötigt
          details: Bitte wählen Sie eine SCA-Methode aus
      description: Messages transport both errors and analysis events.
    MessageCode:
      title: MessageCode
      type: string
      description: 'Code of the message<br/><br/>Message Codes: <li>`BA999` - Internal error (ERROR)</li> <li>`BA1000` - Maintenance work provider (ERROR)</li> <li>`BA1001` - Provider no longer active (ERROR)</li> <li>`BA1010` - Access blocked (ERROR)</li> <li>`BA1011` - Access data incorrect (ERROR)</li> <li>`BA1012` - Access data incomplete (ERROR)</li> <li>`BA1013` - Account not activated (ERROR)</li> <li>`BA1014` - Too many unsuccessful logins (ERROR)</li> <li>`BA1020` - Account has improper permissions (ERROR)</li> <li>`BA1051` - Bank access unavailable (ERROR)</li> <li>`BA1052` - Bank access not fully available (ERROR)</li> <li>`BA1053` - Access exceeded (ERROR)</li> <li>`BA1060` - Product could not be updated (ERROR)</li> <li>`BA1062` - Transactions could not be updated (ERROR)</li> <li>`BA1063` - Depot positions could not be updated (ERROR)</li> <li>`BA1064` - Message from bank (ERROR)</li> <li>`BA1100` - Transfer data invalid (ERROR)</li> <li>`BA1101` - Invalid TAN procedure (ERROR)</li> <li>`BA1102` - Invalid TAN medium (ERROR)</li> <li>`BA1103` - TAN invalid (ERROR)</li> <li>`BA1104` - Bank transfer not possible (ERROR)</li> <li>`BA1110` - TAN input required (INFO)</li> <li>`BA1111` - The transfer has been completed successfully (INFO)</li> <li>`BA1112` - The transfer has been submitted successfully (INFO)</li> <li>`BA1200` - Debit data invalid (ERROR)</li> <li>`BA1204` - Debit not supported (ERROR)</li> <li>`BA1212` - The debit has been submitted successfully (INFO)</li> <li>`BA2002` - There are notifications from your bank (INFO)</li> <li>`BA2003` - Product type not supported (INFO)</li> <li>`BA2004` - Bank access not activated yet (INFO)</li> <li>`BA2021` - Missing permission (INFO)</li> <li>`BA2062` - Transactions not available (INFO)</li> <li>`BA3000` - SCA required (INFO)</li> <li>`BA3005` - SCA redirect required (INFO)</li> <li>`BA3010` - Select SCA method (INFO)</li> <li>`BA3020` - Select SCA medium (INFO)</li> <li>`BA3030` - SCA Challenge (INFO)</li> <li>`BA3040` - SCA failed (ERROR)</li> <li>`BA3060` - No supported SCA method found (ERROR)</li>'
      enum:
        - BA999
        - BA1000
        - BA1001
        - BA1010
        - BA1011
        - BA1012
        - BA1013
        - BA1014
        - BA1020
        - BA1051
        - BA1052
        - BA1053
        - BA1060
        - BA1062
        - BA1063
        - BA1064
        - BA1100
        - BA1101
        - BA1102
        - BA1103
        - BA1104
        - BA1110
        - BA1111
        - BA1112
        - BA1200
        - BA1204
        - BA1212
        - BA2002
        - BA2003
        - BA2004
        - BA2021
        - BA2062
        - BA3000
        - BA3005
        - BA3010
        - BA3020
        - BA3030
        - BA3040
        - BA3060
      example: BA999
    MessageLevel:
      title: MessageLevel
      description: Level of the message, INFO or ERROR
      enum:
        - INFO
        - ERROR
      type: string
      example: ERROR
    PaymentInitializationDetails:
      required:
        - provider
        - product
      type: object
      properties:
        provider:
          type: string
          description: Provider to initiate the payment from
          format: uuid
        credentials:
          $ref: '#/components/schemas/Credentials'
        product:
          type: string
          description: Product to initiate the payment from
    Consent:
      type: object
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/Message'
          description: Messages transport both errors and analysis events.
        scaMethods:
          type: array
          items:
            $ref: '#/components/schemas/SecurityProcedureEn'
          description: List of possible sca methods for this account.
        scaMediums:
          type: array
          items:
            $ref: '#/components/schemas/TanMediumEn'
          description: List of possible sca mediums for this account.
        challenge:
          $ref: '#/components/schemas/Challenge'
        relations:
          type: array
          items:
            $ref: '#/components/schemas/Relation'
          description: The relations available for the payment
    Product:
      allOf:
        - $ref: '#/components/schemas/SimpleProduct'
        - title: Product
          required:
            - id
            - kategorie
            - aktualisierungszeitpunkt
            - kontonummer
            - relations
          type: object
          description: Banking product with all available fields. A simpler version of this object is
          properties:
            status:
              type: string
              description: Retrieval status for product data
              example: VOLLSTAENDIG
            aktualisierungszeitpunkt:
              type: string
              format: YYYY-MM-DD hh:mm:ss
              description: Time of the last product update at the bank/service provider
              example: "2016-05-23 13:37:00"
            transferSupport:
              type: boolean
              description: Indicates if transfers are supported for this bank product or not.
            bulkTransferSupport:
              type: boolean
              description: Indicates if bulk transfers are supported for this bank product or not.
            relations:
              type: array
              description: List of relations that are available as next steps.
              items:
                $ref: '#/components/schemas/Relation'
            messages:
              type: array
              description: List of messages that show which steps are required to continue further.
              items:
                $ref: '#/components/schemas/Message'
            saldoDatenquelle:
              type: string
              description: The source of the data for this depots balance. Only for products of type depot.
              enum:
                - SWIFTMSG
                - SONSTIGE
            ueberziehungslimit:
              type: number
              description: The overdraft limit for a bank account. Only for products that have an overdraft limit.
            verfuegungsrahmen:
              type: number
              description: Contains the available funds (usually overdraft limit + balance)
              example: "500.00"
            verfuegterBetrag:
              type: number
              description: Contains the already drawn amount
              example: "200.00"
            vertragsnummer:
              type: string
              description: The contract number for home savings contracts.
            rating:
              type: number
              description: ""
            vertragssumme:
              type: number
              description: The contract amount for home savings contracts.
            vertragstyp:
              type: string
              description: The type of home savings contract.
            sparzustand:
              type: boolean
              description: Shows if the home savings contract is currently in saving state (true) or not (false)
            vertragsstatus:
              type: string
              description: The current state of a home savings contract.
            sparzinssatz:
              type: number
              description: The savings rate of a home savings contract.
            schuldzinssatz:
              type: number
              description: The debt interest rate of a home savings contract.
            vertragsDatum:
              type: string
              format: YYYY-MM-DD hh:mm:ss
              description: The date of a home savings contract.
      example:
        id: DE00123456789012345679
        status: VOLLSTAENDIG
        bezeichnung: Tagesgeldkonto
        kategorie: TAGESGELDKONTO
        saldo: 27365.56
        aktualisierungszeitpunkt: "2021-10-15 09:13:44"
        saldoDatum: "2021-10-15 00:00:00"
        waehrung: EUR
        kontonummer: "9012345679"
        iban: DE00123456789012345679
        bic: XXX12345678
        blz: "12345678"
        kreditinstitut: Demo Provider
        inhaber: Fritz Testmüller
        transferSupport: true
        relations:
          - rel: get_kontoumsaetze
            href: https://banksapi.io/customer/v2/bankzugaenge/0b7f4783-4c93-4820-8e73-354a0f1c469e/DE00123456789012345679/kontoumsaetze
          - rel: initiate_single_transfer
            href: https://banksapi.io/customer/v2/payment/single-transfer
          - rel: initiate_bulk_transfer
            href: https://banksapi.io/customer/v2/payment/bulk-transfer
        messages: []
        verfuegungsrahmen: 27365.56
        verfuegterBetrag: 0.0
    ProductCategories:
      title: ProductCategories
      type: array
      description: A list of product categories
      items:
        $ref: '#/components/schemas/ProductCategory'
      example:
        - GIROKONTO
        - TAGESGELDKONTO
    ProductCategory:
      title: ProductCategory
      type: string
      description: 'Categories:<br> <li>`GIROKONTO` - **Checking account**: Account for payment transactions, as well as for the settlement / processing of eg deposit-related bookings, fees, interest, etc.</li> <li>`SPARKONTO` - **Savings account**: Interest-bearing account with an unlimited term and fixed period of notice, as a rule an immediate withdrawal is limited to a maximum value</li> <li>`FESTGELDKONTO` - **Fixed deposit account**: Interest-bearing account with a contractually agreed term</li> <li>`KREDITKONTO` - **Credit account**: Account for managing the loan balance</li> <li>`TAGESGELDKONTO` - **Overnight money account**: Interest-based account for an investment with daily availability</li> <li>`BAUSPARVERTRAG` - **Building loan account**: Savings and possibly loan account for a home savings contract</li> <li>`SONSTIGESKONTO` - Account that can not be assigned by the provider or our product heuristic</li> <li>`KREDITKARTE` - **Credit card**: Payment card with credit line, billing takes place via an agreed current account / clearing account</li> <li>`KREDITKARTENKONTO` - **Credit card acount**: </li> <li>`SONSTIGEKARTE` - **Other card**: Payment card that can not be assigned by the provider or our product heuristic</li> <li>`DEPOT` - **Brokerage account**</li> <li>`SONSTIGESPRODUKT` - Bank product that can not be assigned by the provider or our product heuristic'
      enum:
        - GIROKONTO
        - SPARKONTO
        - FESTGELDKONTO
        - KREDITKONTO
        - TAGESGELDKONTO
        - BAUSPARVERTRAG
        - SONSTIGESKONTO
        - KREDITKARTE
        - KREDITKARTENKONTO
        - SONSTIGEKARTE
        - DEPOT
        - SONSTIGESPRODUKT
      example: GIROKONTO
    Provider:
      title: Provider
      required:
        - id
        - name
        - consumerRelevant
        - relations
        - capabilities
        - authenticationInfo
      type: object
      description: Provider information
      properties:
        id:
          type: string
          description: Unique key for this provider in **BANKS/Connect**
        name:
          type: string
          description: Name for the provider, not unique
        consumerRelevant:
          type: boolean
          description: Whether this provider should be displayed to the customer for the provider selection or not
        group:
          type: string
          description: Grouping term for providers. If several providers have the same group the same logo could be displayed, e.g.
        blz:
          type: string
          description: The bank code of the bank was the primary key for banks in Germany before SEPA
        bic:
          type: string
          description: The BIC (Business Identifier Code) of the bank
        relations:
          type: array
          description: Relations indicate which operation the provider resource supports
          items:
            $ref: '#/components/schemas/Relation'
        capabilities:
          type: array
          description: Shows which technical objects with the Provider on the BANKS/Connect Customer API are available
          items:
            type: string
        channels:
          type: array
          description: Shows which product categories are queried by BANKSapi to the bank through which channel. Items in the same array are queried through the same channel, e.g. FinTS. If you are requesting products that are listed in the same array (going through the same channel), you might save on a number of SCA processes, because there will be at least one SCA per channel at least every 180 days.
          items:
            $ref: '#/components/schemas/ProductCategories'
        authenticationInfo:
          $ref: '#/components/schemas/AuthenticationInfo'
      example:
        id: 00000000-0000-0000-0000-000000000000
        name: Demo Provider
        group: demo
        blz: "12345678"
        bic: DEMO1234
        relations:
          - rel: self
            href: https://banksapi.io/providers/v2/00000000-0000-0000-0000-000000000000
          - rel: logo
            href: https://banksapi.io/providers/v2/demo.svg
        capabilities:
          - KONTEN
          - KARTEN
          - DEPOTS
        channels:
          - - GIROKONTO
          - - KREDITKARTE
            - TAGESGELDKONTO
        authenticationInfo:
          loginHint: Der Demo Provider bietet drei Zugänge demo1/demo1, demo2/demo2 und demo3/demo3
          fields:
            - fieldkey: userid
              label: Demo-User
              secret: false
              hint: demo1, demo2 oder demo3
              format: '^.{1,50}$'
            - fieldkey: pin
              label: Demo-Passwort
              secret: true
              hint: demo1, demo2 oder demo3
              format: '^.{1,50}$'
    ProviderCoreData:
      title: ProviderCoreData
      required:
        - id
        - name
      type: object
      description: Provider core information
      properties:
        id:
          type: string
          description: Unique key for this provider in **BANKS/Connect**
        name:
          type: string
          description: Name for the provider, not unique
        group:
          type: string
          description: Grouping term for providers. If several providers have the same group the same logo could be displayed, e.g.
        blz:
          type: string
          description: The bank code of the bank was the primary key for banks in Germany before SEPA
        bic:
          type: string
          description: The BIC (Business Identifier Code) of the bank
        logo:
          type: string
          description: Returns the path to the provider logo in SVG-format
      example:
        - id: 00000000-0000-0000-0000-000000000000
          name: Demo Provider
          group: demo
          blz: "12345678"
          bic: DEMO1234
          logo: https://banksapi.io/providers/v2/demo.svg
    ProviderJobStatistics:
      title: ProviderJobStatistics
      required:
        - logo
        - latestSuccessDate
        - averageDuration
        - successRate
      type: object
      description: Provider job statistics
      properties:
        logo:
          type: string
          description: Logo of the provider.
        latestSuccessDate:
          type: string
          format: YYYY-MM-DD hh:mm:ss
          description: Date of the latest successful data job for providers with the corresponding logo.
        averageDuration:
          type: number
          description: The average duration of data jobs in ms for providers with the corresponding logo.
        successRate:
          type: number
          description: The success rate of data jobs for providers with the corresponding logo.
      example:
        - logo: demo
          latestSuccessDate: 2023-09-20 11:21:02
          averageDuration: 29962
          successRate: 1.00
        - logo: sparkasse
          latestSuccessDate: 2023-09-20 11:28:57
          averageDuration: 54186
          successRate: 0.99
    ProviderEbicsInfo:
      title: ProviderEbicsInfo
      type: object
      description: Provider EBICS information
      properties:
        hostId:
          type: string
          description: The EBICS host ID of the bank
        hostUrl:
          type: string
          description: The EBICS host URL of the bank
      example:
        hostId: "HOSTIDXY"
        hostUrl: "https://ebics.bank.com/ebics"
    CheckInstantPaymentSupport:
      type: object
      properties:
        recipientIbans:
          type: array
          description: Deprecated as banks are required to be able to receive instant payments from 09.01.2025.
          items:
            type: string
          example:
            - DE92123456789876543210
          deprecated: true
        transferType:
          type: string
          description: The type of transfer. This type is required if `recipientIbans` is not provided.
          enum:
            - SINGLE
            - BULK
          example: SINGLE
    InstantPaymentSupportResult:
      type: object
      required:
        - senderProviderId
        - transferType
        - instantPaymentSupported
      properties:
        senderProviderId:
          type: string
          description: The ID of the provider sending the instant payment.
          example: 00000000-0000-0000-0000-000000000000
        recipientIbans:
          type: array
          description: The IBANs of the recipients.
          items:
            type: string
          example:
            - DE92123456789876543210
          deprecated: true
        transferType:
          type: string
          description: The type of transfer.
          enum:
            - SINGLE
            - BULK
          example: SINGLE
        instantPaymentSupported:
          type: boolean
          description: Indicates if instant payment is supported.
          example: true
    Relation:
      title: Relation
      description: A relation corresponds to an application or business transaction that is supported by the enclosing data object. Each application or business transaction has its own documentation, which describes the call as well as the return or the possible alternative answer scenarios in detail.
      required:
        - rel
        - href
      type: object
      properties:
        rel:
          type: string
          description: Machine readable string to differentiate the relations
          example: self
        href:
          type: string
          description: URL where the relation links to
          example: https://banksapi.io:443/providers/v2/00000000-0000-0000-0000-000000000000
      example:
        rel: self
        href: https://banksapi.io:443/providers/v2/00000000-0000-0000-0000-000000000000
    RelationSchema:
      properties:
        href:
          description: Link of the relation
          example: https://banksapi.io/.../tags/tag-trees/1/
          type: string
        rel:
          description: Name of the relation
          example: tag_trees
          type: string
      required:
        - href
        - rel
      type: object
    ScaInteraction:
      title: ScaInteraction
      required:
        - messages
        - relations
      type: object
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/Message'
          description: Messages transport both errors and analysis events.
        relations:
          type: array
          items:
            $ref: '#/components/schemas/Relation'
          description: The relations available for bank access
        tanMedien:
          type: array
          items:
            $ref: '#/components/schemas/TanMedium'
          description: List of available TAN media in the access
      description: BankAccess and Transfer inherit from this object. It indicates that in some cases, SCA may be needed to interact with the inheriting object.
      example:
        tanMedien:
          - gueltigVon: "2016-06-03 17:17:41"
            gueltigBis: "2016-06-03 17:17:41"
            name: Mobil
            medienklasse: MOBIL
        messages:
          - level: INFO
            code: BA3010
            message: SCA benötigt
            details: Bitte wählen Sie eine SCA-Methode aus
        relations:
          - rel: set_method
            href: https://banksapi.io/v2/customer/consent/1345340218050910215PSDDE-BAFIN-152070CO4960JJ
    SecurityProcedure:
      title: SecurityProcedure
      description: The security procedure determines how end users authenticate their transaction(s).
      type: object
      properties:
        kodierung:
          type: integer
          description: Key to the security procedure
        name:
          type: string
          description: Human readable name for the security procedure
        hinweis:
          type: string
          description: Human readable reference to the security procedure
      example:
        kodierung: 4711
        name: mTAN
        hinweis: Ihre mTAN
    SecurityProcedureEn:
      title: SecurityProcedureEn
      description: The security procedure determines how end users authenticate their transaction(s).
      type: object
      properties:
        code:
          type: integer
          description: Key to the security procedure
        name:
          type: string
          description: Human readable name for the security procedure
        hint:
          type: string
          description: Human readable reference to the security procedure
      example:
        code: 4711
        name: mTAN
        hint: Ihre mTAN
    SecurityProcedures:
      title: SecurityProcedures
      required:
        - kodierung
        - name
        - hinweis
      type: object
      properties:
        kodierung:
          type: integer
          description: Code of the SCA method
          format: int32
          example: 980
        name:
          type: string
          description: Human-readable name of the SCA method
          example: Mock-TAN
        hinweis:
          type: string
          description: Additional helpful hint that must be displayed to the user
          example: This is a Mock-TAN, you can enter any value
      description: Das Sicherheitsverfahren bestimmt, wie der Endkunde seine Transaktion(en) freigibt. Am häufigsten sind die TAN-Verfahren wie smsTAN, eTAN, chipTAN, photoTAN, pushTAN etc. im Einsatz. Daneben gibt es noch etliche weitere Verfahren wie bspw. das Biometrie-Verfahren (Fingerprint) oder das RSA-/DES-Verfahren sowie Verfahren mit elektronischer Unterschrift (Sicherheitsdatei). Es ist zu beachten, dass nicht alle Sicherheitsverfahren durch FinTS unterstützt werden.
      example:
        kodierung: 980
        name: mTAN
        hinweis: mTAN
    SimpleProduct:
      title: Simple Product
      required:
        - id
        - kontonummer
      type: object
      description: Banking product (e.g. account) with only a subset available product data
      properties:
        id:
          type: string
          description: Identifier for the bank product
          example: DE89370400440532013000
        bezeichnung:
          type: string
          description: Name of bank product according to bank/service provider
        kategorie:
          type: string
          default: SONSTIGESKONTO
          description: 'Categories:<br> <li>`GIROKONTO` - **Checking account**: Account for payment transactions, as well as for the settlement / processing of eg deposit-related bookings, fees, interest, etc.</li> <li>`SPARKONTO` - **Savings account**: Interest-bearing account with an unlimited term and fixed period of notice, as a rule an immediate withdrawal is limited to a maximum value</li> <li>`FESTGELDKONTO` - **Fixed deposit account**: Interest-bearing account with a contractually agreed term</li> <li>`KREDITKONTO` - **Credit account**: Account for managing the loan balance</li> <li>`TAGESGELDKONTO` - **Overnight money account**: Interest-based account for an investment with daily availability</li> <li>`BAUSPARVERTRAG` - **Building loan account**: Savings and possibly loan account for a home savings contract</li> <li>`SONSTIGESKONTO` - Account that can not be assigned by the provider or our product heuristic</li> <li>`KREDITKARTE` - **Credit card**: Payment card with credit line, billing takes place via an agreed current account / clearing account</li> <li>`SONSTIGEKARTE` - **Other card**: Payment card that can not be assigned by the provider or our product heuristic</li> <li>`DEPOT` - **Brokerage account**</li> <li>`SONSTIGESPRODUKT` - Bank product that can not be assigned by the provider or our product heuristic'
          enum:
            - GIROKONTO
            - SPARKONTO
            - FESTGELDKONTO
            - KREDITKONTO
            - TAGESGELDKONTO
            - BAUSPARVERTRAG
            - VERSICHERUNG
            - SONSTIGESKONTO
            - AMERICANEXPRESS
            - MASTERCARD
            - VISA
            - DINERSCLUB
            - SONSTIGEKARTE
            - DEPOT
            - KREDITKARTENKONTO
        saldo:
          type: number
          description: Balance/value of bank product (with two decimal places)
          example: "200000.00"
        saldoDatum:
          type: string
          format: YYYY-MM-DD hh:mm:ss
          description: Balance/value date as reported by the bank/service provider
          example: "2016-05-23 13:37:00"
        waehrung:
          type: string
          description: Currency in which the bank product is valued/managed (Alphabetic Code ISO 4217)
          example: USD
        salden:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Balance'
          description: A map where the key is the currency and the value is a Balance object. This field is only returned for multicurrency accounts.
          example:
            EUR:
              saldo: 20000.13
              waehrung: EUR
              saldoDatum: 2023-08-15 00:00:00
            USD:
              saldo: 5000.01
              waehrung: USD
              saldoDatum: 2023-08-15 00:00:00
        kontonummer:
          type: string
          description: The account or credit card number. The credit card number may not be issued completely, but with a star e.g. "3223 ****** 4554"
          example: "0123456789"
        iban:
          type: string
          description: The IBAN (International Bank Account Number)
          example: DE89370400440532013000
        bic:
          type: string
          description: The BIC (Business Identifier Code)
          example: BICIS133742
        blz:
          type: string
          description: The (state local) bank code
          example: "12345678"
        kreditinstitut:
          type: string
          description: Name of financial institution
          example: Demo-Bank
        inhaber:
          type: string
          description: Full name of account holder
          example: Dan Cooper
      example:
        id: DE89370400440532013000
        status: VOLLSTAENDIG
        bezeichnung: Tagesgeldkonto
        kategorie: TAGESGELDKONTO
        saldo: 27365.56
        aktualisierungszeitpunkt: "2021-10-15 09:13:44"
        saldoDatum: "2021-10-15 00:00:00"
        waehrung: EUR
        kontonummer: "9012345679"
        iban: DE89370400440532013000
        bic: XXX12345678
        blz: "12345678"
        kreditinstitut: Demo Provider
        inhaber: Fritz Testmüller
    SingleDebitData:
      allOf:
        - $ref: '#/components/schemas/PaymentInitializationDetails'
        - $ref: '#/components/schemas/DebitBaseInfo'
        - description: Request data to start a debit
          required:
            - debitDetails
          title: SingleDebitData
          type: object
          properties:
            debitDetails:
              $ref: '#/components/schemas/DebitDetails'
      example:
        provider: ca650b48-3edc-45f4-938d-d21df8cba761
        credentials:
          userid: mXlkGe+ukAEs+2iH ... D/MOfGsd8HY=
          pin: XO2jgZ ... 5GfhKpZmw=
        product: DE89370400440532013000
        business: false
        sequenceType: OOFF
        creditorSchemeIdentification: GlauebigerId
        requestedCollectionDate: "2022-02-22"
        debitDetails:
          amount: 1337.42
          currency: EUR
          purpose: Verwendungszweck
          endToEndId: "123"
          debtorName: Max Mustermann
          debtorIban: DE62430609671149278400
          debtorAccountNumber: "1149278400"
          debtorBankCode: "43060967"
          debtorBic: GENODEM1GLS
          mandateIdentification: MandatsId
          mandateDateOfSignature: "2022-02-02"
    SingleDebitDataBankAccess:
      allOf:
        - $ref: '#/components/schemas/DebitBaseInfo'
        - description: Request data to start a single debit
          required:
            - debitDetails
          title: SingleDebitDataBankAccess
          type: object
          properties:
            debitDetails:
              $ref: '#/components/schemas/DebitDetails'
    SingleDebitResult:
      allOf:
        - $ref: '#/components/schemas/Consent'
        - description: Current status of debit
          required:
            - debit
          title: SingleDebitResult
          type: object
          properties:
            debit:
              allOf:
                - $ref: '#/components/schemas/DebitBaseInfo'
                - required:
                    - provider
                    - product
                    - paymentId
                    - ebics
                    - debitDetails
                  type: object
                  properties:
                    provider:
                      type: string
                      format: uuid
                    product:
                      type: string
                    paymentId:
                      type: string
                      format: uuid
                      description: Unique id generated for each payment.
                    ebics:
                      type: boolean
                      description: Whether this debit was submitted via EBICS or not.
                    debitDetails:
                      $ref: '#/components/schemas/DebitDetails'
      example:
        messages:
          - level: INFO
            code: BA3010
            message: SCA Methode auswählen
            details: Bitte wählen Sie eine SCA-Methode aus
        scaMethods:
          - code: 2
            name: mTAN
            hint: mTAN
          - code: 1
            name: Mock-TAN
            hint: Mock-TAN
        relations:
          - rel: self
            href: https://banksapi.io/customer/v2/payment/single-debit/07788639-abd7-4009-9c9d-2d79079f3f26
          - rel: set_method
            href: https://banksapi.io/customer/v2/payment/single-debit/07788639-abd7-4009-9c9d-2d79079f3f26/consent
        debit:
          provider: ca650b48-3edc-45f4-938d-d21df8cba761
          product: DE89370400440532013000
          business: false
          sequenceType: OOFF
          creditorSchemeIdentification: GlauebigerId
          requestedCollectionDate: "2022-02-22"
          debitDetails:
            amount: 1337.42
            currency: EUR
            purpose: Verwendungszweck
            endToEndId: "123"
            debtorName: Max Mustermann
            debtorIban: DE62430609671149278400
            debtorAccountNumber: "1149278400"
            debtorBankCode: "43060967"
            debtorBic: GENODEM1GLS
            mandateIdentification: MandatsId
            mandateDateOfSignature: "2022-02-02"
    SingleTransferData:
      allOf:
        - $ref: '#/components/schemas/PaymentInitializationDetails'
        - $ref: '#/components/schemas/BasicSingleTransferData'
      example:
        provider: ca650b48-3edc-45f4-938d-d21df8cba761
        credentials:
          userid: mXlkGe+ukAEs+2iH ... D/MOfGsd8HY=
          pin: XO2jgZ ... 5GfhKpZmw=
        product: DE89370400440532013000
        instant: false
        requestedExecutionDate: 2024-09-19
        transferDetails:
          recipient: netzpolitik.org e. V.
          purpose: Spende netzpolitik.de
          iban: DE62430609671149278400
          bic: GENODEM1GLS
          currency: EUR
          amount: 1337.42
          endToEndId: be7649876d5f439886fa816993ac9f9f
    SingleTransferResult:
      allOf:
        - $ref: '#/components/schemas/Consent'
        - description: Current status of transfer
          required:
            - transfer
          title: SingleTransferResult
          type: object
          properties:
            transfer:
              required:
                - provider
                - product
                - paymentId
                - ebics
                - transferDetails
              type: object
              properties:
                provider:
                  type: string
                  format: uuid
                product:
                  type: string
                paymentId:
                  type: string
                  format: uuid
                  description: Unique id generated for each payment.
                ebics:
                  type: boolean
                  description: Whether this transfer was submitted via EBICS or not.
                instant:
                  type: boolean
                  description: Whether this transfer was initiated as an instant payment or not.
                requestedExecutionDate:
                  type: string
                  format: YYYY-MM-DD
                  description: |
                    The requested execution date of the transfer.
                    Please note that transfers with execution date may not be supported depending on the bank.
                transferDetails:
                  $ref: '#/components/schemas/TransferDetails'
      example:
        messages:
          - level: INFO
            code: BA3010
            message: SCA Methode auswählen
            details: Bitte wählen Sie eine SCA-Methode aus
        scaMethods:
          - code: 2
            name: mTAN
            hint: mTAN
          - code: 1
            name: Mock-TAN
            hint: Mock-TAN
        relations:
          - rel: self
            href: https://banksapi.io/customer/v2/payment/single-transfer/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
          - rel: set_method
            href: https://banksapi.io/customer/v2/payment/single-transfer/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7/consent
        transfer:
          provider: ca650b48-3edc-45f4-938d-d21df8cba761
          product: DE89370400440532013000
          paymentId: df5afff2-43e7-4fca-95fa-0d06251c9ce9
          ebics: false
          instant: false
          requestedExecutionDate: 2024-09-19
          transferDetails:
            recipient: netzpolitik.org e. V.
            purpose: Spende netzpolitik.de
            iban: DE62430609671149278400
            bic: GENODEM1GLS
            currency: EUR
            amount: 1337.42
            endToEndId: be7649876d5f439886fa816993ac9f9f
    SubmitScaData:
      title: SubmitScaData
      description: Supplies the consent process with needed information.
      type: object
      properties:
        chosenScaMethodId:
          type: string
          description: Code of the SCA method
          example: "942"
        chosenScaMedia:
          type: string
          description: Name of the SCA medium
          example: 'Mobile #1'
        scaAuthenticationData:
          type: string
          example: "123456"
      example:
        chosenScaMethodId: "942"
    SystemName:
      title: SystemName
      description: Machine-readable name of the tag, for a list check e.g. the [transaction categories](#sales-categories)
      type: string
      example: BANKFINANCE
    TagInstanceSchema:
      properties:
        entity:
          $ref: '#/components/schemas/EntitySchema'
        id:
          description: Unique Universal Identifier (UUID)
          example: 956ca508-c0e2-52c5-3202-8de20e7ed12b
          type: string
        relations:
          description: List of relations
          items:
            $ref: '#/components/schemas/RelationSchema'
          type: array
        tagTreeItem:
          $ref: '#/components/schemas/TagTreeItemSchema'
      required:
        - entity
        - id
        - tagTreeItem
      type: object
    TagTreeItemSchema:
      properties:
        description:
          description: Gives a description of the tagTreeItem
          example: Expenses from daily grocery purchases
          type: string
        displayName:
          description: User-friendly name shown to the end-users
          example: Groceries
          type: string
        relations:
          description: List of relations
          items:
            $ref: '#/components/schemas/RelationSchema'
          type: array
        systemId:
          description: Unique internal id of the tag tree item
          example: 17
          type: integer
        systemName:
          description: Unique name of the tag tree item
          example: LIVING_GROCERIES
          type: string
        systemNameParent:
          description: Unique name of the parent of the tagTreeItem
          example: LIVING
          type: string
        tagTree:
          $ref: '#/components/schemas/BusinessPartnerTagTreeItemSchemaTagTree'
      required:
        - systemName
        - tagTree
      type: object
    TagTreeSchema:
      example:
        description: Two level categorization tree.
        displayName: Kategorien
        isClientGenerated: false
        relations:
          - href: https://banksapi.io/tags/v1/tag-trees/1/
            rel: self
          - href: https://banksapi.io/tags/v1/tag-trees/
            rel: tag_trees
          - href: https://banksapi.io/tags/v1/tag-trees/1/tag-tree-items/
            rel: tag_tree_items
        systemId: 1
        systemName: CATEGORIES
        version: 3.7
      properties:
        description:
          description: Gives a description of the tag tree
          example: Detailed inusrance categories.
          type: string
        displayName:
          description: User-friendly name shown to the end-users
          example: Kategorien
          type: string
        isTenantGenerated:
          description: Boolean flag, set TRUE if the tag was manually set
          example: true
          type: boolean
        relations:
          description: List of relations
          items:
            $ref: '#/components/schemas/RelationSchema'
          type: array
        systemId:
          description: Unique internal id of the tag tree
          example: 1
          type: integer
        systemName:
          description: Unique name of the tag tree
          example: CATEGORIES
          type: string
        version:
          description: Version of the tag tree
          example: 1.5
          minimum: 0
          type: number
      required:
        - systemName
      type: object
    Tag:
      title: Tag
      required:
        - tagScope
        - tagId
        - tagType
        - tagVersion
        - systemName
        - displayName
        - parent
      type: object
      properties:
        tagScope:
          type: string
          description: Object of tagging. User or Transaction
        tagId:
          type: string
          format: uuid
          description: Random unique id according to RFC4122 for identification
        tagType:
          $ref: '#/components/schemas/TagType'
        tagVersion:
          type: integer
          format: int32
          description: BANKSapi version of the tag hierarchy.
        systemName:
          $ref: '#/components/schemas/SystemName'
        displayName:
          type: string
          description: User-friendly and human readable name of the category in German
        parent:
          $ref: '#/components/schemas/SystemName'
      example:
        tagScope: transaction
        tagId: 36d394ba-edef-4075-97e7-b19d1fae3702
        tagType: CATEGORY
        tagVersion: "2.5"
        systemName: HOUSING_RENT
        displayName: Miete/Wohngeld
        parent: HOUSING
    TagType:
      title: TagType
      enum:
        - null
      type: string
      example: CATEGORY
      description: Type according to usage purpose
    TanMedium:
      title: TanMedium
      description: This object describes a TAN medium.
      type: object
      properties:
        name:
          type: string
          description: Name of the TAN medium such as "Mobile"
        medienklasse:
          description: 'Media classes: <li>`LISTE` - Paper-TAN list</li> <li>`GENERATOR` - TAN generator</li> <li>`MOBILE` - mobile phone</li> <li>`SECODER` - TAN matrix generator</li> <li>`PUSHTAN` - Push message</li> <li>`ALL` - All classes</li> <li>`PROPRIETARY` - Proprietary media class</li>'
          type: string
          enum:
            - LISTE
            - GENERATOR
            - MOBIL
            - SECODER
            - PUSHTAN
            - ALL
            - PROPRIETARY
        gueltigVon:
          type: string
          format: YYYY-MM-DD hh:mm:ss
          description: Date and time from which the TAN medium is valid.
        gueltigBis:
          type: string
          format: YYYY-MM-DD hh:mm:ss
          description: Date and time until which the TAN medium is valid.
      example:
        gueltigVon: "2016-01-01 00:00:00"
        gueltigBis: "2016-12-31 23:59:59"
        name: +49-1111-11111
        medienklasse: MOBIL
    TanMediumEn:
      title: TanMediumEn
      description: This object describes a TAN medium.
      type: object
      properties:
        name:
          type: string
          description: Name of the TAN medium such as "Mobile"
        mediaClass:
          description: 'Media classes: <li>`LIST` - Paper-TAN list</li> <li>`GENERATOR` - TAN generator</li> <li>`MOBILE` - mobile phone</li> <li>`SECODER` - TAN matrix generator</li> <li>`PUSHTAN` - Push message</li> <li>`ALL` - All classes</li> <li>`PROPRIETARY` - Proprietary media class</li>'
          type: string
          enum:
            - LIST
            - GENERATOR
            - MOBILE
            - SECODER
            - PUSHTAN
            - ALL
            - PROPRIETARY
        validFrom:
          type: string
          format: YYYY-MM-DD hh:mm:ss
          description: Date and time from which the TAN medium is valid.
        validTo:
          type: string
          format: YYYY-MM-DD hh:mm:ss
          description: Date and time until which the TAN medium is valid.
      example:
        validFrom: "2016-01-01 00:00:00"
        validTo: "2016-12-31 23:59:59"
        name: +49-1111-11111
        mediaClass: MOBILE
    Tenant:
      title: Tenant
      description: The tenant object represents our client. It plays a role in using the API only insofar that the tenant name is a URL component in the management API.
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: Tenant technical name becomes URL component
        description:
          type: string
          description: Optional human readable description
      example:
        name: demo
        description: A tenant for demonstration purposes
    Token:
      title: Token
      type: object
      description: The OAuth2 token is basically a string that is passed around in the communication between our services and you, and to which certain permissions depend.
      required:
        - scope
        - tenant
        - tenantId
        - client
        - access_token
        - token_type
      properties:
        scope:
          type: string
          description: Space-separated list of OAuth2 scopes. A scope names a class of access rules. It is a string, usually in the form of a (fictitious) URL. The available scopes depend on the scope of services booked. You therefore receive the scope list together with your cooperation agreement.
        tenant:
          type: string
          description: Technical name of the tenant
        tenantId:
          type: string
          format: uuid
          description: Unique identifier of the tenant
        client:
          type: string
          description: Technical name of the client
        user:
          type: string
          description: User reference, only set if this is a user token
        additionalData:
          type: object
          description: An optional list of additional data as a key-value map.
          additionalProperties:
            type: string
        validTo:
          type: string
          format: YYYY-MM-DD hh:mm:ss
        access_token:
          type: string
          format: uuid
          description: The token
        token_type:
          type: string
          description: Always "Bearer"
      example:
        scope: http://banksapi.io/provider/read http://banksapi.io/schedule/read http://banksapi.io/customer/read http://banksapi.io/customer/modify http://banksapi.io/customer/ueberweisung auth/tenants/users/create
        tenant: demo
        client: demo-client
        user: CN=Some User,OU=Personal,DC=banksapi,DC=io
        additionalData:
          username: someuser
        validTo: "2021-10-16 10:46:47"
        access_token: be9e0b8e-8cff-45ff-8d95-f6bfa2eac7b9
        token_type: Bearer
    Transaction:
      allOf:
        - title: Transaction
          type: object
          properties:
            id:
              type: string
              description: The unique id of this transaction.
              format: uuid
            hash:
              type: string
              format: uuid
              example: ad90f946-7f6d-3ec8-a6f2-fdf74df5138c
          example:
            id: ced1172c-0839-428a-af0d-8b87508f0981
            hash: c478c333-910f-465c-8e7d-616d86a07c0e
            betrag: -70
            verwendungszweck: EC 68096654 140215204106OC3 Ref. 5CC15048A1824480/89280
            buchungsdatum: "2016-11-17 00:00:00"
            wertstellungsdatum: "2016-11-15 00:00:00"
            gegenkontoInhaber: La Sopia GmbH München
            gegenkontoIban: DE00123456789012345679
            gegenkontoBic: XXX12345678
            primanotaNummer: "421337"
        - $ref: '#/components/schemas/TransactionData'
    TransactionData:
      title: Transaction Data
      required:
        - betrag
        - verwendungszweck
        - buchungsdatum
      type: object
      properties:
        betrag:
          type: number
          description: Amount with two decimal places.
          example: -64.55
        waehrung:
          type: string
          description: Currency of the transaction.
          example: EUR
        verwendungszweck:
          type: string
          description: The purpose of the transaction.
          example: EC 68096654 140215204106OC3 Ref. 5CC15048A1824480/89280
        buchungstext:
          type: string
          description: A text for the entry of the transaction
        buchungsdatum:
          type: string
          description: The date of the entry of the transaction
          format: YYYY-MM-DD hh:mm:ss
          example: "2016-05-23 13:37:00"
        wertstellungsdatum:
          type: string
          description: Date of booking
          format: YYYY-MM-DD hh:mm:ss
          example: "2016-11-15 00:00:00"
        gegenkontoInhaber:
          type: string
          description: Owner of the counter account
          example: La Sopia GmbH München
        gegenkontoIban:
          type: string
          description: IBAN of the counter account
          example: DE00123456789012345679
        gegenkontoBic:
          type: string
          description: BIC of the counter account
          example: XXX12345678
        gegenkontoInhaberAbweichend:
          type: string
          description: Ultimate owner of the counter account
          example: La Sopia GmbH München
        primanotaNummer:
          type: string
          description: Primanota number of sales
          example: "421337"
        gvCode:
          type: string
          description: Provider specific code, that denotes transaction use cases
          example: "302"
        identifier:
          type: object
          properties:
            endToEndId:
              type: string
            proprietaryCode:
              type: string
              description: Used for example for PayPal's proprietary transaction ID
            entryReference:
              type: string
            ownerRef:
              type: string
            bookingRef:
              type: string
            balance:
              type: number
            mandateId:
              type: string
              description: Contains the SEPA mandate reference
            batchId:
              type: string
        pending:
            type: boolean
            description: |
              Indicates whether the transaction is pending or booked.
              This field is only present for pending transactions.
            example: "true"
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagInstanceSchema'
      example:
        betrag: -70
        verwendungszweck: EC 68096654 140215204106OC3 Ref. 5CC15048A1824480/89280
        buchungsdatum: "2016-11-17 00:00:00"
        wertstellungsdatum: "2016-11-15 00:00:00"
        gegenkontoInhaber: La Sopia GmbH München
        gegenkontoIban: DE00123456789012345679
        gegenkontoBic: XXX12345678
        primanotaNummer: "421337"
    TransferDetails:
      title: TransferDetails
      required:
        - recipient
        - purpose
        - iban
        - amount
        - currency
      type: object
      properties:
        recipient:
          type: string
          description: Receiver of the transfer
        purpose:
          type: string
          description: Purpose of the transfer
        iban:
          type: string
          description: IBAN of the recipient account
        bic:
          type: string
          description: BIC of the recipient account
        currency:
          type: string
          description: Currency of the transfer (Alphabetic Code ISO 4217)
        amount:
          type: number
          description: Transfer amount
        endToEndId:
          type: string
          description: End-to-end identification of the transfer
        purposeCode:
          type: string
          description: Code to further classify payment using an
            [ISO20022 External Code](https://www.iso20022.org/catalogue-messages/additional-content-messages/external-code-sets)
          example: SALA, DIVD, PENS, LOAN, ...
        ultimateDebtor:
          type: string
          description: Ultimate debtor if deviating from account holder
        ultimateCreditor:
          type: string
          description: Ultimate creditor if deviating from recipient
      description: TransferDetails are used in InitiateSingleTransfer and InitiateBulkTransfer
    UeberweisungDetails:
      allOf:
        - title: UeberweisungDetails
          required:
            - empfaenger
            - verwendungszweck
            - iban
            - betrag
            - waehrung
          type: object
          properties:
            empfaenger:
              type: string
              description: Receiver of the transfer
            verwendungszweck:
              type: string
              description: Purpose of the transfer.
            iban:
              type: string
              description: IBAN of the recipient account
            bic:
              type: string
              description: BIC of the recipient account
            waehrung:
              type: string
              description: Currency of the transfer (Alphabetic Code ISO 4217)
            betrag:
              type: number
              description: Transfer amount
          description: UeberweisungDetails are used in CreateTransfer and CreateBulkTransfer
    User:
      title: User
      description: This object represents a user
      type: object
      required:
        - id
        - username
      properties:
        id:
          type: string
          description: Technical ID for the user, is also used in URLs (`user-id`)
        username:
          type: string
          description: Username for creating an OAuth2 token
        roles:
          type: array
          items:
            type: string
          description: Roles this user has
      example:
        userReference: 1c5b33f6-9c4d-11e6-ba80-480fcfb9550f
        username: demo-user
    WrappedTags:
      type: object
      properties:
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagInstanceSchema'
    ErrorMessage:
      type: object
      properties:
        code:
          type: string
          description: HTTP Code
          example: "400"
        message:
          type: string
          description: error message
          example: Tag with system name INSURANCE_LIF does not exist for tag tree CATEGORIES
    BusinessPartnerTagTreeItemSchemaTagTree:
      allOf:
        - $ref: '#/components/schemas/TagTreeSchema'
      description: tagTree that the tagTreeItem belongs to
      type: object
    VopSingleRequest:
      title: VopSingleRequest
      description: Request for single payee verification
      type: object
      properties:
        transferDetails:
          $ref: '#/components/schemas/VopTransferDetailsRequest'
      required:
        - transferDetails
    VopTransferDetailsRequest:
      title: VopTransferDetailsRequest
      description: |
        Transfer details for verification. 
        Either 'recipient' or 'identification' must be provided (mutually exclusive).
      type: object
      properties:
        recipient:
          type: string
          description: Name of the payee to verify
          example: "Max Mustermann"
        iban:
          type: string
          description: IBAN of the payee account
          example: "DE00123456789012345679"
        bic:
          type: string
          description: BIC of the payee bank
          example: "DEMO1234"
        identification:
          $ref: '#/components/schemas/VopIdentification'
      required:
        - iban
        - bic
    VopSingleResponse:
      title: VopSingleResponse
      description: Response for single payee verification
      type: object
      properties:
        transferDetails:
          $ref: '#/components/schemas/VopTransferDetailsResponse'
      required:
        - transferDetails
    VopTransferDetailsResponse:
      title: VopTransferDetailsResponse
      description: Transfer details with verification result
      type: object
      properties:
        recipient:
          type: string
          description: Name of the payee
          example: "Max Mustermann"
        iban:
          type: string
          description: IBAN of the payee account
          example: "DE00123456789012345679"
        bic:
          type: string
          description: BIC of the payee bank
          example: "DEMO1234"
        identification:
          $ref: '#/components/schemas/VopIdentification'
        verificationOfPayee:
          $ref: '#/components/schemas/VopResult'
      required:
        - iban
        - bic
        - verificationOfPayee
    VopResult:
      title: VopResult
      description: Verification of Payee result
      type: object
      properties:
        result:
          $ref: '#/components/schemas/VopMatchResult'
        matchedName:
          type: string
          description: Account holder name provided by the responding party
          example: "Max Mustermann"
      required:
        - result
    VopMatchResult:
      title: VopMatchResult
      description: |
        Verification match result codes:
        - MATCH (MTCH): The provided payee name matches the account holder name
        - NO_MATCH (NMTC): The provided payee name does not match the account holder name  
        - CLOSE_MATCH (CMTC): The provided payee name closely resembles the account holder name
        - NOT_APPLICABLE (NOAP): Verification check not possible - validation check is not applicable or identification code not supported/known by the responding party
      type: string
      enum:
        - MATCH
        - NO_MATCH
        - CLOSE_MATCH
        - NOT_APPLICABLE
      example: "MATCH"
    VopIdentification:
      title: VopIdentification
      description: Identification information for payee verification
      type: object
      properties:
        organisationId:
          $ref: '#/components/schemas/VopOrganisationId'
      required:
        - organisationId
    VopOrganisationId:
      title: VopOrganisationId
      description: Organisation identification details
      type: object
      properties:
        lei:
          type: string
          pattern: '^[A-Z0-9]{18}[0-9]{2}$'
          description: Legal Entity Identifier (ISO 17442)
          example: '549300DTUYXVMJXZNY75'
        anyBic:
          type: string
          pattern: '^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$'
          description: Bank Identifier Code
          example: 'ABCDBEBBFIM'
        others:
          type: array
          description: Other identification schemes (only one entry to be used)
          items:
            $ref: '#/components/schemas/VopGenericOrganisationIdentification'
    VopGenericOrganisationIdentification:
      title: VopGenericOrganisationIdentification
      description: Generic organisation identification
      type: object
      properties:
        identification:
          type: string
          description: Unique identification of an organisation
          example: "string"
        schemeNameCode:
          $ref: '#/components/schemas/VopOrganisationIdentificationCode'
        schemeNameProprietary:
          type: string
          description: Proprietary scheme name
          example: "string"
        issuer:
          type: string
          description: Issuer of the identification
          example: "string"
      required:
        - identification
    VopOrganisationIdentificationCode:
      title: VopOrganisationIdentificationCode
      description: External organisation identification scheme codes
      type: string
      enum: [BANK, CBID, CHID, CINC, COID, CUST, DUNS, EMPL, GS1G, SREN, SRET, TXID, BDID, BOID]
      example: 'BOID'
    VopBatchRequest:
      title: VopBatchRequest
      description: Request for batch payee verification
      type: object
      properties:
        transferDetails:
          type: array
          items:
            $ref: '#/components/schemas/VopTransferDetailsRequest'
          description: Array of transfer details to verify
      required:
        - transferDetails
    VopBatchResponse:
      title: VopBatchResponse
      description: Response for batch payee verification
      type: object
      properties:
        batchVopId:
          type: string
          description: Unique identifier for the batch verification request
          example: "550e8400-e29b-41d4-a716-446655440000"
        transferDetails:
          type: array
          items:
            $ref: '#/components/schemas/VopTransferDetailsResponse'
          description: Array of verification results (only present when processing is complete)
      required:
        - batchVopId
  responses:
    regprotect:
      description: This response is for REG/Protect tenants. It contains a link to the REG/Protect application in the HTTP header Location
      headers:
        Location:
          description: Link to the REG/Protect application. Append a callbackUrl query-parameter to the URL
          schema:
            type: string
            example: https://banksapi.io/customer/v2/webform?session=e8c22f9e-fb70-4728-a558-793cef314276&useCase=EXAMPLE_CASE
    regprotectPayment:
      description: This response is for REG/Protect tenants. It contains a link to the REG/Protect application in the HTTP header Location
      headers:
        Location:
          description: Link to the REG/Protect application. Append a callbackUrl query-parameter to the URL
          schema:
            type: string
            example: https://banksapi.io/customer/v2/webform?session=e8c22f9e-fb70-4728-a558-793cef314276&useCase=EXAMPLE_CASE
      links:
        self:
          $ref: '#/components/links/self'
        get_webform:
          $ref: '#/components/links/get_webform'
    bankAccessCreated:
      description: HTTP status 201 (Created) is returned together with the HTTP header Location. Under the URL specified in the header, the added bank accesses can be queried analogously by means of an HTTP GET call.
      headers:
        Location:
          description: URL to get the created bank access using GET method
          schema:
            type: string
            example: https://banksapi.io/customer/v2/bankzugaenge/c77604d5-2f7c-456a-813f-c7accfc50ef5
    singleTransferInitiated:
      description: Returns object with the transfer status
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SingleTransferResult'
          example:
            messages:
              - level: INFO
                code: BA3010
                message: SCA Methode auswählen
                details: Bitte wählen Sie eine SCA-Methode aus
            scaMethods:
              - code: 2
                name: mTAN
                hint: mTAN
              - code: 1
                name: Mock-TAN
                hint: Mock-TAN
            relations:
              - rel: self
                href: https://banksapi.io/customer/v2/payment/single-transfer/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
              - rel: set_method
                href: https://banksapi.io/customer/v2/consent/3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
            transfer:
              provider: ca650b48-3edc-45f4-938d-d21df8cba761
              product: DE89370400440532013000
              paymentId: 5208b5cb-2f88-4bba-87a5-c5e0356c460c
              ebics: false
              instant: false
              requestedExecutionDate: 2024-09-19
              transferDetails:
                recipient: netzpolitik.org e. V.
                purpose: Spende netzpolitik.de
                iban: DE62430609671149278400
                bic: GENODEM1GLS
                currency: EUR
                amount: 1337.42
                endToEndId: be7649876d5f439886fa816993ac9f9f
      links:
        self:
          $ref: '#/components/links/self'
        set_method:
          $ref: '#/components/links/set_method'
        set_medium:
          $ref: '#/components/links/set_medium'
        authenticate:
          $ref: '#/components/links/authenticate'
        authenticate_decoupled:
          $ref: '#/components/links/authenticate_decoupled'
        cancel:
          $ref: '#/components/links/cancel'
    bulkTransferInitiated:
      description: Returns object with the transfer status
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkTransferResult'
          example:
            messages:
              - level: INFO
                code: BA3010
                message: SCA Methode auswählen
                details: Bitte wählen Sie eine SCA-Methode aus
            scaMethods:
              - code: 2
                name: mTAN
                hint: mTAN
              - code: 1
                name: Mock-TAN
                hint: Mock-TAN
            relations:
              - rel: self
                href: https://banksapi.io/customer/v2/payment/bulk-transfer/fdc61bcd-d0ee-4999-9c77-eff3ba8db0ce
              - rel: set_method
                href: https://banksapi.io/customer/v2/consent/fdc61bcd-d0ee-4999-9c77-eff3ba8db0ce
            transfer:
              provider: ca650b48-3edc-45f4-938d-d21df8cba761
              product: DE89370400440532013000
              paymentId: 5208b5cb-2f88-4bba-87a5-c5e0356c460c
              ebics: false
              instant: false
              requestedExecutionDate: 2024-09-19
              transferDetails:
                - recipient: UNICEF
                  purpose: Spende UNICEF
                  iban: DE57370205000000300000
                  bic: BFSWDE33XXX
                  currency: EUR
                  amount: 150.00
                  endToEndId: be7649876d5f439886fa816993ac9f9f
                - recipient: netzpolitik.org e. V.
                  purpose: Spende netzpolitik.de
                  iban: DE62430609671149278400
                  bic: GENODEM1GLS
                  currency: EUR
                  amount: 75.00
                  endToEndId: be7649876d5f439886fa816993ac9f9f
      links:
        self:
          $ref: '#/components/links/self'
        set_method:
          $ref: '#/components/links/set_method'
        set_medium:
          $ref: '#/components/links/set_medium'
        authenticate:
          $ref: '#/components/links/authenticate'
        authenticate_decoupled:
          $ref: '#/components/links/authenticate_decoupled'
        cancel:
          $ref: '#/components/links/cancel'
    singleDebitInitiated:
      description: Returns object with the debit status
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SingleDebitResult'
          example:
            messages:
              - level: INFO
                code: BA3010
                message: SCA Methode auswählen
                details: Bitte wählen Sie eine SCA-Methode aus
            scaMethods:
              - code: 2
                name: mTAN
                hint: mTAN
              - code: 1
                name: Mock-TAN
                hint: Mock-TAN
            relations:
              - rel: self
                href: https://banksapi.io/customer/v2/payment/single-debit/07788639-abd7-4009-9c9d-2d79079f3f26
              - rel: set_method
                href: https://banksapi.io/customer/v2/consent/07788639-abd7-4009-9c9d-2d79079f3f26
            debit:
              provider: ca650b48-3edc-45f4-938d-d21df8cba761
              product: DE89370400440532013000
              paymentId: 5208b5cb-2f88-4bba-87a5-c5e0356c460c
              business: false
              sequenceType: OOFF
              creditorSchemeIdentification: GlauebigerId
              requestedCollectionDate: "2022-02-22"
              debitDetails:
                amount: 1337.42
                currency: EUR
                purpose: Verwendungszweck
                endToEndId: "123"
                debtorName: Max Mustermann
                debtorIban: DE62430609671149278400
                debtorAccountNumber: "1149278400"
                debtorBankCode: "43060967"
                debtorBic: GENODEM1GLS
                mandateIdentification: MandatsId
                mandateDateOfSignature: "2022-02-02"
      links:
        self:
          $ref: '#/components/links/self'
        set_method:
          $ref: '#/components/links/set_method'
        set_medium:
          $ref: '#/components/links/set_medium'
        authenticate:
          $ref: '#/components/links/authenticate'
        authenticate_decoupled:
          $ref: '#/components/links/authenticate_decoupled'
        cancel:
          $ref: '#/components/links/cancel'
    bulkDebitInitiated:
      description: Returns object with the debit status
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkDebitResult'
          example:
            messages:
              - level: INFO
                code: BA3010
                message: SCA Methode auswählen
                details: Bitte wählen Sie eine SCA-Methode aus
            scaMethods:
              - code: 2
                name: mTAN
                hint: mTAN
              - code: 1
                name: Mock-TAN
                hint: Mock-TAN
            relations:
              - rel: self
                href: https://banksapi.io/customer/v2/payment/bulk-debit/0b1937c7-82eb-49d4-99cb-6fdca765c450
              - rel: set_method
                href: https://banksapi.io/customer/v2/consent/0b1937c7-82eb-49d4-99cb-6fdca765c450
            debit:
              provider: ca650b48-3edc-45f4-938d-d21df8cba761
              product: DE89370400440532013000
              paymentId: 5208b5cb-2f88-4bba-87a5-c5e0356c460c
              business: false
              sequenceType: OOFF
              creditorSchemeIdentification: GlauebigerId
              requestedCollectionDate: "2022-02-22"
              debitDetails:
                - amount: 1337.42
                  currency: EUR
                  purpose: Verwendungszweck
                  endToEndId: "123"
                  debtorName: Max Mustermann
                  debtorIban: DE62430609671149278400
                  debtorAccountNumber: "1149278400"
                  debtorBankCode: "43060967"
                  debtorBic: GENODEM1GLS
                  mandateIdentification: MandatsId
                  mandateDateOfSignature: "2022-02-02"
                - amount: 42
                  currency: EUR
                  purpose: Verwendungszweck 2
                  endToEndId: "124"
                  debtorName: Maxi Mustermann
                  debtorIban: DE00123456789012345678
                  debtorAccountNumber: "9012345678"
                  debtorBankCode: "12345678"
                  debtorBic: SSKMDEMMXXX
                  mandateIdentification: MandatsId
                  mandateDateOfSignature: "2022-02-02"
      links:
        self:
          $ref: '#/components/links/self'
        set_method:
          $ref: '#/components/links/set_method'
        set_medium:
          $ref: '#/components/links/set_medium'
        authenticate:
          $ref: '#/components/links/authenticate'
        authenticate_decoupled:
          $ref: '#/components/links/authenticate_decoupled'
        cancel:
          $ref: '#/components/links/cancel'
    xmlPaymentInitiated:
      description: Returns object with the payment status
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/XmlPaymentResult'
          example:
            messages:
              - level: INFO
                code: BA1112
                message: Die Überweisung wurde erfolgreich eingereicht
                details:
            relations:
              - rel: self
                href: https://banksapi.io/customer/v2/payment/xml/251a3d57-aaa3-4a96-9b9e-4783bd145638
            payment:
              provider: 00000000-0000-0000-0000-000000000000
              product: DE86990003540000002000
              ebics: true
              paymentId: 82675df9-e876-493b-be38-4128ff5f601e
              painXml: <?xml version="1.0" encoding="utf-8"?><Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"><CstmrCdtTrfInitn><GrpHdr><MsgId>M20250207135927</MsgId><CreDtTm>2025-02-07T13:59:27Z</CreDtTm><NbOfTxs>1</NbOfTxs><CtrlSum>10.00</CtrlSum><InitgPty><Nm>Max Mustermann</Nm></InitgPty></GrpHdr><PmtInf><PmtInfId>P20250207135928</PmtInfId><PmtMtd>TRF</PmtMtd><BtchBookg>false</BtchBookg><NbOfTxs>1</NbOfTxs><CtrlSum>10.00</CtrlSum><ReqdExctnDt>2025-02-07</ReqdExctnDt><Dbtr><Nm>Max Mustermann</Nm><Id><OrgId><BICOrBEI>SUBSDEM0000</BICOrBEI></OrgId></Id></Dbtr><DbtrAcct><Id><IBAN>DE86990003540000002000</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BIC>SUBSDEM0000</BIC></FinInstnId></DbtrAgt><ChrgBr>SLEV</ChrgBr><CdtTrfTxInf><PmtId><EndToEndId>NOTPROVIDED</EndToEndId></PmtId><Amt><InstdAmt Ccy="EUR">10.00</InstdAmt></Amt><Cdtr><Nm>Max Mustermann</Nm></Cdtr><CdtrAcct><Id><IBAN>DE59990003540000002001</IBAN></Id></CdtrAcct><RmtInf><Ustrd>Payment Purpose</Ustrd></RmtInf></CdtTrfTxInf></PmtInf></CstmrCdtTrfInitn></Document>
      links:
        self:
          $ref: '#/components/links/self'
  parameters:
    access-id:
      name: access-id
      in: path
      description: ID of the bank access
      required: true
      schema:
        type: string
        format: uuid
        example: d23710a9-8e4b-4595-b01c-dad9499c9fdb
    product-id:
      name: product-id
      in: path
      description: ID of a banking product
      required: true
      schema:
        type: string
        example: DE00123456789012345678
    transaction-id:
      name: transaction-id
      in: path
      description: ID of a transaction
      required: true
      schema:
        type: string
        format: uuid
        example: 6f8b9367-22a9-4026-bf8e-1944d435b408
    provider-id:
      name: provider-id
      in: path
      description: ID of a provider
      required: true
      schema:
        type: string
        format: uuid
        example: 00000000-0000-0000-0000-000000000000
    tenant-name:
      name: tenant-name
      in: path
      description: Tenant name plays a role in using the API. The tenant name is a URL component in the management API.
      required: true
      schema:
        type: string
        example: demo
    user-id:
      name: user-id
      in: path
      description: User reference of the user
      required: true
      schema:
        type: string
        example: 1c5b33f6-9c4d-11e6-ba80-480fcfb9550f
    consent-id:
      name: consent-id
      in: path
      description: ID of the consent
      required: true
      schema:
        type: string
        format: uuid
        example: 3e97fa51-ce7b-42a0-9101-50fd67dbc3e7
    payment-id:
      name: payment-id
      in: path
      description: ID of the payment
      required: true
      schema:
        type: string
        format: uuid
        example: d308a7ae-b762-4a20-8996-7fa22aed6b73
    bearer-user-token-authorization:
      name: Authorization
      in: header
      description: The **Authorization** header contains the bearer token.
      required: true
      schema:
        type: string
        example: Bearer 596cc7a4-f971-4906-bb5f-ecad8af2ba9a
    customer-ip-address:
      name: Customer-IP-Address
      in: header
      description: The IP address of the customer. Must be a public IP address (IPv4, IPv6)
      required: true
      schema:
        type: string
        example: 154.25.45.133
    rejection-nofunds-preferred:
      name: Rejection-NoFunds-Preferred
      in: header
      description: If set to "true", the bank should reject the payment if there are insufficient funds. If set to "false", the bank may wait for a certain period for funds to arrive. This parameter may be ignored by the bank.
      required: false
      schema:
        type: boolean
        example: "true"
    callbackUrl:
      name: callbackUrl
      in: query
      description: Required for non-REG/Protect tenants. Get redirected here after a Redirect SCA.
      required: false
      schema:
        type: string
        format: url
        example: https://demo-tenant.com/callback?state=123
    queryTanSettings:
      name: queryTanSettings
      in: query
      description: Flag to ignore saved TAN-settings and query them.
      required: false
      schema:
        type: boolean
        example: "true"
    editableDetails:
      name: editableDetails
      in: query
      description: Flag for REG/Protect to control whether fields on the frontend are editable
      required: false
      schema:
        type: boolean
        example: "false"
    autoConfirm:
      name: autoConfirm
      in: query
      description: Flag for REG/Protect to control whether transfers can be entered without interaction
      required: false
      schema:
        type: boolean
        example: "false"
  requestBodies:
    CreateUser:
      description: The request body is a JSON object containing data required for a user
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateUser'
          example:
            username: demouser
            password: secret
            firstname: demo
            lastname: user
      required: true
    SubmitScaData:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SubmitScaData'
          example:
            chosenScaMethodId: "2"
      required: true
  links:
    self:
      description: Returns the corresponding entity (e.g. bank access, single transfer, consent...)
    get_bankzugaenge:
      operationId: GetBankAccesses
      description: Lists all bank accesses of the user
    add_bankzugaenge:
      operationId: AddBankAccess
      description: adds a new bank access to the user
    refresh_bankzugang:
      operationId: RefreshBankAccess
      description: refreshes an existing bank access
    delete_bankzugang:
      operationId: DeleteBankAccess
      description: Deletes a bank access of the user
      parameters:
        access-id: $response.body#/id
    delete_bankzugaenge:
      operationId: DeleteBankAccesses
      description: Delete all bank accesses of the user
    get_kontoumsaetze:
      description: Lists all transactions of the given banking product, default are transactions of the last 90 days, available if product has transactions
      parameters:
        access-id: $request.path.access-id
        product-id: $request.path.product-id
    get_depotpositionen:
      description: Lists all depot positions of the given banking product, available if product has `kategorie` set to `DEPOT` and if depot positions are available
      parameters:
        access-id: $request.path.access-id
        product-id: $request.path.product-id
    start_sca:
      description: Handles a consent, available if an unhandled SCA occured in a previous bank access synchronisation
      parameters:
        access-id: $response.body#/id
    set_method:
      description: Sets `chosenScaMethodId`, available if current SCA requires it
    set_medium:
      description: Sets `chosenScaMedia`, available if current SCA requires it
    redirect_url:
      description: Contains link to the website, that the user needs to follow for the completion of the SCA
    authenticate:
      description: Sends `scaAuthenticationData`, available if current SCA requires it
    authenticate_decoupled:
      description: Polls current authentication status, available if current SCA requires to be completed on a different device or app
    delete_regprotect_sessions:
      description: Deletes all current REG/Protect sessions for the user
    get_issues:
      description: Shows issues for the given bank access
      parameters:
        access-id: $response.body#/id
    get_challenge_pdf:
      description: Returns the PDF file from the challenge if available
      parameters:
        access-id: $response.body#/id
    get_webform:
      description: Contains link to the REG/Protect web application
    cancel:
      description: Cancels current SCA, available if current SCA allows it
    initiate_single_transfer:
      operationId: InitiateSingleTransfer
      description: Initiates a single transfer
    initiate_bulk_transfer:
      operationId: InitiateBulkTransfer
      description: Initiates a bulk transfer
    initiate_single_transfer_with_saved_credentials:
      operationId: InitiateSingleTransferSavedCredentials
      description: Initiates a single transfer with previously saved credentials
    initiate_bulk_transfer_with_saved_credentials:
      operationId: InitiateBulkTransferSavedCredentials
      description: Initiates a bulk transfer with previously saved credentials
    get_single_transfer:
      description: Returns the corresponding single transfer, if available
      parameters:
        payment-id: $request.path.consent-id
    get_bulk_transfer:
      description: Returns the corresponding bulk transfer, if available
      parameters:
        payment-id: $request.path.consent-id
    get_single_debit:
      description: Returns the corresponding single debit, if available
      parameters:
        payment-id: $request.path.consent-id
    get_bulk_debit:
      description: Returns the corresponding bulk debit, if available
      parameters:
        payment-id: $request.path.consent-id
    get_kontoumsaetze_categories:
      description: Acts the same as `get_kontoumsaetze`, but with added category `tag`s
      parameters:
        access-id: $request.path.access-id
        product-id: $request.path.product-id
    get_kontoumsaetze_business_partners:
      description: Acts the same as `get_kontoumsaetze`, but with added business partner `tag`s
      parameters:
        access-id: $request.path.access-id
        product-id: $request.path.product-id
    get_kontoumsaetze_periods:
      description: Acts the same as `get_kontoumsaetze`, but with added period `tag`s
      parameters:
        access-id: $request.path.access-id
        product-id: $request.path.product-id
    get_kontoumsaetze_insurance_types:
      description: Acts the same as `get_kontoumsaetze`, but with added insurance type `tag`s
      parameters:
        access-id: $request.path.access-id
        product-id: $request.path.product-id
    get_kontoumsaetze_freelancer_categories:
      description: Acts the same as `get_kontoumsaetze`, but with added freelancer category `tag`s
      parameters:
        access-id: $request.path.access-id
        product-id: $request.path.product-id
    get_contracts:
      description: Returns the contracts of the user
    get_sales_triggers:
      description: Returns the sales trigger of the user
    get_life_events:
      description: Returns the life events of the user
    get_life_stages:
      description: Returns the life stages of the user
    get_cashflow:
      description: Returns the cashflow of the user
    get_credit_check:
      description: Returns the credit check of the user
    get_disposable_money:
      description: Returns the disposable money of the user
    get_affinities:
      description: Returns the affinities of the user
    get_credit_attributes:
      description: Returns the credit attributes of the user
    get_tagging_rules:
      description: Returns the manually created tagging rules of the user
    delete_tagging_rules:
      description: Deletes all tagging rules of the user
    add_tagging_rules:
      description: Adds a new tagging rule to the user
    logo:
      description: Returns the provider logo in an SVG-format
      parameters:
        provider-id: $request.path.provider-id
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
    httpBearer:
      type: http
      scheme: bearer
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
      description: Base64 encoded key for ONE/Connect authentication, e.g. `NDJlMjNhOD...NzU0ZDc1NA==`
security:
  - httpBearer: []
tags:
  - name: Auth
  - name: Providers
  - name: Customer
  - name: Customer Bank Access
  - name: Customer Bank Access Consent
  - name: Customer Bank Access Payment
  - name: Customer Ueberweisung
    description: Legacy endpoints, that will be replaced by the endpoints in 'Customer Payment'
  - name: Customer Payment
  - name: Customer Consent
  - name: Customer REG/Protect
  - name: Verification of Payee
