openapi: 3.0.3
info:
    title: Everypay IAPI
    #  termsOfService: https://dev.everypay.io/terms/
    #  contact:
    #    email: apiteam@everypay.io
    version: '0.9'

    #   Спецификация OpenAPI 3.0 для интеграции с Everypay.
    description: |-
        Стандарты и спецификации OpenBanking API:
        - [Утвержденные стандарты Банка России](https://wiki.openbankingrussia.ru/ru/standarts)
        - [Спецификации к утвержденным стандартам Банка России](https://wiki.openbankingrussia.ru/ru/specifications)

        Разработано с учетом:
        - [Стандарт: ОТКРЫТЫЕ БАНКОВСКИЕ ИНТЕРФЕЙСЫ. Получение информации о счете клиента третьей стороной (1.2.1)](https://cbr.ru/StaticHtml/File/59420/standart_2.pdf)
        - [Спецификация: Получение информации о счете клиента третьей стороной (1.2.1)](https://api.openbankingrussia.ru/accounts-v1.2.1/)

        # Введение

        Для начала работы необходимо зарегистрировать своё приложение. Для этого необходимо отправить заявку на hello@everypay.io с реквизитами компании.

        В заявке необходимо предоставить:
        - данные о компании - ИНН/КПП, название, контакты для связи и ответственное лицо,
        - ссылка для перенаправления запросов авторизации OAuth (`redirect_url`).
        
        Ссылок для перенаправления запросов может быть несколько: для разработки, для тестовой среды, для stage и т.п.

        В ответ вы получите `client_id` и `client_secret`, с которыми и будете запрашивать данные.

        ### Коллекции Postman
        Для упрощения процесса интеграции можете использовать коллеции и настройку окружения Postman:
        - [Коллекция запросов с примерами](https://docs.everypay.io/specs/Everypay-integration-API.postman_collection.json)
        - [Окружение для Postman](https://docs.everypay.io/specs/Everypay-integration-API.postman_environment.json)

        # Начало работы

        Процесс взаимодействия с API Everypay состоит из нескольких шагов:
        1.  Получение списка внешних сервисов (поставщики платежных услуг, сервисные поставщики информационных услуг )
        2.  Получение кода (`third-party-code`) для авторизации пользователя во внешних сервисах
        3.  Перенаправление пользователя на страницу авторизации во внешнем сервисе
        4.  Получение кода авторизации
        5.  Обмен кода авторизации на токены
        6.  Обращение к ресурсам API

        # Авторизация

        Ниже представлена схема для авторизации в сервисе everypay с помощью внешней стороны (банка).

        Процесс авторизации схож с [OAuth 2.0 Authorization Code](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1)

        ![flow Авторизации в Everypay IAPI](/assets/images/ev-iapi-auth.svg 'Flow авторизации в Everypay')

        После прохождения авторизации партнёру выдаётся `access_token` и `refresh_token`.

        ## Начало авторизации

        Для начала нужно сгенерировать первоначальный код. Далее он поможет определить пользователя в
        процессе авторизации. Необходимо выполнить `POST` запрос по адресу `/oauth/third-party-code`.
        Формат тела запроса - `application/json`. Необходимые параметры:
        * `type` - должен быть указан `external`,
        * `user_id` - должен быть указан идентификатор сервиса партнёра, от лица которого
        запрашивается доступ. Тип - `string`.

        В запросе необходимо использовать `Basic` авторизацию. В качестве логина должен быть использован
        `client_id`, а в качестве пароля - `client_secret`.

        Пример тела запроса:
        ```json
        {
            "type": "external",
            "user_id": "1"
        }
        ```

        Пример тела ответа:
        ```json
        {
            "code": "code"
        }
        ```

        **Время жизни параметра `code` - 10 минут**

        ## Перенаправление пользователя для авторизации

        После получения первичного кода необходимо направить пользователя на адрес `/oauth/authorize`.
        Основные параметры взяты из спецификации [OAuth 2.0 Authorization Code](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1):
        * `client_id`,
        * `redirect_uri`,
        * `response_type` со значением `third_party_code`,
        * `scope`. Должен быть в формате `urlencoded`,
        * `code_challenge`. Должен быть в формате `base64 urlencoded`,
        * `code_challenge_method`. Поддерживается `plain` и `S256`,
        * `state` (рекомендуется).

        Для успешной интеграции необходимо два дополнительных параметра:
        * `third_party` - внешний сервис (банк) для которого партнёр хочет получить токены,
        * `code` - первичный код авторизации.

        Пример итоговой ссылки для начала авторизации:
        ```
        https://id.everypay.io/oauth/authorize
            ?client_id=partner
            &redirect_uri=https://example.com
            &response_type=third_party_code
            &scope=iapi%2Fthird-parties%20iapi%2Faccounts
            &code_challenge=73oehA2tBul5grZPhXUGQwNAjxh69zNES8bu2bVD0EM
            &code_challenge_method=S256
            &state=example_state
            &third_party=example_bank
            &code=code
        ```

        При возникновении ошибки во время авторизации (после перехода по ссылке) возможен один из двух вариантов:
        * В случае валидного `redirect_uri` пользователь будет перенаправлен на него;
        * В случае невалидного `redirect_uri` ошибка будет отображена на той же странице в формате `JSON`.

        **Обязательное** поле `error`, которое содержит низкоуровневое текстовое описание ошибки. Поле
        `error_description` - подробное описание ошибки, **не является** обязательным.

        ## Обмен кода на токены

        После того, как пользователь пройдёт авторизацию во внешнем сервисе (банке) он будет перенаправлен на указанный
        `redirect_uri` с параметрами:
        * `code`,
        * `state` (если он был передан ранее).

        Полученный `code` необходимо обменять на токены. Для этого необходимо выполнить `POST` запрос на адрес
        `/oauth/token`. Формат тела запроса - `application/x-www-form-urlencoded`. В теле запроса указываются
        параметры согласно спецификации [OAuth 2.0 Authorization Code](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1):
        * `grant_type` со значением `third_party_authorization_code`,
        * `client_id`,
        * `client_secret`,
        * `code`,
        * `redirect_uri`,
        * `code_verifier`.

        Пример тела запроса:
        ```json
        {
            "grant_type": "third_party_authorization_code",
            "client_id": "partner",
            "client_secret": "example_secret",
            "code": "code",
            "redirect_uri": "https://example.com",
            "code_verifier": "code_verifier"
        }
        ```

        Пример ответа:
        ```json
        {
            "token_type": "Bearer",
            "expires_in": 3600,
            "access_token": "access_token",
            "refresh_token": "refresh_token"
        }
        ```

        При возникновении ошибки во время получения токенов будет возвращён соответствующий ответ. Поля аналогичны тем,
        которые могут присутствовать при ошибке авторизации.

        ## Обновление токенов

        Для обмена `refresh_token` на новую пару токенов необходимо выполнить `POST` запрос на адрес `/oauth/token`.
        Формат тела запроса - `application/x-www-form-urlencoded`. В теле запроса указываются параметры согласно
        спецификации [OAuth 2.0 Authorization Code](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1):
        * `client_id`,
        * `client_secret`,
        * `grant_type` со значением `refresh_token`,
        * `refresh_token`.

        Пример тела запроса:
        ```json
        {
            "client_id": "partner",
            "client_secret": "example_secret",
            "grant_type": "refresh_token",
            "refresh_token": "refresh_token"
        }
        ```

        Пример ответа:
        ```json
        {
            "token_type": "Bearer",
            "expires_in": "86400",
            "access_token": "access_token",
            "refresh_token": "refresh_token"
        }
        ```

        При возникновении ошибки во время обновления токенов будет возвращён соответствующий ответ. Поля аналогичны тем,
        которые могут присутствовать при ошибке авторизации.

        # Песочница
        ## Доступ
        Для того, чтобы настроить работу с песочницей необходимо заменить *базовый* домен для запросов с
        `*.everypay.io` на `*-beta.everypay.io`, т.е. добавить `-beta` перед `.everypay.io` во всех
        используемых доменах.

        ## Список доменов для песочницы
        * `id-beta.everypay.io` - для авторизации,
        * `iapi-beta.everypay.io` - для API.

        ## Третьи стороны (банки)
        В режиме песочницы все доступные третьи стороны работают аналогично в режиме песочницы. Т.е.
        авторизация производится не на реальных аккаунтах, а данные, получаемые с API внешних сервисов, не являются
        настоящими.
        
        # Аутентификация
        <SecurityDefinitions />

servers:
    -   url: https://iapi.everypay.io/api
        description: 'IAPI прод'
    -   url: https://iapi-beta.everypay.io/api
        description: 'IAPI песочница'
tags:
    -   name: Согласия
        description: "Работа с согласиями"
    -   name: Внешние сервисы
        description: "Стороны информационного взаимодействия (ППУ и СПИУ)"
    -   name: Счета
        description: "Получение информации об учетных записях на стороне взаимодействия"
    -   name: Выписки
        description: "Взаимодействие с выписками"
    -   name: Балансы
        description: "Взаимодействие с балансами"
paths:
    /consents/revoke:
        description: Отзыв согласия по токену
        servers:
        -   url: https://id.everypay.io/api
            description: 'ID прод'
        -   url: https://beta-id.everypay.io/api
            description: 'ID песочница'
        delete:
            operationId: RevokeConsent
            tags:
                - Согласия
            summary: "Отзыв согласия"
            responses:
                204:
                    description: Согласие успешно отозвано
                401:
                    description: Заголовок авторизации отсутствует или неверный токен
                403:
                    description: Токен имеет неверную область действия или была нарушена политика безопасности.
                404:
                    description: Согласие для токена не найдено
                429:
                    description: Операция была отклонена, так как слишком много запросов было сделано в течение определенного периода времени.
            security:
                - Authorization:

    /parties:
        get:
            operationId: GetThirdParties
            tags:
                - Внешние сервисы
            summary: "Получение списка сторон (ППУ и СПИУ)"
            security:
                - ThirdPartyAuth:
                      - iapi/third-parties
            responses:
                '200':
                    $ref: "#/components/responses/200GetParties"
                '400':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/400Error'
                '401':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/401Error'
                '403':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/403Error'
                '405':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/405Error'
                '406':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/406Error'
                '429':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/429Error'
                '500':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/500Error'
                '503':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/503Error'

    /accounts:
        get:
            operationId: GetAccounts
            tags:
                - Счета
            summary: "Получение списка счетов"
            description: "Предоставляется полный список счетов (с идентификаторами accountId), которые были авторизованы пользователем на стороне ППУ."
            security:
                - Authorization:
                      - iapi/accounts

            parameters:
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/page'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-auth-date'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-customer-ip-address'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-interaction-id'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-customer-user-agent'

            responses:
                '200':
                    $ref: "#/components/responses/200GetAccounts"
                '400':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/400Error'
                '401':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/401Error'
                '403':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/403Error'
                '405':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/405Error'
                '406':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/406Error'
                '429':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/429Error'
                '500':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/500Error'
                '501':
                    $ref: '#/components/responses/501Error'
                '502':
                    $ref: '#/components/responses/502Error'
                '503':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/503Error'

    /accounts/{accountId}:
        get:
            operationId: GetAccountsaccountId
            tags:
                - Счета
            summary: "Получение детальной информации о счете"
            description: "СПИУ получает детальную информацию о счете по идентификатору accountId (который был получен при вызове конечной точке списка счетов GET /accounts)."
            security:
                - Authorization:
                      - iapi/accounts

            parameters:
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/accountId'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-auth-date'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-customer-ip-address'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-interaction-id'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-customer-user-agent'

            responses:
                '200':
                    $ref: "#/components/responses/200GetAccountsaccountId"
                '400':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/400Error'
                '401':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/401Error'
                '403':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/403Error'
                '405':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/405Error'
                '406':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/406Error'
                '429':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/429Error'
                '500':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/500Error'
                '501':
                    $ref: '#/components/responses/501Error'
                '502':
                    $ref: '#/components/responses/502Error'
                '503':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/503Error'

    /statements/{accountId}:
        post:
            operationId: "GetStatementsaccountId"
            tags:
                - Выписки
            summary: "Получения идентификатора выписки statementId по идентификатору счета accountId"
            description: "ППУ предоставляет конечную точку СПИУ для получения идентификатора выписки statementId по идентификатору счета accountId, который предоставляется при вызове конечной точки GET /accounts"

            parameters:
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/accountId'
                - $ref: "https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-customer-user-agent"
                - $ref: "https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-auth-date"
                - $ref: "https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-interaction-id"
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-customer-ip-address'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-idempotency-key_mandatory'

            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/StatementInitRequest"
                        example:
                            Data:
                                Statement:
                                    accountId: 1234
                                    fromBookingDateTime: "2019-09-03T00:00:00+00:00"
                                    toBookingDateTime: "2019-12-03T00:00:00+00:00"
                            Risk:
                              { }

            responses:
                '200':
                    $ref: "https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/200GetStatementsaccountId"
                '400':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/400Error'
                '401':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/401Error'
                '403':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/403Error'
                '405':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/405Error'
                '406':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/406Error'
                '415':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/415Error'
                '429':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/429Error'
                '500':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/500Error'
                '501':
                    $ref: '#/components/responses/501Error'
                '502':
                    $ref: '#/components/responses/502Error'
                '503':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/503Error'

            security:
                - Authorization:
                      - iapi/accounts

    /statements/{accountId}/bulk:
        post:
            operationId: 'GetStatementsAccountIdBulk'
            tags: [ 'Выписки' ]
            summary: 'Массовое получение идентификаторов выписок statementId по идентификатору счета accountId'
            description: >
                ППУ предоставляет конечную точку СПИУ для массового получения идентификаторов выписок statementId по
                идентификатору счета accountId, который предоставляется при вызове конечной точки GET /accounts
            parameters:
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/accountId'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-customer-user-agent'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-auth-date'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-interaction-id'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-customer-ip-address'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-idempotency-key_mandatory'
            security:
                - Authorization: [ iapi/accounts ]
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/StatementInitRequest'
                        example:
                            Data:
                                Statement:
                                    accountId: '1234'
                                    fromBookingDateTime: '2023-03-23T12:12:12+00:00'
                                    toBookingDateTime: '2023-03-24T23:23:23+00:00'
                            Risk: { }
            responses:
                '200':
                    $ref: '#/components/responses/200GetStatementsAccountIdBulk'
                '400':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/400Error'
                '401':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/401Error'
                '403':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/403Error'
                '405':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/405Error'
                '406':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/406Error'
                '415':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/415Error'
                '429':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/429Error'
                '500':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/500Error'
                '501':
                    $ref: '#/components/responses/501Error'
                '502':
                    $ref: '#/components/responses/502Error'
                '503':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/503Error'

    /accounts/{accountId}/statements/{statementId}:
        get:
            operationId: GetAccountsaccountIdStatementsStatementId
            tags:
                - Выписки
            summary: "Получения выписки по идентификатору счета и идентификатору выписки"
            description: "ППУ предоставляет конечную точку СПИУ для получения выписки по идентификатору счета и идентификатору выписки."

            parameters:
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/accountId'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/statementId'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/page'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/fromBookingDateTime'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/toBookingDateTime'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-auth-date'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-customer-ip-address'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-interaction-id'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-customer-user-agent'

            responses:
                '200':
                    $ref: "#/components/responses/200GetAccountsaccountIdStatementsStatementId"
                '202':
                    $ref: '#/components/responses/202GetAccountsaccountIdStatementsStatementId'
                '400':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/400Error'
                '401':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/401Error'
                '403':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/403Error'
                '404':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/404Error'
                '405':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/405Error'
                '406':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/406Error'
                '429':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/429Error'
                '500':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/500Error'
                '501':
                    $ref: '#/components/responses/501Error'
                '502':
                    $ref: '#/components/responses/502Error'
                '503':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/503Error'

            security:
                - Authorization:
                      - iapi/accounts

    /accounts/{accountId}/balances:
        get:
            operationId: GetAccountsaccountIdBalances
            tags:
                - Балансы
            summary: "Баланс банковского счета"
            description: "Конечная точка используется для получения информации о балансе банковского счета с идентификатором accountId."

            parameters:
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/accountId'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-auth-date'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-customer-ip-address'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-interaction-id'
                - $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-customer-user-agent'

            responses:
                '200':
                    $ref: "#/components/responses/200GetAccountsaccountIdBalances"
                '400':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/400Error'
                '401':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/401Error'
                '403':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/403Error'
                '405':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/405Error'
                '406':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/406Error'
                '429':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/429Error'
                '500':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/500Error'
                '501':
                    $ref: '#/components/responses/501Error'
                '502':
                    $ref: '#/components/responses/502Error'
                '503':
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/503Error'

            security:
                - Authorization:
                      - iapi/accounts
# TODO implement later
#    /statements:
#        get:
#            operationId: GetStatements
#            tags:
#                - Выписки
#            summary: "Выписки по всем авторизованным счетам"
#            description: "Точка для получения выписок по всем авторизованным Пользователем счетам."
#
#            parameters:
#                -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/page'
#                -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/fromBookingDateTime'
#                -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/toBookingDateTime'
#                -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-auth-date'
#                -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-customer-ip-address'
#                -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-interaction-id'
#                -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-customer-user-agent'
#
#            responses:
#                '200':
#                    $ref: "https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/200GetStatements"
#                '400':
#                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/400Error'
#                '401':
#                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/401Error'
#                '403':
#                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/403Error'
#                '404':
#                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/404Error'
#                '405':
#                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/405Error'
#                '406':
#                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/406Error'
#                '429':
#                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/429Error'
#                '500':
#                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/500Error'
#                '501':
#                    $ref: '#/components/responses/501Error'
#                '502':
#                    $ref: '#/components/responses/502Error'
#                '503':
#                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/responses/503Error'
#
#            security:
#                -   Authorization:
#                        - iapi/accounts

components:
    responses:
        200GetParties:
            description: "Полный список сторонних поставщиков, доступных для подключения."
            content:
                application/json:
                    schema:
                        $ref: '#/components/schemas/PartyResponse'

        200GetAccounts:
            description: "Полный список счетов (с идентификаторами accountId), которые были авторизованы пользователем на стороне ППУ."
            content:
                application/json:
                    schema:
                        $ref: '#/components/schemas/AccountResponse'

        200GetAccountsaccountId:
            description: "Полный список счетов (с идентификаторами accountId), которые были авторизованы пользователем на стороне ППУ."
            content:
                application/json:
                    schema:
                        $ref: '#/components/schemas/AccountResponse'

        200GetStatementsAccountIdBulk:
            description: 'Массив индентификаторов выписок'
            content:
                application/json:
                    schema:
                        $ref: '#/components/schemas/StatementInitBulkResponse'
                    examples:
                        example:
                            $ref: '#/components/examples/StatementBulk'

        200GetAccountsaccountIdStatementsStatementId:
            description: ""
            content:
                application/json:
                    schema:
                        $ref: '#/components/schemas/StatementResponse'

        202GetAccountsaccountIdStatementsStatementId:
            description: 'Выписка ещё не готова'
            content:
                application/json:
                    schema:
                        $ref: '#/components/schemas/StatementNotReadyResponse'
                    examples:
                        example:
                            $ref: '#/components/examples/StatementNotReady'

        200GetAccountsaccountIdBalances:
            description: "Получение информации о балансе банковского счета с идентификаторов accountId"
            content:
                application/json:
                    schema:
                        $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/BalanceResponse'
                    examples:
                        example:
                            $ref: '#/components/examples/BalanceResponseExample1'

        501Error:
            description: 'Не реализовано.'
            headers:
                x-fapi-interaction-id:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-interaction-id'
            content:
                application/json:
                    schema:
                        $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/OBRUErrorResponse'

        502Error:
            description: 'Ошибка внешнего сервиса.'
            headers:
                x-fapi-interaction-id:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/parameters/x-fapi-interaction-id'
            content:
                application/json:
                    schema:
                        $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/OBRUErrorResponse'

    schemas:
        PartyResponse:
            $ref: '#/components/schemas/PartyComplexType'

        PartyComplexType:
            description: 'Массив объектов типа "Сторонний поставщик"'
            type: array
            items:
                $ref: '#/components/schemas/PartyModel'

        PartyModel:
            description: "Объект Сторонний поставщик"
            type: object
            additionalProperties: false
            properties:
                type:
                    description: >
                        Тип стороннего поставщика
                        
                        * `bank` - для ППУ
                        
                        * `service` - для СПИУ
                    type: string
                    enum: [ bank, service ]
                code:
                    description: "Символьный код стороны"
                    type: string
                    example: "blanc"
                    maxLength: 20
                name:
                    description: "Имя поставщика"
                    type: string
                    example: "Blanc"
                    maxLength: 50
                description:
                    type: string
                    example: "Бланк — российский цифровой банк, ориентированный на работу с предпринимателями"
                    maxLength: 512
            required:
                - type
                - code
                - name
                - description

        AccountResponse:
            type: object
            additionalProperties: false
            properties:
                Data:
                    $ref: '#/components/schemas/DataAccountResponseComplexType'

                Risk:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/RiskType'

                Links:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/LinksType'

                Meta:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/MetaType'

            required:
                - Data
                - Risk
                - Links
                - Meta
            minProperties: 4
            maxProperties: 4

        DataAccountResponseComplexType:
            description: ""
            type: object
            additionalProperties: false
            properties:
                Account:
                    type: array
                    items:
                        $ref: '#/components/schemas/AccountComplexType'
                    minItems: 0

        AccountComplexType:
            description: "Комплексный объект счета"
            type: object
            additionalProperties: false
            properties:
                accountId:
                    description: "Уникальный и неизменный идентификатор, используемый для идентификации ресурса 'accounts'"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/accountId'

                status:
                    description: "Статус счета в форме кода"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/AccountStatusStaticType'

                statusUpdateDateTime:
                    description: "Дата и время изменения статуса счета. Используется стандарт ISO8601"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/ISODateTime'

                currency:
                    description: "Валюта ведения счета. Используется стандарт ISO 4217"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/ActiveOrHistoricCurrencyCode'

                accountType:
                    description: "Тип счета (физическое или юридическое лицо)"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/AccountTypeStaticType'

                accountSubType:
                    description: "Подтип счета (классификация банковских продуктов)"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/AccountSubTypeStaticType'

                accountDescription:
                    type: string
                    maxLength: 35
                    description: "Детальное описание продукта, привязанного к счету"

                AccountDetails:
                    type: array
                    items:
                        $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/AccountDetailsComplexType'
                    description: "Подробная информация для идентификации счета"
                Owner:
                    description: "Информация о владельце счета"
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/Party'

                ServiceProvider:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/ServiceProviderComplexType'

                registrationDate:
                    type: string
                    description: 'Дата регистрации счёта'
                    pattern: '^\d{4}-\d{2}-\d{2}$'
                    example: '1970-01-01'

            required:
                - accountId
                - currency
                - accountType
                - accountSubType

        StatementInitBulkResponse:
            $ref: '#/components/schemas/StatementBulk'

        StatementBulk:
            description: 'Массив индентификаторов выписок'
            type: object
            properties:
                Data:
                    type: object
                    properties:
                        Statements:
                            type: array
                            items:
                                $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/StatementInitRespComplex'
                Risk:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/RiskType'
                Links:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/LinksType'
                Meta:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/MetaType'
            required:
                - Data
                - Risk
                - Links
                - Meta
            minProperties: 4
            maxProperties: 4

        StatementNotReadyResponse:
            $ref: '#/components/schemas/StatementNotReady'

        StatementNotReady:
            description: 'Объект не готовой выписки'
            type: object
            properties:
                statementId:
                    type: string
                    description: 'Идентификатор ресурса выписки'
                status:
                    type: string
                    enum:
                        - Created
                        - Processing
                        - Error
                        - Ready
                    description: 'Статус выписки'
            required:
                - statementId
                - status

        StatementResponse:
            type: object
            additionalProperties: false
            properties:
                Data:
                    $ref: '#/components/schemas/DataStatementResponseComplexType'

                Risk:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/RiskType'

                Links:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/LinksType'

                Meta:
                    $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/MetaType'

            required:
                - Data
                - Risk
                - Links
                - Meta
            minProperties: 4
            maxProperties: 4

        DataStatementResponseComplexType:
            description: "Контейнер для данных"
            type: object
            additionalProperties: false
            properties:
                Statement:
                    type: array
                    items:
                        $ref: '#/components/schemas/StatementComplexType'
                    minItems: 1

            required:
                - Statement

        StatementComplexType:
            description: ""
            type: object
            additionalProperties: false
            properties:
                accountId:
                    description: "Идентификатор ресурса счета"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/accountId'

                statementId:
                    description: "Идентификатор ресурса выписки"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/statementId'

                fromBookingDateTime:
                    description: "Дата и время начала выписки"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/ISODateTime'

                toBookingDateTime:
                    description: "Дата и время окончания выписки"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/ISODateTime'

                creationDateTime:
                    description: "Дата и время создания ресурса"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/ISODateTime'

                Transaction:
                    type: array
                    items:
                        $ref: '#/components/schemas/TransactionComplexType'
                    minItems: 0
                    description: ""

            required:
                - statementId
                - fromBookingDateTime
                - toBookingDateTime
                - creationDateTime

        TransactionComplexType:
            description: ""
            type: object
            additionalProperties: false
            properties:
                transactionId:
                    description: "Уникальный идентификатор транзакции"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/transactionId'

                creditDebitIndicator:
                    description: "Приход/Уход"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/CreditDebitIndicatorStaticType'

                status:
                    description: "Статус транзакции"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/TransactionStatusStaticType'

                documentNumber:
                    type: string
                    maxLength: 6
                    description: "Номер платежного документа"

                bookingDateTime:
                    description: "Дата и время, когда запись о транзакции публикуется на счете в бухгалтерской книге обслуживающей организации. Используется стандарт ISO8601"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/ISODateTime'

                valueDateTime:
                    description: "Дата и время, когда активы становятся доступными владельцу счета в случае ввода кредита или перестают быть доступными владельцу счета в случае ввода дебетовой транзакции. Используется стандарт ISO8601"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/ISODateTime'

                description:
                    type: string
                    maxLength: 300
                    description: "Назначение перевода денежных средств"

                Amount:
                    description: "Информация о сумме и валюте транзакции"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/AmountComplexType'

                DebtorParty:
                    description: "Информация о контрагенте в случае кредитной операции"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/PartyIdentificationComplexType'

                DebtorAccount:
                    description: "Идентификация счета плательщика, в случае кредитной операции"
                    allOf:
                        -   $ref: '#/components/schemas/CashAccountCompexType'

                DebtorAgent:
                    description: "Финансовое организация, обслуживающая счет плательщика"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/BranchAndFinancialInstitutionIdentificationComplexType'

                CreditorParty:
                    description: "Информация о контрагенте в случае дебетовой транзакции"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/PartyIdentificationComplexType'

                CreditorAccount:
                    description: "Идентификация счета получателя средств, в случае дебетовой транзакции"
                    allOf:
                        -   $ref: '#/components/schemas/CashAccountCompexType'

                CreditorAgent:
                    description: "Финансовое организация, обслуживающая счет получателя средств"
                    allOf:
                        -   $ref: 'https://api.openbankingrussia.ru/accounts-v1.2.1/accounts-v1.2.1.yaml#/components/schemas/BranchAndFinancialInstitutionIdentificationComplexType'

                TaxFields:
                    description: "Реквизиты налогового, таможенного или иного бюджетного платежа"
                    allOf:
                        - $ref: '#/components/schemas/TaxFieldsType'

            required:
                - creditDebitIndicator
                - status
                - bookingDateTime
                - Amount

        TaxFieldsType:
            description: "Реквизиты налогового, таможенного или иного бюджетного платежа"
            type: object
            additionalProperties: false
            properties:
                uip:
                    type: string
                    description: "Уникальный идентификатор платежа / Уникальный идентификатор начисления ( реквизит - 22 )"
                originatorStatus:
                    type: string
                    description: "Статус налогоплательщика (реквизит - 101)"
                kbk:
                    type: string
                    description: "Код бюджетной классификации (реквизит - 104)"
                oktmo:
                    type: string
                    description: "Код OKTMO (реквизит - 105)"
                base:
                    type: string
                    description: "Основание платежа (реквизит - 106)"
                documentNumber:
                    type: string
                    description: "Номер документа основания платежа (реквизит - 108)"
                documentDate:
                    type: string
                    description: "Дата документа основания платежа (реквизит - 109)"
                type:
                    type: string
                    description: "Тип налогового платежа (реквизит - 110)"
                field107:
                    type: string
                    description: "Налоговый период / код таможенного органа (реквизит - 107)"
            example:
                uip: "0"
                originatorStatus: "1"
                kbk: "18210102010011000000"
                oktmo: "1701000"
                base: "ТП"
                documentNumber: "123"
                documentDate: "31.10.2014"
                type: "ПН"
                field107: "ГД.00.2018"

        CashAccountCompexType:
            description: "Идентификация счета плательщика в случае кредитной операции"
            type: object
            additionalProperties: false
            properties:
                schemeName:
                    description: "Название схемы"
                    allOf:
                        -   $ref: '#/components/schemas/AccountIdentificationDynamicType'

                identification:
                    type: string
                    maxLength: 256
                    description: "Идентификатор счета"

            required:
                - schemeName
                - identification

        AccountIdentificationDynamicType:
            description: "Идентификатор счета"
            type: string
            enum:
                - RU.CBR.PAN
                - RU.CBR.CellphoneNumber
                - RU.CBR.BBAN
                - RU.CBR.Field.Missing

    examples:
        BalanceResponseExample1:
            value:
                Data:
                    Balance:
                        -   accountId: "11139"
                            Amount:
                                amount: "13430.00"
                                currency: "RUB"
                            CreditDebitIndicator: "Credit"
                            Type: "OpeningAvailable"
                            DateTime: "2019-09-15T14:33:07+00:00"
                            CreditLine:
                                Included: "true"
                                Amount:
                                    Amount: "4000.00"
                                    currency: "RUB"
                                Type: "Pre-Agreed"

                Risk: { }
                Links:
                    self: "https://api.alphabank.com/open-banking/v3.1/aisp/accounts/22289/balances/"
                Meta:
                    totalPages: "1"

        StatementBulk:
            value:
                Data:
                    Statements:
                        -   accountId: '1234'
                            statementId: '1234'
                            fromBookingDateTime: '2023-03-23T12:12:12+00:00'
                            toBookingDateTime: '2023-03-23T23:59:59+00:00'
                        -   accountId: '1234'
                            statementId: '5678'
                            fromBookingDateTime: '2023-03-24T00:00:00+00:00'
                            toBookingDateTime: '2023-03-24T23:23:23+00:00'
                Risk: { }
                Links:
                    self: 'https://bank.ru/open-banking/v3.1/aisp/statements/1234/bulk'
                Meta:
                    totalPages: 1

        StatementNotReady:
            value:
                statementId: 'statementId'
                status: 'Processing'

    securitySchemes:
        ThirdPartyAuth:
            scheme: Basic
            description: Используйте `client_id` / `client_secret` для авторизации
            type: oauth2
            flows:
                clientCredentials:
                    tokenUrl: /oauth/token
                    scopes:
                        iapi/third-parties: Получение списка сторон (ППУ и СПИУ)

        Authorization:
            type: oauth2
            flows:
                authorizationCode:
                    authorizationUrl: /oauth/authorize
                    tokenUrl: /oauth/token
                    scopes:
                        iapi/accounts: Доступ к информации о счете
