Действует

ПОСТАНОВЛЕНИЕ ПРАВЛЕНИЯ НАЦИОНАЛЬНОГО БАНКА РЕСПУБЛИКИ БЕЛАРУСЬ

от 26 августа 2022 года №314

Об утверждении стандартов проведения расчетов

На основании абзаца шестьдесят шестого статьи 26 и части первой статьи 39 Банковского кодекса Республики Беларусь Правление Национального банка Республики Беларусь ПОСТАНОВЛЯЕТ:

1. Утвердить:

стандарт проведения расчетов СПР 6.02-1-2022 "Банковская деятельность. Информационные технологии. Открытые банковские API. Платежные API. Спецификация" (прилагается);

стандарт проведения расчетов СПР 6.02-2-2022 "Банковская деятельность. Информационные технологии. Открытые банковские API. Платежные API. Информационная безопасность" (прилагается).

2. Настоящее постановление вступает в силу после его официального опубликования.

Председатель Правления

П.В.Каллаур

 

Утвержден Постановлением Правления Национального банка Республики Беларусь от 26 августа 2022 года №314

Стандарт проведения расчетов СПР 6.02-1-2022 "Банковская деятельность. Информационные технологии. Открытые банковские API. Платежные API. Спецификация"

Раздел I. Общие положения

1. Настоящий стандарт проведения расчетов (далее – стандарт) устанавливает требования к открытым платежным банковским интерфейсам программирования приложений (интерфейсам прикладного программирования, API) (далее, если не указано иное, – API), методам и параметрам API, посредством которых предоставляется:

1.1. получение информации о банковском счете (далее – счет) (счетах) клиента:

создание и получение статуса согласия для получения информации о счете (счетах) клиента;

удаление (отзыв) согласия на получение информации о счете (счетах) клиента;

получение информации о счете (счетах);

получение информации о балансе счета (всех счетов);

создание выписки по счету и получение выписки по счету по созданному идентификатору выписки;

создание перечня транзакций по счету и получение перечня транзакций по счету по созданному идентификатору списка транзакций;

1.2. инициирование платежей:

создание и получение статуса согласия на инициирование всех видов платежей;

создание и получение статуса платежного указания на инициирование платежа плательщиком за товары, работы, услуги;

создание и получение статуса платежного указания на инициирование платежа плательщиком в бюджет;

создание и получение статуса платежного указания на инициирование платежа плательщиком, содержащего список бенефициаров с указанием счетов бенефициаров;

создание и получение статуса платежного указания на инициирование платежа плательщиком, содержащего список бенефициаров при осуществлении перевода без открытия счета;

создание и получение статуса платежного указания на инициирование платежа бенефициаром за товары, работы, услуги;

создание и получение статуса платежного указания на инициирование платежа бенефициаром (взыскателем) в бюджет;

создание и получение статуса платежного указания на инициирование платежа из состава рекуррентных платежей;

отзыв платежного указания на инициирование всех видов платежей.

2. Настоящий стандарт предназначен для участников экосистемы открытого банкинга с целью реализации процессов на этапе разработки API. Настоящий стандарт не распространяется на инициирование платежей посредством программно-технической инфраструктуры, предназначенной для приема банковских платежных карточек на физическом носителе.

3. Настоящий стандарт применяется совместно со стандартом проведения расчетов СПР 6.01-2020 "Банковская деятельность. Информационные технологии. Открытые банковские API. Регламент взаимодействия поставщиков API и пользователей API", утвержденным постановлением Правления Национального банка Республики Беларусь от 31 декабря 2019 г. №552 (далее – СПР 6.01).

4. В настоящем стандарте используются термины в значениях, установленных в нормативных правовых актах Национального банка, в том числе принятых совместно с иными государственными органами, СПР 6.01, а также следующие термины и их определения:

долгосрочное согласие – согласие, которое предоставляется клиентом на стороне поставщика API для осуществления обмена данными между пользователем API и поставщиком API на длительный срок (не более трех лет);

краткосрочное согласие – однократное согласие, которое предоставляется клиентом на стороне поставщика API для осуществления обмена данными между пользователем API и поставщиком API на инициирование только одного платежа;

идемпотентность – свойство объекта или операции при повторном применении операции к объекту давать тот же результат, что и при первом;

открытый банкинг – комплекс подходов к предоставлению банковских услуг, основанный на простом, удобном, эффективном, мгновенном и безопасном способе оказания пользователям таких услуг, в том числе посредством предоставления их юридическим лицам, не являющимся финансовыми организациями, доступа к информации о банковских услугах и клиентах банков в соответствии с требованиями, установленными законодательством;

пагинация – механизм разбивки списка записей на страницы при предоставлении больших наборов данных через API;

полезная нагрузка – часть пакета данных (сообщения) без служебной информации (без заголовка, битов синхронизации иной служебной информации);

пользователь API второго типа – юридическое лицо, использующее API для предоставления услуг клиентам, получающий монетизацию за счет дополнительных сервисов поставщиков API;

пользователь API первого типа – клиент, использующий API в личных целях, а также для получения конкурентных преимуществ в процессе последующего производства товаров, выполнения работ, оказания услуг (без непосредственного использования API для оказания услуг клиентам);

поставщик информационных платежных услуг – пользователь API второго типа, предоставляющий клиенту услугу получения информации о счете (счетах) клиента;

поставщик платежных услуг инициирования платежа – пользователь API второго типа, предоставляющий клиенту услугу инициирования перевода денежных средств;

рекуррентный платеж – платеж, инициируемый с определенной периодичностью пользователем API второго типа на основании предоставленного ему согласия клиента посредством использования реквизитов счета клиента;

ресурс – любая сущность (платеж, счет, транзакция) в определенном формате (JSON или ином). Каждый ресурс идентифицируется посредством постоянного идентификатора, который не меняется при изменении состояния ресурса;

согласие – согласие клиента на предоставление данных клиента, данных, необходимых для проведения транзакций клиента, на инициирование платежа клиента пользователю API второго типа от поставщика API и/или на передачу данных пользователю API второго типа поставщику API от имени клиента, выраженное в письменной форме лично поставщику API, либо согласие, представленное поставщику API в электронном виде с применением программно-аппаратных средств и технологий, позволяющих достоверно установить, что оно исходит от соответствующих лиц;

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

экосистема открытого банкинга – взаимосвязанная группа лиц, взаимодействующих в процессе создания, реализации, использования и вывода из эксплуатации открытых API для достижения взаимовыгодных целей, непосредственно сами открытые API, а также программные продукты, внедряемые при их использовании.

В настоящем стандарте используются следующие обозначения:

О – наличие компонента и (или) элемента данных обязательно;

Н – наличие компонента и (или) элемента данных необязательно;

У – наличие компонента и (или) элемента данных определяется по условию;

DELETE – метод HTTP для удаления указанного ресурса;

GET – метод HTTP для запроса содержимого указанного ресурса;

HTTPS – расширение протокола HTTP для поддержки шифрования в целях повышения безопасности;

JSON – текстовый формат обмена данными, основанный на JavaScript;

OAuth 2.0 – открытый протокол (схема) авторизации, который позволяет предоставить пользователю API ограниченный доступ к защищенным ресурсам клиента без необходимости передавать ему (пользователю API) логин и пароль;

POST – метод HTTP для отправки содержимого указанного ресурса на сервер;

REST – архитектурный стиль взаимодействия компонентов распределенного приложения в сети. REST представляет собой согласованный набор ограничений, учитываемых при проектировании распределенной системы;

XML – расширяемый язык разметки, определяющий набор правил для кодирования документов в формате, который удобен для чтения как человеком, так и компьютером.

5. Для API определена архитектура, соответствующая концепции RESTful API.

6. Для обеспечения структурного контроля сообщений на физическом уровне применяются JSON-схемы соответствующих электронных сообщений.

7. Текст сообщения должен быть сформирован в кодовой странице UTF-8.

8. Участники экосистемы открытого банкинга взаимодействуют согласно логической структуре. Структура взаимодействия участников в случае участия пользователя API второго типа представлена на рисунке 1.

Рисунок 1

314-1

Структура взаимодействия участников в случае участия пользователя API первого типа представлена на рисунке 2.

Рисунок 2

314-2

9. Клиент предоставляет долгосрочное согласие поставщику API для осуществления обмена данными между пользователем API второго типа и поставщиком API в рамках согласия на длительный срок (не более трех лет). В любой момент клиент может отозвать долгосрочное согласие как через открытые API, так и через предоставляемые средства поставщика API.

10. Клиент предоставляет краткосрочное согласие поставщику API для инициирования платежа.

11. Поставщик API при применении настоящего стандарта руководствуется банковским законодательством, законодательством об информации, информатизации и защите информации, о персональных данных.

Раздел II. Общие требования к API

Глава 1. Требования к элементам данных

12. Разрешенное к использованию символьное множество элементов данных включает в себя следующий набор символов:

A…Z – прописные латинские буквы;

a…z – строчные латинские буквы;

А…Я – прописные буквы кириллицы, включая I, Ё и Ў;

а…я – строчные буквы кириллицы, включая i, ё и ў;

0…9 – цифры;

/ – + = _ . , : ; " " " "" "" " " ~ ! @ # №$ % ^ ? * ( ) [ ] { } – специальные графические символы: пробел, дробная черта правая и левая, дефис (минус), плюс, равно, нижнее подчеркивание, точка, запятая, двоеточие, точка с запятой, апостроф, одиночные, парные и угловые кавычки (левые и правые), тильда, восклицательный знак, коммерческое at, решетка, знак номера, знак доллара, процент, карет, знак вопроса, звездочка, круглые, квадратные и фигурные скобки (левые и правые).

Десятичные числа указываются в следующем формате: m<=decimal<=M td=T fd=F, где m – минимальное значение, M – максимальное значение, Т – общее количество цифр, F – количество цифр в дробной части.

13. Обозначения размерности заключаются в фигурные скобки и указываются после перечисления допустимых символов:

{m} – точно m символов;

{m,n} – не менее чем m символов, но не более чем n символов;

text{m,n} – минимальная (m) и максимальная (n) длина текстового элемента данных, состоящего из разрешенного набора символов.

14. Для указания кратности повторений (или множественности) компонентов или элементов данных используются обозначения, заключаемые в квадратные скобки [ ]:

[1..1] – элемент данных обязателен, повторения не допускаются;

[1..*] – элемент данных обязателен, может повторяться без ограничений;

[1..n] – элемент данных обязателен, может повторяться не более n раз (n > 1);

[m..*] – элемент данных обязателен, должен повторяться не менее m раз (m > 1);

[m..n] – элемент данных обязателен, должен повторяться не менее m раз и не более n раз (m > 0, n > m);

[0..1] – элемент данных необязателен, повторения не допускаются;

[0..n] – элемент данных необязателен, может повторяться не более n раз (n > 1).

Если кратность повторения компонента или элемента данных не указана, то они заполняются однократно.

15. Необязательная часть значения элемента данных заключается в круглые скобки, после которых ставится знак вопроса "?", например: [A-Z0-9]{9}([A-Z]{3})?.

16. В API используются основные элементы данных и компоненты, формат которых является одинаковым для всех API, если об этом не указано отдельно в описании конкретного API.

16.1. Элемент данных "Наименование".

Элемент данных "Наименование" (name) должен содержать краткое наименование банка, организации или фамилию, собственное имя и отчество (при наличии) физического лица или наименование описываемого компонента.

Элемент данных "Наименование" имеет неструктурированный тип данных Max140Text.

16.2. Элемент данных "Международный номер банковского счета".

Элемент данных "Международный номер банковского счета" должен соответствовать требованиям государственного стандарта Республики Беларусь СТБ ISO 13616-1-2015 "Финансовые услуги. Международный номер банковского счета (IBAN). Часть 1. Структура IBAN", утвержденного постановлением Государственного комитета по стандартизации Республики Беларусь от 7 октября 2015 г. №47.

Элемент данных "Международный номер банковского счета" для номера банковского счета, открытого в банке-участнике системы BISS, за исключением банков-нерезидентов Республики Беларусь, имеет тип данных IBAN2007Identifier и формат фиксированной длины, равный 28 символам: [A-Z]{2}[0-9]{2}[A-Z0-9]{4}[0-9]{4}[A-Z0-9]{16}, где:

[A-Z]{2} – международный код страны согласно справочнику N013 (таблица 80);

[0-9]{2} – контрольные цифры номера банковского счета, которые используются для проверки его достоверности и вычисляются согласно СТБ ISO 13616-1-2015;

[A-Z0-9]{4} – первые четыре символа банковского идентификационного кода банков, их филиалов;

[0-9]{4} – балансовый счет согласно плану счетов бухгалтерского учета;

[A-Z0-9]{16} – номер индивидуального счета.

Элемент данных "Международный номер банковского счета" для номера банковского счета, открытого в банке-нерезиденте Республики Беларусь, имеет тип данных IBAN2007Identifier и формат: [A-Z]{2}[0-9]{2}[a-zA-Z0-9]{1,30}.

16.3. Элемент данных "Зарегистрированный код BIC".

Элемент данных "Зарегистрированный код BIC" должен соответствовать требованиям государственного стандарта Республики Беларусь СТБ ISO 9362-2015 "Банковская деятельность. Сообщения, передаваемые по каналам связи. Бизнес-идентификационные коды (BIC)", утвержденного постановлением Государственного комитета по стандартизации Республики Беларусь от 7 октября 2015 г. №47.

Элемент данных "Зарегистрированный код BIC" (BICFI) банков-участников системы BISS имеет формат [A-Z0-9]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?, где:

[A-Z0-9]{4} – цифробуквенный код, однозначно идентифицирующий банк Республики Беларусь, банк-нерезидент (префикс бизнес-участника);

[A-Z]{2} – буквенный код страны согласно справочнику N013 (таблица 80);

[A-Z0-9]{2} – цифробуквенный код местоположения участника расчетов (суффикс бизнес-участника);

[A-Z0-9]{3} – необязательные разряды, которые могут содержать значение условного номера участника расчетов, который используется только для идентификации филиалов.

Элемент данных "Зарегистрированный код BIC" (BICFI) банков не участников системы BISS имеет формат [A-Z0-9]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?.

16.4. Элементы данных, содержащие значения суммы, валюты, обменного курса денежных средств и процентов.

Элементы данных, содержащие значения сумм денежных средств (amount, chargeAmount, balanceAmount и т.д.), должны иметь формат 0<=decimal td=18 fd=5 и формироваться в соответствии со следующими правилами:

значение состоит из целой части, разделителя и дробной части;

в качестве разделителя целой и дробной частей используется символ "." (точка);

общее количество цифр не должно превышать 18, разделитель не учитывается;

целая часть должна содержать хотя бы одну цифру;

в целой части ноли перед первой значащей цифрой отсутствуют;

дробная часть указывается, если в данной валюте она присутствует;

количество цифр в дробной части суммы не может превышать пяти и должно соответствовать общегосударственному классификатору Республики Беларусь ОКРБ 016-99 "Валюты", утвержденному постановлением Государственного комитета по стандартизации, метрологии и сертификации Республики Беларусь от 16 июня 1999 г. №8 (далее – ОКРБ 016);

если дробная часть в данной валюте присутствует и равна нолю, то количество символов "0" в дробной части должно быть равно максимально допустимому количеству знаков в дробной части для данной валюты, например: 126.00.

Значения сумм денежных средств, представленных в белорусских рублях (amount, equivalentAmount, balanceEquivalentAmount и т.д.), должны иметь формат 0<=decimal td=18 fd=2.

Элементы данных, содержащие значения обменного курса валют (exchangeRate), должны иметь формат 0<=decimal td=11 fd=10 и формироваться в соответствии со следующими правилами:

значение состоит из целой части, разделителя и дробной части;

в качестве разделителя целой и дробной частей используется символ "." (точка);

общее количество цифр не должно превышать 11, разделитель не учитывается;

целая и дробная части должны содержать хотя бы одну цифру;

в целой части ноли перед первой значащей цифрой отсутствуют;

в дробной части ноли после последней значащей цифры отсутствуют.

Курс белорусского рубля указывается к единице той или иной валюты без использования шкалы курса, например: 0.034539 соответствует 3,4539 BYN за 100 RUB.

Элементы данных, содержащие значения процентов (rate), должны иметь формат 0<=decimal<=100 td=11 fd=10 и формироваться в соответствии со следующими правилами:

значение состоит из целой части, разделителя и дробной части;

в качестве разделителя целой и дробной частей используется символ "." (точка);

общее количество цифр не должно превышать 11, разделитель не учитывается;

целая и дробная части должны содержать хотя бы одну цифру;

в целой части ноли перед первой значащей цифрой отсутствуют;

в дробной части ноли после последней значащей цифры отсутствуют;

максимальное значение не должно превышать 100.

Например: 20.0 соответствует 20 0.05 соответствует 0,05 %.

Элемент данных "Валюта" (currency, sourceCurrency, targetCurrency, unitCurrency и т.д.) содержит значение кода валюты, указывается согласно ОКРБ 016 (справочник N003, таблица 80), имеет тип данных CurrencyCode и формат [A-Z]{3}, например: BYN.

16.5. Элементы данных, содержащие значения даты и времени.

Элемент данных "Дата" (valueDate, fromBookingDate, toBookingDate, expirationDate, transactionFromDate, transactionToDate и т.д.) – элемент данных, содержащий значение даты, указывается согласно расширенному формату межгосударственного стандарта ГОСТ ИСО 8601-2001 "Система стандартов по информации, библиотечному и издательскому делу. Представление дат и времени. Общие требования", утвержденного постановлением Комитета по стандартизации, метрологии и сертификации при Совете Министров Республики Беларусь от 22 августа 2002 г. №37 (далее – ГОСТ ИСО 8601), имеет тип данных ISODate и формат YYYY-MM-DD (год-месяц-день).

Элемент данных "Дата и время" (toBookingDateTime, fromBookingDateTime, creationDateTime, statusUpdateDateTime и т.д.) – элемент данных, содержащий значение даты и времени, указывается согласно расширенному формату ГОСТ ИСО 8601, имеет тип данных ISODateTime и формат YYYY-MM-DDThh:mm:ss±hh:mm. Например, для указания даты и времени 26 марта 2021 года 17 ч. 19 мин. 33 сек. (по Минскому времени): 2021-03-26Т17:19:33+03:00.

Элемент данных "Время" – элемент данных, содержащий значение времени, указывается согласно формату ГОСТ ИСО 8601, имеет тип данных ISOTime и формат hh:mm:ss±hh:mm.

Время указывается с учетом часового пояса страны, в случае Республики Беларусь используется GMT+3.

16.6. Элемент данных "Страна".

Элемент данных "Страна" (country) указывается в кодированной форме согласно общегосударственному классификатору Республики Беларусь ОКРБ 017-99 "Страны мира", утвержденному постановлением Государственного комитета по стандартизации, метрологии и сертификации Республики Беларусь от 16 июня 1999 г. №8 (далее – ОКРБ 017), (справочник N013, таблица 80), имеет структурированный тип данных CountryCode и формат [A-Z]{2}, например: PL.

Элемент данных "Страна" должен указываться при идентификации нерезидентов Республики Беларусь.

16.7. Элемент данных "Идентификационный налоговый номер".

В элементе данных "Идентификационный налоговый номер" (taxIdentification) указываются статус стороны и учетный номер плательщика (далее – УНП), присвоенный налоговыми органами, в формате [A-Z]{3}[A-Z0-9]{9}, где:

[A-Z]{3} – значение статуса стороны согласно справочнику N061, таблица 80 (INB, INI, INN, INP, INU, INZ);

[A-Z0-9]{9} – УНП.

Глава 2. Требования к структуре API

17. Структура пути URI.

Путь URI соответствует следующей структуре:

[participant-path-prefix]/open-banking/[version]/[resource]/[resource-id]/[sub-resource].

Структура URI пути состоит из следующих элементов:

[participant-path-prefix] – необязательный префикс поставщика API;

open-banking – постоянное значение "open-banking";

[version] – версия API, выраженная в виде /v[major-version].[minor-version]/;

[resource]/[resource-id] – наименование ресурса и его идентификатор;

[sub-resource] – наименование подресурса (ресурса 2-го уровня).

Поставщик API использует один и тот же participant-path-prefix и host name для всех своих ресурсов.

Примеры:

https://api.bank.by/oapi-channel/open-banking/v1.0/payments;

https://api.bank.by/oapi-channel/open-banking/v1.0/accountConsents;

https://api.bank.by/oapi-channel/open-banking/v1.0/accounts;

https://api.bank.by/oapi-channel/open-banking/v1.0/accounts/1234;

https://api.bank.by/oapi-channel/open-banking/v1.0/accounts/1234/transactions.

18. Заголовки запросов (headers).

Применяемость атрибутов заголовка в зависимости от метода указана в таблице 1.

Таблица 1

Параметр

Определение и правила использования

Метод
POST

Метод
GET

Метод
DELETE

Content-Type

Стандартный заголовок HTTP, представляет формат полезной нагрузки в запросе.
Устанавливается значение application/json, за исключением конечных точек, которые поддерживают Content-Type, отличный от application/json.
Устанавливается значение application/jose+jwe для зашифрованных запросов.
Если установлено другое значение, то поставщик API присылает ответ: 415 (Unsupported Media Type)

О

Accept

Стандартный HTTP заголовок, определяющий тип контента, который требуется от сервера.
Если пользователь API второго типа ожидает незашифрованный ответ, то он указывает явно, что только ответ в формате JSON принимается (передавая значение application/json) в качестве заголовка контента для всех конечных точек, которые отвечают в формате JSON.
Если пользователь API второго типа ожидает зашифрованный ответ, то он указывает явно, что принимается только ответ JWT (передавая значение application/jose+jwe) в качестве заголовка контента для всех конечных точек, которые отвечают JSON.
Если установлено недопустимое значение, то поставщик API присылает ответ: 406 (Not Acceptable).
Если значение не указано, по умолчанию используется application/json

Н

Н

Authorization

Стандартный заголовок HTTP, используется для пользователей API второго типа.
Позволяет предоставлять учетные данные серверу авторизации и (или) серверу ресурсов в зависимости от типа запрашиваемого ресурса.
Для OAuth 2.0/OIDC включает в себя Basic или Bearer схемы аутентификации

О

О

О

x-jws-signature

Указывает, что JSON запрос подписан

У

У

У

x-fapi-auth-date

Дата последней авторизации в систему пользователя API второго типа.
Значение предоставляется в виде HTTP-date.
[RFC7231]. Например, x-fapi-auth-date: Mon, 26 Aug 2019 12:23:11 GMT

Н

Н

Н

x-fapi-customer-ipaddress

IP-адрес клиента, если клиент в данный момент подключен к пользователю API второго типа (в приложении пользователя API второго типа)

Н

Н

Н

x-fapi-interaction-id

RFC4122 UID, используемый в качестве идентификатора корреляции.
Если необходимо, то поставщик API передает обратно значение идентификатора связи запроса и ответа в заголовке ответа x-fapi-interaction-id

О

О

О

x-idempotency-key

Уникальный идентификатор запроса для поддержки идемпотентности.
Используется для решения проблем потери связи и отправки повторного запроса.
Обязательно для методов POST. Для других запросов не указывается

Н

x-customer-useragent

В заголовке указывается тип устройства (user-agent), который использует клиент.
Пользователь API второго типа может заполнить это поле значением типа устройства (user-agent), указанным клиентом.
Если используется мобильное приложение пользователя API второго типа, пользователь API второго типа проверяет, что строка типа устройства (user-agent) отличается от строки типа устройства (user-agent) на основе браузера

Н

Н

Н

x-api-key

Идентификатор Apikey, сгенерированный в системе дистанционного банковского обслуживания (далее – СДБО) поставщика API, и предназначенный для идентификации и авторизации запросов пользователя API первого типа

О

О

О

x-accountConsentId

Идентификатор согласия, в рамках которого отправляется запрос. Предназначен для идентификации и авторизации запросов на получение информации по счету (счетам) пользователя API первого типа

Н

Н

Н

19. Атрибуты заголовков ответов указаны в таблице 2.

Таблица 2

Параметр

Определение и правила использования

Применяемость

Content-Type

Стандартный параметр заголовка HTTP. Представляет формат полезной нагрузки, возвращаемой в ответе
Поставщик API возвращает значение Content-Type, равное application/json, в качестве заголовка для всех незашифрованных конечных точек.
Поставщик API возвращает значение Content-Type, равное application/jwe, для всех зашифрованных конечных точек

О

Retry-After

Параметр заголовка, указывающий время (в секундах), в течение которого пользователь API второго типа ожидает перед повторением операции.
Поставщику API следует включать этот заголовок вместе с ответами с кодом состояния HTTP 429 (Too Many Requests)

Н

x-jws-signature

Указывает, что JSON запрос подписан

У

x-fapi-interaction-id

RFC4122 UID, используемый в качестве идентификатора корреляции.
Поставщик API заполняет параметр заголовка ответа x-fapi-interaction-id значением, полученным в соответствующем параметре заголовка запроса или значением UID RFC4122, если значение не было предоставлено в запросе для отслеживания взаимодействия

О

20. Коды статусов исполнения запросов.

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

Таблица 3

Код HTTP статуса

Наименование

Описание

Метод
POST

Метод
GET

Метод
DELETE

200

OK

Запрос успешно выполнен

нет

да

нет

201

Created

Операция создания выполнена успешно. Результатом операции является создание нового ресурса

да

нет

нет

204

No Content

Операция удаления успешно завершена

нет

нет

да

400

Bad Request

Запрос имеет неверные отсутствующее или несовместимое тело JSON, параметры URL или поля заголовка. Запрошенная операция не будет выполнена

да

да

да

401

Unauthorized

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

да

да

да

403

Forbidden

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

да

да

да

404

(Not Found)

1. Пользователь API второго типа пытается получить ресурс, который указан в спецификации, но не реализован на стороне поставщика API (например, поставщик API решил не реализовывать конечную точку API статуса для внутренних запланированных платежей).
2. Пользователь API второго типа пытается получить ресурс, который не определен.
3. Пользователь API второго типа пытается получить ресурс к конечным точкам идемпотентного ресурса при отсутствии связи

да

да

да

405

Method Not Allowed

Пользователь API второго типа попытался получить доступ к ресурсу с помощью метода, который не поддерживается

да

да

да

406

Not Acceptable

Запрос содержал параметр заголовка Accept, отличный от разрешенных media types, и набор символов, отличный от UTF-8

да

да

да

415

Unsupported Media Type

Операция была отклонена, поскольку полезная нагрузка находится в формате, не поддерживаемом этим методом на целевом ресурсе

да

нет

нет

429

Too Many Requests

Операция была отклонена, так как слишком много запросов было сделано в течение определенного периода времени.
Поставщики API ограничивают запросы, если они сделаны сверх их политики добросовестного использования.
Поставщики API документируют свои политики добросовестного использования на своих порталах для разработчиков.
Поставщики API отвечают этим статусом, если количество запросов в единицу времени было превышено.
Поставщику API следует включать заголовок Retry-After в ответ, указывающий, как долго пользователь API второго типа ожидает перед повторением операции

да

да

да

500

Internal Server Error

Внутренняя ошибка сервера.
При попытке выполнения запроса на сервер произошла ошибка

да

да

да

503

Service Unavailable

Устаревшая версия сервера.
Если API устарел и больше не поддерживается поставщиком API, его путь URI все еще может быть активным и принимать запросы. В этом контексте рекомендуется вернуть 503 Service Unavailable, чтобы уведомить, что версия API находится в offline-режиме

да

да

да

Глава 3. Общая модель данных

21. В настоящей главе описана общая верхнеуровневая структура полезной нагрузки запросов и ответов. Подробные структуры запросов и ответов для конкретных методов API приведены в соответствующих разделах стандарта.

21.1. Структура запросов.

Структура верхнего уровня для запросов API имеет следующий вид:

Request Line

Message Headers

{

"data": {

...

},

"risk": {

...

}

}

Строка запроса содержит метод передачи, путь URI для обращения к конкретному запросу API и версию протокола HTTP.Request Line.

Заголовки запросов (Message Headers) характеризуют тело сообщения, параметры передачи и прочие сведения.

Раздел "data" содержит данные для конкретного запроса API. Структура этого элемента отличается для каждой конечной точки API.

Раздел "risk" содержит индикаторы риска для конкретного запроса API, предоставленного пользователем API второго типа.

Индикаторы риска, содержащиеся в этом элементе, могут отличаться для каждой конечной точки API.

21.2. Структура ответов.

Верхнеуровневая структура ответов API имеет следующий вид:

Response Line

Message Headers

{

"data": {

...

},

"risk": {

...

}

"links": {

...

},

"meta": {

...

}

}

В ответы включаются следующие дополнительные верхнеуровневые разделы:

links – данный блок содержит ссылку на текущий запрос и может для системы пагинации содержать ссылки на первую страницу, текущую и на следующую страницу;

meta – данный блок содержит метаинформацию о странице: сколько страниц в системе пагинации и, например, для транзакций, дата и время первой и последней транзакции по счету.

В соответствии с принципом RESTful API полный ресурс воспроизводится как часть ответа.

21.3. В объектах, где значение для необязательного поля [0..1] не указано, поле исключается из полезной нагрузки JSON.

Например, не допускаются следующие варианты:

"unstructed": "";

"unstructed": 0;

"unstructed": {};

"unstructed": "null".

В объектах, где поле массива определено как имеющее значения 0..n, поле массива включается в полезную нагрузку с пустым массивом.

Например, правильный вариант: "balances": [ ].

21.4. В настоящем стандарте некоторые модели запросов и ответов включают в себя объект дополнительных данных (Supplementary Data).

Данный объект позволяет поставщику API принимать или передавать данные, которые не входят в структурированные блоки.

Объект дополнительных данных (Supplementary Data) определяется как пустой объект JSON в настоящем стандарте.

Если поставщик API использует структуру с дополнительными данными (Supplementary Data), то он выкладывает детальное описание структуры в своих ресурсах. Поставщик API не использует структуру Supplementary Data, если добавляемый туда элемент уже существует в структурированных блоках.

22. Структура ответов с ошибками указана общая для всех методов API, описанных в данном документе.

22.1. Структура для ответов с ошибками API имеет следующий вид:

{

"code": "...",

"id": "...",

"message": "...",

"errors": [

{

"errorCode": "...",

"message": "...",

"path": "...",

"url": "..."

}

]

}

22.2. Описание элементов данных ответов с ошибками приведено в таблице 4.

Таблица 4

Наименование

Описание

Кратность

Тип данных/
Формат

errorResponse

Массив подробных кодов ошибок сообщений и URL-адресов к документации для помощи в исправлении

code

Высокоуровневый код ошибки, необходимый для классификации

[1..1]

Max40Text
text{1,40}

id

Уникальный идентификатор ошибки

[0..1]

Max40Text
text{1,40}

message

Краткое описание ошибки. Например: "Что-то не так с предоставленными параметрами запроса"

[1..1]

Max500Text
text{1,500}

errors

Массив ошибок с описанием

[1..n]

errorCode

Низкоуровневое описание ошибки

[1..1]

errorCode
согласно описанию в таблице 5.

message

Детализированное описание ошибки. Например: "Обязательное поле не указано"

[1..1]

Max500Text
text{1,500}

path

Путь к элементу с ошибкой в JSON объекте

[0..1]

Max500Text
text{1,500}

url

URL для помощи в устранении проблемы. В данном элементе может быть ссылка на веб-страницу, объясняющую правильное поведение.
Также через URL можно предоставлять дополнительную информацию

[0..1]

xs:anyURI

22.3. Примерный список кодов низкоуровневых ошибок представлен в таблице 5 с учетом кода ответа HTTP.

Таблица 5

Значение

HTTP-статус

Описание

BY.NBRB.Field.Expected

400

Если элементы передаются парой (ключ-значение) и значение не было передано. В элементе path должен передаваться путь к ожидаемому элементу (например, errorResponse. errors.path "accountResponse.data.account.accountDetails.identification"). Например, для допустимого значения элемента "schemeName" должно передаваться соответствующее значение идентификатора в элементе "identification"

BY.NBRB.Field.Invalid

400

В элементе указано недопустимое значение или длина предоставленного значения превышает соответствующую максимальную длину элемента в домене поставщика API. Ссылка на недопустимый элемент должна быть указана в элементе path (например, errorResponse.errors.path "accountResponse.data.account.accountDetails. schemeName"). Проблема должна быть подробно описана в сообщении об ошибке, указан конкретный элемент

BY.NBRB.Field.InvalidDate

400

Указана неверная дата. В сообщении можно указать актуальную проблему с датой. Ссылка на недопустимый элемент должна быть указана в элементе path

BY.NBRB.Field.Missing

400

Обязательный элемент отсутствует. Данный код ошибки можно использовать, если ошибка еще не определена при проверке BY.NBRB.Resource.InvalidFormat. Ссылка на отсутствующий элемент должна быть указана в элементе path

BY.NBRB.Header.Invalid

400

В элементе заголовка HTTP указано неверное значение. Элемент заголовка HTTP должен быть указан в элементе path

BY.NBRB.Header.Missing

400

Обязательный элемент HTTP-заголовка не был предоставлен. Элемент заголовка HTTP должен быть указан в элементе path

BY.NBRB.Resource.ConsentMismatch

400

Несоответствие ресурсов согласия и платежного указания. Например, если элемент в разделе "initiation" или "risk" ресурса платежного указания не совпадает с одноименным элементом в соответствующем разделе ресурса согласия. Элемент path должен быть заполнен элементом ресурса платежного указания, который не соответствует согласию

BY.NBRB.Resource.InvalidConsentStatus

400

Согласие, соответствующее ресурсу, находится в некорректном статусе, который бы позволил создать ресурс или выполнить запрос. Например, если ресурс согласия имеет статус AwaitingAuthorisation или Rejected, то ресурс не может быть создан с таким статусом соответствующего ему согласия. Элемент path должен быть заполнен элементом ресурса согласия, который является недопустимым

BY.NBRB.Resource.InvalidFormat

400

Когда json-схема полезной нагрузки не соответствует конечной точке. Например, конечная точка POST/payments вызывается с полезной нагрузкой JSON, которая не может быть проанализирована в классе запроса платежного указания

BY.NBRB.Resource.NotFound

400

Ресурс с указанным идентификатором не существует (ресурс не может быть обработан)

BY.NBRB.Resource.NotCreated

400

Ресурс с указанным идентификатором еще не создан и не может быть передан в ответном сообщении. Для асинхронных вызовов. Например, получение выписки по счету, где сначала создается ресурс выписки (метод POST/statements/{accountId}) и в ответном сообщении приходит идентификатор созданного ресурса выписки, но для наполнения выписки данными поставщика API требуется некоторое время. Соответственно будет приходить данное сообщение об ошибке

BY.NBRB.Resource.NotCancel

400

Ресурс не может быть отозван

BY.NBRB.Rules.AfterCutOffDateTime

400

Ресурс согласия или ресурс платежного указания запрашивается после даты cutOffDateTime

BY.NBRB.Signature.Invalid

400

Заголовок подписи x-jws-signature был проанализирован и имеет действительный заголовок JOSE, соответствующий спецификации, но сама подпись не может быть проверена

BY.NBRB.Signature.InvalidClaim

400

Заголовок JOSE в элементе x-jws-signature имеет одно или несколько утверждений (claim) с недопустимым значением (например, утверждение kid, которое не принимает сертификат). Наименование отсутствующего утверждения должно передаваться в элементе path ответа об ошибке

BY.NBRB.Signature.MissingClaim

400

Заголовок JOSE в элементе x-jws-signature имеет одно или несколько обязательных утверждений, которые не указаны. Имя пропущенного утверждения должно быть указано в элементе path ответа об ошибке

BY.NBRB.Signature.Malformed

400

x-jws-signature в заголовке запроса была искажена и не могла быть проанализирована как допустимый JWS

BY.NBRB.Signature.Missing

400

Запрос API предполагает x-jws-signature в заголовке, но элемент отсутствовал

BY.NBRB.Unsupported.AccountIdentifier

400

Идентификатор счета не поддерживается для данной схемы. Элемент path содержит путь к элементу accountIdentifier

BY.NBRB.Unsupported.LocalInstrument

400

Указанный localInstrument не поддерживается поставщиком API. Элемент path содержит путь к элементу localInstrument. Элемент URL должен быть заполнен ссылкой на документацию поставщика API со списком поддерживаемых localInstrument

BY.NBRB.Reauthenticate

403

Для обработки запроса требуется повторная аутентификация клиента

BY.NBRB.Rules.ResourceAlreadyExists

409

Ресурс с такими же параметрами уже существует

BY.NBRB.UnexpectedError

5хх

Возникновение непредвиденной ошибки. Поставщик API должен заполнить сообщение детальным описанием

ошибки, не раскрывая конфиденциальную информацию

Перечень низкоуровневых текстовых ошибок не является исчерпывающим и может быть дополнен поставщиком API, используя свою схему нумерации ошибок "BY.NAME_BANK.errorCode".

Пример:

{

"code": "400 Bad Request",

"id": "2b5f0fb2-730b-11e8-adc0-fa7ae0ghfsfh",

"message": "Невалидные параметры запроса",

"errors": [

{

"errorCode": "BY.NBRB.Resource.ConsentMismatch",

"message": "Элементы initiation в paymentConsents и в payments не совпадают между собой",

"path": "data.initiation"

}

]

}

23. Система пагинации для больших json ответов.

Поставщик API предоставляет постраничный ответ для методов GET, которые возвращают множественные записи.

Если существует следующая страница записей, то поставщик API предоставляет ссылку на следующую страницу записей в элементе links.next ответа. Отсутствие следующей ссылки будет означать, что текущая страница является последней страницей записей.

Для многостраничных ответов поставщик API гарантирует, что количество записей на одной странице составляет минимум 25 записей (кроме последней страницы, где больше нет записей) и максимум 100 записей.

Поставщик API включает "self" ссылку на ресурс в элементе links.self.

Дополнительно поставщик API предоставляет:

ссылку на первую страницу записей в элементе links.first;

общее количество страниц в элементе meta.totalPages.

Настоящий стандарт не определяет, каким образом параметры перелистывания страниц передаются поставщиком API. Каждый поставщик API может использовать свои собственные механизмы для разбивки ответа. Если исходный запрос от пользователя API включал параметры фильтра, то в ответе возвращаются только те результаты (разбитые на страницы), которые соответствуют фильтру.

Пример второй страницы из многостраничного ответа:

{

"data": {

...

},

"links": {

"self": "https://api.bank.by/oapi-channel/open-banking/v1.0/accounts/98765/transactions/23?pg=2",

"first": "https://api.bank.by/oapi-channel/open-banking/v1.0/accounts/98765/transactions/23",

"next": "https://api.bank.by/oapi-channel/open-banking/v1.0/accounts/98765/transactions/23?pg=3"

},

"meta": {

"totalPages": 6,

"firstAvailableDateTime": "2019-05-03T00:00:00+00:00",

"lastAvailableDateTime": "2019-12-03T00:00:00+00:00"

}

}

Пример ответа, когда нет данных:

{

"data": {

"transactionListId": "23",

"transaction": [ ] },

"links": {

"self": "https://api.bank.by/oapi-channel/open-banking/v1.0/accounts/98765/transactions/23"

},

"meta": {

"totalPages": 1

}

}

платный документ

Полный текст доступен после регистрации и оплаты доступа.

ПОСТАНОВЛЕНИЕ ПРАВЛЕНИЯ НАЦИОНАЛЬНОГО БАНКА РЕСПУБЛИКИ БЕЛАРУСЬ Стандарт проведения расчетов СПР 6.02-1-2022 "Банковская деятельность. Информационные технологии. Открытые банковские API. Платежные API. Спецификация" Раздел I. Общие положения Раздел II. Общие требования к API Глава 1. Требования к элементам данных Глава 2. Требования к структуре API Глава 3. Общая модель данных Глава 4. Общие требования к Информационной безопасности Раздел III. Требования к API, используемым для получения информации о счетах клиента Глава 5. Основные положения Глава 6. Описание процесса получения информации о счете (счетах) клиента Глава 7. Модели данных общих объектов, используемых в методах API Глава 8. Требования к методам и моделям API для получения информации о счете (счетах) клиента Глава 9. Требования к особенностям работы с пользователем API первого типа Раздел IV. Требования к API, используемым для инициирования платежа Глава 10. Общее описание Глава 11. Описание процесса инициирования платежа Глава 12. Модели данных общих объектов, используемых при инициировании платежа Глава 13. Согласие на инициирование платежа Глава 14. Требования к методам и моделям API для инициирования платежа Глава 15. Требования к особенностям работы с Пользователями API первого типа Глава 16. Требования к методам и моделям получения информации по всем Согласиям и платежным указаниям Клиента Раздел V. Справочники Глава 17. Общее описание справочников Стандарт проведения расчетов СПР 6.02-2-2022 "Банковская деятельность. Информационные технологии. Открытые банковские API. Платежные API. Информационная безопасность" Раздел I. Общие положения Раздел II. Технические требования Глава 1. Общие технические требования Глава 2. Технология авторизации OAuth 2.0 Глава 3. OpenID Connect. Протокол OpenID Connect Глава 4. OpenID Connect. Аутентификация с генерацией кода авторизации Глава 5. OpenID Connect. Гибридный сценарий аутентификации Глава 6. OpenID Connect. Регистрация сервера авторизации (Discovery) и динамическая регистрация клиента Глава 7. Аутентификация клиента Глава 8. Доступ к защищенному ресурсу Глава 9. JWT. Цифровая подпись в формате JSON Глава 10. JWT. JSON-структура шифрованного текста Глава 11. JWT. JSON структура ключа Глава 12. JWT. Структура JSON веб-токена Глава 13. Механизмы защиты. Цифровая подпись и шифрование Глава 14. Механизмы защиты. Требования к энтропии симметричных ключей Глава 15. Механизмы защиты. Требования к TLS Глава 16. Механизмы защиты. Токен доступа, связанный с MTLS-сертификатом клиента Раздел III. Профиль безопасности OpenID API для доступа к сервисам в режиме только для чтения Глава 17. Положения обеспечения безопасности авторизации Глава 18. Требования к доступу к защищенным ресурсам только для чтения Раздел IV. Профиль безопасности OpenID API для доступа к сервисам в режиме чтения и записи Глава 19. Положения обеспечения безопасности авторизации Глава 20. Требования к доступу к защищенным ресурсам только для чтения и записи (с использованием токенов) Глава 21. Конечная точка объекта запроса Раздел V. Защищенный с использованием JWT режим ответа на запрос авторизации для OAuth 2.0 (JARM) Глава 22. Режим ответа на основе JWT. Структура данных JWT-ответа Глава 23. Режим ответа на основе JWT. Цифровая подпись и шифрование Глава 24. Режим ответа на основе JWT. Кодирование ответа Глава 25. Режим ответа на основе JWT. Правила обработки Глава 26. Метаданные клиента Глава 27. Метаданные сервера авторизации

Постановление Правления Национального банка Республики Беларусь от 26 августа 2022 года №314
"Об утверждении стандартов проведения расчетов"

О документе

Номер документа:314
Дата принятия: 26.08.2022
Состояние документа:Действует
Начало действия документа:19.10.2022
Органы эмитенты: Банки

Опубликование документа

Национальный правовой Интернет-портал Республики Беларусь от 18 октября 2022 года, 8/38836

Примечание к документу

В соответствии с пунктом 2 настоящее Постановление вступает в силу после его официального опубликования - с 19 октября 2022 года.