From 2e5cc1fb2b15f9b6be3eb22490189be7afc83e77 Mon Sep 17 00:00:00 2001 From: Anton Belyaev Date: Wed, 26 Jul 2017 19:06:15 +0300 Subject: [PATCH] Introduce invoice templates (#79) * introduce invoice templates * refactor authorization description * clarify auth description for Invoices operations --- spec/definitions/AccessToken.yaml | 7 ++ spec/definitions/CostAmountRange.yaml | 15 +++ spec/definitions/Invoice.yaml | 3 + spec/definitions/InvoiceAccessToken.yaml | 8 -- spec/definitions/InvoiceAndToken.yaml | 9 ++ spec/definitions/InvoiceParams.yaml | 4 +- .../InvoiceParamsWithTemplate.yaml | 18 +++ spec/definitions/InvoiceSearchResult.yaml | 7 +- spec/definitions/InvoiceTemplate.yaml | 32 ++++++ spec/definitions/InvoiceTemplateAndToken.yaml | 9 ++ spec/definitions/InvoiceTemplateCost.yaml | 10 ++ .../definitions/InvoiceTemplateCostFixed.yaml | 21 ++++ .../definitions/InvoiceTemplateCostRange.yaml | 16 +++ .../definitions/InvoiceTemplateCostUnlim.yaml | 3 + .../InvoiceTemplateCreateParams.yaml | 28 +++++ .../InvoiceTemplateUpdateParams.yaml | 19 +++ spec/definitions/LifetimeInterval.yaml | 19 +++ .../analytics@shops@{shopID}@invoices.yaml | 2 +- spec/paths/processing@invoice-templates.yaml | 20 ++++ ...invoice-templates@{invoiceTemplateID}.yaml | 55 +++++++++ ...emplates@{invoiceTemplateID}@invoices.yaml | 23 ++++ spec/paths/processing@invoices.yaml | 2 +- ...ng@invoices@{invoiceID}@access_tokens.yaml | 17 +-- spec/swagger.yaml | 108 +++++++++++++++--- 24 files changed, 406 insertions(+), 49 deletions(-) create mode 100644 spec/definitions/AccessToken.yaml create mode 100644 spec/definitions/CostAmountRange.yaml delete mode 100644 spec/definitions/InvoiceAccessToken.yaml create mode 100644 spec/definitions/InvoiceAndToken.yaml create mode 100644 spec/definitions/InvoiceParamsWithTemplate.yaml create mode 100644 spec/definitions/InvoiceTemplate.yaml create mode 100644 spec/definitions/InvoiceTemplateAndToken.yaml create mode 100644 spec/definitions/InvoiceTemplateCost.yaml create mode 100644 spec/definitions/InvoiceTemplateCostFixed.yaml create mode 100644 spec/definitions/InvoiceTemplateCostRange.yaml create mode 100644 spec/definitions/InvoiceTemplateCostUnlim.yaml create mode 100644 spec/definitions/InvoiceTemplateCreateParams.yaml create mode 100644 spec/definitions/InvoiceTemplateUpdateParams.yaml create mode 100644 spec/definitions/LifetimeInterval.yaml create mode 100644 spec/paths/processing@invoice-templates.yaml create mode 100644 spec/paths/processing@invoice-templates@{invoiceTemplateID}.yaml create mode 100644 spec/paths/processing@invoice-templates@{invoiceTemplateID}@invoices.yaml diff --git a/spec/definitions/AccessToken.yaml b/spec/definitions/AccessToken.yaml new file mode 100644 index 0000000..fd0d0d1 --- /dev/null +++ b/spec/definitions/AccessToken.yaml @@ -0,0 +1,7 @@ +type: object +required: + - payload +properties: + payload: + description: Содержимое токена для доступа к ресурсу. + type: string diff --git a/spec/definitions/CostAmountRange.yaml b/spec/definitions/CostAmountRange.yaml new file mode 100644 index 0000000..6aedc8f --- /dev/null +++ b/spec/definitions/CostAmountRange.yaml @@ -0,0 +1,15 @@ +type: object +required: + - upperBound + - lowerBound +properties: + upperBound: + description: Верхняя (включительная) граница стоимости товаров или услуг. + type: integer + format: int64 + minimum: 1 + lowerBound: + description: Нижняя (включительная) граница стоимости товаров или услуг. + type: integer + format: int64 + minimum: 1 diff --git a/spec/definitions/Invoice.yaml b/spec/definitions/Invoice.yaml index d7c942b..ed1fa55 100644 --- a/spec/definitions/Invoice.yaml +++ b/spec/definitions/Invoice.yaml @@ -50,3 +50,6 @@ allOf: description: Описание предлагаемых товаров или услуг type: string maxLength: 1000 + invoiceTemplateID: + description: Идентификатор шаблона (для инвойсов, созданных по шаблону). + type: string diff --git a/spec/definitions/InvoiceAccessToken.yaml b/spec/definitions/InvoiceAccessToken.yaml deleted file mode 100644 index 0e5fc02..0000000 --- a/spec/definitions/InvoiceAccessToken.yaml +++ /dev/null @@ -1,8 +0,0 @@ -type: object -required: - - payload -properties: - payload: - description: | - Содержимое токена для доступа - type: string diff --git a/spec/definitions/InvoiceAndToken.yaml b/spec/definitions/InvoiceAndToken.yaml new file mode 100644 index 0000000..8f9d7ff --- /dev/null +++ b/spec/definitions/InvoiceAndToken.yaml @@ -0,0 +1,9 @@ +type: object +required: + - invoice + - invoiceAccessToken +properties: + invoice: + $ref: '#/definitions/Invoice' + invoiceAccessToken: + $ref: '#/definitions/AccessToken' diff --git a/spec/definitions/InvoiceParams.yaml b/spec/definitions/InvoiceParams.yaml index ca9d8cd..a064ed3 100644 --- a/spec/definitions/InvoiceParams.yaml +++ b/spec/definitions/InvoiceParams.yaml @@ -1,11 +1,11 @@ type: object required: - shopID - - product - - dueDate - amount - currency - metadata + - dueDate + - product properties: shopID: description: Идентификатор магазина diff --git a/spec/definitions/InvoiceParamsWithTemplate.yaml b/spec/definitions/InvoiceParamsWithTemplate.yaml new file mode 100644 index 0000000..5538722 --- /dev/null +++ b/spec/definitions/InvoiceParamsWithTemplate.yaml @@ -0,0 +1,18 @@ +type: object +properties: + amount: + description: | + Стоимость предлагаемых товаров или услуг, в минорных денежных единицах, + например в копейках в случае указания российских рублей в качестве валюты. + type: integer + format: int64 + minimum: 1 + currency: + description: | + Валюта, символьный код согласно + [ISO 4217](http://www.iso.org/iso/home/standards/currency_codes.htm). + type: string + pattern: '^[A-Z]{3}$' + metadata: + description: 'Метаданные, которые необходимо связать с инвойсом' + type: object diff --git a/spec/definitions/InvoiceSearchResult.yaml b/spec/definitions/InvoiceSearchResult.yaml index 3eb86de..6ada63b 100644 --- a/spec/definitions/InvoiceSearchResult.yaml +++ b/spec/definitions/InvoiceSearchResult.yaml @@ -28,11 +28,8 @@ allOf: format: date-time amount: description: > - Стоимость предлагаемых товаров или услуг, в минорных денежных - единицах, - - например в копейках в случае указания российских рублей в качестве - валюты. + Стоимость предлагаемых товаров или услуг, в минорных денежных единицах, + например в копейках в случае указания российских рублей в качестве валюты. type: integer format: int64 minimum: 1 diff --git a/spec/definitions/InvoiceTemplate.yaml b/spec/definitions/InvoiceTemplate.yaml new file mode 100644 index 0000000..65b7ed9 --- /dev/null +++ b/spec/definitions/InvoiceTemplate.yaml @@ -0,0 +1,32 @@ +type: object +required: + - id + - shopID + - product + - lifetime + - cost +properties: + id: + description: Идентификатор шаблона инвойса + type: string + shopID: + description: Идентификатор магазина + type: string + maxLength: 40 + product: + description: Наименование предлагаемых товаров или услуг + type: string + maxLength: 100 + description: + description: Описание предлагаемых товаров или услуг + type: string + maxLength: 1000 + lifetime: + $ref: '#/definitions/LifetimeInterval' + cost: + $ref: '#/definitions/InvoiceTemplateCost' + metadata: + description: > + Метаданные, которые будут связаны с инвойсом, созданным по шаблону, в + случае, если иные метаданные не указаны в запросе на создание инвойса. + type: object diff --git a/spec/definitions/InvoiceTemplateAndToken.yaml b/spec/definitions/InvoiceTemplateAndToken.yaml new file mode 100644 index 0000000..5276268 --- /dev/null +++ b/spec/definitions/InvoiceTemplateAndToken.yaml @@ -0,0 +1,9 @@ +type: object +required: + - invoiceTemplate + - invoiceTemplateAccessToken +properties: + invoiceTemplate: + $ref: '#/definitions/InvoiceTemplate' + invoiceTemplateAccessToken: + $ref: '#/definitions/AccessToken' diff --git a/spec/definitions/InvoiceTemplateCost.yaml b/spec/definitions/InvoiceTemplateCost.yaml new file mode 100644 index 0000000..bc118bc --- /dev/null +++ b/spec/definitions/InvoiceTemplateCost.yaml @@ -0,0 +1,10 @@ +type: object +discriminator: invoiceTemplateCostType +description: | + Ограничения на стоимость товаров и услуг для инвойсов, генерируемых по + шаблону. +required: + - invoiceTemplateCostType +properties: + invoiceTemplateCostType: + type: string diff --git a/spec/definitions/InvoiceTemplateCostFixed.yaml b/spec/definitions/InvoiceTemplateCostFixed.yaml new file mode 100644 index 0000000..60fe41b --- /dev/null +++ b/spec/definitions/InvoiceTemplateCostFixed.yaml @@ -0,0 +1,21 @@ +type: object +allOf: + - $ref: '#/definitions/InvoiceTemplateCost' + - type: object + required: + - currency + - amount + properties: + currency: + description: | + Валюта, символьный код согласно + [ISO 4217](http://www.iso.org/iso/home/standards/currency_codes.htm). + type: string + pattern: '^[A-Z]{3}$' + amount: + description: | + Стоимость предлагаемых товаров или услуг, в минорных денежных единицах, + например в копейках в случае указания российских рублей в качестве валюты. + type: integer + format: int64 + minimum: 1 diff --git a/spec/definitions/InvoiceTemplateCostRange.yaml b/spec/definitions/InvoiceTemplateCostRange.yaml new file mode 100644 index 0000000..34fac43 --- /dev/null +++ b/spec/definitions/InvoiceTemplateCostRange.yaml @@ -0,0 +1,16 @@ +type: object +allOf: + - $ref: '#/definitions/InvoiceTemplateCost' + - type: object + required: + - currency + - range + properties: + currency: + description: | + Валюта, символьный код согласно + [ISO 4217](http://www.iso.org/iso/home/standards/currency_codes.htm). + type: string + pattern: '^[A-Z]{3}$' + range: + $ref: '#/definitions/CostAmountRange' diff --git a/spec/definitions/InvoiceTemplateCostUnlim.yaml b/spec/definitions/InvoiceTemplateCostUnlim.yaml new file mode 100644 index 0000000..1b9b635 --- /dev/null +++ b/spec/definitions/InvoiceTemplateCostUnlim.yaml @@ -0,0 +1,3 @@ +type: object +allOf: + - $ref: '#/definitions/InvoiceTemplateCost' diff --git a/spec/definitions/InvoiceTemplateCreateParams.yaml b/spec/definitions/InvoiceTemplateCreateParams.yaml new file mode 100644 index 0000000..001f1fa --- /dev/null +++ b/spec/definitions/InvoiceTemplateCreateParams.yaml @@ -0,0 +1,28 @@ +type: object +required: + - shopID + - product + - lifetime + - cost +properties: + shopID: + description: Идентификатор магазина + type: string + maxLength: 40 + product: + description: Наименование предлагаемых товаров или услуг + type: string + maxLength: 100 + description: + description: Описание предлагаемых товаров или услуг + type: string + maxLength: 1000 + lifetime: + $ref: '#/definitions/LifetimeInterval' + cost: + $ref: '#/definitions/InvoiceTemplateCost' + metadata: + description: > + Метаданные, которые будут связаны с инвойсом, созданным по шаблону, в + случае, если иные метаданные не указаны в запросе на создание инвойса. + type: object diff --git a/spec/definitions/InvoiceTemplateUpdateParams.yaml b/spec/definitions/InvoiceTemplateUpdateParams.yaml new file mode 100644 index 0000000..fa98233 --- /dev/null +++ b/spec/definitions/InvoiceTemplateUpdateParams.yaml @@ -0,0 +1,19 @@ +type: object +properties: + product: + description: Наименование предлагаемых товаров или услуг + type: string + maxLength: 100 + description: + description: Описание предлагаемых товаров или услуг + type: string + maxLength: 1000 + lifetime: + $ref: '#/definitions/LifetimeInterval' + cost: + $ref: '#/definitions/InvoiceTemplateCost' + metadata: + description: > + Метаданные, которые будут связаны с инвойсом, созданным по шаблону, в + случае, если иные метаданные не указаны в запросе на создание инвойса. + type: object diff --git a/spec/definitions/LifetimeInterval.yaml b/spec/definitions/LifetimeInterval.yaml new file mode 100644 index 0000000..9e486c2 --- /dev/null +++ b/spec/definitions/LifetimeInterval.yaml @@ -0,0 +1,19 @@ +type: object +description: Время жизни инвойса с момента его создания. +required: + - days + - months + - years +properties: + days: + type: integer + format: int32 + minimum: 0 + months: + type: integer + format: int32 + minimum: 0 + years: + type: integer + format: int32 + minimum: 0 diff --git a/spec/paths/analytics@shops@{shopID}@invoices.yaml b/spec/paths/analytics@shops@{shopID}@invoices.yaml index ccc316d..32e8599 100644 --- a/spec/paths/analytics@shops@{shopID}@invoices.yaml +++ b/spec/paths/analytics@shops@{shopID}@invoices.yaml @@ -95,7 +95,7 @@ get: result: type: array items: - $ref: '#/definitions/InvoiceSearchResult' + $ref: '#/definitions/Invoice' '400': $ref: '#/responses/BadRequest' '404': diff --git a/spec/paths/processing@invoice-templates.yaml b/spec/paths/processing@invoice-templates.yaml new file mode 100644 index 0000000..0d59f54 --- /dev/null +++ b/spec/paths/processing@invoice-templates.yaml @@ -0,0 +1,20 @@ +post: + description: Создать новый шаблон инвойса. + tags: + - InvoiceTemplates + operationId: createInvoiceTemplate + parameters: + - $ref: '#/parameters/requestID' + - name: invoiceTemplateCreateParams + description: Параметры шаблона инвойса. + in: body + required: true + schema: + $ref: '#/definitions/InvoiceTemplateCreateParams' + responses: + '201': + description: Шаблон инвойса создан. + schema: + $ref: '#/definitions/InvoiceTemplateAndToken' + '400': + $ref: '#/responses/BadRequest' diff --git a/spec/paths/processing@invoice-templates@{invoiceTemplateID}.yaml b/spec/paths/processing@invoice-templates@{invoiceTemplateID}.yaml new file mode 100644 index 0000000..d82ab43 --- /dev/null +++ b/spec/paths/processing@invoice-templates@{invoiceTemplateID}.yaml @@ -0,0 +1,55 @@ +get: + description: Получить шаблон инвойса по его идентификатору. + tags: + - InvoiceTemplates + operationId: getInvoiceTemplateByID + parameters: + - $ref: '#/parameters/requestID' + - $ref: '#/parameters/invoiceTemplateID' + responses: + '200': + description: Шаблон инвойса + schema: + $ref: '#/definitions/InvoiceTemplate' + '400': + $ref: '#/responses/BadRequest' + '404': + $ref: '#/responses/NotFound' +put: + description: Модифицировать шаблон инвойса. + tags: + - InvoiceTemplates + operationId: updateInvoiceTemplate + parameters: + - $ref: '#/parameters/requestID' + - $ref: '#/parameters/invoiceTemplateID' + - name: invoiceTemplateUpdateParams + description: Параметры модифицируемого инвойса. + in: body + required: true + schema: + $ref: '#/definitions/InvoiceTemplateUpdateParams' + responses: + '200': + description: Шаблон инвойса модифицирован. + schema: + $ref: '#/definitions/InvoiceTemplate' + '400': + $ref: '#/responses/BadRequest' + '404': + $ref: '#/responses/NotFound' +delete: + description: Удалить шаблон инвойса. + tags: + - InvoiceTemplates + operationId: deleteInvoiceTemplate + parameters: + - $ref: '#/parameters/requestID' + - $ref: '#/parameters/invoiceTemplateID' + responses: + '204': + description: Шаблон инвойса удален. + '400': + $ref: '#/responses/BadRequest' + '404': + $ref: '#/responses/NotFound' diff --git a/spec/paths/processing@invoice-templates@{invoiceTemplateID}@invoices.yaml b/spec/paths/processing@invoice-templates@{invoiceTemplateID}@invoices.yaml new file mode 100644 index 0000000..3a91377 --- /dev/null +++ b/spec/paths/processing@invoice-templates@{invoiceTemplateID}@invoices.yaml @@ -0,0 +1,23 @@ +post: + description: Создать новый инвойс по шаблону. + tags: + - InvoiceTemplates + operationId: createInvoiceWithTemplate + parameters: + - $ref: '#/parameters/requestID' + - $ref: '#/parameters/invoiceTemplateID' + - name: invoiceParamsWithTemplate + description: Параметры создаваемого инвойса + in: body + required: true + schema: + $ref: '#/definitions/InvoiceParamsWithTemplate' + responses: + '201': + description: Инвойс создан + schema: + $ref: '#/definitions/InvoiceAndToken' + '400': + $ref: '#/responses/BadRequest' + '404': + $ref: '#/responses/NotFound' diff --git a/spec/paths/processing@invoices.yaml b/spec/paths/processing@invoices.yaml index e7b0e27..aafbdac 100644 --- a/spec/paths/processing@invoices.yaml +++ b/spec/paths/processing@invoices.yaml @@ -15,6 +15,6 @@ post: '201': description: Инвойс создан schema: - $ref: '#/definitions/Invoice' + $ref: '#/definitions/InvoiceAndToken' '400': $ref: '#/responses/BadRequest' diff --git a/spec/paths/processing@invoices@{invoiceID}@access_tokens.yaml b/spec/paths/processing@invoices@{invoiceID}@access_tokens.yaml index 43c3900..002c228 100644 --- a/spec/paths/processing@invoices@{invoiceID}@access_tokens.yaml +++ b/spec/paths/processing@invoices@{invoiceID}@access_tokens.yaml @@ -1,17 +1,6 @@ post: operationId: createInvoiceAccessToken - description: | - Создать новый токен для доступа к указанному инвойсу. - - С помощью этого токена можно авторизовать ограниченное количество операций, - необходимых для проведения платежей по указанному инвойсу, в частности: - - * токенизация платёжных инструментов, - * создание платежей по этому и только этому инвойсу, - * получение состояния и событий этого инвойса. - - Срок действия токена составляет 1 час от момента создания, после истечения - которого использовать его для авторизации операций будет более невозможно. + description: Создать новый токен для доступа к указанному инвойсу. tags: - Invoices parameters: @@ -19,8 +8,8 @@ post: - $ref: '#/parameters/invoiceID' responses: '201': - description: Токен для доступа создан + description: Токен для доступа к инвойсу создан. schema: - $ref: '#/definitions/InvoiceAccessToken' + $ref: '#/definitions/AccessToken' '404': $ref: '#/responses/NotFound' diff --git a/spec/swagger.yaml b/spec/swagger.yaml index 4f1a841..4342fcb 100644 --- a/spec/swagger.yaml +++ b/spec/swagger.yaml @@ -67,20 +67,23 @@ securityDefinitions: name: Authorization in: header description: > - Для аутентификации вызовов мы используем [JWT](https://jwt.io). Ваш - приватный ключ и ключ для токенизации вы можете получить в личном - кабинете. Для аутентификации запросов соответствующий ключ передается в - заголовке. + Для аутентификации вызовов мы используем [JWT](https://jwt.io). + Cоответствующий ключ передается в заголовке. ```shell Authorization: Bearer {TOKENIZATION|PRIVATE_JWT} ``` - Ключи не разделяются на тестовые и боевые, ваш приватный ключ открывает + Посмотреть ваш API-ключ вы можете в + [личном кабинете](https://dashboard.rbk.money/api/key). + + + Ключи не разделяются на тестовые и боевые, ваш API ключ открывает доступ ко всем функциям платформы. Для тестовых транзакций используйте ID тестовых магазинов. - Помните, что вы никому не должны передавать ваш приватный ключ! + + Помните, что вы никому не должны передавать ваш API ключ! security: - bearer: [] responses: @@ -128,6 +131,13 @@ parameters: required: true type: string maxLength: 40 + invoiceTemplateID: + name: invoiceTemplateID + in: path + description: Идентификатор шаблона инвойса + required: true + type: string + maxLength: 40 paymentID: name: paymentID in: path @@ -321,6 +331,66 @@ tags: отгрузке товара или предоставлении услуги плательщику, можно запросить у платформы все события, произошедшие в рамках указанного ID инвойса, либо самое последнее из них. + + ## Authorization + + Операции: + + * создания инвойса, + + * отмены ивнвойса, + + * погашения инвойса, + + * получения *нового* токена доступа к инвойсу (уже после создания инвойса) + + + авторизуются вашим API-ключем. + + ### Токен доступа к инвойсу + + Токен доступа к инвойсу авторизует ограниченное количество операций, + необходимых для проведения [платежей](#tag/Payments) по указанному + инвойсу, в частности: + + * [токенизация](#tag/Tokens) платёжных инструментов, + + * создание платежей по этому и только этому инвойсу, + + * получение состояния и событий этого инвойса. + + + Срок действия токена составляет 1 час от момента создания, после истечения + которого использовать его для авторизации операций будет более невозможно. + - name: InvoiceTemplates + x-displayName: Шаблоны инвойсов + description: > + Шаблоны инвойсов позволяют упростить выставление инвойсов. Шаблон инвойса + привязан к конкретному магазину и содержит спецификацию, по которой можно + создавать инвойсы, указывая только конкретнyю стоимость товаров и услуг + и/или метаданные инвойса. + В случае, если шаблон содержит фиксированную стоимость, её также можно + опустить при создании инвойса. Если при создании инвойса по шаблону + не указать метаданные инвойса, они будут взяты из значения в шаблоне (если + шаблон содержит метаданные). + + + Cоздание, модификация и удаление шаблона инвойса не требуют верификации + на стороне платформы и заявок на эти изменения. + + ## Authorization + + Создание, модификация и удаление шаблона инвойса авторизуются вашим + API-ключем. + + ### Токен доступа к шаблону инвойса + + Токен доступа к шаблону инвойса создается в результате операции + создания шаблона. Он авторизует: + + * получение шаблона инвойса по его идентификатору, + + * создание инвойса по данному шаблону. - name: Accounts x-displayName: Счета description: > @@ -357,11 +427,16 @@ tags: Платформа обеспечивает идемпотентность списания денег с платежного средства, предоставляя уникальный идентификатор платежной сессии. Данный - идентификатор предоставляется в процессе создания токена платежного - средства и гарантирует идемпотентность запросов на списание средств, - обеспечивая защиту от ошибочных повторных списаний. + идентификатор предоставляется в процессе создания [токена платежного + средства](#tag/Tokens) и гарантирует идемпотентность запросов на списание + средств, обеспечивая защиту от ошибочных повторных списаний. + + ## Authorization + + Запросы API платежей авторизуются либо токеном доступа к инвойсу, + по которому создан платеж, либо вашим API-ключем. - name: Tokens - x-displayName: Токены + x-displayName: Платежные токены description: > Платформа предоставляет вам возможность самостоятельно инициировать списание денег с платежных карт плательщиков и берет на себя процессы @@ -377,13 +452,10 @@ tags: платежной карты, который в дальнейшем вы можете использовать для запуска платежей. - ## Платежная сессия - Платформа обеспечивает идемпотентность списания денег с платежного - средства, предоставляя уникальный идентификатор платежной сессии. Данный - идентификатор предоставляется в процессе создания токена платежного - средства и гарантирует идемпотентность запросов на списание средств, - обеспечивая защиту от ошибочных повторных списаний. + В процессе создания токена предоставляется + [платежная сессия](#tag/Payments), обеспечивающая идемпотентность + списания денег с платежного средства. - name: Categories x-displayName: Категории магазинов description: > @@ -440,8 +512,8 @@ tags: x-displayName: Поиск description: > Для получения списка всех инвойсов/платежей указанного магазина необходимо - вызвать соответствующий метод платформы. Также имеется возможность - отфильтровать выборку по определенным статусам инвойсов/платежей. + вызвать соответствующий метод платформы. Имеется возможность отфильтровать + выборку по определенным статусам. - name: Analytics x-displayName: Аналитика description: >