openapi: 3.0.0
info:
  title: Platform service
  description: |
    The service API allows access to all collected payments and account information data and additional insights.
  version: 1.0.0
  termsOfService: 'https://fliqa.io/terms-and-conditions/'
  contact:
    name: Fliqa API documentation
    url: 'https://documentation.fliqa.io/api/service/platform-service'
    email: info@fliqa.io
  x-logo:
    url: 'https://assets.fliqa.io/logos/w100/logo.png'
servers:
  - url: '{basePath}/api'
    variables:
      basePath:
        default: 'https://app.fliqa.io'
        description: Server base path.
paths:
  '/service/auth/token/{environment}/{tenantSlug}':
    get:
      tags:
        - authentication
      summary: Access token
      description: |
        Returns a new access token. The access token validity is time-limited.
      operationId: getAccessToken
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessToken'
          description: Access token with scope and expiration time
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      security:
        - api_key: []
          api_secret: []
      parameters:
        - schema:
            type: string
          in: header
          required: true
          name: Api-Key
          description: API key for given environment
        - schema:
            type: string
          in: header
          required: true
          name: Api-Secret
          description: API secret for given environment
    parameters:
      - schema:
          $ref: '#/components/schemas/Environment'
        name: environment
        description: API key/secret and environment must match.
        in: path
        required: true
      - schema:
          type: string
        name: tenantSlug
        in: path
        required: true
        description: Tenant slug
  '/service/payments':
    get:
      summary: List of payments
      # Filter
      parameters:
        - schema:
            $ref: '#/components/schemas/DateTime'
          in: query
          description: From date time - filtered against created time
          name: createdFrom
        - schema:
            $ref: '#/components/schemas/DateTime'
          in: query
          description: Util date time - filtered against created time
          name: createdUntil
        - schema:
            type: string
          in: query
          description: Payment provider/bank name
          name: providerName
        - schema:
            $ref: '#/components/schemas/IBAN'
          in: query
          description: Payment source IBAN account number
          name: iban
        - schema:
            $ref: '#/components/schemas/CountryCode'
          in: query
          description: Payment country code
          name: country
        - schema:
            $ref: '#/components/schemas/PaymentStatus'
          in: query
          name: status
        - schema:
            $ref: '#/components/schemas/Amount'
          in: query
          description: Payment amount (approximate +/- 1.00)
          name: amount
        - schema:
            $ref: '#/components/schemas/CurrencyCode'
          in: query
          description: ISO Currency code
          name: currency
        - schema:
            type: string
          in: query
          description: Payment data key
          name: dataKey
        - schema:
            type: string
          in: query
          description: Payment data value
          name: dataValue
        - schema:
            type: string
          in: query
          name: cursor
          required: false
      tags:
        - payments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentList'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
        - api_secret: []
      operationId: getPayments
      description: Get payments list
  '/service/payments/{paymentId}':
    get:
      summary: Payment details
      parameters:
        - schema:
            type: string
          in: path
          name: paymentId
          required: true
      tags:
        - payments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
        - api_secret: []
      operationId: getPayment
      description: Get payment details
  '/service/payments/{paymentId}/logs':
    get:
      summary: Payment logs
      parameters:
        - schema:
            type: string
          in: path
          name: paymentId
          required: true
      tags:
        - payments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogInfo'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
        - api_secret: []
      operationId: getPaymentLogs
      description: Get payment logs

  '/service/payments/link/{linkId}':
    get:
      summary: Gets pay-by-link data for specified link id
      parameters:
        - schema:
            type: string
          in: path
          name: linkId
          required: true
      tags:
        - pay-by-link
      responses:
        '200':
          description: pay-by-link data retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayByLink'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/PayByLinkNotFound'
      operationId: getPayByLink
      description: Gets pay-by-link data for specified link id

  '/service/points-of-sale':
    get:
      tags:
        - points-of-sale
      responses:
        '200':
          description: Lists all available point of sale.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PointOfSale'
      operationId: getPointsOfSale
      summary: List of points of sale
      description: |
        List all configured points of sale.
  '/service/points-of-sale/{pointOfSaleId}':
    get:
      parameters:
        - schema:
            type: string
          name: pointOfSaleId
          in: path
          required: true
          description: Point of Sale to accept payment (i.e. target account)
      responses:
        '200':
          description: Returns a point of sale
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PointOfSale'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/PointOfSaleNotFound'
      operationId: getPointOfSale
      summary: Point of sale details
      description: Get point of sale details
      tags:
        - points-of-sale
  '/service/account-holders':
    get:
      summary: List of account holders
      parameters:
        - name: providerName
          in: query
          schema:
            type: string
          description: Account holder provider/bank name
        - name: country
          schema:
            $ref: '#/components/schemas/CountryCode'
          in: query
          description: Account holder country code
        - name: currency
          in: query
          schema:
            $ref: '#/components/schemas/CurrencyCode'
          description: ISO Currency code
      tags:
        - account-holders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccountHolder'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      operationId: getAccountHolders
      description: Get list of account holders
  '/service/account-holders/{iban}':
    get:
      summary: Account holder details
      parameters:
        - schema:
            type: string
          in: path
          name: iban
          required: true
      tags:
        - account-holders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountHolder'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      operationId: getAccountHolder
      description: Get account holder details
  '/service/account-holders/{iban}/actions':
    get:
      summary: List of account holders actions
      parameters:
        - schema:
            type: string
          in: path
          name: iban
          required: true
      tags:
        - account-holders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccountHolderAction'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
        - api_secret: []
      operationId: getAccountHolderActions
      description: Get account holder actions
  '/service/countries':
    get:
      tags:
        - countries
      summary: List of countries
      description: |
        Lists countries that contain at least one provider (i.e. bank).
      operationId: getCountries
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CountryInfo'
          description: Default response
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
        - access_token: []
    parameters:
      - name: locale
        in: query
        schema:
          $ref: '#/components/schemas/Locale'
        description: |
          Desired language of country names (if supported). If no translation is found the default (english) name is returned. 
          See supported dialog languages for more information.
  '/service/providers':
    get:
      parameters:
        - name: country
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CountryCode'
          description: One or more country code(s) to filter payment providers by.
          example: ['DE','AT']
        - name: scope
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/TenantService'
          description: Access scope(s) to filter payment providers by
          example: ['payments', 'account_info']
        - name: id
          in: query
          description: One or more IDs to filter payment providers by. Provider IDs are case-sensitive.
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ProviderId'
        - name: locale
          in: query
          schema:
            $ref: '#/components/schemas/Locale'
          description: |
            Desired language of payment provider names (if translated). 
            For specific countries where multiple languages are spoken the provider name might be translated, otherwise the default name is returned.
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Provider'
          description: Found payment provider
        '401':
          $ref: '#/components/responses/Unauthorized'
      tags:
        - providers
      summary: List of providers
      description: |
        Lists all providers (i.e. banks). 
        Providers can be filtered by **country**, **access scope** or **id**. 
        In order to limit the response to a reasonable amount of entries at least a country or id filter must be given.
        If desired, providers can be enabled/disabled in administration integration menu.
      security:
        - access_token: []
      operationId: getProviders
    parameters: []
  '/service/providers/{providerId}':
    get:
      parameters:
        - name: providerId
          in: path
          required: true
          schema:
            type: string
          description: Payment provider id
        - name: locale
          in: query
          schema:
            $ref: '#/components/schemas/Locale'
          description: |
            Desired language of payment provider name (if translated). 
            For specific countries where multiple languages are spoken the provider name might be translated, otherwise the default name is returned.
      tags:
        - providers
      responses:
        '200':
          description: Found payment provider (bank).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Provider'
        '400':
          $ref: '#/components/responses/ProviderErrorResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/ProviderNotFound'
      summary: Provider details
      description: |
        Get provider details
      security:
        - access_token: []
      operationId: getProvider
    parameters:
      - schema:
          type: string
        name: providerId
        in: path
        required: true

  '/service/inquiry':
    get:
      tags:
        - inquiry
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ConsentInquiry'
          description: List of available consent inquiries
        '400':
          $ref: '#/components/responses/ConsentErrorResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
        - access_token: [ ]
      operationId: listConsentInquiries
      summary: List consent inquiries
      description: |
        Returns list of consent inquiries.

  '/service/inquiry/{inquiryId}':
    get:
      parameters:
        - name: inquiryId
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/ConsentInquiryId'
          description: id of consent inquiry
      tags:
        - inquiry
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentInquiry'
          description: Configured consent inquiry
        '400':
          $ref: '#/components/responses/ConsentErrorResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
        - access_token: [ ]
      operationId: getConsentInquiry
      summary: Get consent inquiry
      description: |
        Provides details on a consent inquiry, including scope, duration,
        and additional information for the party for whom the consent is intended.

  '/service/consent':
    get:
      parameters:
        - schema:
            $ref: '#/components/schemas/ConsentInquiryId'
          name: inquiryId
          in: query
          description: The ID of the consent inquiry to retrieve all consents.
          required: false
        - schema:
            $ref: '#/components/schemas/Msisdn'
          name: msidsn
          in: query
          description: The phone number of the user linked to the consent
          required: false
        - schema:
            $ref: '#/components/schemas/Email'
          name: email
          in: query
          description: The email address of the user linked to the consent.
          required: false
        - schema:
            $ref: '#/components/schemas/DateTime'
          in: query
          description: From date time - filtered against valid from time
          name: validFrom
          required: false
        - schema:
            $ref: '#/components/schemas/DateTime'
          in: query
          description: Util date time - filtered against valid until time
          name: validUntil
          required: false
        - schema:
            type: string
          in: query
          description: Consent provider/bank name
          name: providerName
          required: false
        - schema:
            $ref: '#/components/schemas/CountryCode'
          in: query
          description: Consent country code
          name: country
          required: false
        - schema:
            $ref: '#/components/schemas/ConsentStatus'
          in: query
          name: status
          required: false
        - schema:
            $ref: '#/components/schemas/ConsentScope'
          in: query
          name: scope
          required: false
        - schema:
            type: string
          in: query
          description: Consent data key
          name: dataKey
          required: false
        - schema:
            type: string
          in: query
          description: Consent data value
          name: dataValue
          required: false
        - schema:
            type: string
          in: query
          name: cursor
          required: false
      tags:
        - consents
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentList'
          description: Default response
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/ConsentNotFound'
      summary: List consents
      description: Retrieves account consent details of a started / ongoing account consent request.
      security:
        - access_token: [ ]
      operationId: listConsents

  '/service/consent/{consentId}':
    get:
      parameters:
        - name: consentId
          in: path
          description: The ID of the account consent to retrieve.
          required: true
          schema:
            $ref: '#/components/schemas/ConsentId'
      tags:
        - consents
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Consent'
          description: Default response
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/ConsentNotFound'
      summary: Account consent details
      description: Retrieves account consent details of a started / ongoing account consent request.
      security:
        - access_token: [ ]
      operationId: getConsent

  '/service/consent/{consentId}/logs':
    get:
      summary: Consent logs
      parameters:
        - schema:
            type: string
          in: path
          name: consentId
          required: true
      tags:
        - consents
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LogInfo'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: [ ]
        - api_secret: [ ]
      operationId: getConsentLogs
      description: Get consent logs

  '/service/consent/{consentId}/data-refresh':
    post:
      summary: Consent data refresh
      parameters:
        - schema:
            type: string
          in: path
          name: consentId
          required: true
      tags:
        - consents
      responses:
        '200':
          description: OK
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: [ ]
        - api_secret: [ ]
      operationId: consentDataRefresh
      description: Consent data refresh (accounts, balances, transactions)

  '/service/accounts':
    get:
      parameters:
        - schema:
            $ref: '#/components/schemas/ConsentId'
          name: consentId
          in: query
          required: false
          description: Consent id
        - schema:
            $ref: '#/components/schemas/IBAN'
          in: query
          description: Consent source IBAN account number
          name: iban
          required: false
        - schema:
            type: string
          in: query
          name: cursor
          required: false
      tags:
        - accounts
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountList'
          description: Default response
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/ConsentNotFound'
      summary: List accounts
      description: Retrieves list of accounts for a given consent.
      security:
        - access_token: [ ]
      operationId: listAccounts

  '/service/accounts/{accountId}':
    get:
      parameters:
        - name: consentId
          in: query
          required: true
          description: Consent id
          schema:
            $ref: '#/components/schemas/ConsentId'
        - name: accountId
          in: path
          description: Get specific account by id
          required: true
          schema:
            $ref: '#/components/schemas/AccountId'
      tags:
        - accounts
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
          description: Default response
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/AccountNotFound'
      summary: Get account
      description: Get account details as allowed by the scope of the consent
      security:
        - access_token: [ ]
      operationId: getAccount

  '/service/accounts/{accountId}/transactions':
    get:
      parameters:
        - name: consentId
          in: query
          required: true
          description: Consent id
          schema:
            $ref: '#/components/schemas/ConsentId'
        - name: accountId
          in: path
          description: Get list of transactions for given account (if allowed by the consent scope)
          required: true
          schema:
            $ref: '#/components/schemas/AccountId'
        - name: from
          in: query
          description: |
            From transaction booked time (including)
            if not given the last transaction is first
          required: false
          schema:
            $ref: '#/components/schemas/DateTime'
        - name: until
          in: query
          description: |
            Until transaction booked time (excluding)
          required: false
          schema:
            $ref: '#/components/schemas/DateTime'
        - schema:
            type: string
          in: query
          name: cursor
          required: false
      tags:
        - accounts
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionList'
          description: List of transactions
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/AccountNotFound'
      summary: List transactions
      description: |
        Get transactions for account if allowed by the scope of the consent,
        sorted from latest to oldest
      security:
        - access_token: [ ]
      operationId: listTransactions

  '/service/accounts/{accountId}/transactions/{transactionId}':
    get:
      parameters:
        - name: consentId
          in: query
          required: true
          description: Consent id
          schema:
            $ref: '#/components/schemas/ConsentId'
        - name: accountId
          in: path
          description: Get list of transactions for given account
          required: true
          schema:
            $ref: '#/components/schemas/AccountId'
        - name: transactionId
          in: path
          description: Get list of transactions for given account
          required: true
          schema:
            $ref: '#/components/schemas/TransactionId'
      tags:
        - accounts
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
          description: Paged list of transactions
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/AccountNotFound'
      summary: Get transaction
      description: Get transaction details for a specific transaction if allowed by the scope of the consent.
      security:
        - access_token: [ ]
      operationId: getTransaction

  '/service/categories':
    get:
      tags:
        - categories
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryList'
          description: Default response
        '401':
          $ref: '#/components/responses/Unauthorized'
      summary: List transaction categories
      description: Retrieves list of transaction categories.
      security:
        - access_token: [ ]
      operationId: listCategories

  '/service/categories/{code}':
    get:
      parameters:
        - name: code
          in: path
          required: true
          description: Category code (based on ISO 18245:2023)
          schema:
            $ref: '#/components/schemas/CategoryCode'
      tags:
        - categories
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionCategory'
          description: Default response
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/CategoryNotFound'
      summary: Get transaction category
      description: Get transaction category data
      security:
        - access_token: [ ]
      operationId: getCategory

  '/service/categories/groups':
    get:
      tags:
        - categories
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryGroupList'
          description: Default response
        '401':
          $ref: '#/components/responses/Unauthorized'
      summary: List transaction category groups
      description: Retrieves list of transaction category groups.
      security:
        - access_token: [ ]
      operationId: listCategoryGroups

  '/service/categories/groups/{categoryGroupId}':
    get:
      parameters:
        - name: categoryGroupId
          in: path
          required: true
          description: Category group id (based on ISO 18245:2023)
          schema:
            $ref: '#/components/schemas/CategoryGroupId'
      tags:
        - categories
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionCategoryGroup'
          description: Default response
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/CategoryGroupNotFound'
      summary: Get transaction category group
      description: Get transaction category group data
      security:
        - access_token: [ ]
      operationId: getCategoryGroup

  /service/scoring/account/{inquiryId}:
    parameters:
      - name: "inquiryId"
        in: "path"
        required: true
        schema:
          type: "string"
        description: Consent inquiry id
      - name: "iban"
        in: "query"
        schema:
          type: "string"
        description: IBAN filter
      - name: "provider"
        in: "query"
        schema:
          type: "string"
        description: Provider (bank) filter
      - name: "holder"
        in: "query"
        schema:
          type: "string"
        description: Email / phone number of holder (owner) filter
    get:
      tags:
        - "Risk scoring"
      summary: "Get accounts for risk scoring"
      description: "Get accounts for risk scoring"
      operationId: "riskScoringAccountsGet"
      responses:
        200:
          description: Get accounts for credit scoring
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScoringAccountsResponse'

  /service/scoring/account/calculate:
    post:
      tags:
        - "Risk scoring"
      summary: "Calculate risk scoring for accounts"
      description: "Calculate risk scoring for accounts"
      operationId: "riskScoringAccountCalculatePost"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScoringCalculateRequest'
      responses:
        200:
          description: Calculate risk scoring for accounts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScoringCalculateResponse'

components:
  schemas:
    AccessToken:
      type: object
      properties:
        accessToken:
          type: string
          description: generated access token to access API
          example: "eyJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI"
        expires:
          $ref: '#/components/schemas/DateTime'
        expiresIn:
          type: integer
          description: number of seconds when token session expires
          example: 360
        scope:
          type: array
          description: Set of token access privileges
          items:
            $ref: '#/components/schemas/TenantService'

    CountryCode:
      type: string
      description: Provider country code (ISO 3166 alpha-2 codes)
      example: "AT"

    Payment:
      type: object
      properties:
        paymentId:
          $ref: '#/components/schemas/PaymentId'
        status:
          $ref: '#/components/schemas/PaymentStatus'
        created:
          $ref: '#/components/schemas/DateTime'
        modified:
          $ref: '#/components/schemas/DateTime'
        providerId:
          $ref: '#/components/schemas/ProviderId'
        name:
          type: string
          description: Transaction name. What is the intent of the transaction. Will be visible on customers transaction list (bank transactions).
          example: Account top-up
        description:
          type: string
          description: |
            Additional short description of transaction. Additional context of the transaction intent visible in transaction list on Fliqa platform.
          example: "Account top up: online services"
        pointOfSaleId:
          type: string
          description: Point of Sale to accepting payment (i.e. target account)
          example: "point-of-sale-123"
        sourceIban:
          $ref: '#/components/schemas/IBAN'
        sourceName:
          type: string
          description: Source account owner name surname or description if available
          example: "Janez Novak"
        targetIban:
          $ref: '#/components/schemas/IBAN'
        targetName:
          type: string
          description: Target account owner name or description (i.e. the Point Of Sale display name)
          example: "Super store"
        amount:
          $ref: '#/components/schemas/Amount'
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        country:
          $ref: '#/components/schemas/CountryCode'
        data:
          $ref: '#/components/schemas/MetaData'
        locale:
          $ref: '#/components/schemas/Locale'
        rating:
          type: number
          format: double

    MetadataPagination:
      type: object
      properties:
        next_cursor:
          type: string

    PaymentList:
      type: object
      description: List of payments
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Payment'
        metadata:
          $ref: '#/components/schemas/MetadataPagination'

    AccountHolder:
      type: object
      description: Account holder
      properties:
        iban:
          $ref: '#/components/schemas/IBAN'
        providerId:
          $ref: '#/components/schemas/ProviderId'
        name:
          type: string
        currencies:
          type: array
          items:
            $ref: '#/components/schemas/CurrencyCode'
        country:
          $ref: '#/components/schemas/CountryCode'

    AccountHolderAction:
      type: object
      properties:
        resourceId:
          $ref: '#/components/schemas/ResourceId'
        action:
          $ref: '#/components/schemas/AccountHolderActionEnum'
        providerId:
          $ref: '#/components/schemas/ProviderId'
        country:
          $ref: '#/components/schemas/CountryCode'
        created:
          $ref: '#/components/schemas/DateTime'
        updated:
          $ref: '#/components/schemas/DateTime'

    ConsentInquiryId:
      type: string
      description: Consent inquiry id

    ConsentInquiry:
      type: object
      description: Granted consent to access account information (accounts, balances, transactions).
      properties:
        id:
          $ref: '#/components/schemas/ConsentInquiryId'
        status:
          $ref: '#/components/schemas/ConsentInquiryStatus'
        name:
          type: string
        displayName:
          type: string
        description:
          type: string
        scope:
          $ref: '#/components/schemas/ConsentScope'
        frequency:
          $ref: '#/components/schemas/ConsentInquiryFrequency'
        tenant:
          $ref: '#/components/schemas/Tenant'

    ConsentScope:
      type: string
      enum:
        - all
        - accounts
        - balances
        - transactions
      description: Consent scopes for account information access.

    ConsentInquiryStatus:
      type: string
      enum:
        - initiated
        - active
        - inactive
        - deleted
      description: Consent inquiry status.
      example: active

    Msisdn:
      type: string
      description: Mobile phone number

    Email:
      type: string
      description: Email address

    Consent:
      type: object
      properties:
        inquiryId:
          $ref: '#/components/schemas/ConsentInquiryId'
        consentId:
          $ref: '#/components/schemas/ConsentId'
        status:
          $ref: '#/components/schemas/ConsentStatus'
        created:
          $ref: '#/components/schemas/DateTime'
        modified:
          $ref: '#/components/schemas/DateTime'
        scope:
          $ref: '#/components/schemas/ConsentScope'
        validUntil:
          $ref: '#/components/schemas/DateTime'
        providerId:
          $ref: '#/components/schemas/ProviderId'
        name:
          type: string
          description: Short info of the account consent intent. Will be visible int the customers consent list.
          example: Account ownership check
        description:
          type: string
          description: |
            Simple description of why account access is being used.
          example: "Account ownership confirmation"
        owner:
          $ref: '#/components/schemas/ConsentOwner'
        country:
          $ref: '#/components/schemas/CountryCode'
        data:
          $ref: '#/components/schemas/MetaData'
        locale:
          $ref: '#/components/schemas/Locale'

    ConsentList:
      type: object
      description: List of consents
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Consent'
        metadata:
          $ref: '#/components/schemas/MetadataPagination'

    ConsentId:
      type: string
      description: Unique consent id
      example: "123"

    ConsentStatus:
      type: string
      enum:
        - initiated
        - started
        - received
        - rejected
        - partially_authorised
        - valid
        - revoked_by_psu
        - expired
        - terminated_by_tpp
        - failed
      description: Consent status.

    ConsentOwner:
      type: object
      properties:
        msisdn:
          $ref: '#/components/schemas/Msisdn'
        email:
          $ref: '#/components/schemas/Email'

    TransactionList:
      type: object
      description: List of transactions within given limits
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Transaction'
        metadata:
          $ref: '#/components/schemas/MetadataPagination'

    AccountId:
      type: integer
      title: AccountId
      description: Unique account id
      example: '111'

    Account:
      type: object
      description: Account details
      properties:
        id:
          $ref: '#/components/schemas/AccountId'
        consentId:
          $ref: '#/components/schemas/ConsentId'
        providerId:
          $ref: '#/components/schemas/ProviderId'
        country:
          $ref: '#/components/schemas/CountryCode'
        name:
          type: string
          description: Name of account
        holder:
          type: string
          description: Name of account holder/owner
        nature:
          type: string
          description: The type of account, ie. credit card, checking ...
        balance:
          $ref: '#/components/schemas/Amount'
        balanceUpdated:
          $ref: '#/components/schemas/DateTime'
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        iban:
          $ref: '#/components/schemas/IBAN'
        created:
          $ref: '#/components/schemas/DateTime'
        modified:
          $ref: '#/components/schemas/DateTime'

    AccountList:
      type: object
      description: List of accounts
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Account'
        metadata:
          $ref: '#/components/schemas/MetadataPagination'

    CategoryList:
      type: array
      description: List of transaction categories
      items:
        $ref: '#/components/schemas/TransactionCategory'

    CategoryCode:
      type: string
      description: Category code based on ISO 18245:2023 (merchant category codes)

    CategoryGroupList:
      type: array
      description: List of transaction category groups
      items:
        $ref: '#/components/schemas/TransactionCategoryGroup'

    CategoryGroupId:
      type: integer
      description: Category group id

    Transaction:
      type: object
      description: Transaction details
      properties:
        id:
          $ref: '#/components/schemas/TransactionId'
        created:
          $ref: '#/components/schemas/DateTime'
        executed:
          $ref: '#/components/schemas/DateTime'
        accountId:
          $ref: '#/components/schemas/AccountId'
        description:
          type: string
          description: Transaction description
        details:
          $ref: '#/components/schemas/TransactionDetails'
        amount:
          $ref: '#/components/schemas/Amount'
        balance:
          $ref: '#/components/schemas/Amount'
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        status:
          $ref: '#/components/schemas/AccountTransactionStatus'
        source:
          $ref: '#/components/schemas/IBAN'
        target:
          $ref: '#/components/schemas/IBAN'
        categorization:
          $ref: '#/components/schemas/TransactionCategory'

    TransactionId:
      type: string
      description: Unique transaction id

    AccountTransactionStatus:
      type: string
      enum:
        - booked
        - pending
      description: Account transaction status (booked or pending).

    TransactionDetails:
      type: object
      properties:
        reference:
          type: string
          description: Transaction reference if available
        description:
          type: string
          description: Additional transaction description
        source:
          type: string
          description: Transaction source name or other info if available
        target:
          type: string
          description: Transaction target name or other info if available
        exchange:
          $ref: '#/components/schemas/CurrencyExchange'

    TransactionCategory:
      type: object
      properties:
        code:
          type: string
          maxLength: 4
          description: |
            Transaction category code (based on ISO 18245:2023 merchant category codes).
            As recognized by our categorization engine.
        description:
          type: string
          maxLength: 512
          description: |
            Transaction category description as recognized by our categorization engine.
            Not necessary coinciding with the recognized category code.
        groupId:
          type: integer
          description: Transaction category group id category code belong to
        groupDescription:
          type: string
          description: Transaction category group description

    TransactionCategoryGroup:
      type: object
      properties:
        id:
          type: integer
          description: Unique transaction category group id
        description:
          type: string
          maxLength: 512
          description: Transaction category group description (based on ISO 18245:2023)
        category_code_start:
          type: string
          maxLength: 4
          description: Transaction category group code start (including)
        category_code_end:
          type: string
          maxLength: 4
          description: Transaction category group code end (including)

    CurrencyExchange:
      type: object
      description: Currency exchange rate if applicable to transaction
      properties:
        source:
          $ref: '#/components/schemas/CurrencyCode'
        target:
          $ref: '#/components/schemas/CurrencyCode'
        unit:
          $ref: '#/components/schemas/CurrencyCode'
        exchangeRate:
          $ref: '#/components/schemas/Amount'

    TenantService:
      type: string
      enum:
        - account_owner
        - account_info
        - account_transactions
        - payments
        - risk_scoring
      description: Type of service tenant is allowed to use.

    AccountHolderActionEnum:
      type: string
      enum:
        - payment
        - consent_created
        - account_info_refresh

    IBAN:
      type: string
      description: IBAN account number with country prefix
      example: 'AT483200000012345865'
      minLength: 15
      maxLength: 34

    Amount:
      type: number
      format: decimal
      description: |
        Amount of transaction in format: 0.00 without thousand separator, exact to two decimal places.  
        **NOTE**:  If amount is provided with more than two decimal places then amount will be rounded to two decimal paces.
      example: 12.30

    CurrencyCode:
      type: string
      description: ISO 4217 currency code.
      example: EUR

    MetaData:
      type: array
      description: |
        Additional internal data to be stored alongside payment. 
        This can be internal shopping basked id, customer profile id, or any other information to link payment to an internal process.
      items:
        $ref: '#/components/schemas/KeyValueData'

    KeyValueData:
      type: object
      properties:
        key:
          type: string
          description: unique key of internally stored data. For instance basked_id, customer_id ...
          example: customer_id
        value:
          type: string
          description: value of internally stored data.
          example: external_id_1234

    PaymentId:
      type: string
      description: Unique payment id
      example: "a683072aeeb746d58aa34dd5537c4aae"

    ResourceId:
      type: string
      description: Unique resource id
      example: "9c14c6f2f0ee4a54a280be3c18ec1dba"

    RequestId:
      type: string
      description: Unique request id
      example: "554099e7d0b648d7b96bc31c148425b8"

    PaymentStatus:
      type: string
      enum:
        - initiated
        - started
        - pending
        - rejected
        - canceled
        - expired
        - failed
        - successful
        - scheduled
        - verification_required
      description: '- initiated - payment dialog was initiated  - started - payment was started but client needs to enter additional data - pending - client is in bank process waiting for confirmation - cancelled - client cancelled payment - rejected - payment was rejected by the provider - expired - process took to long - payment expired - failed - payment was not successful  - successful - payment was successful'

    Error:
      type: object
      required:
        - errorMessage
        - errorCode
      properties:
        errorMessage:
          type: string
          description: Description of error
        errorCode:
          $ref: '#/components/schemas/ErrorCode'
        errorSubCode:
          $ref: '#/components/schemas/ErrorSubCode'
        documentationUrl:
          type: string
          format: uri
          description: Link to documentation if available, typically https://documentation.fliqa.io/api/errors/{errorCode}
        requestId:
          $ref: '#/components/schemas/RequestId'
        resourceId:
          $ref: '#/components/schemas/ResourceId'
      description: Request error.

    ErrorCode:
      type: string
      enum:
        - invalid_parameter
        - unauthorized
        - forbidden
        - not_found
        - not_allowed
        - bad_request
        - other
      description:  |
        Error code of a specific error. 
        For more details visit https://documentation.fliqa.io/api/errors/{errorCode}
      example: unauthorized

    ErrorSubCode:
      type: string
      enum:
        - api_key_secret_header_must_be_provided
        - authorization_header_must_be_provided
        - access_not_allowed
        - domain_not_allowed
        - access_token_expired
        - invalid_access_scope
        - not_authorized
        - phone_or_email_not_registered
        - phone_number_start_with_plus_and_country
        - phone_number_invalid
        - email_invalid
        - email_or_phone_number_required
        - invalid_pin
        - could_not_interpret_numbers_after_plus
        - supplied_string_not_phone_number
        - string_supplied_too_short_to_be_phone_number
        - string_supplied_too_long_to_be_phone_number
        - string_supplied_was_too_long_to_parse
        - unspecified
      description: |
        Error sub code of a specific error.
        For more details visit https://documentation.fliqa.io/api/errors/{errorCode}#{errorSubCode}
      example: phone_or_email_not_registered

    DateTime:
      type: string
      format: date-time
      description: 'RFC 3339 date time format (2007-11-06T16:34:41.000Z)'

    ProviderId:
      title: ProviderId
      type: string
      description: Unique payment provider (bank) id

    PointOfSale:
      title: Point of sale
      description: Information of target account, transaction currency.
      type: object
      properties:
        id:
          type: string
          description: Point of sale unique id
          example: "my-point-of-sale-123"
        tenant:
          $ref: '#/components/schemas/Tenant'
        name:
          type: string
          description: Point of sale display name as display to the user
          example: "Account top-up"
        iban:
          $ref: '#/components/schemas/IBAN'
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        enabled:
          type: boolean
          description: |
            Is point of sale enabled (true/false)?
            If point of sale is disabled than payments against the given point of sale can't be performed.
          example: false

    Tenant:
      type: object
      description: Additional Tenant information as configured.
      properties:
        name:
          type: string
          description: Name of tenant - as configured in administration - Settings
        companyName:
          type: string
          description: Company legal name. As configured in administration - Company info
        addressStreet:
          type: string
          description: Company address street. As configured in administration - Company info
        addressStreetNumber:
          type: string
          description: Company address street number. As configured in administration - Company info
        addressCity:
          type: string
          description: Company address city name. As configured in administration - Company info
        addressZipCode:
          type: string
          description: Company address city ZIP code. As configured in administration - Company info
        addressCountry:
          type: string
          description: Company address country code. As configured in administration - Company info

    Locale:
      type: string
      description: Two letter ISO 639-1 language/locale code.
      example: en

    Provider:
      type: object
      description: Payment provider (i.e. bank). The customers bank (source account holder).
      properties:
        id:
          $ref: '#/components/schemas/ProviderId'
        name:
          type: string
          description: Payment provider / bank official name (returned in selected local language if available)
          example: 'Generali Bank AG'
        status:
          $ref: '#/components/schemas/ProviderStatus'
        iconUrl:
          type: string
          description: |
            Provider logo image in 320x320px format. Logo images are available in two formats 160x160 and 320x320 pixels.
            By default the 320x320 icon is returned. The 160x160 version can be retrieved by replacing the **/w320** asset folder with **/w160**.
            For instance: https://assets.fliqa.io/images/providers/w320/at/generali.png -> https://assets.fliqa.io/images/providers/w160/at/generali.png
          example: 'https://assets.fliqa.io/images/providers/w320/at/generali.png'
        country:
          $ref: '#/components/schemas/CountryCode'
        scopes:
          type: array
          description: |
            List of payment and account services, provider is supporting.
          example:
            - payments
            - accountInfo
          items:
            $ref: '#/components/schemas/TenantService'
        bic:
          type: string
          description: SWIFT BIC code if available.
          example: 'BGENATWW'

    ProviderStatus:
      type: string
      enum:
        - active
        - disabled
      description: 'List of statuses a payment provider can have: active - disabled.'
      example: active

    CountryInfo:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/CountryCode'
        name:
          type: string
          description: country name (short country name in selected local language if available)
          example: "Austria"
        iconUrl:
          type: string
          description: |
            Url to country flag image.
          example: "https://assets.fliqa.io/images/flags/w320/at.png"

    Environment:
      title: Environment
      type: string
      description: |
        Environment processing the payment transaction. This can be either the sandbox or the production environment.
      enum:
        - production
        - sandbox

    LogInfo:
      type: object
      description: Log info
      properties:
        time:
          $ref: '#/components/schemas/DateTime'
        message:
          type: string
          description: Log message
        details:
          $ref: '#/components/schemas/LogDetails'

    LogDetails:
      type: object
      description: 'Adding additional information to log (i.e. external IDs, links)'
      properties:
        key:
          type: string
          enum:
            - text
            - url
        value:
          type: string

    ConsentInquiryFrequency:
      type: string
      enum:
        - once
        - daily
      description: Consent inquiry frequency.

    AccountListItem:
      type: object
      properties:
        id:
          type: integer
        modified:
          type: string
          format: date-time
        holder:
          type: string
        name:
          type: string
        iban:
          type: string
        currency:
          type: string
        providerName:
          type: string

    ScoringAccountsResponse:
      title: ScoringAccountsResponse
      type: object
      properties:
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/AccountListItem'

    ScoringCalculateRequest:
      title: ScoringCalculateRequest
      type: object
      required:
        - inquiryId
        - accounts
        - fromDate
        - toDate
      properties:
        inquiryId:
          type: "string"
        accounts:
          type: array
          items:
            type: "integer"
        fromDate:
          type: string
          format: date-time
        toDate:
          type: string
          format: date-time
        excludedTransactionIds:
          type: array
          items:
            type: "string"
        currency:
          $ref: '#/components/schemas/CurrencyCode' # default is EUR

    ScoringTransactionList:
      type: array
      items:
        $ref: '#/components/schemas/ScoringTransactionListItem'

    ScoringTransactionListItem:
      type: object
      properties:
        id:
          type: string
        created:
          type: string
          format: date-time
        description:
          type: string
        amount:
          $ref: '#/components/schemas/Amount'
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        balanceAfterTransaction:
          $ref: '#/components/schemas/Amount'
        status:
          $ref: '#/components/schemas/AccountTransactionStatus'
        creditorName:
          type: string
        categorization:
          $ref: '#/components/schemas/TransactionCategory'
        accountIban:
          $ref: '#/components/schemas/IBAN'

    ScoreRisk:
      type: string
      enum:
        - unknown
        - low
        - medium
        - high

    ScoringCalculateResponse:
      title: ScoringCalculateResponse
      type: object
      properties:
        monthly:
          type: object
          additionalProperties:
            properties:
              amount:
                $ref: '#/components/schemas/Amount'
              stdDeviation:
                $ref: '#/components/schemas/Amount'
        minMax:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Amount'
        sample:
          type: object
          properties:
            fromDate:
              type: string
              format: date-time
            toDate:
              type: string
              format: date-time
            days:
              type: integer
            numberOfTransactions:
              type: integer
        totals:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Amount'
        transactions:
          $ref: '#/components/schemas/ScoringTransactionList'
        excludedTransactions:
          $ref: '#/components/schemas/ScoringTransactionList'
        transactionGroups:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        categories:
          type: array
          items:
            $ref: '#/components/schemas/CategoryGroup'
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        risk:
          $ref: '#/components/schemas/ScoreRisk'

    CategoryGroup:
      title: Transactions grouped by category with additional data
      type: object
      properties:
        category:
          $ref: '#/components/schemas/TransactionCategory'
        amount:
          $ref: '#/components/schemas/Amount'

    PayByLink:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/LinkId'
        point_of_sale_id:
          $ref: '#/components/schemas/PointOfSaleId'
        state:
          $ref: '#/components/schemas/LinkState'
        created:
          $ref: '#/components/schemas/DateTime'
        updated:
          $ref: '#/components/schemas/DateTime'
        expires_on:
          $ref: '#/components/schemas/DateTime'
        reuse:
          $ref: '#/components/schemas/LinkReuse'
        description:
          type: string
        amount:
          $ref: '#/components/schemas/Amount'
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        country:
          $ref: '#/components/schemas/CountryCode'
        data:
          $ref: '#/components/schemas/MetaData'
        locale:
          $ref: '#/components/schemas/Locale'

    LinkId:
      type: string

    LinkState:
      type: string
      enum:
        - enabled
        - disabled
        - accepted

    LinkReuse:
      type: string
      enum:
        - single
        - multiple

    PointOfSaleId:
      type: integer
      description: Point of sale unique id
      example: 123456

  responses:
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: unauthorized
            errorMessage: Not authorized
            documentationUrl: 'https://documentation.fliqa.io/api/errors/unauthorized'

    PaymentNotFound:
      description: Payment not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: not_found
            errorMessage: Can't find payment '123'
            documentationUrl: 'https://documentation.fliqa.io/api/errors/not_found'

    PointOfSaleNotFound:
      description: Point of sale not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: not_found
            errorMessage: Can't find point of sale 'my_point_of_sale'
            documentationUrl: 'https://documentation.fliqa.io/api/errors/not_found'

    ProviderErrorResponse:
      description: 'Invalid parameter, can''t fulfill request'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: invalid_parameter
            errorMessage: Invalid provider 'id' format!
            documentationUrl: 'https://documentation.fliqa.io/api/errors/invalid_parameter'

    ProviderNotFound:
      description: Payment provider does not exists or is not active (temporary or permanently disabled).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: not_found
            errorMessage: Provider with id 'unicredit-bank-romania' not found.
            documentationUrl: 'https://documentation.fliqa.io/api/errors/not_found'
            requestId: "f7b9bf46aa6d61716e71dc87be64e9ba"

    ConsentErrorResponse:
      description: 'Invalid parameter, can''t fulfill request'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: invalid_parameter
            errorMessage: Missing consent 'provider'!
            documentationUrl: 'https://documentation.fliqa.io/api/errors/invalid_parameter'

    ConsentNotFound:
      description: Consent not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: not_found
            errorMessage: Can't find consent '123'
            documentationUrl: 'https://documentation.fliqa.io/api/errors/not_found'

    AccountNotFound:
      description: Account not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: not_found
            errorMessage: Can't find account '123'
            documentationUrl: 'https://documentation.fliqa.io/api/errors/not_found'

    CategoryNotFound:
      description: Category not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: not_found
            errorMessage: Can't find category '1234'
            documentationUrl: 'https://documentation.fliqa.io/api/errors/not_found'

    CategoryGroupNotFound:
      description: Category group not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: not_found
            errorMessage: Can't find category group '111'
            documentationUrl: 'https://documentation.fliqa.io/api/errors/not_found'

    Forbidden:
      description: Access forbidden / most likely production access is not allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: forbidden
            errorMessage: Tenant with slug 'my_slug' does not have 'production' access.
            documentationUrl: 'https://documentation.fliqa.io/api/errors/forbidden'

    PayByLinkNotFound:
      description: Point of sale not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errorCode: not_found
            errorMessage: Can't find point of sale 'link_id'
            documentationUrl: 'https://documentation.fliqa.io/api/errors/not_found'

  securitySchemes:
    access_token:
      type: http
      scheme: bearer
      bearerFormat: JWT
    api_key:
      type: apiKey
      in: header
      name: Api-Key
    api_secret:
      type: apiKey
      in: header
      name: Api-Secret
  headers: {}
  parameters: {}
tags:
  - name: authentication
    description: |
      Authentication of requests.
  - name: countries
    description: |
      Supported countries (i.e. banks).
  - name: providers
    description: |
      Payment providers / Account information providers (i.e. banks).
  - name: points-of-sale
    description: |
      Point of sale information used for payment end-points.
  - name: payments
    description: |
      Executed payments data.
  - name: account-holders
    description: |
      Auxiliary data of account holders data (either received from payments or account information end-points).
  - name: inquiry
    description: |
      Consents inquiries and definitions.
  - name: consents
    description: |
      Consents granted that allow access to accounts, balances and transactions.
  - name: accounts
    description: |
      Account, balances and transaction access through a valid account consent.
  - name: categories
    description: |
      Transaction categories and transaction category groups.
      Categorization is performed with help of artificial intelligence. 
      See: https://documentation.fliqa.io/api/service/categorization/ for more information.
security:
  - access_token: []
  - api_key: []
    api_secret: []
