swagger: "2.0"
info:
  title: 'Alpha Bank - WEB Banking API'
  description: |
    The ALPHA WEB Banking Account, Payment and Funds Confirmation APIs are PSD2 Compliant APIs providing information about the accounts (products) of a WEB Banking subscriber of the Alpha Bank, as well as payment initiation functionality. 
    Both account information and lists of transactions can be acquired, along with direct-debits, standing orders, etc.
  termsOfService: https://developer.api.alphabank.eu/media/ryzpmllz/alphabankgroupproviderterms.pdf
  version: "1.4.0"
  
host: 'gw.api.alphabank.eu'
basePath: /api/sandbox
schemes:
  - https

tags:
  - name: Accounts
    description: | 
      Provides Account and Transaction information.
  - name: Payments
    description: | 
      This API implements the protocol which is necessary in order a funds transfer transaction to be initiated and monitored.
  - name: FundsConfirmation
    description: | 
      Provides confirmation for the availability of funds on a specific account.
  - name: OpenData
    description: | 
      Offers access to Open Bank Data including Branch information, ATMs and Currency rates.

paths:
  # ***********************************************************************************************
  # Accounts
  # ***********************************************************************************************
  '/accounts/v1/account-requests':
    post:
      summary: Ask for an account request
      tags:
        -  Accounts
      description: |
        Ask for the generation of an account request. The account request is a 'resource' representing the intent of the client application to ask for account and transaction information. This intent must be authorised by the end user in order for the client to acquire the access-token necessary to call any of the relative API operations. The autorization of the intent is performed using the "request" parameter (query argument) at the authorize request. 
      operationId: CreateAccountRequest
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        - name: body
          in: body
          description: Create an Account Request
          required: true
          schema:
            title: Account Request POST request object
            description: Allows setup of an account access request
            type: object
            required:
              - Risk
            properties:
              ProductIdentifiers:
                description: List of Product Identifiers
                $ref: "#/definitions/ProductIdentifiers"
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
            additionalProperties: false
        # -----------------------------------------------------------------------
        - &ref_BankId_header
          in: header
          name: x-ab-bank-id
          type: string
          required: true
          description: The unique id of the Alpha Bank to which the request is issued. Use CRBAGRAA for Alpha Bank Greece.
        # -----------------------------------------------------------------------
        - &ref_LastLoggedTime_header
          in: header
          name: x-ab-psu-last-logged
          type: string
          required: false
          description: |-
            The time when the PSU last logged in with the TPP. 
            All dates in the HTTP headers are represented as RFC 7231 Full Dates.
        # -----------------------------------------------------------------------
        - &ref_CustomerIp_header
          in: header
          name: x-ab-psu-ip
          type: string
          required: false
          description: The PSU's IP address if the PSU is currently logged in with the TPP.
        # -----------------------------------------------------------------------        
        - &ref_InteractionId_header
          in: header
          name: x-ab-interaction-id
          type: string
          required: false
          description: An RFC4122 UID used as a correlation id.
        # -----------------------------------------------------------------------        
        - &ref_lang_header
          in: header
          name: x-ab-lang
          type: string
          required: false
          description: An ISO 639-1 two letter language code. Only 'el', 'ro' and 'en' values are valid.
        # -----------------------------------------------------------------------
        - &ref_Authorization_header
          in: header
          name: Authorization
          type: string
          required: true
          description: 'An Authorisation Bearer Token as per https://tools.ietf.org/html/rfc6750'
        # -----------------------------------------------------------------------        
        - &ref_JwsSignature_header
          in: header
          name: x-jws-signature
          type: string
          required: true
          description: Header containing a detached JWS signature of the body of the payload.        
        # -----------------------------------------------------------------------        
        - &ref_SubscriptionKey_header
          in: header
          name: Ocp-Apim-Subscription-Key
          type: string
          required: true
          description: 'The subscription key necessary to access the API endpoint'        
        # -----------------------------------------------------------------------        
      responses:
        '201':
          description: Account Request resource successfully created
          schema:
            title: Account Request POST response
            type: object
            required:
              - AccountRequestId
              - CreationDateTime
            properties:
              AccountRequestId:
                description: Unique identification as assigned to identify the account request resource.
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the account request resource.
                type: string
                enum:
                  - Accepted
                  - Authorised
                  - Rejected
                  - Revoked
              CreationDateTime:
                description: Date and time at which the resource was created (in ISO 8601 format). 
                type: string
                format: date-time
              ProductIdentifiers:
                description: List of Product Identifiers
                $ref: "#/definitions/ProductIdentifiers"
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': &ref_error400
          description: Bad Request
          schema:
            $ref: "#/definitions/ErrorDescription"
        '401': &ref_error401
          description: Unauthorized
        '403': &ref_error403
          description: Forbidden
        '405': &ref_error405
          description: Method Not Allowed
        '406': &ref_error406
          description: Not Acceptable
        '429': &ref_error429
          description: Too Many Requests
          schema:
            $ref: "#/definitions/ErrorDescription"
          headers:
            Retry-After:
              description: Number in seconds to wait
              type: integer
        '500': &ref_error500
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorDescription"
      security:
        - TPPSec: ['account-info-setup']

  # ***********************************************************************************************
  '/accounts/v1/account-requests/{AccountRequestId}':
    get:
      summary: Get an account request
      tags:
        -  Accounts
      description: |
        Return the Account Request intent object given its Id.
      operationId: GetAccountRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        - &ref_AccountRequestId_parameter
          name: AccountRequestId
          in: path
          description: Unique identification as assigned by the ASPSP to uniquely identify the account request resource.
          required: true
          type: string
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------        
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        

      responses:
        '200':
          description: Account Request resource successfully retrieved
          schema:
            title: Account Request GET response
            type: object
            required:
              - AccountRequestId
              - CreationDateTime
              - Risk
            properties:
              AccountRequestId:
                description: Unique identification as assigned to identify the account request resource.
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the account request resource.
                type: string
                enum:
                  - Authorised
                  - AwaitingAuthorisation
                  - Rejected
                  - Revoked
              CreationDateTime:
                description: Date and time at which the resource was created (in ISO 8601 format). 
                type: string
                format: date-time
              ProductIdentifiers:
                description: List of Product Identifiers
                $ref: "#/definitions/ProductIdentifiers"
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['account-info-setup']

    # ---------------------------------------------------------------------------------------------
    delete:
      summary: Delete an account request
      tags:
        -  Accounts      
      description: Delete an account request
      operationId: DeleteAccountRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------        
        - *ref_AccountRequestId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------     
      responses:
        '204':
          description: Account Request resource successfully deleted
          headers:
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['account-info']

  # ***********************************************************************************************
  '/accounts/v1/details':
    get:
      tags:
        -  Accounts
      summary: Get All Accounts
      description: Get all accounts of the authenticated subscriber.
      operationId: GetAllAcounts
      produces:
        - application/json; charset=utf-8  
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '200':
          description: Account resources successfully retrieved
          schema:
            $ref: "#/definitions/AccountsResponse"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
              
        # Error HTTP codes ------------------------------------------------------------------------
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
          
      security:
        - PSUSec: ['account-info']
  
  # ***********************************************************************************************
  '/accounts/v1/details/cards':
    get:
      tags:
        -  Accounts
      summary: Get All Cards
      description: Get all cards of the authenticated subscriber.
      operationId: GetAllAcountsCards
      produces:
        - application/json; charset=utf-8  
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '200':
          description: Cards resources successfully retrieved
          schema:
            $ref: "#/definitions/AccountsResponse"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
              
        # Error HTTP codes ------------------------------------------------------------------------
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
          
      security:
        - PSUSec: ['account-info']
  
  # ***********************************************************************************************
  '/accounts/v1/details/deposit':
    get:
      tags:
        -  Accounts
      summary: Get All Deposit Accounts
      description: Get all deposit accounts of the authenticated subscriber.
      operationId: GetAllAcountsDeposit
      produces:
        - application/json; charset=utf-8  
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '200':
          description: Cards resources successfully retrieved
          schema:
            $ref: "#/definitions/AccountsResponse"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
              
        # Error HTTP codes ------------------------------------------------------------------------
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
          
      security:
        - PSUSec: ['account-info']

  # ***********************************************************************************************            
  '/accounts/v1/balances':
    get:
      tags:
        -  Accounts
      summary: Get Balances
      description: Get balances related to all customer accounts
      operationId: GetBalances
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        200:
          description: Balances successfully retrieved
          schema:
            $ref: "#/definitions/BalancesResponse"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['account-info']

  # ***********************************************************************************************
  '/accounts/v1/{AccountId}/details':
    get:
      tags:
        -  Accounts
      summary: Get Account
      description: Get an account
      operationId: GetAccount
      produces:
        - application/json; charset=utf-8  
      parameters:
        # -----------------------------------------------------------------------
        - &ref_AccountId_parameter
          name: AccountId
          in: path
          description: A unique identifier used to identify the account resource as returned by the GetAllAcounts operation.
          required: true
          type: string
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        '200':
          description: Account resource successfully retrieved
          schema: 
            $ref: "#/definitions/AccountsResponse"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
              
        # Error HTTP codes ------------------------------------------------------------------------
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
          
      security:
        - PSUSec: ['account-info']
            
  # ***********************************************************************************************
  '/accounts/v1/{AccountId}/standing-orders':
    get:
      tags:
        -  Accounts
      summary: Get account standing orders
      description: Get the standing orders defined for the account with basic information. For detailed information about a specific order there is another endpoint to obtain detailed information about a standing order.
      operationId: GetAccountStandingOrders
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_AccountId_parameter    
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------       
      responses:
        200:
          description: Account standing orders successfully retrieved
          schema:
            $ref: "#/definitions/StandingOrdersBasicInfo"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
        
      security:
        - PSUSec: ['account-info']
  
  # ***********************************************************************************************
  '/accounts/v1/{AccountId}/standing-orders/{StandingOrderId}':
    get:
      tags:
        -  Accounts
      summary: Get detailed information about a specific standing order
      description: Get detailed information about a specific standing order. In order to obtain a list of standing orders there is a separate endpoint which provides basic info for each standing order.
      operationId: GetAccountStandingOrdersDetails
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_AccountId_parameter    
        # -----------------------------------------------------------------------
        - &ref_StandingOrderId_header
          name: StandingOrderId
          in: path
          description: A unique identifier used to identify the standing order resource.
          required: true
          type: string
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        200:
          description: Account specific standing order successfully retrieved
          schema:
            $ref: "#/definitions/StandingOrderDetailedInfo"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
        
      security:
        - PSUSec: ['account-info']

  # ***********************************************************************************************
  '/accounts/v1/{AccountId}/direct-debits':
    get:
      tags:
        -  Accounts
      summary: Get account direct debits
      description: Get the direct debits defined for the account with basic information. For detailed information about a specific direct debit there is another endpoint to obtain detailed information about a direct debit.
      operationId: GetAccountDirectDebits
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_AccountId_parameter    
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        200:
          description: Account direct debits successfully retrieved
          schema:
            $ref: "#/definitions/DirectDebitsBasicInfo"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500

      security:
        - PSUSec: ['account-info']

  # ***********************************************************************************************
  '/accounts/v1/{AccountId}/direct-debits/{DirectDebitId}':
    get:
      tags:
        -  Accounts
      summary: Get account direct debit
      description: Get detailed information about a specific direct debit. In order to obtain a list of direct debits there is a separate endpoint which provides basic info for each direct debit.
      operationId: GetAccountDirectDebit
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_AccountId_parameter    
        # -----------------------------------------------------------------------
        - &ref_DirectDebitId_parameter
          name: DirectDebitId
          in: path
          description: A unique identifier used to identify the direct debit resource.
          required: true
          type: string
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        200:
          description: Account direct debits successfully retrieved
          schema:
            $ref: "#/definitions/DirectDebitDetailedInfo"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500

      security:
        - PSUSec: ['account-info']

  # ***********************************************************************************************  
  '/accounts/v1/{AccountId}/balances':
    get:
      tags:
        -  Accounts
      summary: Get Account Balances
      description: Get balances related to an account
      operationId: GetAccountBalances
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_AccountId_parameter    
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        200:
          description: Account balances successfully retrieved
          schema:
            $ref: "#/definitions/BalancesResponse"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['account-info']

  # ***********************************************************************************************
  '/accounts/v1/{AccountId}/beneficiaries':
    get:
      tags:
        -  Accounts
      summary: Get Account Beneficiaries
      description: Get the beneficiaries related to an account
      operationId: GetAccountBeneficiaries
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_AccountId_parameter    
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        200:
          description: Account balances successfully retrieved
          schema:
            $ref: "#/definitions/Beneficiaries"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['account-info']

  # ***********************************************************************************************
  '/accounts/v1/{AccountId}/transactions':
    get:
      tags:
        -  Accounts
      summary: Get Account Transactions
      description: Get transactions related to an account
      operationId: GetAccountTransactions
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_AccountId_parameter    
        # -----------------------------------------------------------------------
        - &ref_FromDate_parameter
          in: query
          name: fromDate
          type: string
          required: false
          format: date-time
          description: |-
            The UTC ISO 8601 Date Time to filter transactions (from). This parameter is not applicable when the account is of Card type. In the case of cards, the operation returns all transactions that have not yet been included in a statement.
        # -----------------------------------------------------------------------
        - &ref_ToDate_parameter
          in: query
          name: toDate
          type: string
          required: false
          format: date-time
          description: |-
            The UTC ISO 8601 Date Time to filter transactions (to). This parameter is not applicable when the account is of Card type. In the case of cards, the operation returns all transactions that have not yet been included in a statement.
        # -----------------------------------------------------------------------
        - &ref_locator_header
          in: header
          name: x-ab-locator
          type: string
          required: false
          description: |-
            The locator value returned from previous request with same arguments. Use this header to get the next set of transactions.
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        200:
          description: Account Transactions successfully retrieved
          schema:
            $ref: "#/definitions/TransactionsResponse"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '416': &ref_error416
          description: Requested Range Not Satisfiable
          schema:
            $ref: "#/definitions/ErrorDescription"
        '429': *ref_error429
        '500': *ref_error500
        
      security:
        - PSUSec: ['account-info']

  # ***********************************************************************************************
  '/accounts/v1/{AccountId}/pending-transfers':
    get:
      tags:
        -  Accounts
      summary: Get Account Pending Transfers
      description: Get pending transactions related to an account that are scheduled to execute in the future.
      operationId: GetAccountPendingTransactions
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_AccountId_parameter
        - &ref_locator_header
          in: header
          name: x-ab-locator
          type: string
          required: false
          description: |-
            the locator value returned from previous request with same arguments
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        200:
          description: Account Pending Transactions successfully retrieved
          schema:
            $ref: "#/definitions/TransactionsResponse"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '416': &ref_error416
          description: Requested Range Not Satisfiable
          schema:
            $ref: "#/definitions/ErrorDescription"
        '429': *ref_error429
        '500': *ref_error500
        
      security:
        - PSUSec: ['account-info']

  # ***********************************************************************************************
  # Transfers
  # *********************************************************************************************** 
  '/payments/v1/transfers/domestic':
    post:
      tags:
        - Payments
      summary: Create a single domestic transfer intent object
      description: Create a single domestic transfer intent object
      operationId: CreateSingleDomesticTransfer
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        - &ref_IdempotencyKey_header
          name: x-idempotency-key
          in: header
          description: Every request will be processed only once per x-idempotency-key. The Idempotency Key will be valid for 24 hours.
          required: true
          type: string
          pattern: ^(?!\s)(.*)(\S)$
          maxLength: 40
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header
        # -----------------------------------------------------------------------
        - name: body
          in: body
          description: Setup a single payment/transfer creating an intent object 
          required: true
          schema:
            title: PaymentSetupRequest
            description: Allows setup of a payment/transfer
            type: object
            required:
              - Initiation
              - Risk
            properties:
              Initiation:
                $ref: "#/definitions/DomesticTransferInitiation"
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
            additionalProperties: false
      responses:
        '201':
          description: Transfer setup resource successfully created
          schema:
            title: Domestic transfer setup response
            description: Reflection of The Main Data Payload, with Created Resource ID, Status and Timestamp
            type: object
            required:
              - TransferRequestId
              - Status
              - CreationTimeStamp
              - Initiation
              - Risk          
            properties:
              TransferRequestId:
                description: 'Unique identification to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the transfer resource.
                title: TransferStatus
                type: string
                enum:
                  - Accepted
                  - Rejected
                  - Authorised
                  - Revoked
              CreationTimeStamp:
                description: |-
                  Date and time at which the resource was created in ISO 8601 format. 
                type: string
                format: date-time
              Initiation:
                $ref: "#/definitions/DomesticTransferInitiation"
              TransferDateTime:
                description: Date and time at which the transfer will take place (in ISO 8601 date-time format). 
                type: string
                format: date-time
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['transfer-setup']

  # ***********************************************************************************************  
  '/payments/v1/transfers/domestic/{TransferRequestId}':
    get:
      summary: Get a domestic transfer request
      tags:
        -  Payments
      description: |
        Return the Domestic Transfer Request intent object given its Id.
      operationId: GetDomesticTransferRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        - &ref_TransferRequestId_parameter
          name: TransferRequestId
          in: path
          description: Unique identification as assigned by the ASPSP to uniquely identify the transfer request resource.
          required: true
          type: string
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------        
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        '200':
          description: Transfer Request resource successfully retrieved
          schema:
            title: Domestic transfer request response
            type: object
            required:
              - TransferRequestId
              - Status
              - CreationTimeStamp
              - Initiation
              - Risk          
            properties:
              TransferRequestId:
                description: 'Unique identification to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the transfer resource.
                title: TransferStatus
                type: string
                enum:
                  - Accepted
                  - Authorized
                  - Executed
                  - Revoked
                  - Rejected
              CreationTimeStamp:
                description: |-
                  Date and time at which the resource was created in ISO 8601 format. 
                type: string
                format: date-time
              Initiation:
                $ref: '#/definitions/DomesticTransferInitiation'
              Risk:
                description: 'Risk assessment related information'
                $ref: '#/definitions/Risk'
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['transfer-setup']

    # ---------------------------------------------------------------------------------------------
    delete:
      summary: Delete a domestic transfer request
      tags:
        -  Payments      
      description: Delete a domestic transfer request
      operationId: DeleteDomesticTransferRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------        
        - *ref_TransferRequestId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '204':
          description: Domestic Transfer Request resource successfully deleted
          headers:
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['transfer']
  
  # ***********************************************************************************************
  '/payments/v1/transfers/domestic/submissions':
    post:
      tags:
        - Payments
      summary: Create a domestic transfer submission
      description: Submit a previously setup domestic transfer
      operationId: CreateDomesticTransferSubmission
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header
        # -----------------------------------------------------------------------
        - name: body
          in: body
          description: Submit a single immediate domestic transfer
          required: true
          schema:
            title: Domestic Transfer Submission POST request
            description: Allows Submission of a domestic transfer
            type: object
            required:
              - TransferRequestId
              - Initiation
              - Risk
            properties:
              TransferRequestId:
                description: 'Unique identification as assigned by the Alpha bank-end service to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Initiation:
                $ref: "#/definitions/DomesticTransferInitiation"
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
            additionalProperties: false        
      responses:
        '201':
          description: Transfer submit resource successfully created
          schema:
            title: Domestic Transfer Submit Response
            type: object
            required:
              - TransferSubmissionId
              - TransferRequestId
              - Status
              - CreationDateTime
            properties:
              TransferSubmissionId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the domestic transfer submission resource.'
                type: string
                minLength: 1
                maxLength: 40
              TransferRequestId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the transfer submission resource.
                title: TransferSubmissionStatus
                type: string
                enum:
                  - Accepted
                  - Rejected
              CreationDateTime:
                description: Date and time at which the resource was created in ISO 8601 date-time format. 
                type: string
                format: date-time
              ExecutionDate:
                description: Date and time at which the transfer is set to be executed in ISO 8601 date-time format. 
                type: string
                format: date-time
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['transfer']

  # ***********************************************************************************************
  '/payments/v1/transfers/domestic/submissions/{TransferSubmissionId}':
    get:
      tags:
        - Payments
      summary: Get a domestic transfer submission
      description: Get a previously setup domestic transfer
      operationId: GetDomesticTransferSubmission
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        - &ref_TransferSubmissionId_parameter
          name: TransferSubmissionId
          in: path
          description: Unique identification as assigned by the ASPSP to uniquely identify the transfer submission resource.
          required: true
          type: string      
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '200':
          description: Transfer submit resource successfully returned
          schema:
            title: Domestic Transfer Submit Status Response
            type: object
            required:
              - TransferSubmissionId
              - TransferRequestId
              - Status
              - CreationDateTime
            properties:
              TransferSubmissionId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the domestic transfer submission resource.'
                type: string
                minLength: 1
                maxLength: 40
              TransferRequestId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the transfer resource.
                title: TransferSubmissionStatus
                type: string
                enum:
                  - Unknown
                  - Pending
                  - Succeded
                  - Failed
                  - Canceled
              CreationDateTime:
                description: Date and time at which the resource was created in ISO 8601 date-time format. 
                type: string
                format: date-time
              ExecutionDate:
                description: Date and time at which the transfer is set to be executed in ISO 8601 date-time format. 
                type: string
                format: date-time
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['transfer-setup']    
    # ---------------------------------------------------------------------------------------------
    delete:
      summary: Delete a domestic transfer submission
      tags:
        -  Payments      
      description: Delete a domestic transfer submission
      operationId: DeleteDomesticTransferSubmission
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------        
        - *ref_TransferSubmissionId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '204':
          description: Domestic Transfer Submission resource successfully deleted
          headers:
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['transfer-delete']
  
  # ***********************************************************************************************
  '/payments/v1/transfers/international':
    post:
      tags:
        - Payments
      summary: Create a single international transfer intent object
      description: Create a single international transfer intent object
      operationId: CreateSingleInternationalTransfer
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        - *ref_IdempotencyKey_header
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header      
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header
        # -----------------------------------------------------------------------        
        - name: body
          in: body
          description: Setup a single international transfer creating an intent object 
          required: true
          schema:
            title: InternationalTransferSetupRequest
            description: Allows setup of an international transfer
            type: object
            required:
              - Initiation
              - Risk
            properties:
              Initiation:
                $ref: "#/definitions/InternationalTransferInitiation"
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
            additionalProperties: false
      responses:
        '201':
          description: Transfer setup resource successfully created
          schema:
            title: International transfer setup response
            description: Reflection of The Main Data Payload, with Created Resource ID, Status and Timestamp
            type: object
            required:
              - TransferRequestId
              - Status
              - CreationTimeStamp
              - Initiation
              - Risk          
            properties:
              TransferRequestId:
                description: 'Unique identification to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the transfer resource.
                title: TransferStatus
                type: string
                enum:
                  - Accepted
                  - Authorized
                  - Executed
                  - Revoked
                  - Rejected
              CreationTimeStamp:
                description: |-
                  Date and time at which the resource was created in ISO 8601 format. 
                type: string
                format: date-time
              Initiation:
                $ref: "#/definitions/InternationalTransferInitiation"
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['transfer-setup']

  # ***********************************************************************************************
  '/payments/v1/transfers/international/{TransferRequestId}':
    get:
      summary: Get an international transfer request
      tags:
        -  Payments
      description: |
        Return the International Transfer Request intent object given its Id.
      operationId: GetInternationalTransferRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        - *ref_TransferRequestId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------        
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        '200':
          description: Transfer Request resource successfully retrieved
          schema:
            title: International transfer Request response
            type: object
            required:
              - TransferRequestId
              - Status
              - CreationTimeStamp
              - Initiation
              - Risk          
            properties:
              TransferRequestId:
                description: 'Unique identification to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the transfer resource.
                title: TransferStatus
                type: string
                enum:
                  - Accepted
                  - Authorized
                  - Executed 
                  - Revoked
                  - Rejected
              CreationTimeStamp:
                description: |-
                  Date and time at which the resource was created in ISO 8601 format. 
                type: string
                format: date-time
              Initiation:
                $ref: '#/definitions/InternationalTransferInitiation'
              Risk:
                description: 'Risk assessment related information'
                $ref: '#/definitions/Risk'
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['transfer-setup']

    # ---------------------------------------------------------------------------------------------
    delete:
      summary: Delete an international transfer request
      tags:
        -  Payments      
      description: Delete an international transfer request
      operationId: DeleteInternationalTransferRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------        
        - *ref_TransferRequestId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '204':
          description: International Transfer Request resource successfully deleted
          headers:
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['transfer']
  
  # ***********************************************************************************************
  '/payments/v1/transfers/international/submissions':
    post:
      tags:
        - Payments
      summary: Create an international transfer submission
      description: Submit a previously setup international transfer
      operationId: CreateInternationalTransferSubmission
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header
        # -----------------------------------------------------------------------
        - name: body
          in: body
          description: Setup a single immediate international transfer
          required: true
          schema:
            title: International Transfer Submission POST request
            description: Allows Submission of an international transfer
            type: object
            required:
              - TransferRequestId
              - Initiation
              - Risk
            properties:
              TransferRequestId:
                description: 'Unique identification as assigned by the Alpha bank-end service to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Initiation:
                $ref: "#/definitions/InternationalTransferInitiation"
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
            additionalProperties: false        
      responses:
        '201':
          description: Transfer submit resource successfully created
          schema:
            title: International Transfer Submit Response
            type: object
            required:
              - TransferSubmissionId
              - TransferRequestId
              - Status
              - CreationDateTime
              - ExecutionDate
            properties:
              TransferSubmissionId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the domestic transfer submission resource.'
                type: string
                minLength: 1
                maxLength: 40
              TransferRequestId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the transfer submission resource.
                title: TransferSubmissionStatus
                type: string
                enum:
                  - Unknown
                  - Pending
                  - Succeded
                  - Failed
                  - Canceled
              CreationDateTime:
                description: Date and time at which the resource was created in ISO 8601 date-time format. 
                type: string
                format: date-time
              ExecutionDate:
                description: Date and time at which the transfer is set to be executed in ISO 8601 date-time format.
                type: string
                format: date-time
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['transfer']

  # ***********************************************************************************************
  '/payments/v1/transfers/international/submissions/{TransferSubmissionId}':
    get:
      tags:
        - Payments
      summary: Get an international transfer submission
      description: Get a previously setup international transfer
      operationId: GetInternationalTransferSubmission
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        - *ref_TransferSubmissionId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '200':
          description: Transfer submit resource successfully returned
          schema:
            title: International Transfer Submit Status Response
            type: object
            required:
              - TransferSubmissionId
              - TransferRequestId
              - Status
              - CreationDateTime
            properties:
              TransferSubmissionId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the international transfer submission resource.'
                type: string
                minLength: 1
                maxLength: 40
              TransferRequestId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the transfer resource.
                title: TransferSubmissionStatus
                type: string
                enum:
                  - Unknown
                  - Pending
                  - Succeded
                  - Failed
                  - Canceled
              CreationDateTime:
                description: Date and time at which the resource was created in ISO 8601 date-time format. 
                type: string
                format: date-time
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['transfer-setup']    
    # ---------------------------------------------------------------------------------------------
    delete:
      summary: Delete an international transfer submission
      tags:
        -  Payments      
      description: Delete an international transfer submission
      operationId: DeleteInternationalTransferSubmission
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------        
        - *ref_TransferSubmissionId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
        
      responses:
        '204':
          description: International Transfer Submission resource successfully deleted
          headers:
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['transfer-delete']

  # ***********************************************************************************************
  '/payments/v1/transfers/account/{AccountId}/history':
    get:
      tags:
        - Payments
      summary: Get the transfer submissions history for the specific Account
      description: Get the transfer submissions history
      operationId: GetAccountTransferHistory
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - &ref_AccountId2_parameter
          name: AccountId
          in: path
          description: A unique identifier (IBAN) used to identify the account resource.
          required: true
          type: string
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '200':
          description: Transfer submission history successfully retrieved
          schema:
            description: Transfer submission data
            title: TransferSubmissionHistoryResponse
            type: array
            items:
              $ref: "#/definitions/TransferInfo"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['transfer-info']    

  # ***********************************************************************************************
  '/payments/v1/transfers/history':
    get:
      tags:
        - Payments
      summary: Get the payment history for defined time period
      description: Get the payment history for time period
      operationId: GetPaymentHistoryForPeriod
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_FromDate_parameter
        # -----------------------------------------------------------------------
        - *ref_ToDate_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '200':
          description: Payment history successfully retrieved
          schema:
            description: Payment data
            title: PaymentHistoryResponse
            type: array
            items:
              $ref: "#/definitions/TransferInfo"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['transfer-info']
    # --------------------------------------------------------------------------------------------- 
    delete:
      tags:
        - Payments
      summary: Revoke the payment history access
      description: Revoke the payment history access
      operationId: RevokePaymentHistoryForPeriod
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '200':
          description: Payment history access successfully deleted
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['transfer-info']    
  
  # ***********************************************************************************************
  # Mass Transfers
  # *********************************************************************************************** 
  '/payments/v1/transfers/mass':
    post:
      tags:
        - Payments
      summary: Create a mass transfer intent object
      description: Create a mass transfer intent object. Currently not available for Alpha Bank Cyprus.
      operationId: CreateMassTransfer
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        - *ref_IdempotencyKey_header
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header      
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header    
        # -----------------------------------------------------------------------       
        - name: body
          in: body
          description: Setup a mass transfer creating an intent object 
          required: true
          schema:
            title: MassTransferSetupRequest
            description: Allows setup of a mass transfer
            type: object
            required:
              - TransfersList
            properties:
              MassTransferDesc:
                description: A description assigned by an instructiong party in order to facilitate the identification of a mass transfer intent
                type: string
              TransfersList:
                description: A list of transfers to be executed under a single order
                type: array
                items:
                  $ref: "#/definitions/MassTransferItem"
            additionalProperties: false
            
      responses:
        '201':
          description: Mass Transfer setup resource successfully created
          schema:
            title: Mass transfer setup response
            description: A Response with data regarding the success in the creation of the mass transfer resource and potential problems with each transfer present in the list
            type: object
            required:
              - MassTransferId
              - Status
              - CreationDateTime
              - TransfersList       
            properties:
              MassTransferId:
                description: 'Unique identification to uniquely identify the mass transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the mass transfer resource.
                title: MassTransferStatus
                type: string
                enum:
                  - Accepted
                  - Rejected
                  - Authorised
                  - Revoked
              CreationDateTime:
                description: |-
                  Date and time at which the resource was created in ISO 8601 format. 
                type: string
                format: date-time
              TransfersList:
                description: A reflection of the Transfer list posted with the result of the validation rules checks on each single item
                type: array
                items:
                  $ref: "#/definitions/ValidatedMassTransferItem"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['mass-transfer-setup']
  
  # ***********************************************************************************************
  '/payments/v1/transfers/mass/{MassTransferId}':
    get:
      summary: Get a mass transfer request object
      tags:
        - Payments
      description: Returns the Mass Transfer Transfer List given its MassTransferId. Currently not available for Alpha Bank Cyprus.
      operationId: GetMassTransferList
      produces:
        - application/json; charset=utf-8
      parameters:
        - &ref_MassTransferId_parameter
          name: MassTransferId
          in: path
          description: Unique identification as assigned by the ASPSP to uniquely identify the mass transfer request resource.
          required: true
          type: string
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------        
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------    

      responses:
        '200':
          description: Mass Transfer List successfully retrieved
          schema:
            $ref: "#/definitions/MassTransferList"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['mass-transfer-setup']

    # ---------------------------------------------------------------------------------------------
    delete:
      summary: Delete a mass transfer request object
      tags:
        - Payments      
      description: Delete a mass transfer request. Currently not available for Alpha Bank Cyprus. 
      operationId: DeleteMassTransferRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------        
        - *ref_MassTransferId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '204':
          description: Mass Transfer Request resource successfully deleted
          headers:
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['mass-transfer-delete']

  # ***********************************************************************************************
  '/payments/v1/transfers/mass/{MassTransferId}/transfers':
    put:
      tags:
        - Payments
      summary: Append additional transfers to a mass transfer intent object
      description: Append additional transfers to a created mass transfer intent object given its massTransferId. Currently not available for Alpha Bank Cyprus.
      operationId: AppendMassTransferList
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:      
        - *ref_MassTransferId_parameter
        # -----------------------------------------------------------------------  
        - *ref_IdempotencyKey_header
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header      
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header    
        # -----------------------------------------------------------------------       
        - name: body
          in: body
          description: Append transfers to a mass transfer intent object 
          required: true
          schema:
            $ref: "#/definitions/MassTransferList"           
      responses:
        '201':
          description: Mass Transfer setup resource update attempt result
          schema:
            $ref: "#/definitions/ValidatedMassTransferList"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['mass-transfer-setup']
     
    # ---------------------------------------------------------------------------------------------
    delete:
      tags:
        - Payments
      summary: Remove transfers from a mass transfer intent object
      description: Remove existing transfers from a created mass transfer intent object given its massTransferId. Currently not available for Alpha Bank Cyprus.
      operationId: ReduceMassTransferList
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:      
        - *ref_MassTransferId_parameter
        # -----------------------------------------------------------------------  
        - *ref_IdempotencyKey_header
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header      
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header    
        # -----------------------------------------------------------------------       
        - name: body
          in: body
          description: Remove transfers from a mass transfer intent object given their transferItemIds
          required: true
          schema:
            type: array
            items:
              description: TransferItemId of the specified transfer present in the mass transfer intent transfer list
              type: string
            
      responses:
        '201':
          description: Mass Transfer setup resource update attempt result
          schema:
            $ref: "#/definitions/ValidatedMassTransferList"
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['mass-transfer-setup']
 
  # ***********************************************************************************************
  '/payments/v1/transfers/mass/submissions':
    post:
      tags:
        - Payments
      summary: Create a mass transfer submission
      description: Submit a previously setup mass transfer. Currently not available for Alpha Bank Cyprus.
      operationId: CreateMassTransferSubmission
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header
        # -----------------------------------------------------------------------
        - name: body
          in: body
          description: Setup a mass transfer submission
          required: true
          schema:
            title: Mass Transfer Submission POST request
            description: Allows Submission of a mass transfer
            type: object
            required:
              - MassTransferId
              - TransfersList
            properties:
              MassTransferId:
                description: 'Unique identification as assigned by the Alpha bank-end service to uniquely identify the transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              TransfersList:
                description: A list of transfers to be executed under a single order
                type: array
                items:
                    $ref: "#/definitions/MassTransferItem"
            additionalProperties: false        
      responses:
        '201':
          description: Transfer submit resource successfully created
          schema:
            title: Mass Transfer Submit Response
            type: object
            required:
              - MassTransferSubmissionId
              - MassTransferId
              - Status
              - CreationDateTime
              - ExecutionDate
            properties:
              MassTransferSubmissionId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the mass transfer submission resource.'
                type: string
                minLength: 1
                maxLength: 40
              MassTransferId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the mass transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the mass transfer submission resource.
                title: MassTransferSubmissionStatus
                type: string
                enum:
                  - Accepted
                  - Rejected
              CreationDateTime:
                description: Date and time at which the resource was created in ISO 8601 date-time format. 
                type: string
                format: date-time
              ExecutionDate:
                description: Date and time at which the transfer is set to be executed in ISO 8601 date-time format.
                type: string
                format: date-time
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['mass-transfer']

  # ***********************************************************************************************
  '/payments/v1/transfers/mass/submissions/{MassTransferSubmissionId}':
    get:
      tags:
        - Payments
      summary: Get a mass transfer submission object
      description: Get a previously setup mass transfer. Currently not available for Alpha Bank Cyprus.
      operationId: GetMassTransferSubmission
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        - &ref_MassTransferSubmissionId_parameter
          name: MassTransferSubmissionId
          in: path
          description: Unique identification as assigned by the ASPSP to uniquely identify the mass transfer submission resource.
          required: true
          type: string 
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '200':
          description: Mass transfer submit resource successfully returned
          schema:
            title: Mass Transfer Submit Status Response
            type: object
            required:
              - MassTransferSubmissionId
              - MassTransferId
              - Status
              - CreationDateTime
            properties:
              MassTransferSubmissionId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the mass transfer submission resource.'
                type: string
                minLength: 1
                maxLength: 40
              MassTransferId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the mass transfer setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the mass transfer submission resource as a whole.
                title: MassTransferSubmissionStatus
                type: string
                enum:
                  - Unknown
                  - Pending
                  - PartiallySucceeded
                  - Succeded
                  - Failed
                  - Canceled
              CreationDateTime:
                description: Date and time at which the resource was created in ISO 8601 date-time format. 
                type: string
                format: date-time
              TransferList:
                $ref: "#/definitions/MassTransferSubmissionTransferList"
                
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['mass-transfer-setup']    
    # ---------------------------------------------------------------------------------------------

  # ***********************************************************************************************
  # Standing Orders Creation
  # ***********************************************************************************************
  '/payments/v1/transfers/standing-orders':
    post:
      tags:
        - Payments
      summary: Create a standing order intent object
      description: Initiate the standing order creation process by creating an intent object. Currently not available for Alpha Bank Cyprus.
      operationId: CreateStandingOrderSetup
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_IdempotencyKey_header
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header
        # -----------------------------------------------------------------------
        - name: body
          in: body
          description: Setup a standing order, creating an intent object 
          required: true
          schema:
            title: StandingOrderSetupRequest
            description: Allows setup of a new standing order
            type: object
            required:
              - Initiation
              - Risk
            properties:
              Initiation:
                $ref: "#/definitions/StandingOrderInitiation"
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
            additionalProperties: false          
      responses:
        '201':
          description: Standing Order setup resource successfully created
          schema:
            title: Standing Order setup POST response.
            description: Reflection of The Main Data Payload, with Created Resource ID, Status and Timestamp
            type: object
            required:
              - StandingOrderRequestId
              - Status
              - CreationTimeStamp
              - Initiation
              - Risk               
            properties:
              StandingOrderRequestId:
                description: 'Unique identification to uniquely identify the standing order setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the standing order resource.
                title: StandingOrderStatus
                type: string
                enum:
                  - Accepted
                  - Rejected
                  - Authorised
                  - Revoked
              CreationTimeStamp:
                description: |-
                  Date and time at which the resource was created in ISO 8601 format. 
                type: string
                format: date-time
              Initiation:
                $ref: '#/definitions/StandingOrderInitiation'
              Risk:
                description: 'Risk assessment related information'
                $ref: '#/definitions/Risk'
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['stand-order-setup']  

  # *********************************************************************************************** 
  '/payments/v1/transfers/standing-orders/submissions':
    post:
      tags:
        - Payments
      summary: Create a standing order submission
      description: Submit a previously setup standing order. Currently not available for Alpha Bank Cyprus.
      operationId: CreateStandingOrderSubmission
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header
        # -----------------------------------------------------------------------
        - name: body
          in: body
          description: Submit a single standing order
          required: true
          schema:
            title: Standing Order Submission POST request
            description: Allows Submission of a standing order
            type: object
            required:
              - StandingOrderRequestId
              - Initiation
              - Risk
            properties:
              StandingOrderRequestId:
                description: 'Unique identification as assigned by the Alpha bank-end service to uniquely identify the standing order setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Initiation:
                $ref: "#/definitions/StandingOrderInitiation"
              Risk:
                description: 'Risk assessment related information'
                $ref: "#/definitions/Risk"
            additionalProperties: false        
      responses:
        '201':
          description: Standing Orders submit resource successfully created
          schema:
            title: Standing Order Submit POST Response
            type: object
            required:
              - StandingOrderRequestId
              - StandingOrderId
              - Status
              - CreationDateTime
            properties:
              StandingOrderRequestId:
                description: 'Unique identification to uniquely identify the standing order setup resource.'
                type: string
                minLength: 1
                maxLength: 40
              StandingOrderId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the Submitted Standing Order Resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the standing order submission resource.
                title: StandingOrderSubmissionStatus
                type: string
                enum:
                  - Accepted
                  - Rejected
              CreationDateTime:
                description: Date and time at which the resource was created in ISO 8601 date-time format. 
                type: string
                format: date-time
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['stand-order']

  # ***********************************************************************************************
  '/payments/v1/transfers/standing-orders/{StandingOrderRequestId}':
    get:
      summary: Get a standing order request
      tags:
        - Payments
      description: |
        Return the Standing Order Request intent object given its Id. Currently not available for Alpha Bank Cyprus.
      operationId: GetStandingOrderRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        - &ref_StandingOrderRequestId_parameter
          name: StandingOrderRequestId
          in: path
          description: Unique identification as assigned by the ASPSP to uniquely identify the standing order request resource.
          required: true
          type: string
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------        
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        '200':
          description: Standing Order Request resource successfully retrieved
          schema:
            title: Standing Order Request GET response
            type: object
            required:
              - StandingOrderRequestId
              - Status
              - CreationTimeStamp
              - Initiation
              - Risk        
            properties:
              StandingOrderRequestId:
                description: 'Unique identification to uniquely identify the standing order setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the standing order resource.
                title: StandingOrderStatus
                type: string
                enum:
                  - Accepted
                  - Authorized
                  - Executed
                  - Revoked
                  - Rejected
              CreationTimeStamp:
                description: |-
                  Date and time at which the resource was created in ISO 8601 format. 
                type: string
                format: date-time
              Initiation:
                $ref: '#/definitions/StandingOrderInitiation'
              Risk:
                description: 'Risk assessment related information'
                $ref: '#/definitions/Risk'
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['stand-order-setup']

    # ---------------------------------------------------------------------------------------------
    delete:
      summary: Delete a standing order request
      tags:
        - Payments      
      description: Delete a standing order request
      operationId: DeleteStandingOrderRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------        
        - *ref_StandingOrderRequestId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '204':
          description: Standing Order Request resource successfully deleted
          headers:
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['stand-order']
  
  # ***********************************************************************************************
  '/payments/v1/transfers/standing-orders/submissions/{StandingOrderId}':
    get:
      tags:
        - Payments
      summary: Get a standing order submission
      description: Get a previously submitted standing order. Currently not available for Alpha Bank Cyprus.
      operationId: GetStandingOrderSubmission
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        - &ref_StandingOrderId_parameter
          name: StandingOrderId
          in: path
          description: Unique identification as assigned by the ASPSP to uniquely identify the standing order submission resource.
          required: true
          type: string      
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '200':
          description: Standing order submit resource successfully returned
          schema:
            title: Standing Order Submit Status Response
            type: object
            required:
              - StandingOrderId
              - StandingOrderRequestId
              - Status
              - CreationDateTime
            properties:
              StandingOrderId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the Submitted Standing Order Resource.'
                type: string
                minLength: 1
                maxLength: 40
              StandingOrderRequestId:
                description: 'Unique identification as assigned by the Alpha BANK back-end service to uniquely identify the standing order setup resource.'
                type: string
                minLength: 1
                maxLength: 128
              Status:
                description: Specifies the status of the standing order resource.
                title: StandingOrderSubmissionStatus
                type: string
                enum:
                  - Unknown
                  - Pending
                  - Succeded
                  - Failed
                  - Canceled
              CreationDateTime:
                description: Date and time at which the resource was created in ISO 8601 date-time format. 
                type: string
                format: date-time
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['stand-order-setup']    
    # ---------------------------------------------------------------------------------------------
    delete:
      summary: Delete a standing order submission
      tags:
        - Payments      
      description: Delete a standing order submission. Currently not available for Alpha Bank Cyprus.
      operationId: DeleteStandingOrderSubmission
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------        
        - *ref_StandingOrderId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '204':
          description: Standing Order Submission resource successfully deleted
          headers:
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['stand-order-delete']

  # ***********************************************************************************************
  # Funds Confirmation
  # ***********************************************************************************************
  '/funds-confirmation/v1/funds-confirmation-requests':
    post:
      summary: Create a funds confirmation intent
      tags:
        -  FundsConfirmation
      description: |
        Ask for the generation of a funds confirmation request. The funds confirmation request is a 'resource' representing the intent of the client application to ask for the funds availability of a specific account. This intent must be authorised by the end user in order for the client to acquire the access-token necessary to call any of the relative API operations. The autorization of the intent is performed using the "request" parameter (query argument) at the authorize request.
      operationId: CreateFundsConfirmationRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        - name: body
          in: body
          description: Create an Funds Confirmation Request
          required: true
          schema:
            title: Funds Confirmation Request POST request object
            description: Allows setup of a funds confirmation request
            type: object
            required:
              - DebtorAccount
              - ExpirationDateTime
            properties:
              DebtorAccount:
                $ref: "#/definitions/DebtorAccount"
              ExpirationDateTime:
                description: The date expiration of the requested consent (in ISO 8601 format)
                type: string
                format: date-time
              
            additionalProperties: false
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header        
        # -----------------------------------------------------------------------        
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        '201':
          description: Funds Confirmation Request resource successfully created
          schema:
            title: Funds Confirmation Request POST response object
            type: object
            required:
              - FundsRequestId
              - CreationDateTime
            properties:
              FundsRequestId:
                description: Unique identification as assigned to uniquely identify the funds confirmation consent resource.
                type: string
              CreationDateTime:
                description: Date and time at which the resource was created (in ISO 8601 format). 
                type: string
                format: date-time
              Status:
                description: Specifies the status of the funds confirmation request resource.
                type: string
                enum:
                  - Accepted
                  - Authorised
                  - Rejected
                  - Revoked
              StatusUpdateDateTime:
                description: Date and time at which the resource's status was last updated (in ISO 8601 format). 
                type: string
                format: date-time
              ExpirationDateTime:
                description: The date expiration of the requested consent (in ISO 8601 format). 
                type: string
                format: date-time
              DebtorAccount:
                $ref: "#/definitions/DebtorAccount"
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['funds-confirm-setup']

  # ***********************************************************************************************
  '/funds-confirmation/v1/funds-confirmation-requests/{FundsRequestId}':
    get:
      summary: Get a funds confirmation request
      tags:
        -  FundsConfirmation
      description: |
        Return the Funds Confirmation intent object given its Id.
      operationId: GetFundsConfirmationRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        - &ref_FundsRequestId_parameter
          name: FundsRequestId
          in: path
          description: Unique identification as assigned to uniquely identify the funds confirmation consent resource.
          required: true
          type: string
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------        
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        '200':
          description: Funds Confirmation Request resource successfully retrieved
          schema:
            title: Funds Confirmation Request GET response
            type: object
            required:
              - FundsRequestId
              - CreationDateTime
              - Status
            properties:
              FundsRequestId:
                description: Unique identification as assigned to uniquely identify the funds confirmation consent resource.
                type: string
              CreationDateTime:
                description: Date and time at which the resource was created (in ISO 8601 format). 
                type: string
                format: date-time
              Status:
                description: Specifies the status of the funds confirmation request resource.
                type: string
                enum:
                  - Accepted
                  - Authorised
                  - Rejected
                  - Revoked
              StatusUpdateDateTime:
                description: Date and time at which the resource's status was last updated (in ISO 8601 format). 
                type: string
                format: date-time
              ExpirationDateTime:
                description: The date expiration of the requested consent (in ISO 8601 format). 
                type: string
                format: date-time
              DebtorAccount:
                $ref: "#/definitions/DebtorAccount"
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['funds-confirm-setup']

    # ------------------------------------------------------------------------------------
    delete:
      summary: Delete a funds confirmation request
      tags:
        -  FundsConfirmation      
      description: Delete a funds confirmation request
      operationId: DeleteFundsConfirmationRequest
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------        
        - *ref_FundsRequestId_parameter
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header        
        # -----------------------------------------------------------------------        
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
      responses:
        '204':
          description: Funds Confirmation resource successfully deleted
          headers:
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['funds-confirm']
  
  # ***********************************************************************************************
  '/funds-confirmation/v1/funds-confirmations':
    post:
      summary: Submit a funds confirmation request
      tags:
        -  FundsConfirmation
      description: |
        Given a specified amount, inquire about the funds availability of an account which has been previously given consent for
      operationId: FundsConfirmationSubmission
      consumes:
        - application/json; charset=utf-8
      produces:
        - application/json; charset=utf-8
      parameters:
        - name: body
          in: body
          description: Submit a funds confirmation request
          required: true
          schema:
            title: Funds Confirmation Submission POST request object
            description: Allows submission of a funds confirmation request
            type: object
            required:
              - FundsRequestId
              - Reference
              - InstructedAmount
            properties:
              FundsRequestId:
                description: Unique identification as assigned to uniquely identify the funds confirmation consent resource.
                type: string
              Reference:
                description: Unique reference, as assigned by the CBPII, to unambiguously refer to the request related to the payment transaction
                type: string
              InstructedAmount:
                $ref: "#/definitions/Amount"              
            additionalProperties: false
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_LastLoggedTime_header
        # -----------------------------------------------------------------------
        - *ref_CustomerIp_header
        # -----------------------------------------------------------------------
        - *ref_InteractionId_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------
        - *ref_JwsSignature_header
        # -----------------------------------------------------------------------
      responses:
        '201':
          description: Funds Confirmation Submission Response
          schema:
            title: Funds Confirmation Submission Request POST response object
            type: object
            required:
              - FundsRequestId
              - FundsConfirmationId
              - FundsAvailable
            properties:
              FundsRequestId:
                description: Unique identification as assigned to uniquely identify the funds confirmation consent resource.
                type: string
              FundsConfirmationId:
                description: Unique identification as assigned to uniquely identify the funds confirmation resource.
                type: string
              FundsAvailable:
                description: Flag to indicate the result of a confirmation of funds check.
                type: boolean
              Reference:
                description: Unique reference, as assigned by the CBPII, to unambiguously refer to the request related to the payment transaction.
                type: string
              InstructedAmount: 
                $ref: "#/definitions/Amount" 
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
            x-ab-interaction-id:
              type: string
              description: An RFC4122 UID used as a correlation id.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - PSUSec: ['funds-confirm']
        
  # ***********************************************************************************************
  # Open Bank Data
  # ***********************************************************************************************
  '/open-data/v1/branches':
    get:
      summary: Get the list of the Bank Branches
      tags:
        -  OpenData
      description: |
        Return the list of the Bank Branches.
      operationId: GetBranches
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        '200':
          description: Bank Branches successfully retrieved
          schema:
            title: Bank Branches GET response
            type: object
            required:
              - Id
              - Name
            properties:
              Id:
                description: Unique identification of the Branch
                type: number
              Name:
                description: The name of the branch
                type: string
              City:
                description: The City the Branch is located at
                type: string
              Region:
                description: The geographic region of the Branch
                type: string
              Country:
                description: The Country the Branch is located in
                type: string
              Address:
                description: The address of the Branch
                type: string
              AddressSuppl:
                description: Supplementary address information
                type: string
              ZipCode:
                description: Postal code for the Branch address
                type: string
                maxLength: 6
              Phone:
                description: Contact phone for the Branch
                type: string
              Fax:
                description: Fax number for the Branch
                type: string
              Lat:
                description: The Latitude value of the Branch geographic location
                type: number
              Lon:              
                description: The Longitude value of the Branch geographic location
                type: number
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['open-data']

  # ***********************************************************************************************
  '/open-data/v1/atms':
    get:
      summary: Get the list of the Bank ATMs
      tags:
        -  OpenData
      description: |
        Return the list of the Bank ATMs.
      operationId: GetATMs
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        '200':
          description: Bank ATMs successfully retrieved
          schema:
            title: Bank ATMs GET response
            type: object
            required:
              - Id
              - Name
            properties:
              Id:
                description: Unique identification of the ATM
                type: number
              Name:
                description: The name of the ATM
                type: string
              City:
                description: The City the ATM is located at
                type: string
              Region:
                description: The geographic region of the ATM
                type: string
              Address:
                description: The address of the ATM
                type: string
              ZipCode:
                description: Postal code for the ATM address
                type: string
                maxLength: 6
              Access:
                description: Access information
                type: string
              FacilityDesc:
                description: Facilities description
                type: string
              IsInBranch:
                description: "True if the ATM is located inside a Bank Branch" 
                type: boolean
              Lat:
                description: The Latitude value of the ATM geographic location
                type: number
              Lon:              
                description: The Longitude value of the ATM geographic location
                type: number
              SettlementType:
                description: Description of the settlement where the ATM is located
                type: string
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['open-data']

  # ***********************************************************************************************
  '/open-data/v1/akps':
    get:
      summary: Get the list of the Bank AKPs
      tags:
        -  OpenData
      description: |
        Return the list of the Bank AKPs.
      operationId: GetAKPs
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        '200':
          description: Bank AKPs successfully retrieved
          schema:
            title: Bank AKPs GET response
            type: object
            required:
              - Id
              - Name
            properties:
              Id:
                description: Unique identification of the AKP
                type: number
              Name:
                description: The name of the AKP
                type: string
              City:
                description: The City the AKP is located at
                type: string
              Address:
                description: The address of the AKP
                type: string
              ZipCode:
                description: Postal code for the AKP address
                type: string
                maxLength: 6
              IsInBranch:
                description: "True if the AKP is located inside a Bank Branch" 
                type: boolean
              Lat:
                description: The Latitude value of the AKP geographic location
                type: number
              Lon:              
                description: The Longitude value of the AKP geographic location
                type: number
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['open-data']

  # ***********************************************************************************************
  '/open-data/v1/rates':
    get:
      summary: Get the list of the latest currency rates
      tags:
        -  OpenData
      description: |
        Return the list of the currency rates.
      operationId: GetRates
      produces:
        - application/json; charset=utf-8
      parameters:
        # -----------------------------------------------------------------------
        - *ref_BankId_header
        # -----------------------------------------------------------------------
        - *ref_lang_header
        # -----------------------------------------------------------------------
        - *ref_Authorization_header
        # -----------------------------------------------------------------------        
        - *ref_SubscriptionKey_header
        # -----------------------------------------------------------------------        
      responses:
        '200':
          description: Currency rates successfully retrieved
          schema:
            title: Currency rates GET response
            type: object
            required:
              - ExchangeRatesDate
              - ECBRatesDate
              - Currencies
            properties:
              ExchangeRatesDate:
                description: The date-stamp of the last currency rates update (ISO8601)
                type: string
                format: date-time
              ECBRatesDate:
                description: The date validity as of the corresponding ECB service (ISO8601)
                type: string
                format: date-time
              Currencies:
                description: The list of the currency rate information object
                type: array
                items:
                  type: object
                  properties:
                    ISOCode:
                      description: the code of the currency
                      type: number
                    Name:
                      description: The name of the currency
                      type: string
                    BankNote:
                      $ref: "#/definitions/CurrencyValue"
                    ForeignExchange:
                      $ref: "#/definitions/CurrencyValue"
                    ECB:
                      $ref: "#/definitions/CurrencyValue"
                
            additionalProperties: false
          headers:
            x-jws-signature:
              type: string
              description: Header containing a detached JWS signature of the body of the payload.
        '400': *ref_error400
        '401': *ref_error401
        '403': *ref_error403
        '405': *ref_error405
        '406': *ref_error406
        '429': *ref_error429
        '500': *ref_error500
      security:
        - TPPSec: ['open-data']

definitions:
  # ***********************************************************************************************
  # Definitions
  # ***********************************************************************************************

  ErrorDescription:
    description: Error Description
    type: object
    properties:
      errorCode:
        type: number
      errorDescription:
        type: string

  ProductIdentifiers:
    description: List of Product Identifiers
    type: array
    items:
      $ref: "#/definitions/ProductIdentifier"

  ProductIdentifier:
    title: Product Identifier
    description: Identifies a Bank product owned by the end user
    type: object
    required:
      - AccountCode
      - Scheme
    properties:
      AccountCode:
        description: the global identifier of the product (e.g. IBAN, Card number)
        type: string
      # ------------------------------------------------------------------------------------      
      Scheme:
        description: 'Name of the identification scheme (AccountCode scheme)'
        type: string
        enum:
          - NA
          - Account # IBAN
          - Card # Card Number masked
      # ------------------------------------------------------------------------------------
    additionalProperties: false
    
  Account:
    title: Account
    description: Account
    type: object
    required:
      - AccountId
      - AccountCode
      - Scheme
      - ProductTypeCode
      - CategoryCode
      - AllowDebit
      - AllowCredit
      - AllowQuery
    properties:
      AccountId:
        description: 'A unique and immutable identifier used to identify the account resource. This id is used on any subsequent request as path variable.'
        type: string
        minLength: 1
        maxLength: 40
      # -------------------------------------------------------------------------------------------
      AccountCode:
        description: 'An identification code for the account. The values is an IBAN (Account scheme), Card Number (Card Scheme), etc'
        type: string
        minLength: 1
        maxLength: 40
      # -------------------------------------------------------------------------------------------
      Scheme:
        description: 'Name of the identification scheme (AccountCode scheme)'
        type: string
        enum:
          - NA
          - Account # IBAN
          - Card # Card Number masked
      # -------------------------------------------------------------------------------------------
      Currency:
        description: >-
          Identification of the currency in which the account is held.
        type: string
        pattern: '^[A-Z]{3,3}$'
      # -------------------------------------------------------------------------------------------
      Alias:
        description: 'The alias name of the account, assigned by the account owner in order to provide an additional means of identification of the account.'
        type: string
        minLength: 1
        maxLength: 50
      # -------------------------------------------------------------------------------------------
      ProductTypeCode:
        description: 'The code of the product type for the account.'
        type: string
        minLength: 1
        maxLength: 10
      # -------------------------------------------------------------------------------------------
      ProductTypeName:
        description: 'The name of the product type for the account.'
        type: string
        minLength: 1
        maxLength: 100
      # -------------------------------------------------------------------------------------------
      CategoryCode:
        description: 'The code of the account category (the account can be of saving account, loan, etc.).'
        type: string
        minLength: 1
        maxLength: 10
      # -------------------------------------------------------------------------------------------
      CategoryName:
        description: 'The name of the account category.'
        type: string
        minLength: 1
        maxLength: 70
      # -------------------------------------------------------------------------------------------
      AllowDebit:
        description: 'Flag to denote if the account can be debited'
        type: boolean
      # -------------------------------------------------------------------------------------------
      AllowCredit:
        description: 'Flag to denote if the account can be credited'
        type: boolean
      # -------------------------------------------------------------------------------------------
      AllowQuery:
        description: 'Flag to denote if the balance of the account can be acquired'
        type: boolean
        
    additionalProperties: false
    # ===============================================================================================

  Transaction:
    type: object
    required:
      - AccountId
      - Amount
      - CreditDebitIndicator
      - BookingDateTime
    properties:
      # -----------------------------------------------------------------------------------------------
      TransactionId:
        description: Unique identifier for the transaction within an servicing institution. This identifier is both unique and immutable.
        type: string
        minLength: 1
        maxLength: 40
      # -----------------------------------------------------------------------------------------------
      AccountId:
        description: A unique and immutable identifier used to identify the account resource
        type: string
        minLength: 1
        maxLength: 40
      # -----------------------------------------------------------------------------------------------
      Scheme:
        description: 'Name of the Account identification scheme'
        type: string
        enum:
          - NA
          - Account
          - Card
      # -----------------------------------------------------------------------------------------------
      Amount:
        $ref: "#/definitions/Amount"
      # -----------------------------------------------------------------------------------------------
      CreditDebitIndicator:
        description: Indicates whether the transaction is a credit or a debit entry.
        type: string
        enum:
          - Credit
          - Debit
      # -----------------------------------------------------------------------------------------------
      OriginatorAccount: 
        description: The identifier of the transaction. If refers to a card transaction the value corresponds to the card number. In case of account transactions the value corresponds to the account IBAN.
        type: string
      # -----------------------------------------------------------------------------------------------
      EndToEndIdentification:
        description: 'Unique identification assigned by the initiating party to unambiguously
          identify the transaction. This identification is passed on, unchanged, throughout
          the entire end-to-end chain. Usage: The end-to-end identification can be used
          for reconciliation or to link tasks relating to the transaction. It can be included
          in several messages related to the transaction. (ISO 20022). Value is not empty when the transaction submitted through PSD2 Transfer API.'
        type: string
      # -----------------------------------------------------------------------------------------------
      InstructionIdentification:
        description: 'Unique identification as assigned by an instructing party for an
        instructed party to unambiguously identify the instruction. Usage: the  instruction
        identification is a point to point reference that can be used between the instructing
        party and the instructed party to refer to the individual instruction. It can
        be included in several messages related to the instruction. (ISO 20022). Value is not empty when the transaction submitted through PSD2 Transfer API.'
        type: string
      # -----------------------------------------------------------------------------------------------
      BookingDateTime:
        description: >-
          Date and time (ISO8601) when a transaction entry is posted to an account on the account servicer's books (time information is not supported by Alpha Bank Cyprus). 
        type: string
        format: date-time
      # -----------------------------------------------------------------------------------------------
      ValueDateTime: 
        description: >-
          Date and time (ISO8601) at which assets become available to the account owner in case of a credit entry, 
          or cease to be available to the account owner in case of a debit entry (time information is not supported by Alpha Bank Cyprus). 
        type: string
        format: date-time
      # -----------------------------------------------------------------------------------------------
      TransactionInformation:
        description: 'Further details of the transaction. This is the transaction narrative, which is unstructured text.'
        type: string
        minLength: 1
        maxLength: 500
      # -----------------------------------------------------------------------------------------------
      MerchantDetails:
        description: Details of the merchant involved in the transaction. This information is applicable only for accounts of type Card.
        type: object
        properties:
          MerchantName:
            description: Name by which the merchant is known.
            type: string
            minLength: 1
            maxLength: 350
          MerchantCategoryCode:
            description: 'Category code conform to ISO 18245, related to the type of services or goods the merchant provides for the transaction.'
            type: string
            minLength: 3
            maxLength: 4
        additionalProperties: false
    additionalProperties: false

  AccountsResponse:
    type: array
    items:
      $ref: "#/definitions/Account"

  TransactionsResponse:
    description: List of the transactions according to the query parameters, order by date, most recent first. The count of the transactions has a linit of 30. If more transactions are available the reponse returns a value in the x-ab-locator header. This value can be used for the same header in subsquent requests in order to acquire the next set of transaction entries.
    type: array
    items:
      $ref: "#/definitions/Transaction"

  Amount:
    type: object
    description: Amount of money
    required:
      - Value
      - Currency
    properties:
      Value:
        type: number
      Currency:
        description: ISO 4217 currency code
        type: string
        pattern: "^[A-Z]{3,3}$"
    additionalProperties: false

  CurrencyValue:
    type: object
    required:
      - Buy
      - Sell
    properties:    
      Buy:
        description: the value to buy
        type: number
      Sell:
        description: the value to sell
        type: number
    

  # -----------------------------------------------------------------------------------------------
  # Standing orders
  OrderExecution:
    description: described an order execution
    type: object
    properties:
      Status:
        description: the execution status of the order
        type: string
        enum:
          - Pending
          - Executed
      ExecutionDate:
        description: the date the order is planed to be executed or already executed (in ISO 8601 format) 
        type: string
      Amount:
        $ref: "#/definitions/Amount"

  StandingOrderBasicInfo:
    type: object
    required:
    - StandingOrderId
    - Name
    - CreditorAccount
    properties:
      StandingOrderId:
        description: the unique id of the standing order
        type: string
      Name:
        description: a subscriber defined descriptive name for the standing order
        type: string
      AccountId:
        description: the 'representation' Id of the associated account
        type: string
      Amount:
        $ref: "#/definitions/Amount"
      CreditorAccount:
        $ref: "#/definitions/CreditorAccount"
    
  StandingOrderDetailedInfo:
    type: object
    required:
    - StandingOrderId
    - Name
    - CreditorAccount
    properties:
      StandingOrderId:
        description: the unique id of the standing order
        type: string
      Name:
        description: a subscriber defined descriptive name for the standing order
        type: string
      AccountId:
        description: the 'representation' Id of the associated account
        type: string
      Status:
        description: the status of the standing order
        type: string
        enum:
          - Active
          - Inactive
      DateCreated:
        description: the date the standing order was created (in ISO 8601 format)
        type: string
      DateStart:
        description: the date from the standing order is active (in ISO 8601 format)
        type: string
      DateStop:
        description: the date until the standing order is active (in ISO 8601 format)
        type: string
      NumberOfOccurences:
        description: number of times the standing order will be executed (supported by Alpha Bank Cyprus only)
        type: number
      Amount:
        $ref: "#/definitions/Amount"
      CreditorAccount:
        $ref: "#/definitions/CreditorAccount"
      CreditorReason:
        description: descriptive text used for the creditor to identify the relative transactions
        type: string
      ExecutionPlan:
        description: the definition of the periodicity of the standing order
        type: object
        properties:
          ExecutionMonthlyFrequency:
            description: every how many months the standing order is executed
            type: integer
          ExecutionMonthDay:
            description: the day of the month the standing order is executed
            type: integer
          ExecutionWeeklyFrequency:
            description: Use only when the frequency of the standing order is weekly. The acceptable values are 1 to 7. When this option is in use, both ExecutionMonthlyFrequency and ExecutionMonthDay are empty. The option is only available for Alpha Bank Romania.
            type: integer
      PreviousExecution:
        $ref: "#/definitions/OrderExecution"
      NextExecution:
        $ref: "#/definitions/OrderExecution"

  StandingOrdersBasicInfo:
    type: array
    items:
      $ref: "#/definitions/StandingOrderBasicInfo"
      
  CreditorAccount:
    description: Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the standing order execution.
    title: Creditor Account
    type: object
    required:
    - SchemeName
    - Identification
    properties:
      SchemeName:
        description: Name of the identification scheme, in a coded form as published in an external list.
        title: SchemeName
        type: string
        enum:
          - NA
          - Account # IBAN
          - Card # Card Number masked
      Identification:
        description: Identification assigned by an institution to identify an account. This identification is known by the account owner.
        type: string
        minLength: 1
        maxLength: 34
      Name:
        description: 'Name of the account, as assigned by the account servicing institution,
          in agreement with the account owner in order to provide an additional means
          of identification of the account. Usable only for intra-bank payments.'
        type: string
        minLength: 1
        maxLength: 70
      SecondaryIdentification:
        description: Identification assigned by an institution to identify an account. This identification is known by the account owner.
        type: string
        minLength: 1
        maxLength: 34
 

  # -----------------------------------------------------------------------------------------------
  # Direct Debit
  DirectDebitDetailedInfo:
    type: object
    required:
    - AccountId
    properties:
      DirectDebitId:
        description: the unique id of the direct debit
        type: string
      Name:
        description: a subscriber defined descriptive name for the direct debit
        type: string
      BeneficiaryName:
        description: The name of the beneficiary. Used only by the Alpha Bank Romania.
        type: string
      CustomerCode:
        description: The Customer Code. Used only by the Alpha Bank Romania.
        type: string
      AccountId:
        description: the 'representation' Id of the associated account
        type: string
      ProductType:
        description: the type of the product to pay
        type: string
      ProductName:
        description: the name of the product
        type: string
      Status:
        description: the status of the standing order
        type: string
        enum:
          - Active
          - Inactive
      DateCreated:
        description: the date the standing order was created (in ISO 8601 format)
        type: string
      AmountLimit:
        $ref: "#/definitions/Amount"
    additionalProperties: false    
  
  DirectDebitBasicInfo:
    type: object
    required:
    - AccountId
    properties:
      AccountId:
        description: the 'representation' Id of the associated account
        type: string
      ProductName:
        description: the name of the product
        type: string
      DirectDebitId:
        description: the unique id of the direct debit
        type: string
      Status:
        description: the status of the standing order
        type: string
        enum:
          - Active
          - Inactive
    additionalProperties: false    
    
  DirectDebitsBasicInfo:
    type: array
    items:
      $ref: "#/definitions/DirectDebitBasicInfo"


  # -----------------------------------------------------------------------------------------------
  # Beneficiaries
  Beneficiary:
    title: Beneficiary
    description: Beneficiary
    type: object
    required:
      - CustomerNumber
      - CustomerType
    properties:
      CustomerNumber:
        description: the customer identification number
        type: string
      CustomerType:
        description: type of the customer
        type: string
        enum:
          - Individual
          - Company
          - Unknown
      CompanyName:
        description: Company name
        type: string
      CompanyTitle:
        description: Comapny title
        type: string
      LastName:
        description: Persons' surname
        type: string
      FistName:
        description: Person's name
        type: string
      FatherName:
        description: Person's father name
        type: string
      BirthDate:
        description: Person's birth date in ISO 8601 format
        type: string
      Language:
        description: prefered communication language
        type: string
        enum:
          - en
          - el
          - ro
      Nationality:
        description: Nationality in ISO 3166-1 alpha-2 code
        type: string
      Sex:
        description: Person's sex  # http://standards.iso.org/ittf/PubliclyAvailableStandards/c036266_ISO_IEC_5218_2004(E_F).zip
        type: string  # corresponding numeric value can be used in codes and persistence storage
        enum:
          - Unknown   # 0 - ISO/IEC 5218
          - Male      # 1
          - Female    # 2
          - Other     # 3 - extention to ISO/IEC 5218
          - NA        # 9 not applicable
      TaxInformation:
        description: tax information data
        type: object
        properties:
          VAT:
            description: vat number
            type: string
          TaxOffice:
            description: tax office
            type: string
      Identity:
        description: person's identification document
        type: object
        properties:
          Id:
            description: the identification document's code
            type: string
          IdType:
            description: the identification type
            type: string
            enum:
              - Nothing
              - IDCard
              - Passport
              - Other
          Publisher:
            description: Person's identification publisher
            type: string
          PublisherCountry:
            description: identification publisher's country (ISO 3166-1 alpha-2 code)
            type: string
      Contacts:
        description: list of contacts
        type: array
        items:
          type: object
          properties:
            ContactType:
              description: contact type
              type: string
              enum:
                - Telephone
                - Email
                - WorkPhone
                - PrivatePhone
                - Mobile
            ContactValue:
              description: contact value (nuber, address, tec.)
              type: string
      Addresses:
        description: list of addresses
        type: array
        items:
          type: object
          properties:
            AddressType:
              description: type of the address
              type: string
              enum:
                - Home
                - Work
            Street:
              description: street name
              type: string
            Number:
              description: the street number
              type: string
            City:
              description: the city name
              type: string
            Country:
              description: address country
              type: string
            PostalCode:
              description: postal code
              type: string
      BussinessActivity:
        description: business activity
        type: string
      CorpExpirationDate:
        description: Corporate expiration date (ISO 8601 format)
        type: string
      LegalEntityExpiryDate:
        description: Corporate expiration date (ISO 8601 format)
        type: string
      InsuranceClearanceExpiryDate:
        description: Insurance Clearance Expiry Date (ISO 8601 format)
        type: string
      TaxClearanceExpiryDate:
        description: Tax Clearance Expiry Date (ISO 8601 format)
        type: string
    additionalProperties: false
  
  Beneficiaries:
    type: array
    items:
      $ref: "#/definitions/Beneficiary"
    

  # -----------------------------------------------------------------------------------------------
  # Balance
  BalancesResponse:
    type: object
    required:
      - Balances
    properties:
      Balances:
        description: the balances for a set of accounts
        type: array
        items:    
          $ref: "#/definitions/AccountBalance"
  
  AccountBalance:
    type: object
    required:
      - AccountId
      - Balances
    properties:
      AccountId: &ref_AccountId_property
          description: A unique and immutable identifier used to identify the account resource.
          type: string
      Balances:
          type: array
          items:
            $ref: "#/definitions/Balance"
                 
  Balance:
    type: object
    required:
      - Amount
      - TimeStamp
      - BalanceType
    properties:
      Amount:
        $ref: "#/definitions/Amount"
      CreditDebitIndicator: &ref_CreditDebit_property
        description: if the balance is credit or debit
        type: string
        enum:
          - Credit
          - Debit
      TimeStamp:
        description: The date-time of the balance in ISO 8601 format
        type: string
      BalanceType:
        description: the type of the balance
        type: string
        enum:
          - Gross
          - Available
      CreditLine: 
        type: number


  # -----------------------------------------------------------------------------------------------
  # Transfer Initiation
  DomesticTransferInitiation:
    type: object
    description: The Initiation payload is sent by the initiating party. It is used to request movement of funds from the debtor account to a creditor.
    required:
    - InstructionIdentification
    - EndToEndIdentification
    - InstructedAmount
    - CreditorAccount
    properties:
      TransferType:
        description: defines the type of the transfer (IRIS is supported only by Alpha Bank Greece, Urgent is supported only by Alpha Bank Romania)
        type: string
        enum:
        - Simple
        - IRIS
        - Urgent
      OurShare:
        description: Share "mode" (OUR is supported only by Alpha Bank Greece).
        title: OurShare
        type: string 
        enum:
          - OUR
          - SHA
      ValueDate:
        description: The Value date of the transfer - the date the transfer will be scheduled to be executed (in ISO 8601 format).
        type: string
        format: date-time
      InstructionIdentification: 
        description: 'Unique identification as assigned by an instructing party for an
          instructed party to unambiguously identify the instruction. Usage: the  instruction
          identification is a point to point reference that can be used between the instructing
          party and the instructed party to refer to the individual instruction. It can
          be included in several messages related to the instruction. (ISO 20022)'
        type: string
        minLength: 1
        maxLength: 35
      EndToEndIdentification: 
        description: 'Unique identification assigned by the initiating party to unambiguously
          identify the transaction. This identification is passed on, unchanged, throughout
          the entire end-to-end chain. Usage: The end-to-end identification can be used
          for reconciliation or to link tasks relating to the transaction. It can be included
          in several messages related to the transaction. (ISO 20022) '
        type: string
        minLength: 1
        maxLength: 35
      InstructedAmount:
        $ref: "#/definitions/Amount"
      BlockFunds:
        description: Determines if the transfer amount will be blocked until the transfer execution. The value must always be false in the case of AlphaBank Cyprus.
        title: BlockFunds
        type: boolean 
      DebtorAccount:
        description: IBAN of the debtor account.
        title: DebtorAccount
        type: string
      CreditorAccount:
        description: IBAN of the creditor account.
        title: Creditor Account
        type: object
        required:
          - AccountCode
          - OwnerName
        properties:
          AccountCode:
            description: The IBAN of the account
            title: AccountCode
            type: string
          OwnerName:
            description: The Name of the owner as known by the account institution
            title: OwnerName
            type: string
      DebtorInformation:
        description: Information supplied to be used by the end user
        title: DebtorInformation
        type: string
      CreditorInformation:
        description: Auxiliary Information (e.g. Merchant Customer Identification) used to Identify the Beneficiary. Used only by Alpha Bank Romania.
        title: CreditorInformation
        type: string
      RemittanceInformation:
        $ref: "#/definitions/RemittanceInfo"      
      SupplementaryData:
        $ref: "#/definitions/SupplementaryData"  
    additionalProperties: false

  InternationalTransferInitiation:
    type: object
    description: The Initiation payload is sent by the initiating party. It is used to request movement of funds from the debtor account to a creditor.
    required:
    - InstructionIdentification
    - EndToEndIdentification
    - InstructedAmount
    - CreditorAccount
    properties:
      InstructionIdentification: 
        description: 'Unique identification as assigned by an instructing party for an
          instructed party to unambiguously identify the instruction. Usage: the  instruction
          identification is a point to point reference that can be used between the instructing
          party and the instructed party to refer to the individual instruction. It can
          be included in several messages related to the instruction. (ISO 20022)'
        type: string
        minLength: 1
        maxLength: 35
      EndToEndIdentification: 
        description: 'Unique identification assigned by the initiating party to unambiguously
          identify the transaction. This identification is passed on, unchanged, throughout
          the entire end-to-end chain. Usage: The end-to-end identification can be used
          for reconciliation or to link tasks relating to the transaction. It can be included
          in several messages related to the transaction. (ISO 20022) '
        type: string
        minLength: 1
        maxLength: 35
      InstructedAmount:
        $ref: "#/definitions/Amount"
      TransferType:
        description: defines the type of the transfer. Supported only by Alpha Bank Romania.
        type: string
        enum:
        - Simple
        - Urgent  
      ChargeOption:
        description: Charges sharing option. This is required only for Alpha Bank Romania. For the other cases the SHA (Sharing) option is implied.
        title: ChargeOption
        type: string 
        enum:
          - OUR
          - SHA
          - BEN        
      DebtorAccount:
        description: IBAN of the debtor account.
        title: DebtorAccount
        type: string
      CreditorAccount:
        $ref: "#/definitions/CreditorAccountInternational"
      ValueDate:
        description: The Value date of the transfer - the date the transfer will be scheduled to be executed (in ISO 8601 format).
        type: string
        format: date-time
      IntermediaryBankBIC:
        description: The BIC code of the Intermediary Bank (supported only by Alpha Bank Cyprus).
        title: IntermediaryBankBIC
        type: string
      RemittanceInformation:
        $ref: "#/definitions/RemittanceInfo"      
      DebtorInformation:
        description: Information supplied to be used by the end user
        title: DebtorInformation
        type: string
      BlockFunds:
        description: Determines if the transfer amount will be blocked until the transfer execution. The value must always be false in the case of AlphaBank Cyprus.
        title: BlockFunds
        type: boolean
      BoPCode:
        description: 'Balance of Payment (BoP) code'
        type: string
        enum:
          - DirectInvestments
          - SecuritiesInvestment
          - Loans
          - Deposits
          - TravelServices
          - MailAndTelecommunications
          - TransportServices
          - EntertainementServicesAndCulture
          - Insurance
          - DividentsAndCapitalGains
          - RentsForResidentsAbroad
          - Scholarships
          - CreditCards
      CreditorAddress:
        description: Address information corresponding to the Creditor account (this information is required for Alpha Bank Greece)
        title: CreditorAddress
        type: string
      DebtorPhone:
        description: Contact phone (this information is required for Alpha Bank Greece)
        title: DebtorPhone
        type: string
      SupplementaryData:
        $ref: "#/definitions/SupplementaryData"  
    additionalProperties: false

  # -----------------------------------------------------------------------------------------------
  # Mass Transfers
  MassTransferItem:
    type: object
    required:
    - InstructionIdentification
    - EndToEndIdentification
    - InstructedAmount
    - CreditorAccount
    - BoPCode
    - CreditorAddress
    - DebtorPhone
    properties:
      TransferItemId:
        description: 'Unique identification as assigned to uniquely identify a specific transfer item of a mass transfer'
        type: string
        minLength: 1
        maxLength: 128
      Sequence:
        description: 'Optional value used to assign the sequence of the object within a mass transfer list.'
        type: integer
      InstructionIdentification: 
        description: 'Unique identification as assigned by an instructing party for an
          instructed party to unambiguously identify the instruction. Usage: the  instruction
          identification is a point to point reference that can be used between the instructing
          party and the instructed party to refer to the individual instruction. It can
          be included in several messages related to the instruction. (ISO 20022)'
        type: string
        minLength: 1
        maxLength: 35
      EndToEndIdentification: 
        description: 'Unique identification assigned by the initiating party to unambiguously
          identify the transaction. This identification is passed on, unchanged, throughout
          the entire end-to-end chain. Usage: The end-to-end identification can be used
          for reconciliation or to link tasks relating to the transaction. It can be included
          in several messages related to the transaction. (ISO 20022) '
        type: string
        minLength: 1
        maxLength: 35
      InstructedAmount:
        $ref: "#/definitions/Amount"
      DebtorAccount:
        description: IBAN of the debtor account.
        title: DebtorAccount
        type: string
      CreditorAccount:
        #TBD
        $ref: "#/definitions/CreditorAccountInternational"
      RemittanceInformation:
        $ref: "#/definitions/RemittanceInfo"      
      DebtorInformation:
        description: Information supplied to be used by the end user
        title: DebtorInformation
        type: string
      BlockFunds:
        description: Determines if the transfer amount will be blocked until the transfer execution
        title: BlockFunds
        type: boolean
      #TBD
      ValueDate:
        description: The Value date of the transfer - the date the transfer will be scheduled to be executed (in ISO 8601 format).
        type: string
        format: date-time
      TransferType:
        description: defines the type of the transfer (IRIS ot not) (Applicable for Domestic Transfers only)
        type: string
        enum:
        - Simple
        - IRIS
      OurShare:
        description: Share "mode". (Applicable for Domestic Transfers only)
        title: OurShare
        type: string 
        enum:
          - OUR
          - SHA
      BoPCode:
        description: 'Balance of Payment (BoP) code (Applicable for International Transfers only)'
        type: string
        enum:
          - DirectInvestments
          - SecuritiesInvestment
          - Loans
          - Deposits
          - TravelServices
          - MailAndTelecommunications
          - TransportServices
          - EntertainementServicesAndCulture
          - Insurance
          - DividentsAndCapitalGains
          - RentsForResidentsAbroad
          - Scholarships
          - CreditCards
      CreditorAddress:
        description: Address information corresponding to the Creditor account (Applicable for International Transfers only)
        title: CreditorAddress
        type: string
      DebtorPhone:
        description: Contact phone (Applicable for International Transfers only)
        title: DebtorPhone
        type: string
      CreatedAt:
        description: Date and time at which the resource was created in ISO 8601 format. 
        type: string
        format: date-time
      Status:
        description: Specifies the status of the transfer resource.
        title: TransferStatus
        type: string
        enum:
          - Accepted
          - Rejected
          - Authorised
          - Revoked
      Risk:
        description: 'Risk assessment related information'
        $ref: "#/definitions/Risk"
    additionalProperties: false
  
  MassTransferList:
    type: array
    items:
      $ref: "#/definitions/MassTransferItem"
    additionalProperties: false
    
  ValidatedMassTransferItem:
    type: object
    required:
    - Instance
    - HasError
    properties:
      ErrorDesc:
        description: Validation rule violation description of the mass transfer item
        title: ErrorDescription
        type: string 
      HasError:
        description: Validation Result of specific mass transfer item
        title: HasError
        type: boolean       
      Instance:
        $ref: "#/definitions/MassTransferItem"
  ValidatedMassTransferList:
    type: array
    items:
      $ref: "#/definitions/ValidatedMassTransferItem"
  MassTransferSubmissionTransferItem:
    type: object
    required:
    - TransferItemId
    - Status
    properties:
      TransferItemId:
        description: 'Unique identification as assigned to uniquely identify a specific transfer item of a mass transfer'
        type: string
        minLength: 1
        maxLength: 128
      Status:
        description: Specifies the status of the mass transfer item submission.
        title: MassTransferItemSubmissionStatus
        type: string
        enum:
          - Unknown
          - Pending
          - Succeded
          - Failed
          - Canceled        
  MassTransferSubmissionTransferList:
    type: array
    items:
      $ref: "#/definitions/MassTransferSubmissionTransferItem"

  # -----------------------------------------------------------------------------------------------
  # Funds Confirmation
  DebtorAccount:
    description: 'DebtorAccount for the Funds confirmation consent provided'
    title: DebtorAccount
    type: object
    properties:
      SchemeName:
        description: Name of the identification scheme, in a coded form as published in an external list.
        title: SchemeName
        type: string
        enum:
          - NA
          - Account # IBAN
          - Card # Card Number masked
      Identification:
        description: Identification assigned by an institution to identify an account. This identification is known by the account owner.
        type: string
        minLength: 1
        maxLength: 34
      Name:
        description: 'Name of the account, as assigned by the account servicing institution,
          in agreement with the account owner in order to provide an additional means
          of identification of the account. Usable only for intra-bank payments.'
        type: string
        minLength: 1
        maxLength: 70
      SecondaryIdentification:
        description: Identification assigned by an institution to identify an account. This identification is known by the account owner.
        type: string
        minLength: 1
        maxLength: 34       
    additionalProperties: false
  
  # -----------------------------------------------------------------------------------------------
  # Standing Orders Initiation
  StandingOrderInitiation:
    type: object
    description: The Initiation payload is sent by the initiating party. It is used to request a recurring movement of funds from the debtor account to a creditor.
    required:
    - Name
    - Amount
    - DateStart
    - DateStop
    - ExecutionPlan
    - CreditorAccount
    - CreditorReason
    - RemittanceInformation
    properties:
      Name:
        description: a subscriber defined descriptive name for the standing order
        type: string
      Amount:
        $ref: "#/definitions/Amount"
      DateStart:
        description: the date from the standing order is active (in ISO 8601 format)
        type: string
      DateStop:
        description: the date until the standing order is active (in ISO 8601 format)
        type: string
      ExecutionPlan:
        description: the definition of the periodicity of the standing order
        type: object
        properties:
          ExecutionMonthlyFrequency:
            description: every how many months the standing order is executed
            type: integer
          ExecutionMonthDay:
            description: the day of the month the standing order is executed
            type: integer
          ExecutionWeeklyFrequency:
            description: Use only when the frequency of the standing order is weekly. The acceptable values are 1 to 7. When this option is used both ExecutionMonthlyFrequency and ExecutionMonthDay must not be used. The option is only available for Alpha Bank Romania.
            type: integer
      DebtorAccount:
        description: The IBAN representation of the order's initiator's account, from which the money will be deducted
        type: string    
      CreditorAccount:
        description: The IBAN representation of the account to receive the order's amount
        type: string
      CreditorReason:
        description: descriptive text used for the creditor to identify the relative transactions
        type: string
      RemittanceInformation:
        $ref: "#/definitions/RemittanceInfo"  
      SupplementaryData:
        $ref: "#/definitions/SupplementaryData"  
  
  # -----------------------------------------------------------------------------------------------
  Risk:
    description: 'Risk assessment related information'
    title: Risk
    type: object
    properties:
      PaymentContextCode:
        description: Specifies the payment context
        title: PaymentContextCode
        type: string
        enum:
          - BillPayment
          - EcommerceGoods
          - EcommerceServices
          - Other
          - PersonToPerson
      MerchantCategoryCode:
        description: 'Category code conforms to ISO 18245, related to the type of services or goods the merchant provides for the transaction'
        type: string
        minLength: 3
        maxLength: 4
      MerchantCustomerIdentification:
        description: The unique customer identifier of the PSU with the merchant.
        type: string
        minLength: 1
        maxLength: 70
      DeliveryAddress:
        description: 'Information that locates and identifies a specific address, as defined by postal services or in free format text.'
        type: object
        properties:
          AddressLine:
            description: 'Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.'
            type: array
            items:
              description: maxLength 70 text
              type: string
              minLength: 1
              maxLength: 70
            minItems: 0
            maxItems: 2
          StreetName:
            description: Name of a street or thoroughfare
            type: string
            minLength: 1
            maxLength: 70
          BuildingNumber:
            description: Number that identifies the position of a building on a street.
            type: string
            minLength: 1
            maxLength: 16
          PostCode:
            description: Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail
            type: string
            minLength: 1
            maxLength: 16
          TownName:
            description: 'Name of a built-up area, with defined boundaries, and a local government.'
            type: string
            minLength: 1
            maxLength: 35
          CountrySubDivision:
            description: 'Identifies a subdivision of a country, for instance state, region, county.'
            type: array
            items:
              description: maxLength 35 text
              type: string
              minLength: 1
              maxLength: 35
            minItems: 0
            maxItems: 2
          Country:
            description: 'Nation with its own government, occupying a particular territory.'
            type: string
            pattern: '^[A-Z]{2,2}$'
        required:
          - TownName
          - Country
    additionalProperties: false
    
  # -----------------------------------------------------------------------------------------------
  # TransferInfo
  TransferInfo:
    type: object
    required:
    - InstructedAmount
    - DebtorAccount
    - CreditorAccount
    properties:
      DateSubmitted:
        type: string
        format: date-time
      TransferScope:
        description: defines the type of the transfer by the means of participating institutions
        type: string
        enum:
        - LOCAL
        - NATIONAL
        - INTERNATIONAL
      OurShare:
        description: Share "mode".
        title: OurShare
        type: string 
        enum:
          - OUR
          - SHA
          - BEN
      Status:
        description: the status of the transfer
        type: string
        enum:
          - Unknown
          - Pending
          - Succeeded
          - Failed
          - Canceled
      BookingDateTime:
        description: >-
          Date and time (ISO8601) when a transaction entry is posted to an account on the account servicer's books (time information is not supported by Alpha Bank Cyprus). 
        type: string
        format: date-time
      ValueDateTime: 
        description: >-
          Date and time (ISO8601) at which assets become available to the account owner in case of a credit entry, 
          or cease to be available to the account owner in case of a debit entry (time information is not supported by Alpha Bank Cyprus). 
        type: string
        format: date-time
      InstructionIdentification: 
        description: 'Unique identification as assigned by an instructing party for an
          instructed party to unambiguously identify the instruction. Usage: the  instruction
          identification is a point to point reference that can be used between the instructing
          party and the instructed party to refer to the individual instruction. It can
          be included in several messages related to the instruction. (ISO 20022)'
        type: string
        minLength: 1
        maxLength: 35
      EndToEndIdentification: 
        description: 'Unique identification assigned by the initiating party to unambiguously
          identify the transaction. This identification is passed on, unchanged, throughout
          the entire end-to-end chain. Usage: The end-to-end identification can be used
          for reconciliation or to link tasks relating to the transaction. It can be included
          in several messages related to the transaction. (ISO 20022) '
        type: string
        minLength: 1
        maxLength: 35
      InstructedAmount:
        $ref: "#/definitions/Amount"
      DebtorAccount:
        description: IBAN of the debtor account.
        title: DebtorAccount
        type: string
      CreditorAccount:
        $ref: "#/definitions/CreditorAccountInternational"
      IntermediaryBankBIC:
        description: The BIC code of the Intermediary Bank (supported only by Alpha Bank Cyprus).
        title: IntermediaryBankBIC
        type: string
      DebtorInformation:
        description: Information supplied to be used by the end user
        title: DebtorInformation
        type: string
      RemittanceInformation:
        $ref: "#/definitions/RemittanceInfo"
    additionalProperties: false

  CreditorAccountInternational:
    description: Creditor account identification
    title: International Creditor Account
    type: object
    required:
      - AccountCode
      - OwnerName
      - SchemeName
    properties:
      AccountCode:
        description: Identification assigned by an institution to identify the account
        title: AccountCode
        type: string
      OwnerName:
        description: The Name of the owner as known by the account institution
        title: OwnerName
        type: string
      SchemeName:
        description: Name of the identification scheme, in a coded form, describing the AccountCode format
        title: SchemeName
        type: string
        enum:
          - IBAN
          - BBAN
      BICCode:
        description: The BIC Code that identifies the creditor account's institution
        title: BICCode
        type: string
        minLength: 8
        maxLength: 11

  RemittanceInfo:
    description: Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system.
    title: RemittanceInformation
    type: object
    properties:
      Unstructured:
        description: Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form.
        type: string
        minLength: 1
        maxLength: 140
      Reference:
        description: 'Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction (It is supported only by Alpha Bank Greece and Alpha Bank Romania).
          Usage: If available, the initiating party should provide this reference in the structured remittance information,
          to enable reconciliation by the creditor upon receipt of the amount of money.
          If the business context requires the use of a creditor reference or a payment remit identification, 
          and only one identifier can be passed through the end-to-end chain, the creditor''s reference or payment remittance 
          identification should be quoted in the end-to-end transaction identification.'
        type: string
        minLength: 1
        maxLength: 35
      
    additionalProperties: false        

  SupplementaryData:
    description: Additional information that can not be captured in the structured fields and/or any other specific block.
    title: Supplementary Data
    type: object
    properties:
      VerificationOfPayee:
        $ref: "definitions/VerificationOfPayee"
  
  VerificationOfPayee:
    description: Information provided by the client application about the Verification Of Payee (VOP) process result
    title: Verification Of Payee
    type: object
    required:
      - MatchStatus
    properties:
      MatchStatus:
        description: The result of the VOP match process
        title: Match Status
        type: string
        enum:
          - Match
          - NoMatch
          - CloseMatch
          - NotAvailable
      NotAvailableReason:
        description: The reason in case the match status is not available
        title: Not Available Reason
        type: string
        enum:
          - NotSupported
          - SystemError
      PayeeNameChecked:
        description: The name displayed to the user. If there are more than one items they are concatenated using ';' as separator
        title: Payee Name Checked
        type: string

  # -----------------------------------------------------------------------------------------------
  
securityDefinitions:
  # ***********************************************************************************************
  # Security Definitions
  # ***********************************************************************************************

  # -----------------------------------------------------------------------------------------------
  PSUSec:
    type: oauth2
    flow: accessCode
    tokenUrl: 'https://gw.api.alphabank.eu/sandbox/auth/token'
    authorizationUrl: 'https://gw.api.alphabank.eu/sandbox/auth/authorize'
    scopes:
      account-info: Account Request scope
      transfer: Payment/Transfer execution scope
      transfer-info: Payment/Transfer submission information scope
      transfer-delete: Payment/Transfer deletion information scope
      mass-transfer: Mass Transfer execution scope
      mass-transfer-delete: Mass Transfer deletion information scope
      stand-order: Standing Order Submission scope
      stand-order-delete: Order Submission deletion scope
      funds-confirm: Funds Confirmation scope
    description: 'OAuth2 flow, it is required when the PSU needs to perform authentication with the Alpha BANK when a TPP wants to access an Alpha BANK resource owned by the PSU'

  # -----------------------------------------------------------------------------------------------
  TPPSec:
    type: oauth2
    flow: application
    tokenUrl: 'https://gw.api.alphabank.eu/sandbox/auth/token'
    scopes:
      account-info-setup: permission to create an account request intent object 
      transfer-setup: permission to create a payment/transfer request intent object
      stand-order-setup: permission to create a standing order request intent object
      mass-transfer-setup: permission to create a mass transfer request intent object
      open-data: permission to access Open Bank Data 
      funds-confirm-setup: permission to create a funds confirmation request intent object
    description: TPP client credential authorisation flow for intent object
