{
  "openapi": "3.0.3",
  "info": {
    "title": "invoice",
    "version": "1.0.1775813760260",
    "description": "Сервис invoice",
    "license": {
      "name": "CC BY-NC-ND 4.0",
      "url": "https://gitlab.infra.rtkit.dev/openapi/key/raw/main/LICENCE.md"
    }
  },
  "tags": [
    {
      "name": "invoice(auth)",
      "description": "Методы invoice. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "pay_method(auth)",
      "description": "Методы pay_method. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "invoice(internal public)",
      "description": "Внутренние методы. Не требуют авторизацию. Доступны только во внутренней сети"
    }
  ],
  "paths": {
    "/invoice/api/v1/invoice": {
      "post": {
        "summary": "Метод создания платежа.\nСоздание платежа в своей и внешней платежной системе.\nМетод доступен для: service",
        "operationId": "InvoiceService_CreateInvoice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1CreateInvoiceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1CreateInvoiceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1CreateInvoiceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1CreateInvoiceRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "invoice(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "invoice:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/invoice/api/v1/invoice/count": {
      "get": {
        "summary": "Метод получения количества платежей.\nДля master в параметр filter.user_id подставляется user_id из токена.\nМетод доступен для: admin, service, master, ltp_first",
        "operationId": "InvoiceService_GetInvoiceCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetInvoiceCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.userId",
            "description": "Идентификатор пользователя",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "filter.invoiceStatusType",
            "description": "Статус платежа\n\n - INVOICE_STATUS_TYPE_UNKNOWN: Значение не указано\n - PLANNED: Создан, ожидает подтверждения\n - PENDING: Ожидает оплаты\n - ERROR: Ошибка оплаты\n - PAID: Оплачен\n - CANCELLED: Отменен",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PLANNED",
                "PENDING",
                "ERROR",
                "PAID",
                "CANCELLED"
              ]
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "invoice(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "invoice:read",
              "invoice:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/invoice/api/v1/invoice/list": {
      "get": {
        "summary": "Метод получения списка платежей.\nДля master доступно получение только собственных платежей, если параметр filter.user_id передан и не совпадает с user_id из токена, возвращается ошибка доступа.\nМетод доступен для: admin, service, master, ltp_first",
        "operationId": "InvoiceService_GetInvoiceList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetInvoiceListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetInvoiceListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetInvoiceListResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.userId",
            "description": "Идентификатор пользователя",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "filter.invoiceStatusType",
            "description": "Статус платежа\n\n - INVOICE_STATUS_TYPE_UNKNOWN: Значение не указано\n - PLANNED: Создан, ожидает подтверждения\n - PENDING: Ожидает оплаты\n - ERROR: Ошибка оплаты\n - PAID: Оплачен\n - CANCELLED: Отменен",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PLANNED",
                "PENDING",
                "ERROR",
                "PAID",
                "CANCELLED"
              ]
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: PAID_AT\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - PAID_AT: По дате оплаты\n - CREATED_AT: По дате создания",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "PAID_AT",
                "CREATED_AT"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\n# По умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\n# Диапазон: 0..2147483647",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "invoice(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "invoice:read",
              "invoice:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/invoice/api/v1/invoice/{invoiceId}": {
      "get": {
        "summary": "Метод получения платежа.\nДля master доступно получение платежа только с user_id из токена.\nМетод доступен для: admin, service, master",
        "operationId": "InvoiceService_GetInvoice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetInvoiceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetInvoiceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetInvoiceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "invoiceId",
            "description": "Идентификатор платежа в Ключе.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "invoice(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "invoice:read",
              "invoice:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/invoice/api/v1/pay_method/bankcard": {
      "post": {
        "summary": "Метод добавления способа оплаты с типом \"Банковская карта\".\nДобавляется банковская карта для пользователя из токена.\nМетод доступен для: master",
        "operationId": "PayMethodService_PostPayMethodBankcard",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostPayMethodBankcardResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostPayMethodBankcardResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostPayMethodBankcardResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostPayMethodBankcardRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "pay_method(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "invoice:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/invoice/api/v1/pay_method/list": {
      "get": {
        "summary": "Метод получения списка способов оплаты.\nДля роли master возвращаются способы оплаты для пользователя из токена.\nДля роли service возвращаются способы оплаты пользователя, указанного в параметре запроса.\nМетод доступен для: service, master",
        "operationId": "PayMethodService_GetPayMethodList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetPayMethodListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "userId",
            "description": "Идентификатор пользователя",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "pay_method(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "invoice:read",
              "invoice:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/invoice/api/v1/pay_method/sbp": {
      "post": {
        "summary": "Метод добавления способа оплаты с типом \"СБП\".\nДобавляется СБП для пользователя из токена.\nМетод доступен для: master",
        "operationId": "PayMethodService_PostPayMethodSbp",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostPayMethodSbpResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostPayMethodSbpResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostPayMethodSbpResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostPayMethodSbpRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "pay_method(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "invoice:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/invoice/api/v1/pay_method/{payMethodId}": {
      "delete": {
        "summary": "Метод удаления способа оплаты.\nУдаляются способы оплаты для пользователя из токена.\nМетод доступен для: master",
        "operationId": "PayMethodService_DeletePayMethod",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeletePayMethodResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "payMethodId",
            "description": "Идентификатор способа оплаты",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "pay_method(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "invoice:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/invoice/api/v1/pay_method/{payMethodId}/default": {
      "post": {
        "summary": "Метод установки способа оплаты по умолчанию.\nИзменяются способы оплаты для пользователя из токена.\nМетод доступен для: master",
        "operationId": "PayMethodService_PostPayMethodDefault",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostPayMethodDefaultResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostPayMethodDefaultResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostPayMethodDefaultResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "payMethodId",
            "description": "Идентификатор способа оплаты",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "Запрос установки способа оплаты по умолчанию"
              }
            }
          },
          "required": true
        },
        "tags": [
          "pay_method(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "invoice:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/invoice/internal/api/v1/invoice/confirm": {
      "post": {
        "summary": "Метод подтверждения платежа (вызывается со стороны внешней системы).\nНе требует авторизации",
        "operationId": "InvoiceService_PostInvoiceConfirm",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostInvoiceConfirmResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostInvoiceConfirmRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "invoice(internal public)"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ErrorMissingUserContacts": {
        "type": "object",
        "title": "Должно быть означено поле phone_number, либо поле email"
      },
      "ExternalErrorExternalSystemError": {
        "type": "object",
        "title": "Запрос к внешней системе вернул ошибку или прекращен по таймауту"
      },
      "InvoiceExternalError": {
        "type": "object",
        "properties": {
          "externalSystemError": {
            "title": "Запрос к внешней системе вернул ошибку или прекращен по таймауту",
            "allOf": [
              {
                "$ref": "#/components/schemas/ExternalErrorExternalSystemError"
              }
            ]
          }
        },
        "title": "Ошибки внешней системы"
      },
      "InvoiceInvoiceStatusType": {
        "type": "string",
        "enum": [
          "PLANNED",
          "PENDING",
          "ERROR",
          "PAID",
          "CANCELLED"
        ],
        "description": "- INVOICE_STATUS_TYPE_UNKNOWN: Значение не указано\n - PLANNED: Создан, ожидает подтверждения\n - PENDING: Ожидает оплаты\n - ERROR: Ошибка оплаты\n - PAID: Оплачен\n - CANCELLED: Отменен",
        "title": "Справочник типов статусов оплаты счёта"
      },
      "InvoicePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "InvoicePagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "PAID_AT",
          "CREATED_AT"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - PAID_AT: По дате оплаты\n - CREATED_AT: По дате создания",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "InvoicePayInterfaceType": {
        "type": "string",
        "enum": [
          "GUI",
          "M2M"
        ],
        "description": "- PAY_INTERFACE_TYPE_UNKNOWN: Значение не указано\n - GUI: Оплата через интерфейс предпроцессинга\n - M2M: Оплата с использованием ранее созданного способа платежа, настроенного по умолчанию",
        "title": "Справочник методов платежа"
      },
      "InvoicePaywayType": {
        "type": "string",
        "enum": [
          "BANK_CARD",
          "SBP",
          "SBER_PAY"
        ],
        "description": "- PAYWAY_TYPE_UNKNOWN: Значение не указано\n - BANK_CARD: Банковская карта\n - SBP: Сервис быстрых платежей\n - SBER_PAY: Связка Сбербанка",
        "title": "Справочник типов платежных средств"
      },
      "InvoicePosition": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор позиции.\n# Тип: Guid"
          },
          "invoiceId": {
            "type": "string",
            "title": "Идентификатор платежа.\n# Тип: Guid"
          },
          "title": {
            "type": "string",
            "title": "Название позиции"
          },
          "category": {
            "type": "string",
            "title": "Категория позиции (='subscription')"
          },
          "amount": {
            "type": "number",
            "format": "float",
            "title": "Цена в рублях.\nЧисло должно быть больше 0"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания позиции платежа.\n# Тип: DateTime",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата обновления позиции платежа.\n# Тип: DateTime",
            "readOnly": true
          },
          "mrfId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор МРФ"
          },
          "rfId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор РФ"
          },
          "instanceId": {
            "type": "string",
            "title": "Идентификатор экземпляра оплачиваемой подписки.\n# Тип: Guid"
          },
          "offeringId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор предложения оплачиваемой подписки"
          },
          "dueDateAt": {
            "type": "string",
            "format": "date-time",
            "title": "Срок окончания оплачиваемого периода"
          },
          "svcTypeId": {
            "type": "string",
            "title": "Идентификатор получателя платежа"
          },
          "isDiscount": {
            "type": "boolean",
            "title": "Признак скидки"
          }
        },
        "title": "Позиция счета",
        "required": [
          "invoiceId",
          "title",
          "category",
          "amount",
          "mrfId",
          "rfId",
          "instanceId",
          "offeringId"
        ]
      },
      "InvoiceSavingError": {
        "type": "object",
        "properties": {
          "invoiceAlreadyExists": {
            "title": "У пользователя уже есть платеж со статусом PENDING",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorInvoiceAlreadyExists"
              }
            ]
          }
        },
        "title": "Ошибка сохранения.\nЭти проверки выполняются при работе с базой данных и сторонними сервисами"
      },
      "PayMethodStatusType": {
        "type": "string",
        "enum": [
          "VALID",
          "EXPIRED",
          "BLOCKED"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - VALID: Исправный\n - EXPIRED: Истекший\n - BLOCKED: Заблокированный",
        "title": "Статус способа оплаты"
      },
      "PostInvoiceConfirmRequestCard": {
        "type": "object",
        "properties": {
          "esppCardId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор платежного средства во внешней системы.\nВозвращается в случае успешной привязки БК к УЗ"
          },
          "cardNum": {
            "type": "string",
            "title": "Номер платежного средства.\nМаскированный номер карты. Например: 123456******7890"
          },
          "cardType": {
            "type": "string",
            "title": "Тип банковской карты"
          },
          "bankName": {
            "type": "string",
            "title": "Банк-эмитент.\nНаименование банка-эмитента. Процессинг может вернуть значение \"НЕ ЗАДАВАЛСЯ\".\nВ этом случае рекомендуется не отображать эту информацию для пользователя"
          }
        },
        "title": "Структура с информацией о карте плательщика"
      },
      "SavingErrorInvoiceAlreadyExists": {
        "type": "object",
        "title": "У пользователя уже есть платеж со статусом PENDING"
      },
      "protobufAny": {
        "type": "object",
        "properties": {
          "@type": {
            "type": "string"
          }
        },
        "additionalProperties": {},
        "title": "Произвольный JSON"
      },
      "rpcStatus": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          },
          "details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/protobufAny"
            }
          }
        },
        "title": "Ошибка транспортного слоя"
      },
      "v1CreateInvoiceRequest": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор пользователя"
          },
          "positions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoicePosition"
            },
            "title": "Позиция счета"
          },
          "payInterfaceType": {
            "title": "Метод платежа",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoicePayInterfaceType"
              }
            ]
          },
          "paywayType": {
            "title": "Способ оплаты.\nПо умолчанию: BANK_CARD",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoicePaywayType"
              }
            ]
          },
          "returnUrl": {
            "type": "string",
            "title": "Ссылка для перехода после оплаты.\nЕсли не передан подставится значение по умолчанию"
          },
          "phoneNumber": {
            "type": "string",
            "title": "Номер телефона.\nДолжно быть означено поле phone_number, либо поле email"
          },
          "email": {
            "type": "string",
            "title": "Электронная почта.\nДолжно быть означено поле phone_number, либо поле email"
          },
          "title": {
            "type": "string",
            "title": "Описание платежа.\nПо умолчанию подставляется \"Счёт от {DD.MM.YYYY}г.\""
          }
        },
        "title": "Запрос на создание платежа",
        "required": [
          "userId",
          "positions",
          "payInterfaceType"
        ]
      },
      "v1CreateInvoiceResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1CreateInvoiceResponseError"
              }
            ]
          },
          "data": {
            "title": "Платеж",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Invoice"
              }
            ]
          }
        },
        "title": "Ответ на запрос создание платежа"
      },
      "v1CreateInvoiceResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "missingUserContacts": {
            "title": "Должно быть означено поле phone_number, либо поле email",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorMissingUserContacts"
              }
            ]
          },
          "external": {
            "title": "Ошибки внешней системы",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoiceExternalError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoiceSavingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1DeletePayMethodResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления способа оплаты"
      },
      "v1GetInvoiceCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Количество"
          }
        },
        "title": "Ответ на запрос получения количества платежей"
      },
      "v1GetInvoiceListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Invoice"
            },
            "title": "Платежи"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetInvoiceListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка платежей"
      },
      "v1GetInvoiceListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на получение списка платежей"
      },
      "v1GetInvoiceResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetInvoiceResponseError"
              }
            ]
          },
          "data": {
            "title": "Платеж",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Invoice"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения платежа"
      },
      "v1GetInvoiceResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1GetPayMethodListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1PayMethod"
            },
            "title": "Способы оплаты"
          }
        },
        "title": "Ответ на запрос получения списка способов оплаты"
      },
      "v1Invoice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор платежа.\n# Тип: Guid"
          },
          "title": {
            "type": "string",
            "title": "Описание платежа"
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор пользователя"
          },
          "invoiceStatusType": {
            "title": "Статус платежа",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoiceInvoiceStatusType"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания платежа.\n# Тип: DateTime"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата обновления платежа.\n# Тип: DateTime"
          },
          "positions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoicePosition"
            },
            "title": "Позиция счета"
          },
          "payInterfaceType": {
            "title": "Метод платежа",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoicePayInterfaceType"
              }
            ]
          },
          "paywayType": {
            "title": "Способ оплаты",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoicePaywayType"
              }
            ]
          },
          "statusChangedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата изменения статуса платежа.\n# Тип: DateTime"
          },
          "paidAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата платежа.\n# Тип: DateTime"
          },
          "payUrl": {
            "type": "string",
            "title": "Платежная ссылка"
          },
          "paidByCardMasked": {
            "type": "string",
            "title": "Маскированный номер карты при платеже"
          },
          "paidByCardEsppId": {
            "type": "string",
            "title": "Идентификатор платежного средства в внешней системы"
          },
          "cardType": {
            "title": "Тип банковской карты",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1InvoiceCardType"
              }
            ]
          },
          "esppReqStatus": {
            "type": "integer",
            "format": "int32",
            "title": "Код ошибки внешней системы"
          },
          "esppReqUserMsg": {
            "type": "string",
            "title": "Комментарий к статусу платежа из внешней системы"
          },
          "esppInvoiceId": {
            "type": "string",
            "title": "Уникальный номер транзакции в внешней системы"
          },
          "phoneNumber": {
            "type": "string",
            "title": "Номер телефона"
          },
          "email": {
            "type": "string",
            "title": "Электронная почта"
          }
        },
        "title": "Выставленный счёт",
        "required": [
          "id",
          "title",
          "userId",
          "invoiceStatusType",
          "createdAt",
          "updatedAt",
          "positions"
        ]
      },
      "v1InvoiceCardType": {
        "type": "string",
        "enum": [
          "VISA",
          "EC_MC",
          "DCL",
          "JCB",
          "AMEX",
          "MIR"
        ],
        "description": "- CARD_TYPE_UNKNOWN: Значение не указано\n - VISA: Карта VISA\n - EC_MC: Карта EuroCard/MasterCard\n - DCL: Карта DinersClub\n - JCB: Карта JCB\n - AMEX: Карта American Express\n - MIR: Платежная система \"Мир\"",
        "title": "Справочник банковских карт"
      },
      "v1InvoiceFilter": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор пользователя"
          },
          "invoiceStatusType": {
            "title": "Статус платежа",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoiceInvoiceStatusType"
              }
            ]
          }
        },
        "title": "Фильтр инвойсов"
      },
      "v1InvoicePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: PAID_AT",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoicePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoicePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1PayMethod": {
        "type": "object",
        "properties": {
          "payMethodId": {
            "type": "string",
            "title": "Идентификатор способа оплаты"
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор пользователя"
          },
          "type": {
            "title": "Тип способа оплаты",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PayMethodType"
              }
            ]
          },
          "isActive": {
            "type": "boolean",
            "title": "Признак активной записи"
          },
          "isDefault": {
            "type": "boolean",
            "title": "Способ оплаты по умолчанию"
          },
          "payMethodContact": {
            "type": "string",
            "title": "Мобильный телефон, на который будут отправляться уведомления"
          },
          "payMethodDescription": {
            "type": "string",
            "title": "Описание способа оплаты"
          },
          "payMethodAlias": {
            "type": "string",
            "title": "Псевдоним способа оплаты"
          },
          "cardType": {
            "title": "Тип банковской карты",
            "readOnly": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PayMethodCardType"
              }
            ]
          },
          "maskedNum": {
            "type": "string",
            "title": "Маскированный номер карты или идентификатора привязки счета СБП",
            "readOnly": true
          },
          "bankName": {
            "type": "string",
            "title": "Наименование банка",
            "readOnly": true
          },
          "isAuth": {
            "type": "boolean",
            "title": "Признак авторизации БК",
            "readOnly": true
          },
          "statusType": {
            "title": "Статус способа оплаты",
            "readOnly": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/PayMethodStatusType"
              }
            ]
          },
          "registerAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата регистрации способа оплаты.\n# Тип: DateTime",
            "readOnly": true
          }
        },
        "title": "Способ оплаты",
        "required": [
          "payMethodId",
          "userId",
          "type",
          "isActive",
          "isDefault"
        ]
      },
      "v1PayMethodCardType": {
        "type": "string",
        "enum": [
          "VISA",
          "EC_MC",
          "DCL",
          "JCB",
          "AMEX",
          "MIR"
        ],
        "description": "- CARD_TYPE_UNKNOWN: Значение не указано\n - VISA: Карта VISA\n - EC_MC: Карта EuroCard/MasterCard\n - DCL: Карта DinersClub\n - JCB: Карта JCB\n - AMEX: Карта American Express\n - MIR: Платежная система \"Мир\"",
        "title": "Справочник типов банковских карт"
      },
      "v1PayMethodType": {
        "type": "string",
        "enum": [
          "BANK_CARD",
          "SBP",
          "SBER_BIND"
        ],
        "description": "- TYPE_UNKNOWN: Значение не указано\n - BANK_CARD: Банковская карта\n - SBP: Сервис быстрых платежей\n - SBER_BIND: Связка Сбербанка",
        "title": "Справочник типов способов оплаты"
      },
      "v1PostInvoiceConfirmRequest": {
        "type": "object",
        "properties": {
          "srcPayId": {
            "type": "string",
            "title": "Идентификатор платежа в Ключе"
          },
          "esppPayId": {
            "type": "string",
            "title": "Идентификатор платежа во внешней системе"
          },
          "payStatus": {
            "type": "integer",
            "format": "int32",
            "title": "Статус платежа из внешней системы"
          },
          "reqType": {
            "type": "string",
            "title": "Тип запроса.\nДолжно иметь значение \"confirmPayment\""
          },
          "amount": {
            "type": "number",
            "format": "float",
            "title": "Сумма платежа в минимальных единицах валюты"
          },
          "currency": {
            "type": "string",
            "title": "Код валюты платежа"
          },
          "payMethod": {
            "type": "string",
            "title": "Код способа оплаты"
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "title": "Дата регистрации платежа.\n# Тип: DateTime"
          },
          "reqNote": {
            "type": "string",
            "title": "Комментарий или сообщение об ошибке"
          },
          "reqUserMsg": {
            "type": "string",
            "title": "Сообщение, отображаемое пользователю"
          },
          "payTime": {
            "type": "string",
            "format": "date-time",
            "title": "Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась"
          },
          "abandonTime": {
            "type": "string",
            "format": "date-time",
            "title": "Время фактической отмены оплаты.\nВремя фактической отмены оплаты на стороне Процессинга.\nВозвращается, если отмена оплаты состоялась"
          },
          "card": {
            "title": "Структура с информацией о карте плательщика.\nПередаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostInvoiceConfirmRequestCard"
              }
            ]
          }
        },
        "title": "Запрос на подтверждение платежа",
        "required": [
          "srcPayId",
          "esppPayId",
          "payStatus",
          "reqType"
        ]
      },
      "v1PostInvoiceConfirmResponse": {
        "type": "object",
        "title": "Ответ на запрос подтверждения платежа"
      },
      "v1PostPayMethodBankcardRequest": {
        "type": "object",
        "properties": {
          "urlReturnOk": {
            "type": "string",
            "title": "URL для переадресации абонента в случае успешной регистрации карты"
          },
          "urlReturnNo": {
            "type": "string",
            "title": "URL для переадресации абонента в случае неуспешной регистрации карты"
          }
        },
        "title": "Запрос на добавления способа оплаты с типом \"Банковская карта\"",
        "required": [
          "urlReturnOk"
        ]
      },
      "v1PostPayMethodBankcardResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostPayMethodBankcardResponseError"
              }
            ]
          },
          "data": {
            "title": "Данные регистрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostPayMethodBankcardResponseRegisterData"
              }
            ]
          }
        },
        "title": "Ответ на запрос добавления способа оплаты с типом \"Банковская карта\""
      },
      "v1PostPayMethodBankcardResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1PostPayMethodBankcardResponseRegisterData": {
        "type": "object",
        "properties": {
          "reqId": {
            "type": "string",
            "title": "Идентификатор запроса на регистрацию"
          },
          "urlRegistration": {
            "type": "string",
            "title": "Ссылка для переадресации клиента для продолжения регистрации"
          }
        },
        "title": "Данные регистрации"
      },
      "v1PostPayMethodDefaultResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostPayMethodDefaultResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос установки способа оплаты по умолчанию"
      },
      "v1PostPayMethodDefaultResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1PostPayMethodSbpRequest": {
        "type": "object",
        "properties": {
          "urlReturnOk": {
            "type": "string",
            "title": "URL для переадресации абонента в случае успешной регистрации карты"
          },
          "urlReturnNo": {
            "type": "string",
            "title": "URL для переадресации абонента в случае неуспешной регистрации карты"
          }
        },
        "title": "Запрос на добавления способа оплаты с типом \"СБП\"",
        "required": [
          "urlReturnOk"
        ]
      },
      "v1PostPayMethodSbpResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostPayMethodSbpResponseError"
              }
            ]
          },
          "data": {
            "title": "Данные регистрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostPayMethodSbpResponseRegisterData"
              }
            ]
          }
        },
        "title": "Ответ на запрос добавления способа оплаты с типом \"СБП\""
      },
      "v1PostPayMethodSbpResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1PostPayMethodSbpResponseRegisterData": {
        "type": "object",
        "properties": {
          "reqId": {
            "type": "string",
            "title": "Идентификатор запроса на регистрацию"
          },
          "urlRegistration": {
            "type": "string",
            "title": "Ссылка для переадресации клиента для продолжения регистрации"
          },
          "sbpPayload": {
            "type": "string",
            "title": "Содержимое QR кода для регистрации платежного СБП-токена"
          }
        },
        "title": "Данные регистрации"
      },
      "v1ValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования прото"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибка валидации",
        "required": [
          "path",
          "message"
        ]
      }
    },
    "securitySchemes": {
      "bearerHttp": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "oauth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://oauth2-staging.k8s.key.rt.ru/oauth2/token",
            "scopes": {
              "invoice:edit": "Предоставляет полный доступ в сервис invoice",
              "invoice:read": "Предоставляет доступ на чтение данных из сервиса invoice"
            }
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "https://keyapis-staging.k8s.key.rt.ru",
      "description": "staging"
    },
    {
      "url": "https://{feature}.k8s.key.rt.ru/",
      "description": "https feature",
      "variables": {
        "feature": {
          "default": "",
          "description": "Feature name"
        }
      }
    },
    {
      "url": "http://{feature}.k8s.key.rt.ru/",
      "description": "http feature",
      "variables": {
        "feature": {
          "default": "",
          "description": "Feature name"
        }
      }
    },
    {
      "url": "https://localhost:3001",
      "description": "localhost"
    },
    {
      "url": "https://keyapis.key.rt.ru",
      "description": "production"
    }
  ]
}