Главная Книги - Разные Руководство по эксплуатации продукта «Platform V Exchange Rates» Код компонента: CRT (Поколение 4)
поиск по сайту правообладателям
|
|
содержание .. 1 2 ..
Руководство по эксплуатации
продукта «Platform V Exchange Rates»
Код компонента: CRT
Поколение 4
ОГЛАВЛЕНИЕ
РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ
3
РУКОВОДСТВО ПРИКЛАДНОГО РАЗРАБОТЧИКА PLATFORM V EXCHANGE RATES
3
Термины и определения
3
Подключение и конфигурирование
3
Разработка первого приложения с использованием программного продукта
3
Использование программного продукта
8
Часто встречающиеся проблемы и пути их устранения
10
РУКОВОДСТВО ПО СИСТЕМНОМУ АДМИНИСТРИРОВАНИЮ PLATFORM V EXCHANGE RATES .. 11
Термины и сокращения
11
Сценарии администрирования
11
Описание настроек
11
События системного журнала
14
СОБЫТИЯ МОНИТОРИНГА (MONITORING-EVENTS)
19
Часто встречающиеся проблемы и пути их устранения
20
ОПИСАНИЕ API ПРОДУКТА
20
Руководство по эксплуатации
Руководство прикладного разработчика Platform V Exchange
Rates
Термины и определения
В таблице приведены основные термины, аббревиатуры и сокращения:
Термин/Аббревиатура
Определение
API
Application Programming Interface - программный интерфейс приложения
ERNP
Exchange Rate Natural Person - курс валюты для физических лиц
PMR
Precious Metal Rate - курс драгоценного металла
АС
Автоматизированная система
ВСП
Внутреннее структурное подразделение
ОМС
Обезличенные металлические счета
СБ
ПАО Сбербанк
ФЛ
Физические лица
ЦБ
Центральный банк Российской Федерации
ЮЛ
Юридические лица
Подключение и конфигурирование
Для подключения продукта используется публичное API.
С описанием API можно ознакомиться в разделе Описание API продукта (стр.19 данного документа).
Разработка первого приложения с использованием программного продукта
Пример вызовов публичного API и его методов приведен ниже.
Перечень методов API
API
Метод
Описание метода
Детализация
CentralBankRates К
getRate Курс ЦБ
Получение курса ЦБ
Входные параметры
урсы ЦБ
с конверсией
валюты на
(входные параметры
операционную дату.
представлены в разделе
Всегда возвращает курс
Описание API продукта).
за N единиц валюты и
Выходные параметры
масштаб N. Источник
(выходные параметры
API
Метод
Описание метода
Детализация
данных: Мастер
представлены в разделе
источник курсов
Описание API продукта)
CentralBankRates К
getRates
Получение списка
Входные параметры
урсы ЦБ
Список курсов за
курсов CБ
(входные параметры
период
валют/металлов (ОМС)
представлены в разделе
на операционную дату
Описание API продукта).
для физических лиц. По
Выходные параметры
каждой валютной паре
(выходные параметры
возвращает курс за N
представлены в разделе
единиц валюты и
Описание API продукта)
масштаб N
Внимание! : Курсы
предоставляются as-is,
валютные пары из
справочника Источник
данных: Мастер
источник курсов
CentralBankRates
getRateListByQu
Получение курса ЦБ по
Входные параметры
Курсы ЦБ
oteCurrency
списку валют.
(входные параметры
Список курсов
Всегда возвращает M
представлены в разделе
ЦБ с конверсией
курсов за N единиц
Описание API продукта).
по валюте
валюты и масштаб L.
Выходные параметры
котировки
Источник данных:
(выходные параметры
Мастер источник курсов
представлены в разделе
Описание API продукта)
ExchangeRatesForI
getRate
Получение курса валют
Входные параметры
ndividuals
Курс ФЛ с
Сбербанка для
(входные параметры
Курсы ФЛ
конверсией
физических лиц по
представлены в разделе
Сбербанка
валюта-рубль
заданным атрибутам на
Описание API продукта).
дату-время из входных
Выходные параметры
параметров для
(выходные параметры
валютной пары
представлены в разделе
состоящей из
Описание API продукта)
валюты/рубль.
Всегда возвращает курс
за N единиц валюты и
масштаб N.
Внимание! Что касается
индивидуального курса
по клиенту, то это
регулируется
заполнением выходного
атрибута "Признак
индивидуального
курса".
Для того чтобы
получить
API
Метод
Описание метода
Детализация
индивидуальный курс
нужно чтобы данный
курс был тиражирован
последним для
запрашиваемой
даты/времени, во
входных данных задан
соответствующий ВСП и
выбран
соответствующий ERNP.
Если тиража
индивидуального курса
нет на запрашиваемую
дату/время, то вы
получите обычный курс
для выбранного ERNP.
ExchangeRatesForI
getRates
Получение списка
Входные параметры
ndividuals
Список курсов
курсов CБ
(входные параметры
Курсы ФЛ
ФЛ валюты
валют/металлов (ОМС)
представлены в разделе
Сбербанка
на операционную дату
Описание API продукта).
для физических лиц. По
Выходные параметры
каждой валютной паре
(выходные параметры
возвращает курс за N
представлены в разделе
единиц валюты и
Описание API продукта
масштаб N.
Внимание! Курсы
предоставляются as-is,
валютные пары из
справочника
ExchangeRatesForI
getCrossRate
Получение кросс-курса
Входные параметры
ndividuals
Кросс-курс ФЛ с
валют Сбербанка для
(входные параметры
Курсы ФЛ
конверсией
физических лиц по
представлены в разделе
Сбербанка
валюта-валюта
заданным атрибутам на
Описание API продукта).
дату-время из входных
Выходные параметры
параметров для
(выходные параметры
валютной пары,
представлены в разделе
состоящей из
Описание API продукта).
валюты/валюты. Всегда
Метод основывается на
возвращает курс за N
принципе "обратного
единиц валюты и
калькулятора" EUR/USD
масштаб N.
"buy": true
Внимание! Что касается
"directOperation": true
индивидуального курса
Базовая валюта EUR,
по клиенту, то это
котируемая USD, банк
регулируется
покупает у клиента X EUR
заполнением выходного
(по курсу YY.YY) и
атрибута "Признак
API
Метод
Описание метода
Детализация
индивидуального
продает X USD (по курсу
курса". Для того чтобы
YY.YY)
получить
индивидуальный курс
нужно чтобы данный
курс был тиражирован
последним для
запрашиваемой
даты/времени, во
входных данных задан
соответствующий ВСП и
выбран
соответствующий ERNP.
Если тиража
индивидуального курса
нет на запрашиваемую
дату/время, то вы
получите обычный курс
для выбранного ERNP.
ExchangeRatesForI
getMetalRate
Получение котировок
Входные параметры
ndividuals
Котировки
металлов Сбербанка
(входные параметры
Курсы ФЛ
металлов ФЛ с
для физических лиц по
представлены в разделе
Сбербанка
конверсией
заданным атрибутам на
Описание API продукта).
дату-время из входных
Выходные параметры
параметров для
(выходные параметры
валютной пары
представлены в разделе
состоящей из
Описание API продукта)
валюты/рубль. Всегда
возвращает курс за N
единиц валюты и
масштаб N.
Внимание! Что касается
индивидуального курса
по клиенту, то это
регулируется
заполнением выходного
атрибута "Признак
индивидуального
курса". Для того чтобы
получить
индивидуальный курс
нужно чтобы данный
курс был тиражирован
последним для
запрашиваемой
даты/времени, во
входных данных задан
соответствующий ВСП и
API
Метод
Описание метода
Детализация
выбран
соответствующий PMR.
Если тиража
индивидуального курса
нет на запрашиваемую
дату/время, то вы
получите обычный курс
для выбранного PMR.
ExchangeRatesForL
getRate
Получение курса валют
Входные параметры
egalEntities
Курс ЮЛ с
Сбербанка для
(входные параметры
Курсы ЮЛ
конверсией
юридических лиц по
представлены в разделе
Сбербанка
валюта-рубль
заданным атрибутам на
Описание API продукта).
дату-время из входных
Выходные параметры
параметров для
(выходные параметры
валютной пары
представлены в разделе
состоящей из
Описание API продукта)
валюты/рубль. Всегда
возвращает курс за N
единиц валюты и
масштаб N. Источник
данных: Мастер
источник курсов
ExchangeRatesForL
getRates
Получение списка
Входные параметры
egalEntities
Список курсов
курсов CБ
(входные параметры
Курсы ЮЛ
валюты/металла
валют/металлов (ОМС)
представлены в разделе
Сбербанка
ОМС
на операционную дату
Описание API продукта).
для юридических лиц.
По каждой валютной
паре возвращает курс
за N единиц валюты и
масштаб N
Внимание!: курсы
только по валютным
парам из справочника.
ExchangeRatesForL
getCrossRate
Получение кросс-курса
Входные параметры
egalEntities
Кросс-курс ЮЛ
валют Сбербанка для
(входные параметры
Курсы ЮЛ
с конверсией
юридических лиц по
представлены в разделе
Сбербанка
валюта-валюта
заданным атрибутам на
Описание API продукта).
дату-время из входных
Выходные параметры
параметров для
(выходные параметры
валютной пары,
представлены в разделе
состоящей из
Описание API продукта)
валюты/валюты. Всегда
возвращает курс за N
единиц валюты и
масштаб N. Источник
API
Метод
Описание метода
Детализация
данных: Мастер
источник курсов
Использование программного продукта
Продукт Platform V Exchange Rates предоставляет потребителям:
• значения курсов валют;
• значения учетных цен драгоценных металлов;
• значения ставок МКБ;
• значения котировок финансовых инструментов;
• сервис конверсионных расчетов.
Внутренние процессы, происходящие при запросе курсов:
• модуль загрузки получает сообщение от мастера источника курсов;
• выполняет обработку сообщений;
• сохраняет курсы в БД;
• формирует ответ;
• отправляет ответ в систему мастер источник курсов.
Пример внешнего процесса, получения курса валюты Центробанка/котировки металла на начало каждого
дня из переданного в запросе периода. При данном запросе используется метод getRates Список курсов за
период. Внешний потребитель отправляет сообщение запроса
{
"jsonrpc": "2.0",
"id": 111,
"method": "getRates",
"params": [
{
"codes": [
"840",
"978",
"HelloWorld"
],
"dateFrom": "2021-04-22T12:51:47.188",
"dateTo": "2021-04-22T12:51:47.188"
}
]
}
Система распространения банковских финансовых инструментов принимает данное сообщение и
возвращает ответ, данный процесс выполняется синхронно.
Ответ: список валют на одну дату
{
"jsonrpc": "2.0",
"id": 111,
"result": [
{
"success": [
{
"requestDate": "2021-04-30T23:59:59.000+03:00",
"rates": [
{
"currencyRate": 71.6993,
"startDate": "2021-04-30T00:00:00.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"type": "FXCB",
"rqUID": "FXCB_null"
},
{
"currencyRate": 65.5555,
"startDate": "2021-04-30T00:00:00.000+03:00",
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"type": "FXCB",
"rqUID": "FXCB_null"
}
]
}
]
},
{
"errors": [
{
"requestDate": "2021-04-30T23:59:59.000+03:00",
"rates": [
{
"code": "HelloWorld",
"error": {
"code": -31001,
"description": "По переданному коду: HelloWorld отсутствуют курсы валют."
}
]
}
]
}
]
}
Описание примеров использования API Продукта приведены в разделе Описание API Продукта.
Часто встречающиеся проблемы и пути их устранения
В настоящее время информации о возможных проблемах не имеется.
Руководство по системному администрированию
Platform V Exchange Rates
Термины и сокращения
Термин
Определение
API
Application programming interface - программный интерфейс
приложения
АС
Автоматизированная система
БД
База данных
ЕКПиТ
Единый каталог продуктов и тарифов (опциональная
интеграция)
Сериализация
Процесс перевода структуры данных в
последовательность байтов
Среда
Рекомендуется Kubernetes, опционально поддерживается
контейнеризации
совместимость с Red Hat OpenShift 4+
Сценарии администрирования
• Администратору рекомендуется регулярно выполнять:
o контроль состояния работы Platform V Exchange Rates;
o мониторинг производительности Platform V Exchange Rates.
• При выявлении нештатных ситуаций необходимо:
o проверить работоспособность всех сервисов Platform V Exchange Rates;
o проверить логи на наличие ошибок, возможно c помощью опционального компонента
Журналирование (LOGA) продукта Platform V Monitor (примеры логов представлены в
разделе События системного журнала настоящего документа).
• В рамках выполнения требований безопасной работы Platform V Exchange Rates Администратор
выполняет следующие функции:
o несет ответственность за качество проводимых им работ;
o следит за сроками действия сертификатов.
Доступ к Platform V Exchange Rates имеют только те сотрудники, которым он необходим в соответствии с
их должностными обязанностями. Доступ должен ограничиваться минимально необходимым объемом
данных. Должны разделяться среды разработки, тестирования и эксплуатации, при этом, необходимо
производить разделение обязанностей между разработчиками АС, тестирующим персоналом.
Специалисты, занимающиеся администрированием Platform V Exchange Rates, должны обладать
следующими навыками:
• развертывание и администрирование приложений в среде контейнеризации;
• работа с СУБД PostgreSQL (рекомендуется Platform V Pahgolin SE).
Описание настроек
В Platform V Exchange Rates настройки конфигурации выполняются с помощью следующих способов:
1) средств управляемой среды (через консоль среды контейнеризации);
2) автоматизированной процедуры (выполняется при инсталляции).
- description: JDBC driver for main currency rates database
name: DB_CURRATE_MAIN_DRIVER
- description: Connection string for main currency rates database
name: DB_CURRATE_MAIN_URL
- description: JDBC driver for si currency rates database
name: DB_CURRATE_STANDIN_DRIVER
- description: Connection string for si currency rates database
name: DB_CURRATE_STANDIN_URL
- description: JDBC driver for main ekpit database
name: DB_EKPIT_MAIN_DRIVER
- description: Connection string for main ekpit database
name: DB_EKPIT_MAIN_URL
- description: JDBC driver for si ekpit database
name: DB_EKPIT_STANDIN_DRIVER
- description: Connection string for si ekpit database
name: DB_EKPIT_STANDIN_URL
- description: Owner schema name for currency rates databases (main and SI)
name: DB_CURRATE_OWNER_SCHEMA
value: CURRENCY_RATES
- description: Owner schema name for ekpit databases (main and SI)
name: DB_EKPIT_OWNER_SCHEMA
value: EKPIT
- description: Enable/disable sql query log for currency rates datasource
name: DB_CURRATE_SHOW_SQL
value: 'false'
- description: The minimum number of idle connections for currency rates databases
name: DB_CURRATE_MIN_IDLE
value: '5'
- description: The maximum number of connections in the pool for currency rates databases
name: DB_CURRATE_MAX_POOL_SIZE
value: '20'
- description: Enable/disable sql query log for ekpit datasource
name: DB_EKPIT_SHOW_SQL
value: 'false'
- description: The minimum number of idle connections for ekpit databases
name: DB_EKPIT_MIN_IDLE
value: '5'
- description: The maximum number of connections in the pool for ekpit databases
name: DB_EKPIT_MAX_POOL_SIZE
value: '20'
- description: The minimum spare worker threads
name: WORKER_THREADS_MIN_SPARE
value: '10'
- description: The maximum worker threads
name: WORKER_THREADS_MAX
value: '200'
- description: The maximum active jta transactions
name: JTA_MAX_ACTIVE_TRANSACTIONS
value: '50'
- description: JVM property for spring.config.additional-location
name: SPRING_CONFIG_ADDITIONAL_LOCATION
value: -Dspring.config.additional-location=/opt/etc/aj-kafka-security.yaml
- description: Enable/disable (false/true) integration with application-journal
name: STANDIN_CLOUD_CLIENT_STUB
value: 'false'
- description: Application-journal kafka brokers
name: STANDIN_CLOUD_CLIENT_KAFKA_BOOTSTRAP_SERVERS
- description:
name: STANDIN_ZONE_ID
value: CV
- description: Enable/disable usage NSI FACADE (true) or DB EKPIT (false)
name: USE_NSI_FACADE
value: 'true'
- description: NSI FACADE host address
name: NSI_FACADE_HOST
- description: NSI FACADE port
name: NSI_FACADE_PORT
value: '80'
- description: Enable/disable (false/true) sending messages to audit (enabled by default)
name: DISABLE_AUDIT
value: 'false'
- description: Audit host address
name: AUDIT_HOST
События системного журнала
Для системного журнала применимы следующие уровни логирования:
• FATAL - критические ошибки, при которых невозможна работа приложения.
• Error - записываются сообщения обо всех ситуациях или событиях в приложении, которые
считаются ошибочными:
o ошибки вызова компонентов платформы;
o ошибки интеграционных вызовов.
• Warning - предупреждения.
• Info - информация о работе приложения и текущем состоянии процессов.
• Debug - подробности о работе приложения, позволяющие восстановить последовательность
выполнения операций при обслуживании вызовов и вызовах внешних систем.
• TRACE - подробные записи о действиях приложения. Нужны в исключительных случаях для
отладки. Все события попадают в платформенный журнал.
Описание событий error
Класс
Сообщение
Причина возникновения
CachePersistenceImpl
cache {} is null
Возникает если кэш с нужным именем не
найден
ObjectUtils
Возникла ошибка в
Возникает если парсинг объекта произошел с
момент парсинга
ошибкой
объекта
ContextAvailabilityMonitor
Ошибка мониторинга
Возникает если при установке значения
метрики для сервиса мониторинга произошла
ошибка
ContextAvailabilityMonitor
Ошибка при проверке
Возникает при ошибках проверки доступности
доступности БД ЕКПиТ
БД ЕКПиТ
({})
ContextAvailabilityMonitor
Ошибка при проверке
Возникает при ошибках проверки доступности
доступности БД Platform
БД Platform V Exchange Rates
V Exchange Rates ({})
OfficesCacheWarmer
cache {} is null
Возникает если кэш с нужным именем не
найден
Класс
Сообщение
Причина возникновения
CompensationServiceImpl
При компенсации
Возникает при ошибках компенсации объектов
объектов произошла
ошибка
WarmUpCacheServiceImpl
Error in warming
Возникает при ошибках при разогреве кэшей с
данными
RateRequestDaoHibernateI
segmentsIds are empty
Возникает, когда при подготовке sql запроса
mpl
для поиска распоряжений передан пустой
список ай ди сегментов
RateRequestDaoHibernateI
Сегментов нашлось
Возникает, когда при подготовке sql запроса
mpl
больше, чем может
для поиска распоряжений передан список ай
поместиться в in
ди сегментов содержащий более 1000 записей
условие запроса.
Срочно обратитесь к
разработчикам Platform
V Exchange Rates.
количество {} шт
CurrencyAuditServiceImpl
Ошибка аудита
Возникает если при отправке события в аудит
произошла ошибка
CurrencyRatesSaverServiceI
Ошибка сохранения
Общая ошибка при неудачном сохранения
mpl
курсов из Platform V
курсов из Platform V Exchange Rates
Exchange Rates
CurrencyRatesSaverServiceI
Ошибка валидации
Возникает при ошибки валидации входящего
mpl
входящего
распоряжения
распоряжения
CurrencyRatesSaverServiceI
Ошибка при
Общая ошибка при неудачном сохранении
mpl
сохранении входящего
входящего распоряжения
распоряжения
CurrencyRatesSaverServiceI
Unknown additional info
Случается, при загрузке курсов из журнала
mpl
%s
Компонент Прикладной журнал (APLJ) продукта
Platform V Data Tools (если используется) когда
дополнительная информация из данных
объекта из журнала Компонент Прикладной
журнал продукта Platform V Data Tools имеет
неизвестный подтип
CurrencyRatesSaverServiceI
Ошибка при
Общая ошибка при неудачном сохранении из
mpl
сохранении АРК
системы источника курсов сообщения из
сообщения из
компонента Прикладной журнал (APLJ)
компонента
продукта Platform V Data Tools (если
Прикладной журнал
используется)
(APLJ) продукта Platform
V Data Tools
Класс
Сообщение
Причина возникновения
CurrencyRatesSaverServiceI
Something is wrong with
Происходит при преобразовании XML данных
mpl
saving EOD price
из компонента Прикладной журнал (APLJ)
[unknown rquid] from PJ:
продукта Platform V Data Tools (если
%s
используется) журнала, в случае если в них
содержится неизвестный rquid
CurrencyRatesSaverServiceI
Something is wrong with
Общая ошибка происходит при неудачном
mpl
saving EOD price
сохранении сообщения
[unknown rquid] from PJ:
%s
CurrencyRatesSaverServiceI
Something is wrong with
Общая ошибка при неудачном добавлении
mpl
saving ExrCurrency from
валюты из журнала компонента Прикладной
PJ
журнал (APLJ) продукта Platform V Data Tools
(если используется) для сохранения
CurrencyRatesSaverServiceI
Ошибка обработки
Общая ошибка при проблемах с обработкой
mpl
сообщения от Platform
сообщения от Platform V Exchange Rates
V Exchange Rates
CurrencyRatesSaverServiceI
Ошибка при
Общая ошибка возникает при ошибках
mpl
сохранении входящего
сохранения распоряжение на сохранение
распоряжения
курса ЮЛ от системы источника курсов
CurrencyRatesSaverServiceI
Ошибка при отправке
Возникает при возникновении ошибок при
mpl
сообщения в компонент
отправке распоряжения на сохранение курса в
Прикладной журнал
компонент Прикладной журнал (APLJ) продукта
(APLJ) продукта Platform
Platform V Data Tools (если используется )
V Data Tools
CurrencyRatesSaverServiceI
Произошла ошибка при
Происходит при ошибках в сохранении
mpl
сохранении
распоряжения присланного из компонента
распоряжения из
Прикладной журнал (APLJ) продукта Platform V
прикладного журнала
Data Tools (если используется)
CurrencyRatesSaverServiceI
Ошибка обработки
Возникает при ошибках сохранения Platform V
mpl
сообщения от Platform
Exchange Rates
V Exchange Rates: {}
CurrencyRatesSaverServiceI
Произошла ошибка при
Возникает при ошибках отправки курсов из
mpl
отправке сообщения в
Platform V Exchange Rates в компонент
компонент Прикладной
Прикладной журнал (APLJ) продукта Platform V
журнал (APLJ) продукта
Data Tools (если используется)
Platform V Data Tools
(если используется)
CurrencyRatesSaverServiceI
Произошла ошибка при
Возникает если случаются ошибки при
mpl
компенсации данных
компенсации данных, начатой из-за ошибки
при отправке сообщения в компонент
Прикладной журнал (APLJ) продукта Platform V
Data Tools (если используется)
Класс
Сообщение
Причина возникновения
LegalRateServiceImpl
Все входные параметры
Возникает если какой-либо параметр для
обязательны и не могут
поиска курсов пустой
быть пустыми
ExrRateServiceImpl
Курс ЦБ для валюты %s
Возникает если в БД не удалось найти курс ЦБ
отсутствует
ExrRateServiceImpl
Переданные валюты не
Возникает если в БД не удалось найти валюты
найдены в справочнике
по переданным кодам
%s
IndividualRateServiceImpl
Все входные параметры
Возникает если какой-либо параметр для
обязательны и не могут
поиска курсов пустой
быть пустыми
IndividualRateServiceImpl
Подходящее
Возникает, когда по текущим входным данным
распоряжение не
не найдено распоряжение в БД
найдено: [%s%s%s] -
[{%s}] - [{%s}]
IndividualRateServiceImpl
Модуль курса валют.
Возникает, когда переданы пустая коллекция
Подходящее
распоряжений для поиска курсов валют
распоряжение не
найдено: [%s%s%s] -
[{%s}] - [{%s}]
IndividualRateServiceImpl
Модуль курса валют.
Возникает, когда распоряжение не содержит
Распоряжение
курсов валют
относится к курсам для
мерных слитков. Rquid:
%s
IndividualRateServiceImpl
Сообщение от
Возникает если единица измерения не найдена
исключения
IndividualRateServiceImpl
Модуль курса валют.
Ошибка возникает, когда не удалось найти курс
Отсутствует курс валют.
валют для заданных кодов
Тербанк: %s; ОСБ: %s;
ВСП: %s; тип валюты:
%s; Код базовой
валюты: %s
IndividualRateServiceImpl
Модуль курса валют.
Ошибка возникает, когда не удалось найти курс
Отсутствует курс для
для металла для заданных кодов
металла. Тербанк: %s;
ОСБ: %s; ВСП: %s; тип
валюты: %s;Код металла:
%s; Покупка: %s
Класс
Сообщение
Причина возникновения
IndividualRateServiceImpl
Отсутствуют диапазоны
Ошибка в методе подготовки курсов для
курса
распоряжений если не переданы выборочные
распоряжения
ExchangeRatesForLegalEntiti
Отсутствует
Возникает в методе для получения курсов ЮЛ
esImpl
обязательный параметр
при валидации запроса для курса ЮЛ в случае,
[%s]
когда дата запроса отсутствует
ExchangeRatesForLegalEntiti
Отсутствует
Возникает в методе для получения курсов ЮЛ
esImpl
обязательный параметр
при валидации запроса для курса ЮЛ в случае,
[%s]
когда в запросе отсутствуют курсы
ExchangeRatesForLegalEntiti
Не поддерживаемый
Возникает в методе для получения курсов ЮЛ,
esImpl
тип финансовых
когда передан неизвестный тип инструмента
инструментов [%s]
ExchangeRatesForLegalEntiti
{сообщение от
Возникает при пойманных исключениях во
esImpl
пойманного
время выполнения запроса для курса ЮЛ
исключения}
RatesXlsxImportFromResour
Ошибка при импорте
Возникает при импорте исторических данных,
ceServiceImpl
исторических данных {}
когда статус ответа при сохранении курсов
системы источника курсов не равен статусу ОК
RatesXlsxImportFromResour
Ошибка при импорте
Возникает при импорте исторических данных,
ceServiceImpl
исторических данных {}
когда во время сохранения курсов системы
источника курсов произошла ошибка
RatesXlsxImportFromResour
Ошибка при импорте
Возникает при импорте исторических данных,
ceServiceImpl
исторических данных.
когда не удалось обнаружить источник с
Отсутствует источник
данным
RatesXlsxImportFromResour
Ошибка при импорте
Возникает при импорте исторических данных,
ceServiceImpl
исторических данных
когда произошло что-то не так. Общая ошибка
Описание событий warn:
Класс
Сообщение
Причина возникновения
WarmUpCacheServiceI
Error in warming
При любом пойманном исключении при
mpl
разогреве кэшей
RateRequestDaoHibern
запрос {} был уже
Возникает в случае, когда проверка номера
ateImpl
изменен
версии или метки не выполнилась
RatesTypeDaoImpl
В запросе присутствуют
Происходит при получении ставки
взаимоисключающие
межбанковского кредитования, когда дата
даты
использования совпадает с датой публикации
RatesTypeDaoImpl
В запросе отсутствуют
Происходит при получении ставки
даты
межбанковского кредитования, когда дата
Класс
Сообщение
Причина возникновения
использования и дата публикации переданы
пустыми
RatesTypeDaoImpl
На указанные
Возникает если не удалось найти ставку в БД
наименование [%s] и
для переданной даты запроса и имени ставки
дату [%s] ставки
отсутствуют
JsonServiceImpl
Не удалось
Возникают при ошибках сериализации
сериализовать объект
CurrencyRatesSaverServ
Ошибка обработки
Общая ошибка возникает при обработке
iceImpl
сообщения от Platform
сообщения-запроса для передачи курсов
V Exchange Rates: {}
валют и курсов металлов
CurrencyRatesSaverServ
Начинаем процедуру
Появляется при ошибке при отправке
iceImpl
компенсации
сообщения в Компонент Прикладной журнал
закомиченных данных
продукта Platform V Data Tools (если
используется)
CurrencyRatesSaverServ
Данные успешно
Сообщение об успешно компелированных
iceImpl
компенсированы
данных при отправке в Компонент Прикладной
журнал продукта Platform V Data Tools (если
используется)
RateAveragesServiceIm
Не найдены курсы ЦБ
Возникает, когда не удалось найти курсы ЦБ в
pl
для валюты %s в
указанный период дат
интервале %s-%s
RateRequestMonitorSer
Ошибка сортировки
Возникает при ошибке сортировки
viceImpl
списка распоряжений
распоряжений
CurrencyRateFilterImpl
фильтрация использует
Возникает при ошибке в методе получения
неоптимальную версию
подходящего сегмента для запроса
SanitizedStringSerializer
Разные строки после
Происходит во время сериализации, когда
санитайза. Было: {},
санитизированная строка не равна исходной
Стало {}
строке
События мониторинга (monitoring-events)
Все микросервисы продукта публикуют прикладные метрики стандартным для управляемой среды
выполнения способом (через «сервис» prometheus). Прикладные метрики Platform V Exchange Rates.
Идентификатор метрики
Описание
+ ".DurationTimer"
Время выполнения методов API
+ ".ApiCallsCounter"
Количество вызовов
Идентификатор метрики
Описание
+ ".ErrorsCounter"
Количество ошибок
Для времени выполнения метода также предоставляются данные, для построения гистограммы по
процентному соотношению (для отсечек в 50%, 80%, 95% случаев). Кроме того, отдельно регистрируются
непредвиденные долгие и быстрые случаи выполнения методов (более 2 сек, и менее 5мс), а также
отклонения от ожидаемого значения (100мс). Метрики по длительности выполнения одного из методов
API, передаются в мониторинг, который производит их анализ.
Часто встречающиеся проблемы и пути их устранения
В данном разделе собраны наиболее частые проблемы и описаны пути их устранения.
Проблема
Причина
Способ устранения
Осталась старая
-
Ручной рестарт pod
версия
Произошли
Следует собрать логи с приложения, на котором
приложения
ошибки
при
возникает ошибка и обратиться к технической
старте
поддержке. Это могут быть как ошибки в конфигурации,
приложения
параметрах, сетевой маршрутизации, настройки баз
данных, не верные сертификаты доступа
Описание API продукта
Интеграция с API курсы валют осуществляется по протоколу json-rpc 2.0. Спецификация.
Потребителям в ответном сообщении возвращается код и текст ошибки.
Код ошибки
Текст ошибки
Пояснения
-31000
Отсутствие обязательных
Отсутствие или некорректное заполнение
параметров
одного или более из обязательных
параметров
-31001
Отсутствие курсов валют
По переданной валютной паре или списку
валют отсутствуют данные по курсам
-31002
Дата начала должна быть
Во входных данных дата начала периода
раньше
даты
конца
позже даты окончания периода
периода
-31003
Переданный диапазон дат
Количество дней от начала до окончания
больше 30 дней
периода больше 30.
-31004
В
качестве
валюты
Во входных параметрах в качестве кода
передано
значение
валюты/металла передано значение для
"российский рубль"
российского рубля.
-31005
Найдено более одной
В справочнике найдено более одной записи
записи тербанка
для
переданного
значения
территориального банка
-31006
Не найдено записи по
В справочнике департаментов не найдено
переданному во входных
записи по переданному ТБ
данных ТБ
-31007
Найдено более одного
Для переданного набора данных существует
распоряжения
2 распоряжения с одинаковым временем
начала действия курсов.
-31008
По переданному типу <>
Для переданного типа курса не найдена
отсутствуют курсы валют
запись распоряжения.
-31009
Базовая и котируемая
валюта не могут быть
одинаковыми
-31010
Отсутствие курсов валют
Для переданной суммы не был найден
для переданной суммы
подходящий диапазон.
-31011
Единица измерения не
Переданный код инструмента отсутствует в
найдена.
справочнике.
-31012
Ценовой уровень с кодом
<> не найден.
-31015
В список приоритетов
вывода значений курса
переданы
дубликаты:
<список types/type>
-31016
Найденные
значения
Записи о курсе, которые были выбраны для
курсов не могут быть
ответа, не могут быть использованы, так как
применены
содержат некорректные или пустые данные
-31017
Переданные
значения
Не выполнены логические требования
параметра
<>
не
формата запроса, например - обеспечение
соответствуют
условиям
уникальности значения параметра внутри
формата <>
запроса.
-31998, -31999
"<Описание
системной
Внутренняя системная ошибка на стороне КВ,
ошибки>"
обратитесь к команде разработки КВ.
Поддерживаемые форматы дат
Формат
Пример
Описание
Примечания
YYYY-MM-DD
2005-08-09
9 августа 2005 года
hh:mm
18:31
18 часов 31 минута
не может использоваться как
самостоятельный паттерн
hh:mm:ss
18:31:42
18 часов 31 минута
не может использоваться как
42 секунды
самостоятельный паттерн
±hh
+03
UTC+03 часа
не может использоваться как
самостоятельный паттерн
-03
UTC-03 часа
±hhmm
+0330
UTC+03 часа
30
не может использоваться как
минут
самостоятельный паттерн
-0330
UTC-03 часа
30
минут
±hh:mm
+03:30
UTC+03 часа
30
не может использоваться как
минут
самостоятельный паттерн
-03:30
UTC-03 часа
30
минут
hh:mm:ss±hh
18:31:42+03
18 часов 31 минута
не может использоваться как
42 секунды UTC+03
самостоятельный паттерн
часа
18:31:42-03
18 часов 31 минута
42 секунды UTC-03
часа
hh:mm:ss±hh:mm
18:31:42+03:30
18 часов 31 минута
не может использоваться как
42 секунды UTC+03
самостоятельный паттерн
часа 30 минут
18:31:42-03:30
18 часов 31 минута
42 секунды UTC-03
часа 30 минут
YYYY-MM-
2005-08-
9 августа 2005 года
DDThh:mm:ss
09T18:31:42
18 часов 31 минута
42 секунды
YYYY-MM-
2005-08-
9 августа 2005 года
DDThh:mm:ss±hh
09T18:31:42+03
18 часов 31 минута
42 секундыUTC+03
часа
2005-08-
9 августа 2005 года
09T18:31:42-03
18 часов 31 минута
42 секундыUTC-03
часа
YYYY-MM-
2005-08-
9 августа 2005 года
DDThh:mm:ss±hh:m
09T18:31:42+03:30
18 часов 31 минута
m
42 секундыUTC+03
часа 30 минут
2005-08-
9 августа 2005 года
09T18:31:42-03:30
18 часов 31 минута
42 секундыUTC-03
часа 30 минут
YYYY-MM-
2005-08-
9 августа 2005 года
DDThh:mm:ss[.SSS]
09T18:31:42
18 часов 31 минута
42 секунды
2005-08-
9 августа 2005 года
09T18:31:42.201
18 часов 31 минута
42 секунды
201
миллисекунда
API для загрузки/тиража курсов
Загрузка курсов СБ для ЮЛ
Формат сообщения
Описание формата
Атрибут
Наимен
Тип
Кратнос
Комментарии
ование
ть
jsonrpc
-
String
1
id
Идентиф
String
1
Копируется
в
икатор
ответ.
Не
запроса/
проверяется.
сообще
ния
method
Вызывае
String
1
=
мый
publishLegalRate
метод
s.
Не
проверяется.
params
Парамет
list
1
ры
<object>
запроса
quoteId
Идентиф
String
1
Прикладной
икатор
идентификат
котиров
ор от АРК
ки
(был rqUid)
quoteTm
Дата и
long
1
Передается в
время
unix формате
формир
(количество
ования
секунд
котиров
прошедших с
ки
момента
01.01.1970
00:00).
Используется
:- для
проверки
уникальности
сообщения, -
для
определения
актуальности
ФИ в этом
сообщении
(ФИ+ЦУ
у
которых quot
eTm больше,
считается
самой
актуальной)
source
Система
String
1
Код системы
источни
АРК
к
котиров
ки
tier
Ценово
String
1
Представляет
й
из себя число
уровень
в диапазоне
(ЦУ)
от
1 до
46.
Ценовой
уровень
устанавливае
тся на все ФИ
этого
сообщения.
Используется
для проверки
уникальности
сообщения
startDate
Дата
dateTime
0..1
АРК не будет
начала
заполнять.
действи
я курсов
по
передан
ным
инструм
ентам
expiryDa
Дата
dateTime
0..1
Если
te
окончан
заполнено, то
ия дейст
действует для
вия
всех ФИ этого
курсов
сообщения.
по
Если
передан
отсутствует,
ным
то
время
инструм
окончания
ентам
для курсов не
устанавливае
тся.
Будет
использовать
ся
для
завершения
действия
валютной
пары в ЦУ
holdTim
Таймер
Integer
0..1
Количество
er
холдиро
секунд
на
вания
принятие
ЦУ
решения для
проведения
операции по
установленно
му
курсу
(курс
фиксируется
для клиента
на это время).
АРК не будет
использовать
rates
Список
list
1..N
валют,
<object>
вошедш
их
в
блок
base
Код
String
1
Буквенны
базовой
й
код
валюты
валюты
quoted
Код
String
1
Буквенны
котируе
й
код
мой
валюты
валюты
lotSize
Масшта
BigDecimal
1
Количеств
б
о базовой
валюты
для
которой
указана
цена курса
в
котируемо
й валюте.
Предполаг
ается, что
будет
всегда =1.
volume
Способ
String
1
От
АРК
Method
указания
будет
границ
приходить
диапазо
способ
нов
= указани
е нижних
границ
диапазоно
в,
код
"minimum
VolumeIncl
ude"
maximu
Верхняя
BigDecimal
0..1
Максимал
mVolum
граница
ьное
e
для всех
ограничен
диапазо
ие
всех
нов
диапазоно
в. АРК не
будет
передават
ь
ranges
Список
list <object>
1..N
курсов
валюты
bid
Цена покупки
BigDecimal
1
Банком
offer
Цена продажи
BigDecimal
1
Банком
maximu
Верхняя
BigDecimal
0..1
АРК не
mVolum
граница
будет
e
диапазона
передава
ть
minimu
Нижняя
BigDecimal
0..1
АРК
mVolum
граница
будет
e
диапазона
передава
ть
нижнюю
границу
диапазон
а
включит
ельно
Атрибут
Наимен
Тип
Кратнос
Комментарии
ование
ть
jsonrpc
-
String
1
id
Идентиф
String
1
Копируется в
икатор
ответ.
Не
запроса/
проверяется.
сообще
ния
method
Вызывае
String
1
=
мый
publishLegalRa
метод
tes.
Не
проверяется.
params
Парамет
list
1
ры
<object>
запроса
quoteId
Идентиф
String
1
Прикладной
икатор
идентификато
котиров
р от АРК (был
ки
rqUid)
quoteTm
Дата и
long
1
Передается в
время
unix формате
формир
(количество
ования
секунд
котиров
прошедших с
ки
момента
01.01.1970
00:00).
Используется:-
для проверки
уникальности
сообщения, -
для
определения
актуальности
ФИ в этом
сообщении
(ФИ+ЦУ
у
которых quote
Tm
больше,
считается
самой
актуальной)
source
Система
String
1
Код системы
источни
АРК
к
котиров
ки
tier
Ценово
String
1
Представляет
й
из себя число в
уровень
диапазоне от 1
(ЦУ)
до 46. Ценовой
уровень
устанавливаетс
я на все ФИ
этого
сообщения.
Используется
для проверки
уникальности
сообщения
startDate
Дата
dateTime
0..1
АРК не будет
начала
заполнять.
действи
я курсов
по
передан
ным
инструм
ентам
expiryDa
Дата
dateTime
0..1
Если
te
окончан
заполнено, то
ия дейст
действует для
вия
всех ФИ этого
курсов
сообщения.
по
Если
передан
отсутствует, то
ным
время
инструм
окончания для
ентам
курсов
не
устанавливаетс
я.
Будет
использоватьс
я
для
завершения
действия
валютной
пары в ЦУ
holdTim
Таймер
Integer
0..1
Количество
er
холдиро
секунд
на
вания
принятие
ЦУ
решения для
проведения
операции по
установленном
у курсу (курс
фиксируется
для клиента на
это время).
АРК не будет
использовать.
rates
Список
list
1..N
валют,
<object>
вошедш
их
в
блок
base
Код
String
1
Буквенн
базовой
ый код
валюты
валюты
quoted
Код
String
1
Буквенн
котируе
ый код
мой
валюты
валюты
lotSize
Масшта
BigDecimal
1
Количест
б
во
базовой
валюты
для
которой
указана
цена
курса в
котируем
ой
валюте.
Предпол
агается,
что будет
всегда
=1.
volume
Способ
String
1
От АРК
Method
указания
будет
границ
приходит
диапазо
ь способ
нов
= указан
ие
нижних
границ
диапазон
ов, код
"minimu
mVolume
Include"
maximu
Верхняя
BigDecimal
0..1
Максима
mVolum
граница
льное
e
для всех
ограниче
диапазо
ние всех
нов
диапазон
ов. АРК
не будет
передава
ть
ranges
Список
list <object>
1..N
курсов
валюты
bid
Цена покупки
BigDecimal
1
Банком
offer
Цена продажи
BigDecimal
1
Банком
maximu
Верхняя
BigDecimal
0..1
АРК
не
mVolum
граница
будет
e
диапазона
передават
ь
minimu
Нижняя
BigDecimal
0..1
АРК будет
mVolum
граница
передават
e
диапазона
ь нижнюю
границу
диапазона
включител
ьно
Пример запроса по валютам
{
"jsonrpc": "2.0",
"method": "publishLegalRates",
"id": "dfcddb36ff4b48929b1179cb8c34e9ee",
"params": [
{
"rqTm": 1627975262,
"tier": "1",
"expiryDate": null,
"rates": [
{
"base": "EUR",
"quoted": "RUB",
"lotSize": 1,
"ranges": [
{
"bid": 82.8,
"offer": 87.29,
"maximumVolume": 1000.0
},
{
"bid": 83.2,
"offer": 86.89,
"maximumVolume": 300000.0
}
]
},
{
"base": "USD",
"quoted": "RUB",
"lotSize": 1,
"ranges": [
{
"bid": 67.71,
"offer": 70.95,
"maximumVolume": 1000.0
},
{
"bid": 68.06,
"offer": 70.6,
"maximumVolume": 30000000.0
}
]
}
]
}
]
}
Алгоритм загрузки.
Проверки.
Проверки всего сообщения. Если не пройдена хотя бы одна проверка, то обработку сообщения
прекратить и указать ошибку загрузки всего сообщения.
Формат
Проверка
наличия
код ошибки = 2101
обязательных полей
Проверка
соответствия
2102
передаваемых значений
типам данных формата.
Проверка
отсутствия
2103
полей, не заданных в
формате
Уникальность
Проверить,
что
это
2104
сообщение
не
обрабатывалось ранее по
полям сообщения: rqTm +
Tier
Срок действия
Если
установлен,
то
2105
проверять что значение
expiryDate больше текущих
даты и времени
Уникальность ФИ
Проверить, что отсутствует
2106
дублирование валютных
пар в сообщении, то есть
все сочетания валют base
+quoted внутри блока rates
уникальны
Проверки для одного ФИ. Если проверка не пройдена, то обработку этого ФИ прекратить и перейти
к обработке следующего ФИ. Валютную пару ФИ, для которого проверка не пройдена, включить в
ответе в список ФИ с ошибками.
Код валюты
Проверять, что атрибут
код ошибки 2201
rates.base
соответствует коду валюты
буквенному
из
справочнику валют.
Сначала поиск выполнять в
локальном
справочнике d_curate_exrc
urrency . Если в локальном
справочнике отсутствует,
то
обратиться
в
справочник
валют
НСИ. Если в справочнике
НСИ найден, то заполнить
данными
локальный
справочник
валют,
проверку
считать
пройденной успешно.Если
в
справочнике
НСИ
отсутствует - ошибка.
Проверять, что атрибут
2202
rates.quoted
соответствует коду валюты
буквенному
из
справочнику валют.
Сначала поиск выполнять в
локальном
справочнике d_curate_exrc
urrency . Если в локальном
справочнике отсутствует,
то
обратиться
в
справочник
валют
НСИ. Если в справочнике
НСИ найден, то заполнить
данными
локальный
справочник
валют,
проверку
считать
пройденной успешно.Если
в
справочнике
НСИ
отсутствует - ошибка.
Актуальность
По сочетанию ЦУ(tier)+
2207
Базовая валюта (rates.base
)
+ Котируемая валюта
(rates.quoted)
найти
актуальную
(с
действующим
сейчас
курсом) запись в БД. Если
таких записей нет, то
проверку
считать
пройденной.Для
найденной
записи
сравнить legal_ratesource.r
q_tm с rqTm
сообщения. Если rqTm
(как дата и время) меньше,
чем
значение legal_ratesource.r
q_tm , то ошибка.
Значения курса
Проверить, что значения
2203
атрибута rates.ranges.bid
строго больше 0
Проверить, что значения
2204
атрибута rates.ranges.offer
строго больше 0
Границы диапазона
Проверять, что значения
2205
атрибута rates.ranges.maxi
mumVolume
строго больше 0
Проверять,
что
не
2206
повторяются
значения
атрибута rates.ranges.maxi
mumVolume.
для одного ФИ.Т.е. внутри
блока rates.ranges
все курсы переданы с
разными
значениями
верхней
границы
диапазона
Таблица маппинга
Записать полученные данные в соответствии с физической моделью классов, схема currency-rates,
блок (Legal) Базовые классы
Правила сохранения полученных курсов
Атрибут метода
Сохранить в таблицы БД
Схема приведения
jsonrpc
---
id
LEGAL_RATESOURCE.RQ_UID
method
---
params
---
rqTm
LEGAL_RATESOURCE.RQ_TM
LEGAL_RATE.RECEIVE_DATE
tier
LEGAL_RATE.PRICE_LEVEL
expiryDate
LEGAL_RATE.END_DATE
rates
base
LEGAL_RATE.BASE_CURRENCY_ID
в
соответствии
с D_CURATE_EXRCURRENCY.COD
E
quoted
LEGAL_RATE.QUOTE_CURRENCY_ID
в
соответствии
с D_CURATE_EXRCURRENCY.COD
E
lotSize
LEGAL_RATE.LOT_SIZE
Привести к LOT_SIZE, ЦБ РФ в
соответствии с последним
значением
справочника
<требуется указать справочник
НСИ>
ranges
bid
LEGAL_RATEVALUE.BUY_VALUE
offer
LEGAL_RATEVALUE.SELL_VALUE
maximumVolum
• LEGAL_RATEVALUE.LOWER_RANGE_VAL
Если
передано
несколько
e
UE
ступеней, то верхняя граница
для этого диапазона равна
• LEGAL_RATEVALUE.UPPER_RANGE_VALU
нижней границе следующего.
E
как записывать
Запись
для
верхней
границы
осуществить
путем
отнимания
от
присланного
значения
минимального деления
котируемой валюты в
соответствии
с
ее
decimalPrecision
(размерность):
• для 0, это 1
• для 1, это 0,1
• для 2, это 0,01
• для 3, это 0,001 и т.д.
Правила сохранения полученных курсов
Поле в БД
Название
Обяз?
Правила
Атрибут
входящего
заполнения
сообщения
таблица
LEGAL_RATESOU
RCE
-
Распоряжение
RQ_UID
ИД
+
Записать
id
распоряжения
значение без
обработки
RQ_TM
Дата и время
+
Преобразовать
rqTm
передачи
к
обычному
сообщения
формату даты и
времени
ORDER_NUMBER
Номер
Сгенерировать
распоряжения
номер
на установку
распоряжения
курса
в соответствии
в правилами
ORDER_DATE
Дата и время
Дата и время
распоряжения
записи курса в
на установку
БД,
должна
курса
совпадать
с legal_rate.star
t_date
таблица LEGAL_
RATE - Курсы для
ЮЛ
BASE_CURRENCY
Базовая валюта
ID
записи
rates.base
_ID
соответствующ
ей валюты из
локального
справочника
валют d_curate
_exrcurrency
QUOTE_CURREN
Котируемая
ID
записи
rates.quote
CY_ID
валюта
соответствующ
ей валюты из
локального
справочника
валют d_curate
_exrcurrency
EXR_RATE_SOUR
Источник
+
ID записи из
CE_ID
таблицы
распоряжения
legal_ratesourc
e
EXR_AREA_ID
Область
не заполнять
действия курса
RATE_TYPE
Вид курса
+
= "Currency"
LOT_SIZE
Масштаб
+
Привести
валюты
значения
к
масштабам
курсов ЦБ
START_DATE
Дата и время
+
Дата и время
начала
записи курса в
действия курса
БД
END_DATE
Дата и время
Записать
expiryDate
окончания
значение без
действия курса
обработки
RECEIVE_DATE
Дата и время
Преобразовать
rqTm
получения
к
обычному
курса
формату даты и
времени
PUBLICATION_D
Дата и время
Дата и время
ATE
публикации
записи курса в
курса
БД,
должна
совпадать
с start_date
DURATION
Срок действия
не заполняется
курса
(в
секундах)
RATE_BLOCK
Блок курса
="ERJP"
PRICE_LEVEL
Ценовой
Записать
tier
уровень
значение без
обработки
DIVISION_ID
Номер ТБ
?
Ожидаем
таблицы
маппинга на ТБ
CHANNEL
Канал действия
= "Distant"
курса
таблица
LEGAL_RATEVAL
UE
- Значения
курсов
EXR_RATE_ID
Курс валюты
+
ID записи из
таблицы курса
валюты legal_ra
te
LOWER_RANGE_
Нижняя
алгоритм
VALUE
граница
определения
ступенчатого
границ
курса
диапазонов
UPPER_RANGE_V
Верхняя
алгоритм
rates.ranges.maximumVolume
ALUE
граница
определения
ступенчатого
границ
курса
диапазонов
BUY_VALUE
Курс покупки
+
С
учетом
rates.ranges.bid
приведения к
масштабу
SELL_VALUE
Курс продажи
+
С
учетом
rates.ranges.offer
приведения к
масштабу
Формат ответа
Наимено
Тип
Кратнос
Комментарий
вание
ть
парамет
ра
jsonprc
Версия
String
1
= «2.0».
JSONRP
C
id
Идентиф
String
1
Идентификатор
икатор
запроса id
ответа
из сообщения
result
Результа
Object
0..1
Заполняется только в
т
случае
успешных
обработ
проверок
ки
сообщения.Если этот
сообще
блок присутствует, то
ния
блок error
отсутствует
rqTm
Дата
Long
1
Значени
отправк
е rqTm
и
из
сообще
сообщен
ния
ия
tier
Ценово
Long
1
Значени
й
е tier
уровень
из
сообщен
ия
ratesSuc
Список
List
0..N
Заполняе
cess
ФИ
<object>
тся
успешно
данными
загруже
тех ФИ,
нных
которые
были
опублик
ованы
(т.е.
успешно
загружен
ы в БД).В
каждом
блоке
должны
быть
значения
одного
ФИ
из
сообщен
ия
base
Код
String
1
Значение
базовой
base
валюты
из
сообщени
я
quoted
Код
String
1
Значение
котируе
quoted
мой
из
валюты
сообщени
я
startDate
Дата
dateTime
1
Дата
и
начала
время
действи
начала
я курса
действия
курса, зап
олняется s
tartDate
из
входящего
сообщени
я
(если
заполнено
),
или
равно дате
публикаци
и. Должно
совпадать
с
полем sta
rt_date в
соотв.
таблице
для
хранения
курсов в
БД
publicati
Дата и
dateTime
1
Дата
и
onDate
время
время
публика
сохранени
ции
я данных
курса в БД,
что
является
его
публикаци
ей. Должн
о
совпадать
с
полем pu
blication_d
ate в
соотв.
таблице
для
хранения
курсов в
БД
ratesErro
Список
List
0..N
Заполняе
rs
ФИ,
<object>
тся
которые
данными
не были
тех ФИ,
загруже
которые
ны
не были
опублик
ованы.В
каждом
блоке
должны
быть
значения
одного
ФИ
из
сообщен
ия
base
Код
String
1
Значение
базовой
base
валюты
из
сообщени
я
quoted
Код
String
1
Значение
котируе
quoted
мой
из
валюты
сообщени
я
error
Ошибка
Object
1
code
Код ошибки
Integer
1
Код
ошибки
descripti
Описание ошибки
String
1
Описан
on
ие
ошибки
error
Ошибка
Error
0..1
Блок
заполняется
обработ
только
в
случае
ки
возникновения
сообще
ошибки
при
ния
обработке
всего
сообщения.Если этот
блок присутствует, то
блок result
отсутствует
code
Код
Integer
1
ошибки
message
Сообще
String
1
ние об
ошибке
data
Детальн
String
0..1
Не
ая
заполняе
информ
тся
на
ация об
стороне
ошибке
ППРБ.КВ,
но может
заполнят
ься
на
стороне
ММТ
Наимено
Тип
Кратнос
Комментарий
вание
ть
парамет
ра
jsonprc
Версия
String
1
= «2.0».
JSONRP
C
id
Идентиф
String
1
Идентификатор
икатор
запроса id
ответа
из сообщения
result
Результа
Object
0..1
Заполняется только в
т
случае
успешных
обработ
проверок
ки
сообщения.Если этот
сообще
блок присутствует, то
ния
блок error
отсутствует
rqTm
Дата
Long
1
Значени
отправк
е rqTm
и
из
сообще
сообщен
ния
ия
tier
Ценово
Long
1
Значени
й
е tier
уровень
из
сообщен
ия
ratesSuc
Список
List
0..N
Заполняе
cess
ФИ
<object>
тся
успешно
данными
загруже
тех ФИ,
нных
которые
были
опублик
ованы
(т.е.
успешно
загружен
ы в БД).В
каждом
блоке
должны
быть
значения
одного
ФИ
из
сообщен
ия
base
Код
String
1
Значение
базовой
base
валюты
из
сообщени
я
quoted
Код
String
1
Значение
котируе
quoted
мой
из
валюты
сообщени
я
startDate
Дата
dateTime
1
Дата
и
начала
время
действи
начала
я курса
действия
курса, зап
олняется s
tartDate
из
входящего
сообщени
я
(если
заполнено
),
или
равно дате
публикаци
и. Должно
совпадать
с
полем sta
rt_date в
соотв.
таблице
для
хранения
курсов в
БД
publicati
Дата и
dateTime
1
Дата
и
onDate
время
время
публика
сохранени
ции
я данных
курса в БД,
что
является
его
публикаци
ей. Должн
о
совпадать
с
полем pu
blication_d
ate в
соотв.
таблице
для
хранения
курсов в
БД
ratesErro
Список
List
0..N
Заполняе
rs
ФИ,
<object>
тся
которые
данными
не были
тех ФИ,
загруже
которые
ны
не были
опублик
ованы.В
каждом
блоке
должны
быть
значения
одного
ФИ
из
сообщен
ия
base
Код
String
1
Значение
базовой
base
валюты
из
сообщени
я
quoted
Код
String
1
Значение
котируе
quoted
мой
из
валюты
сообщени
я
error
Ошибка
Object
1
code
Код ошибки
Integer
1
Код
ошибки
descripti
Описание ошибки
String
1
Описан
on
ие
ошибки
error
Ошибка
Error
0..1
Блок
заполняется
обработ
только
в
случае
ки
возникновения
сообще
ошибки
при
ния
обработке
всего
сообщения.Если этот
блок присутствует, то
блок result
отсутствует
code
Код
Integer
1
ошибки
message
Сообще
String
1
ние об
ошибке
data
Детальн
String
0..1
Не
ая
заполняе
информ
тся
на
ация об
стороне
ошибке
ППРБ.КВ,
но может
заполнят
ься
на
стороне
ММТ
Пример ответа с частично загруженными ФИ
{
"jsonrpc": "2.0",
"method": "publishLegalRates",
"id": "dfcddb36ff4b48929b1179cb8c34e9ee",
"result": [
{
"rqTm": 1627975262,
"tier": "1",
"ratesSuccess": [
{
"base": "EUR",
"quoted": "RUB",
"lotSize": 1,
"publication": "2021-04-22T12:51:47.188" //часовой пояс?
}
]
"ratesErrors": [
{
"base": "USD",
"quoted": "RUB",
"error": {
"code": 2201
"description": "Текст"
}
}
]
}
]
}
Интерфейс тиражирования курсов СБ для ЮЛ
Формат сообщения
Описание передаваемых структур
Атрибут
Наимено
Тип
Кратност
Комментарии
вание
ь
counter
Порядков
Integer
1
Необходимо
ый номер
реализовать проверку,
сообщени
что
у
нового
я.
полученного от АРК
сообщения для данного
ценового уровня и
данной валютной пары
seqNum
> seqNum
ранее сохраненного
rqTm
Дата
dateTime
1
Может быть позже
отправки
startDate, т.к. курс уже
сообщени
действует в ППРБ.РБФИ
я
Дата и время отправки
сообщения в формате
UNIX
rqUid
Идентифи
String
1
катор
запроса/с
ообщения
source
Источник
String
1
Код системы источника
курсов
курсов. Для АС КВ
-
"urn:sbrfsystems:99-ascr".
sourceMess
Номер
String
1
Идентификатор
age
сообщени
сообщения с курсами из
я
с
источника.Для АС КВ - ID
курсами
сообщения,
пример:
404b46109d264c96bf8f9
1b60a1f2577.Для АРК
-
rqUid,
пример:
dfcddb36ff4b48929b117
9cb8c34e9ee.
segmentTy
Тип
String
1
Сегмент для транспорта
pe
сегмента
channel
Канал
String
1
Возможные значения:
обслужив
"Distant"
-
УКО,
ания
"Traditional" - ВСП
orderNumb
Номер
String
1
Для курсов от АС КВ -
er
растираж
номер распоряжения от
ированно
АС КВ
го
Для курсов от АРК
-
сообщени
номер
распоряжения
я
будут генерироваться
похожим на номер
распоряжения от АС КВ
только для сообщения
тиража, в БД такого
значения не будет.
orderDateTi
Дата
dateTime
1
Равна startDate
me
публикац
ии
растираж
ированно
го
сообщени
я
operName
Тип
String
1
=Currency
тиражиро
вания
priceLevelId
Ценовой
String
1
//как int если больше 99
уровень
то будет ошибка при
записи или меньше 1 1-
99
regionId
Номер
Integer
1
территор
иального
банка
startDate
Дата
dateTime
1
начала
действия
курсов по
переданн
ым
инструме
нтами
expiryDate
Дата
dateTime
0..1
окончани
я действи
я курсов
по
переданн
ым
инструме
нтами
rates
Список
list
1..N
валют,
<object>
вошедших
в блок
base
Код
String
1
базовой
валюты
quote
Код
String
1
котируем
ой
валюты
lotSize
Масштаб
BigDecima
1
Масштаб
l
ЦБ
ranges
Список
list
1..N
курсов
<object>
валюты
buy
Цена
BigDecimal
1
Цена
покупки
покупки
Банком
Банком в
масштабе
ЦБ
для
базовой
валюты
sell
Цена
BigDecimal
1
Цена
продажи
продажи
Банком
Банком в
масштабе
ЦБ
для
базовой
валюты
minimumV
Нижняя
BigDecimal
1
Включител
olume
граница
ьно
диапазона
maximum
Верхняя
BigDecimal
1
Включител
Volume
граница
ьно,
диапазона
значение
не больше
"9 999 999
999
999
999.99"
Особенности тиража курсов для СББОЛ
counter
• Начинается каждый день с 1?
Если да, то в СББОЛ будут сохранять как
Номер пакета:
• размерность д.б. не более 3 цифр
• ежедневно д. начинаться с 1
• в течение дня принимать значения 1, 2,
3…, т.е. предыдущее значение +1
по
количеству
пакетов,
поступивших в течение дня от АС
КВ
• поступает от АС КВ
Ничего не случится в СББОЛ, если номера
пакета не будет.
orderNumber
Дублирование уже опубликованных
курсов в новом распоряжении.
Используется в ситуации, когда обновился
только один инструмент от поставщика, а
все остальные инструменты старые. В этом
случае нужно в новое распоряжение
добавить все инструменты, актуальные на
момент формирования распоряжения.
operName
= Currency
expiryDate
нет обработки значений этого поля
rates.lotSize
масштаб как для курсов ЦБ
rates.ranges.buy/sell
проверка в СББОЛ на количество
значащих цифр после запятой - кроме
USD и EUR допускается только 2 знака
после запятой (не нулей), а для USD и EUR
4 знака после запятой
• С каким количеством цифр после
запятой будут передаваться курсы
СБ из ППРБ.КБ ?
Если нужны 4 знака после запятой, то
можем перевести эту проверку из статуса
«Ошибка» в статус «Предупреждение»
(это настройка, не разработка) - текст
ошибки
выдаваться
будет,
как
предупреждение, и запись с курсом
запишется в справочник.
rates.ranges.minimumVolume
= 0.01
rates.ranges.maximumVolume
• Только
1 диапазон, включительно,
значение не больше "9 999 999 999
999 999.99"
Пример растиражированного сообщения
{
"counter": 1,
"regionId": 38,
"rqUid" : "dfcddb36ff4b48929b1179cb8c34e9ee",
"rqTm": "2020-04-2021 18:37:29.382+03",
"orderNumber": "038-701-ОК-260721-001",
"orderDateTime" : "2020-04-2021 18:35:29.382+03",
"operName": "Currency",
"priceLevelId": "1",
"startDate": "2020-04-2021 18:35:29.382+03",
"expiryDate": null,
"rates": [
{
"base": "EUR",
"quote": "RUB",
"lotSize": 1,
"ranges": [
{
"buy": 82.8,
"sell": 87.29,
"minimumVolume": 0.01,
"maximumVolume": 2 999 999.99,
}
]
},
{
"base": "USD",
"quote": "RUB",
"lotSize": 1,
"ranges": [
{
"buy": 67.71,
"sell": 70.95,
"minimumVolume": 0.01,
"maximumVolume": 999 999.99,
}
]
}
]
}
Загрузка курсов СБ для ФЛ (пример)
Формат сообщения
Описание передаваемых структур
Атрибут
Наимен
Тип
Кратнос
Комментарии
ование
ть
jsonrpc
-
String
1
id
Идентиф
String
1
икатор
запроса/
сообще
ния
method
Вызывае
String
1
publishPersonRa
мый
tes
метод
params
Парамет
list
1
ры
<object>
запроса
quoteId
Идентиф
String
1
Прикладной
икатор
идентификатор
котиров
от АРК (был
ки
rqUid)
quoteTm
Дата и
longInt
1
Передается
в
время
unix
формир
формате (был
ования
rqTm)
котиров
Передается
в
ки
unix
формате
(количество
секунд
прошедших
с
момента
01.01.1970
00:00).
Используется:- д
ля
проверки
уникальности
сообщения, -
для
определения
актуальности ФИ
в
этом
сообщении
(ФИ+ЦУ
у
которых quoteT
m
больше,
считается самой
актуальной)
source
Система
String
1
Код
системы
источни
АРК
к
котиров
ки
tier
Ценово
String
1
Ценовой
й
уровень
уровень
системы
(ЦУ)
источника
startDate
Дата
dateTime
0..1
АРК
будет
начала
заполнять
действи
я курсов
по
передан
ным
инструм
ентами
expiryDa
Дата
dateTime
0..1
формат UTC
te
окончан
Будет
ия дейст
использоваться
вия
для завершения
курсов
действия
по
валютной пары
передан
в ЦУ
ным
инструм
ентами
individua
Признак
boolean
1
Логика может
l
индивид
быть
уальног
реализована
о курса
методами:
по
• дай только ОК
передан
• дай только ИК
ным
• дай и ОК и ИК
инструм
а
на
ентам
фронте
мы сами
выберем
лучший
• дай лучший
курс
holdTim
Таймер
Integer
0..1
Количество
er
холдиро
секунд
на
вания
принятие
ЦУ
решения
для
проведения
операции
по
установленному
курсу
(курс
фиксируется для
клиента на это
время)
rates
Список
list
1..N
валют,
<object>
вошедш
их
в
блок
base
Код
String
1
базовой
валюты
quoted
Код
String
1
котируе
мой
валюты
lotSize
Масшта
BigDecimal
1
б
volume
Способ
String
1
От
Method
указания
АРК
границ
будет
диапазо
прихо
нов
дить
спосо
б
= ука
зание
нижн
их
грани
ц
диапа
зонов,
код
"mini
mumV
olume
Includ
e"
maximu
Верхняя
BigDecimal
0..1
АРК
mVolum
граница
не
e
для всех
будет
диапазо
перед
нов
авать
ranges
Список
list <object>
1..N
курсов
валюты
bid
Цена покупки
BigDecimal
1
Банком
offer
Цена продажи
BigDecimal
1
Банком
maximu
Верхняя
BigDecimal
0..1
АРК не
mVolum
граница
будет
e
диапазона
переда
вать
minimu
Нижняя
BigDecimal
0..1
АРК
mVolum
граница
будет
e
диапазона
переда
вать
нижню
ю
границ
у
диапаз
она
включи
тельно
{
"jsonrpc": "2.0",
"method": "publishIndividualRates",
"id": "dfcddb36ff4b48929b1179cb8c34e9ee",
"params": [
{
"rqTm": 1632815603,
"rqId": "dfcddb36ff4b48929b1179cb8c34e9ee",
"segmentType": "Distant",
"tiers": [
{
"type": "ERNP-1",
"tier": "1"
},
{
"type": "ERNP-2",
"tier": "2"
}
],
"startDate": "2020-04-2021 18:35:29.382+03",
"expiryDate": null,
"personalSign": false,
"holdTimer": null,
"rates": [
{
"base": "EUR",
"quoted": "RUB",
"lotSize": 1,
"ranges": [
{
"bid": 82.8,
"offer": 87.29,
"minimumVolume": 0.0,
"maximumVolume": 1000.0
},
{
"bid": 83.2,
"offer": 86.89,
"minimumVolume": 1000.0,
"maximumVolume": 30000000.0
}
]
},
{
"base": "USD",
"quoted": "RUB",
"lotSize": 1,
"ranges": [
{
"bid": 67.71,
"offer": 70.95,
"minimumVolume": 0.0,
"maximumVolume": 1000.0
},
{
"bid": 68.06,
"offer": 70.6,
"minimumVolume": 1000.0,
"maximumVolume": 30000000.0
}
]
},
{
"base": "HelloWorld",
"quoted": "RUB",
"lotSize": 1,
"ranges": [
{
"bid": 67.71,
"offer": 70.95,
"minimumVolume": 0.0,
"maximumVolume": 1000.0
},
{
"bid": 68.06,
"offer": 70.6,
"minimumVolume": 1000.0,
"maximumVolume": 30000000.0
}
]
}
]
}
]
}
Алгоритм загрузки
Проверки
Проверки всего сообщения. Если не пройдена хотя бы одна проверка, то обработку сообщения
прекратить и указать ошибку загрузки всего сообщения.
Формат
Проверка наличия обязательных полей
код ошибки = 2101
Проверка соответствия передаваемых значений типам
2102
данных формата.
Проверка отсутствия полей, не заданных в формате
2103
Уникальность
Проверить, что это сообщение не обрабатывалось ранее
2104
по полям сообщения: rqTm + tier
Срок действия
Если установлен, то проверять что значение expiryDate
2105
больше текущих даты и времени
Уникальность
Проверить, что отсутствует дублирование валютных пар в
2106
ФИ
сообщении, то есть все сочетания валют base + quoted
внутри блока rates уникальны
Проверки для одного ФИ. Если проверка не пройдена, то обработку этого ФИ прекратить и перейти
к обработке следующего ФИ. Валютную пару ФИ, для которого проверка не пройдена, включить в
ответе в список ФИ с ошибками.
Код валюты
Проверять, что атрибут rates.base соответствует коду валюты буквенному
код
из справочнику валют.
ошибки
Сначала
поиск
выполнять
в
локальном
2201
справочнике d_curate_exrcurrency . Если в локальном справочнике
отсутствует,
то
обратиться
в
справочник
валют
НСИ.
Если в справочнике НСИ найден, то заполнить данными локальный
справочник валют, проверку считать пройденной успешно.
Если в справочнике НСИ отсутствует - ошибка.
Проверять, что атрибут rates.quoted соответствует коду валюты
2202
буквенному из справочнику валют.
Сначала
поиск
выполнять
в
локальном
справочнике d_curate_exrcurrency . Если в локальном справочнике
отсутствует,
то
обратиться
в
справочник
валют
НСИ.
Если в справочнике НСИ найден, то заполнить данными локальный
справочник валют, проверку считать пройденной успешно.
Если в справочнике НСИ отсутствует - ошибка.
Актуальность
По сочетанию (tiers )+ Базовая валюта(rates.base)
+ Котируемая
2207
валюта(rates.quoted) найти актуальную (с действующим сейчас курсом)
запись в БД. Если таких записей нет, то проверку считать пройденной.
Для найденной записи сравнить legal_ratesource.rq_tm с rqTm
сообщения. Если rqTm (как дата и время) меньше, чем
значение legal_ratesource.rq_tm , то ошибка.
Значения
Проверить, что значения атрибута rates.ranges.bid строго больше 0
2203
курса
Проверить, что значения атрибута rates.ranges.offer строго больше 0
2204
Границы
Проверять, что значения атрибута rates.ranges.maximumVolume строго
2205
диапазона
больше 0
Формат ответа
Наименование
Тип
Кратность
Комментарий
параметра
jsonprc
Версия JSONRPC
String
1
= «2.0».
id
Идентификатор
String
1
Идентификатор запроса id из
ответа
сообщения
result
Результат
Object
0..1
Заполняется только в случае
обработки
успешных проверок сообщения.
сообщения
Если этот блок присутствует, то блок
error отсутствует
ratesSuccess
Список
ФИ
List
0..N
Заполняется данными тех ФИ,
успешно
<object>
которые были опубликованы (т.е.
загруженных
успешно
загружены
в
БД).
В каждом блоке должны быть
значения одного ФИ из сообщения
base
Код
базовой
String
1
Значение base из сообщения
валюты
quoted
Код котируемой
String
1
Значение quoted из сообщения
валюты
startDate
Дата
начала
dateTime
1
Дата и время начала действия курса,
действия курса
заполняется startDate из входящего
сообщения (если заполнено), или
равно дате публикации. . Должно
совпадать с полем start_date в
соотв. таблице для хранения курсов
в БД
publicationDate
Дата публикации
dateTime
1
Дата и время сохранения данных
курса в БД, что является его
публикацией. Должно совпадать с
полем publication_date в
соотв.
таблице для хранения курсов в БД
ratesErrors
Список
ФИ,
List
0..N
Заполняется данными тех ФИ,
которые не были
<object>
которые не были опубликованы.
загружены
В каждом блоке должны быть
значения одного ФИ из сообщения
base
Код
базовой
String
1
Значение base из сообщения
валюты
quoted
Код котируемой
String
1
Значение quoted из сообщения
валюты
error
Ошибка
Object
1
code
Код ошибки
Integer
1
Код ошибки
description
Описание
String
1
Описание ошибки
ошибки
error
Ошибка
Error
0..1
Блок заполняется только в случае
обработки
возникновения
ошибки
при
сообщения
обработке
всего
сообщения.
Если этот блок присутствует, то
блок result отсутствует
code
Код ошибки
Integer
1
message
Сообщение об
String
1
ошибке
data
Детальная
String
0..1
Не заполняется на стороне ППРБ.КВ,
информация об
но может заполняться на стороне
ошибке
ММТ
{
"jsonrpc": "2.0",
"id": "dfcddb36ff4b48929b1179cb8c34e9ee",
"result": [
{
"rqTm": 1632815603,
"rqId": "dfcddb36ff4b48929b1179cb8c34e9ee",
"tiers": [
{
"type": "ERNP-1",
"tier": "1"
},
{
"type": "ERNP-2",
"tier": "2"
}
],
"ratesSuccess": [
{
"base": "EUR",
"quoted": "RUB",
"lotSize": 1
},
{
"base": "USD",
"quoted": "RUB",
"lotSize": 1
}
],
"ratesErrors": [
{
"base": "HelloWorld",
"quoted": "RUB",
"error": {
"code": 2201,
"description": "Не найдена единица измерения с кодом HelloWorld на дату Tue Sep 28 11:57:23
MSK 2021"
}
}
]
}
]
}
Тираж курсов СБ по ОМС для ФЛ
Формат сообщения
JSON схема: RetailMetalRatesDistantMessageScheme.json
Описание передаваемых структур
Атрибут
Наимено
Тип
Кратност
Комментарии
вание
ь
rqTm
Дата
dateTime
1
Дата и время отправки
отправки
сообщения,
формат ISO
сообщени
8601, пример "2021-12-
я
12T19:39:49.295+00:00"
rqUid
Идентифи
String
1
Уникальное для каждого
катор
сообщения
запроса/с
ообщения
source
Источник
String
1
Код системы источника
курсов
курсов. Для АС КВ
-
"urn:sbrfsystems:99-ascr".
sourceMess
Номер
String
1
Идентификатор сообщения
age
сообщени
с курсами из источника.Для
я
с
АС
КВ
-
номер
курсами
распоряжения,
пример:
404b46109d264c96bf8f91b6
0a1f2577.Для АРК - rqUid,
пример:
dfcddb36ff4b48929b1179cb
8c34e9ee.
segmentTy
Тип
String
1
Сегмент для транспорта
pe
сегмента
channel
Канал
String
1
Возможные
значения:
обслужив
"Distant" - УКО, "Traditional"
ания
- ВСП
type
Блок
String
0..1
Ценовой
уровень
курса
клиентский.
Принимает
значения:
PMR-2, PMR-
3, PMR-4 ...
tier
Ценовой
String
0..1
Ценовой
уровень
уровень
источника курсов. Для АС
КВ не будет заполняться.
startDate
Дата
dateTime
1
С указанием часового
начала
пояса, время будет указано
действия
по Москве, формат ISO
курсов по
8601, пример "2021-12-
переданн
12T19:39:49.295+00:00"
ым
инструме
нтами
expiryDate
Дата
dateTime
0..1
С указанием часового
окончани
пояса, время будет указано
я действи
по
Москве, формат ISO
я курсов
8601,
пример "2021-12-
по
12T19:39:49.295+00:00"Буде
переданн
т
использоваться
для
ым
прекращения
рассылки
инструме
курсов по валютной паре в
нтами
этом ЦУ
holdTimer
Таймер
Integer
0..1
Будет заполняться после
холдиров
перехода на получение
ания
курсов из АРК
курса
в
секундах
clientPacka
Пакеты
list
0..N
Продукт, влияющий на
ges
услуг
<object>
дифференциацию курса.
Пакет услуг
- частный
случай.В дополнение к
Блоку курса может быть
передана информация о
списке Пакетов услуг, для
которых используется курс
packageC
Код
String
1
Код
ode
пакета
продукта
услуг
operations
Список
list
0..N
Для ПУ
операций
<object>
будет
передана
информа
ция
о
списке
операци
й,
для
которых
использу
ется курс
inputProd
код
String
1
Код
uctType
операции
операц
ии
outputPro
код
String
1
Код
ductType
операции
операц
ии
rates
Список
list
0..N
Курсы валют
валют,
<object>
вошедших
в блок
quoteId
ID
String
1
Идентиф
котировк
икатор
и
котировк
и
для
монитор
инга
(новое
поле)
base
Код
String
1
буквенн
металла
ые
значения
, A33
quoted
Код
String
1
буквенн
котируем
ые
ой
значения
валюты
, RUB
ranges
Список
list
1..N
курсов
<object>
валюты
bid
Цена
BigDecimal
1
Цена
покупки
покупк
Банком
и
Банком
в
масшта
бе за 1 г
металл
а
offer
Цена
BigDecimal
1
Цена
продажи
продаж
Банком
и
Банком
в
масшта
бе за 1 г
металл
а
minimumV
Нижняя
BigDecimal
1
Нижняя
olume
граница
границ
диапазона
а
включи
тельно
maximum
Верхняя
BigDecimal
1
Верхня
Volume
граница
я
диапазона
границ
а
включи
тельно
department
Подразде
list
1..N
Область действия курсов
s
ления
<object>
tb
Тер.банк
String
1
departmen
Подразде
list
0..1
Список
t
ление
<String>
ОСБ
и
ВСП для
традици
онных
каналов
обслужи
вания
Идентифи
String
1..N
Иденти
катор
фикато
подраздел
р
в
ения
соответ
ствии
со
стандар
том
справо
чника
филиал
ьной
сети(ст
рого
фиксир
овать
формат,
с
учетом
лидиру
ющих 0,
нужен
пример
)
Пример сообщения тиража для канала ВСП
{
"rqTm": "2021-07-30 18:35:29.382+03",
"rqUid": "3945d0b0-ded5-9ef8-9acd-e20074e44891",
"source": "urn:sbrfsystems:99-ascr",
"order": "404b46109d264c96bf8f91b60a1f2577"
"segmentType": "Traditional",
"channel": "Traditional",
"type": "ERNP-1",
"tier": "1",
"startDate": "2021-07-30 18:35:29.382+03",
"expiryDate": null,
"holdTimer": null,
"rates": [
{
"qouteId": "111",
"base": "A33",
"quote": "RUB",
"ranges": [
{
"bid": 4626.0,
"offer": 5134.0,
"minimumVolume": 0.0,
"maximumVolume": 29.99
},
{
"bid": 4651.0,
"offer": 5109.0,
"minimumVolume": 30.0,
"maximumVolume": 99.99
},
{
"bid": 4670.0,
"offer": 5089.0,
"minimumVolume": 100.0,
"maximumVolume": 9999999999.99
}
]
},
{
"qouteId": "111",
"base": "A98",
"quote": "RUB",
"ranges": [
{
"bid": 3934.0,
"offer": 4363.0,
"minimumVolume": 0.0,
"maximumVolume": 34.99
},
{
"bid": 3954.0,
"offer": 4343.0,
"minimumVolume": 35.0,
"maximumVolume": 99.99
},
{
"bid": 3971.0,
"offer": 4326.0,
"minimumVolume": 100.0,
"maximumVolume": 9999999999.99
}
]
}
],
"departments": [
{
"tb": "38",
"department": [
"903801782",
"903801696",
"903801762",
"903801763",
"903801774",
"903801780",
"903801792",
"903801833",
"903801789"
]
}
]
}
Пример сообщения тиража для канала УКО
{
"rqTm": "2021-07-30 18:35:29.382+03",
"rqUid": "3945d0b0-ded5-9ef8-9acd-e20074e44891",
"source": "urn:sbrfsystems:99-ascr",
"order": "404b46109d264c96bf8f91b60a1f2577"
"segmentType": "Distant",
"channel": "Distant",
"type": "ERNP-6",
"tier": "1",
"startDate": "2021-07-30 18:35:29.382+03",
"expiryDate": null,
"holdTimer": null,
"clientPackages": [
{
"packageCode": "6",
"operations": [
{
"inputProductType": "Card",
"outputProductType": "Dep"
}
],
}
],
"rates": [
{
"qouteId": "111",
"base": "A33",
"quote": "RUB",
"lotSizeCB": 1,
"ranges": [
{
"bid": 4626.0,
"offer": 5134.0,
"minimumVolume": 0.0,
"maximumVolume": 29.99
},
{
"bid": 4651.0,
"offer": 5109.0,
"minimumVolume": 30.0,
"maximumVolume": 99.99
},
{
"bid": 4670.0,
"offer": 5089.0,
"minimumVolume": 100.0,
"maximumVolume": 9999999999.99
}
]
},
{
"qouteId": "111",
"base": "A98",
"quote": "RUB",
"ranges": [
{
"bid": 3934.0,
"offer": 4363.0,
"minimumVolume": 0.0,
"maximumVolume": 34.99
},
{
"bid": 3954.0,
"offer": 4343.0,
"minimumVolume": 35.0,
"maximumVolume": 99.99
},
{
"bid": 3971.0,
"offer": 4326.0,
"minimumVolume": 100.0,
"maximumVolume": 9999999999.99
}
]
}
],
"departments": [
{
"tb": "38"
}
]
}
Тираж курсов СБ по валютам для ФЛ
Формат сообщения
JSON схема: RetailCurrencyRatesDistantMessageScheme.json
Описание передаваемых структур
Атрибут
Наимено
Тип
Кратност
Комментарии
вание
ь
rqTm
Дата
dateTime
1
Дата и время отправки
отправки
сообщения,
сообщени
формат ISO
8601,
я
пример
"2021-12-
12T19:39:49.295+00:00"
rqUid
Идентифи
String
1
Уникальное
для
катор
каждого сообщения
запроса/с
ообщения
source
Источник
String
1
Код
системы
курсов
источника курсов. Для
АС
КВ
-
"urn:sbrfsystems:99-
ascr".
sourceMess
Номер
String
1
Идентификатор
age
сообщени
сообщения с курсами
я
с
из источника.Для АС
курсами
КВ
- ID сообщения,
пример:
404b46109d264c96bf8f
91b60a1f2577.Для АРК
-
rqUid,
пример:
dfcddb36ff4b48929b11
79cb8c34e9ee.
segmentTy
Тип
String
1
Сегмент
для
pe
сегмента
транспорта.
channel
Канал
String
1
Возможные значения:
обслужив
"Distant"
-
УКО,
ания
"Traditional" - ВСП
type
Блок
String
0..1
Ценовой
уровень
курса
клиентский.
Принимает
значения: ERNP-
2, ERNP-3, ERNP-4 ...
tier
Ценовой
String
0..1
Ценовой
уровень
уровень
источника курсов. Для
АС КВ не будет
заполняться.
startDate
Дата
dateTime
1
С указанием часового
начала
пояса, время будет
действия
указано
по
курсов по
Москве, формат ISO
переданн
8601, пример "2021-
ым
12-
инструме
12T19:39:49.295+00:00"
нтами
expiryDate
Дата
dateTime
0..1
С указанием часового
окончани
пояса, время будет
я действи
указано
по
я курсов
Москве, формат ISO
по
8601, пример "2021-
переданн
12-
ым
12T19:39:49.295+00:00"
инструме
Будет использоваться
нтами
для
прекращения
рассылки курсов по
валютной паре в этом
ЦУ
holdTimer
Таймер
Integer
0..1
Будет
заполняться
холдиров
после перехода на
ания
получение курсов из
курса
в
АРК
секундах
clientPacka
Пакеты
list
0..N
Продукт, влияющий на
ges
услуг
<object>
дифференциацию
курса. Пакет услуг
-
частный
случай.В
дополнение к Блоку
курса может быть
передана информация
о списке Пакетов услуг,
для
которых
используется курс
packageC
Код
String
1
Код
ode
пакета
продукта
услуг
operations
Список
list
0..N
Для
ПУ
операций
<object>
будет
передана
информац
ия
о
списке
операций,
для
которых
используе
тся курс
inputProd
код
String
1
Код
uctType
операции
операци
и
outputPro
код
String
1
Код
ductType
операции
операци
и
rates
Список
list
0..N
Курсы валют
валют,
<object>
вошедших
в блок
quoteId
ID
String
1
Идентифи
котировк
катор
и
котировки
для
монитори
нга (новое
поле)
base
Код
String
1
буквенные
базовой
значения,
валюты
EUR, USD
quoted
Код
String
1
буквенные
котируем
значения,
ой
EUR, USD
валюты
lotSizeCB
Масштаб
BigDecima
0..1
ЦБ
l
ranges
Список
list
1..N
курсов
<object>
валюты
bid
Цена
BigDecimal
1
Цена
покупки
покупки
Банком
Банком в
масштаб
е за
1
базовой
валюты
offer
Цена
BigDecimal
1
Цена
продажи
продажи
Банком
Банком в
масштаб
е за
1
базовой
валюты
bidLotSize
Цена
BigDecimal
0..1
Цена
CB
покупки
покупки
Банком
Банком в
масштаб
е ЦБ для
базовой
валюты
offerLotSiz
Цена
BigDecimal
0..1
Цена
eCB
продажи
продажи
Банком
Банком в
масштаб
е ЦБ для
базовой
валюты
minimumV
Нижняя
BigDecimal
1
Нижняя
olume
граница
граница
диапазона
включит
ельно
maximum
Верхняя
BigDecimal
1
Верхняя
Volume
граница
граница
диапазона
включит
ельно
department
Подразде
list
1..N
Область
действия
s
ления
<object>
курсов
tb
Тер.банк
String
1
departmen
Подразде
list
0..1
Список
t
ление
<String>
ОСБ и ВСП
для
традицион
ных
каналов
обслужива
ния
Идентифи
String
1..N
Идентиф
катор
икатор в
подраздел
соответс
ения
твии со
стандарт
ом
справоч
ника
филиаль
ной
сети(стро
го
фиксиро
вать
формат, с
учетом
лидирую
щих
0,
нужен
пример)
Пример сообщения тиража для канала ВСП
{
"rqTm": "2021-07-30 18:35:29.382+03",
"rqUid": "3945d0b0-ded5-9ef8-9acd-e20074e44891",
"source": "urn:sbrfsystems:99-ascr",
"order": "404b46109d264c96bf8f91b60a1f2577"
"segmentType": "Traditional",
"channel": "Traditional"
"type": "ERNP-1",
"tier": "1",
"startDate": "2021-07-30 18:35:29.382+03",
"expiryDate": null,
"holdTimer": null,
"rates": [
{
"qouteId": "111",
"base": "EUR",
"quote": "RUB",
"lotSizeCB": 1,
"ranges": [
{
"bid": 82.8,
"offer": 87.29,
"bidLotSizeCB": 82.8,
"offerLotSizeCB": 87.29,
"minimumVolume": 0.0,
"maximumVolume": 999.99
},
{
"bid": 83.2,
"offer": 86.89,
"bidLotSizeCB": 83.2,
"offerLotSizeCB": 86.89,
"minimumVolume": 1000.0,
"maximumVolume": 2999999.99
}
]
},
{
"qouteId": "111",
"base": "USD",
"quote": "RUB",
"lotSizeCB": 1,
"ranges": [
{
"bid": 67.71,
"offer": 70.95,
"bidLotSizeCB": 67.71,
"offerLotSizeCB": 70.95,
"minimumVolume": 0.0,
"maximumVolume": 999.99,
},
{
"bid": 68.06,
"offer": 70.6,
"bidLotSizeCB": 68.06,
"offerLotSizeCB": 70.6,
"minimumVolume": 1000.0,
"maximumVolume": 2999999.99,
}
]
}
],
"departments": [
{
"tb": "38",
"department": [
"903801782",
"903801696",
"903801762",
"903801763",
"903801774",
"903801780",
"903801792",
"903801833",
"903801789"
]
}
]
}
Пример сообщения тиража для канала УКО
{
"rqTm": "2021-07-30 18:35:29.382+03",
"rqUid": "3945d0b0-ded5-9ef8-9acd-e20074e44891",
"source": "urn:sbrfsystems:99-ascr",
"order": "038-056-ОК-300721-002"
"segmentType": "Distant",
"channel": "Distant",
"type": "ERNP-6",
"tier": "1",
"startDate": "2021-07-30 18:35:29.382+03",
"expiryDate": null,
"holdTimer": null,
"clientPackages": [
{
"packageCode": "6",
"operations": [
{
"inputProductType": "Card",
"outputProductType": "Dep"
}
],
}
],
"rates": [
{
"qouteId": "111",
"base": "EUR",
"quote": "RUB",
"lotSizeCB": 1,
"ranges": [
{
"bid": 82.8,
"offer": 87.29,
"bidLotSizeCB": 82.8,
"offerLotSizeCB": 87.29,
"minimumVolume": 0.0,
"maximumVolume": 999.99
},
{
"bid": 83.2,
"offer": 86.89,
"bidLotSizeCB": 83.2,
"offerLotSizeCB": 86.89,
"minimumVolume": 1000.0,
"maximumVolume": 2999999.99
}
]
},
{
"qouteId": "111",
"base": "USD",
"quote": "RUB",
"lotSizeCB": 1,
"ranges": [
{
"bid": 67.71,
"offer": 70.95,
"bidLotSizeCB": 67.71,
"offerLotSizeCB": 70.95,
"minimumVolume": 0.0,
"maximumVolume": 999.99,
},
{
"bid": 68.06,
"offer": 70.6,
"bidLotSizeCB": 68.06,
"offerLotSizeCB": 70.6,
"minimumVolume": 1000.0,
"maximumVolume": 2999999.99,
}
]
}
],
"departments": [
{
"tb": "38"
}
]
}
Интерфейс загрузки уч. цен драг. металлов СБ для ФЛ
Формат сообщения
Описание передаваемых структур
Атриб
Наим
Тип
Кратн
Комм
ут
енов
ость
ентар
ание
ии
jsonrpc
-
String
1
id
Иден
String
1
тифи
катор
запро
са
metho
Вызы
String
1
publis
d
ваем
hRate
ый
s
мето
д
param
Пара
list
1
s
метр
<obje
ы
ct>
запро
са
seqN
Поря
Integ
1
Необ
um
дков
er
ходи
ый
мо
номе
реал
р
изова
сооб
ть
щени
пров
я.
ерку,
что у
новог
о
полу
ченн
ого
от
АРК
сооб
щени
я для
данн
ого
цено
вого
уров
ня и
данн
ой
валю
тной
пары
seqN
um >
seqN
um
ране
е
сохра
ненн
ого
terba
Номе
Integ
1
nk
р
er
терри
ториа
льног
о
банка
curre
Блок
list
0..N
ncyRa
курсо
<obje
tes
в
ct>
валю
т
type
Вид
String
1
блока
startD
Дата
dateT
1
ate
начал
ime
а
дейст
вия
блока
expiry
Дата
dateT
0..1
Date
окон
ime
чани
я
дейст
вия
блока
perso
Приз
boole
1
nalSig
нак
an
n
инди
видуа
льнос
ти
quote
Код
String
1
d
котир
уемо
й
валю
ты
rquid
Иден
String
1
тифи
катор
rates
Спис
list
1..N
ок
<obje
валю
ct>
т,
воше
дших
в
блок
base
Код
String
1
базов
ой
валю
ты
lotSiz
Масш
BigDe
1
e
таб
cimal
secon
Тайм
Integ
0..1
dsTim
ер
er
er
холди
рова
ния
курса
maxi
Верх
BigDe
0..1
Если
mum
няя
cimal
парамет
Volu
ганиц
р
не
me
а
передан,
всего
то
диап
верхняя
азнон
граница
а
всего
объема
диапазон
ов
не
ограниче
на.
range
Спис
list
1..N
s
ок
<obje
курсо
ct>
в
валю
ты
bid
Цена
BigDecimal
1
поку
пки
Банк
ом
offer
Цена
BigDecimal
1
прод
ажи
Банк
ом
mini
Нижн
BigDecimal
1
Верхня
mum
яя
я
Volu
грани
границ
me
ца
а для
диап
этого
азона
диапаз
она
равна
нижней
границ
е
следую
щего.
Если не
указан
maximu
mVolu
me, то
для
послед
него
объема
верхне
й
границ
ей
являетс
я
значен
ие
бескон
ечность
, Нижня
я
границ
а
включа
ется в
диапаз
он,
верхняя
нет.
metal
Учетн
objec
0..1
Rates
ые
t
цены
драг.
метал
лов
umaR
Блок
list
0..N
ate
с
<obje
обезл
ct>
ичен
ными
метал
личес
кими
счета
ми
type
Вид
String
1
блока
startD
Дата
dateT
1
ate
начал
ime
а
дейст
вия
блока
expiry
Дата
dateT
0..1
Date
окон
ime
чани
я
дейст
вия
блока
perso
Приз
boole
1
nalSig
нак
an
n
инди
видуа
льнос
ти
quote
Код
String
1
d
котир
уемо
й
валю
ты
rquid
Иден
String
1
тифи
катор
rates
Спис
list
1..N
ок
<obje
метал
ct>
лов,
воше
дших
в
блок
base
Базов
String
1
ый
код
метал
ла
lotSiz
Масш
BigDecimal
1
e
таб
secon
Тайм
Integer
0..1
dsTim
ер
er
холди
рова
ния
курса
maxi
Верх
BigDecimal
0..1
Если
mum
няя
параме
Volu
ганиц
тр не
me
а
переда
всего
н,
то
диап
верхняя
азнон
границ
а
а всего
объема
диапаз
онов не
ограни
чена.
range
Спис
list
1..N
s
ок
<object>
курсо
в
метал
лов
bid
Цена
BigDecim
1
покупки
al
Банком
offer
Цена
BigDecim
1
продажи
al
Банком
mini
Нижняя
BigDecim
1
Верхня
mum
граница
al
я
Volu
диапазона
границ
me
а для
этого
диапаз
она
равна
нижней
границ
е
следую
щего.
Если не
указан
maximu
mVolu
me, то
для
послед
него
объема
верхне
й
границ
ей
являетс
я
значен
ие
бескон
ечность
, Нижня
я
границ
а
включа
ется в
диапаз
он,
верхняя
нет.
stand
Станд
objec
0..N
artBar
артн
t
Rate
ые
слитк
и
type
Вид
String
1
блока
startD
Дата
dateT
1
ate
начал
ime
а
дейст
вия
блока
expiry
Дата
dateT
0..1
Date
окон
ime
чани
я
дейст
вия
блока
perso
Приз
boole
1
nalSig
нак
an
n
инди
видуа
льнос
ти
quote
Код
String
1
d
котир
уемо
й
валю
ты
rquid
Иден
String
1
тифи
катор
rates
Спис
list
1..N
ок
<obje
метал
ct>
лов,
воше
дших
в
блок
base
Базов
String
1
ый
код
метал
ла
lotSiz
Масш
BigDecimal
1
e
таб
secon
Тайм
Integer
0..1
dsTim
ер
er
холди
рова
ния
курса
maxi
Верх
BigDecimal
0..1
Если
mum
няя
параме
Volu
ганиц
тр не
me
а
переда
всего
н,
то
диап
верхняя
азнон
границ
а
а всего
объема
диапаз
онов не
ограни
чена.
range
Спис
list
1..N
s
ок
<object>
курсо
в
метал
лов
bid
Цена
BigDecim
1
покупки
al
Банком
offer
Цена
BigDecim
1
продажи
al
Банком
mini
Нижняя
BigDecim
1
Верхня
mum
граница
al
я
Volu
диапазона
границ
me
а для
этого
диапаз
она
равна
нижней
границ
е
следую
щего.
Если не
указан
maximu
mVolu
me, то
для
послед
него
объема
верхне
й
границ
ей
являетс
я
значен
ие
бескон
ечность
, Нижня
я
границ
а
включа
ется в
диапаз
он,
верхняя
нет.
ingot
Мерн
objec
0..N
BatRa
ые
t
te
слитк
и
type
Вид
String
1
блока
startD
Дата
dateT
1
ate
начал
ime
а
дейст
вия
блока
expiry
Дата
dateT
0..1
Date
окон
ime
чани
я
дейст
вия
блока
perso
Приз
boole
1
nalSig
нак
an
n
инди
видуа
льнос
ти
quote
Код
String
1
d
котир
уемо
й
валю
ты
rates
Спис
list
1..N
ок
<obje
метал
ct>
лов,
воше
дших
в
блок
base
Базов
String
1
ый
код
метал
ла
lotSiz
Масш
BigDecimal
1
e
таб
secon
Тайм
Integer
0..1
dsTim
ер
er
холди
рова
ния
курса
range
Спис
list
1..N
s
ок
<object>
курсо
в
метал
лов
weigh
Вес слитка
Integer
1
t
condi
Состояние
String
1
tion
слитка
wrap
Тип
String
1
per
обертки
слитка
bid
Цена
BigDecim
1
покупки
al
Банком
offer
Цена
BigDecim
1
продажи
al
Банком
Пример запроса по Валютам
{
"jsonrpc": "2.0",
"method": "publishRates",
"id": 111,
"params": [
{
"seqNum": 1234,
"terbank": 38,
"currencyRates": [
{
"type": "ERNP-1",
"startDate": "2020-04-2021 18:35:29.382+03",
"expiryDate": null,
"personalSign": false,
"quoted": "RUB",
"rquid": "dfcddb36ff4b48929b1179cb8c34e9ee",
"rates": [
{
"base": "EUR",
"lotSize": 1,
"secondsTimer": 90,
"maximumVolume": 9999999999.99,
"ranges": [
{
"bid": 82.8,
"offer": 87.29,
"minimumVolume": 0.0
},
{
"bid": 83.2,
"offer": 86.89,
"minimumVolume": 1000.0
}
]
},
{
"base": "USD",
"lotSize": 1,
"secondsTimer": 90,
"maximumVolume": 9999999999.99,
"ranges": [
{
"bid": 67.71,
"offer": 70.95,
"minimumVolume": 0.0
},
{
"bid": 68.06,
"offer": 70.6,
"minimumVolume": 1000.0
}
]
}
]
}
],
"metalRates": {
"umaRate": [
{
"type": "PMR-3",
"startDate": "2019-04-27T10:41:55.382+03",
"expiryDate": null,
"personalSign": false,
"quoted": "RUB",
"rquid": "8526170fdcd54159bfe1a365b9d71f83",
"rates": [
{
"base": "A98",
"lotSize": 1,
"secondsTimer": 90,
"maximumVolume": 500000.0,
"ranges": [
{
"bid": 3596.0,
"offer": 3836.0,
"minimumVolume": 0.0
},
{
"bid": 3578.0,
"offer": 3851.0,
"minimumVolume": 1000.0
}
]
},
{
"base": "A33",
"lotSize": 1,
"secondsTimer": 90,
"maximumVolume": 500000.0,
"ranges": [
{
"bid": 5702.0,
"offer": 6002.0,
"minimumVolume": 0.0
},
{
"bid": 5702.0,
"offer": 6002.0,
"minimumVolume": 1000.0
}
]
}
]
}
],
"standartBarRate": [
{
"type": "PMR-2",
"startDate": "2019-04-2021 15:40:51",
"expiryDate": null,
"personalSign": false,
"quoted": "RUB",
"rquid": "89b6423a31984d91be27285b11b88799",
"rates": [
{
"base": "A98",
"lotSize": 1,
"secondsTimer": 90,
"maximumVolume": null,
"ranges": [
{
"bid": 3570.0,
"offer": 4652.25,
"minimumVolume": 0.0
}
]
},
{
"base": "A99",
"lotSize": 1,
"secondsTimer": 90,
"maximumVolume": null,
"ranges": [
{
"bid": 52.1,
"offer": 67.11,
"minimumVolume": 0.0
}
]
}
]
}
],
"ingotBatRate": [
{
"type": "PMR-1",
"startDate": "2019-04-27T10:41:55.382+03",
"expiryDate": null,
"personalSign": false,
"quoted": "RUB",
"rates": [
{
"base": "A98",
"lotSize": 1,
"secondsTimer": 90,
"ranges": [
{
"weight": 1000,
"condition": "Excellent",
"wrapper": "Standard",
"bid": 3570600.0,
"offer": 4650360.0
},
{
"weight": 10,
"condition": "Satisfactory",
"wrapper": "Standard",
"bid": 35700.0,
"offer": 47076.0
},
{
"weight": 250,
"condition": "Excellent",
"wrapper": "Standard",
"bid": 892700.0,
"offer": 1163460.0
}
]
}
]
}
]
}
}
]
}
dTo
{
"description": "Отправка курсов валют",
"allOf": [
{
"$ref": "#/definitions/base-parameters"
}
],
"oneOf": [
{
"$ref": "#/definitions/publishRates"
},
{
"$ref": "#/definitions/result"
},
{
"$ref": "#/definitions/error"
}
],
"definitions": {
"base-parameters": {
"type": "object",
"required": [
"jsonrpc",
"id"
],
"properties": {
"jsonrpc": {
"description": "Номер версии, используется значение '2.0'",
"enum": [
"2.0"
]
},
"id": {
"description": "Сквозной ID на транспорте'",
"$ref": "#/definitions/GUID"
}
}
},
"publishRates":{
"type": "object",
"required": [
"method",
"params"
],
"properties":{
"method": {
"description": "Передается имя используемого метода",
"enum": ["publishRates"]
},
"params": {
"type": "object",
"description": "Блок с курсами",
"required": [
"seqNum",
"tierCode",
"instrument",
"expiryDate",
"rates"
],
"properties":{
"seqNum": {
"description": "Параметр, отвечающий за последовательность сообщений",
"$ref": "#/definitions/nonNegativeInteger"
},
"tierCode": {
"description": "Код ценового уровня",
"$ref": "#/definitions/nonNegativeInteger"
},
"instrument": {
"description": "Валютная пара",
"type": "string",
"pattern": "^[A-Z0-9]{3}(/){1}[A-Z0-9]{3}$"
},
"expiryDate": {
"description": "Время жизни курса по UTC. Формат yyyy-mm-ddThh:mm:ss",
"type":"string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"
},
"rates": {
"description": "Значение покупки и продажи",
"type": "array",
"$ref": "#/definitions/ratesType"
},
"maximumVolume": {
"description": "Верхняя граница диапазона. Если значение не указано, то считаем, что диапазон
открытый",
"$ref": "#/definitions/nonNegativeInteger"
}
}
}
}
},
"ratesType": {
"description": "",
"required":[
"minimumVolume",
"bid",
"offer"
],
"type": "array",
"properties": {
"minimumVolume": {
"description": "Нижняя граница диапазона",
"$ref": "#/definitions/nonNegativeInteger"
},
"bid": {
"description": "Цена покупки Банком",
"type": "number",
"minimum":0
},
"offer": {
"description": "Цена продажи Банком",
"type": "number",
"minimum":0
}
}
},
"result": {
"type":"object",
"required":["result"],
"properties": {
"result": {
"type": "object",
"required":["appliedDate"],
"properties": {
"appliedDate": {
"type": "string",
"description": "Время применения курса по UTC. Формат yyyy-mm-ddThh:mm:ss",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"
}
}
}
}
},
"error": {
"required":["error"],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"description": "Код ответного сообщения"
},
"message": {
"type": "string",
"description": "Сообщение",
"maxLength": 40
},
"data": {
"type": "string",
"description": "Дополнительная информация",
"maxLength": 512
}
}
}
}
},
"GUID": {
"type": "string",
"pattern": "^[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}$"
},
"nonNegativeInteger": {
"type": "integer",
"minimum": 0
}
}
}
Ошибки
Код ошибки
Текст
Причина
1
1000
Invalid SeqNum
Переданный seqNum < seqNum,
ранее сохраненного в БД
2
1001
Параметр
Отсутствует
параметр
в
<параметр>
не
сообщении (например, любое
задан (null)
из полей == null);
3
1002
Параметр
Неверный
параметр
в
<параметр> задан
сообщении (например, rates
неверно
путой, rates[i].minimumValue >
maximumValue)
4
1003
Распоряжение не
Произошла внутренняя ошибка
сохранено
ППРБ.КВ, распоряжение не
сохранено (например, ошибка
при сохранении в БД, при
передаче в прикладной журнал
Схема маппинга
Параметр dto
Поле в БД
КФИ
1
ID
CURRENCY_RAT
ES.D_CURATE_E
XRRATESOURCE
.RQ_UID
2
seqNum
CURRENCY_RAT
ES.D_CURATE_E
XRRATESOURCE
.SEQNUM
3
tierCode
CURRENCY_RAT
ES.D_CURATE_E
XRRATE.PRICE_L
EVEL
4
instrument
CURRENCY_RAT
ES.D_CURATE_E
XRCURRENCY.C
ODE
5
expiryDate
D_CURATE_EXR
RATE.D_CURATE
_EXRRATE.END_
DATE
6
maximumVolu
CURRENCY_RAT
me
ES.D_CURATE_E
XRRATEVALUE.
UPPER_RANGE_
VALUE
7
minimumVolum
CURRENCY_RATES.D_CURAT
e
E_EXRRATEVALUE.LOWER_R
ANGE_VALUE
8
bid
CURRENCY_RATES.D_CURAT
E_EXRRATEVALUE.BUY_VALU
E
9
offer
CURRENCY_RATES.D_CURAT
E_EXRRATEVALUE.SELL_VAL
UE
One-Time Token (OTT) (опционально)
Токен должен иметь следующую структуру, где invoker - идентификатор модуля-инициатора
запроса
ОТТ
[JwsTokenCreateReq{tokenClaims=JwsTokenClaims(invoker=pricing-service,
receiver=null, url=ru.sbt.pricing.service.api.PricingServiceApi, urlEvent=null,
domain=mmt, action=request, anonymous=null, tokenType=null,
reqId=0c532f25-b76f-4940-94a9-1e417585f005),
namedAttrs={Attributes=[urn:sbrf:names:pprb:1.0:action:idurn:oasis:names:tc:xacml:3.0:attribute-
category:actionhttp://www.w3.org/2001/XMLSchema#string[request],
urn:sbrf:names:pprb:1.0:api:interface:fullnameurn:oasis:names:tc:xacml:3.0:attribute-
category:resourcehttp://www.w3.org/2001/XMLSchema#string[ru.sbt.pricing.service.api.PricingServiceApi],
urn:sbrf:names:pprb:1.0:module:idurn:oasis:names:tc:xacml:1.0:subject-category:access-
subjecthttp://www.w3.org/2001/XMLSchema#string[pricing-service],
urn:sbrf:names:pprb:1.0:module:idurn:oasis:names:tc:xacml:1.0:subject-category:recipient-
subjecthttp://www.w3.org/2001/XMLSchema#string[]]}}]
Дополнить класс ExrRateSourse:
Пример запроса
{
"jsonrpc": "2.0",
"method": "publishRates",
"id": "11111111-1111-1111-1111-111111111111",
"params": {
"seqNum": 12345,
"tierCode": 2,
"instrument": "USD/RUB",
"expiryDate": "2021-11-11T12:22:22Z",
"maximumVolume": 1000,
"rates": [
{
"minimumVolume": 0,
"bid": 1.15,
"offer": 2.23
},
{
"minimumVolume": 200,
"bid": 12.32,
"offer": 23.53
}
]
}
}
Блок КиБ
Курсы ЮЛ Сбербанка (ExchangeRatesForLegalEntities)
Базовый объект
Наименование
Элемент
Тип
Кратность
параметра
Дата/время
startDate
Date
1
начала действия
курса
Строковый код
baseAlphaCode
String
1
базовый валют
Числовой код
baseNumericCo
String
1
базовый валюты
de
Строковый код
quoteAlphaCod
String
1
котируемой
e
валюты
Числовой код
quoteNumericC
String
1
котируемой
ode
валюты
Масштаб
lotSize
BigDecimal
1
валюты
ИД
rqUID
String
1
распоряжения
ЦУ организации
Int
String
1
Список курсов с
ranges
List
1..N
порогами
Курс покупи
buy
BigDecimal
1
Курс продажи
sell
BigDecimal
1
Нижняя
lowerRange
BigDecimal
1
граница
диапазона
Верхняя
upperRange
BigDecimal
0..1
граница
диапазона
Простая конверсия/конверсия кросс-курс
Наименование
Элемент
Тип
Кратность
параметра
Информационный
-
-
1
курс
Используемый в
rate
BigDecimal
1
конверсионной
операции курс
Сумма операции во
amount
BigDecimal
1
второй валюте
Прямая котировка
direct
Boolean
1
Размерность второй
decimalPrecision
Long
1
валюты
Кросс-курс ЮЛ с конверсией валюта-валюта (getCrossRate)
API
ExchangeRatesForLegalEntities
Назначение
Получение кросс-курса валют Сбербанка для
юридических лиц по заданным атрибутам на дату-
время из входных параметров для валютной пары
состоящей из валюты/валюты.
Всегда возвращает курс за N единиц валюты и
масштаб N.
Источник данных
АС «Курсы валют» (АС КВ)
Jira
RPU-5512
RPU-6182
Статус
develop
Входные параметры
Наименован
Элемент
Тип данных
Кратность
Комментар
ие
ий
параметра
Версия
jsonprc
String
1
Структура в
JSONRPC
соответстви
и с версией
спецификац
ии JSONRPC
2.0.
Передается
значение
константы
«2.0».
Наименован
method
String
1
Наименован
ие метода
ие
вызываемог
о метода.
Идентификат
id
String
1
Идентифика
ор запроса
тор запроса
в
рамках
системы-
источника.
Перечень
params
list <object>
1
входных
параметров
дата/время
requestDate
Date
1
Календарные дата и
запроса
время на которые
нужно получить курс,
см. пример ниже.
тб
terbank
Integer
1
Территориальный
банк
Код
baseCode
String
1
(буквенный/числовой)
базового
инструмента
Код
quoteCode
String
1
(буквенный/числовой)
котируемог
о
инструмента
Вид курса
type
String
0..1
Возможные значения:
currency- курсы для
ЮЛ (если не заполнен
принимает значение
по умолчанию)
Ценовой
tier
String
1
Номер
ценового
уровень
уровня (например, «2»)
покупка
buy
Boolean
1
Принимает значения:
true
- Курс покупки
Банком (курс продажи
Клиентом);
false - Курс продажи
Банком (курс покупки
Клиентом).
сумма
amount
Double
1
Сумма для проведения
операции
конверсионной
операции
прямая
directOperati
Boolean
Определяет валюту, в
операция
on
которой
введена
сумма.
Принимает значения:
true - сумма введена в
валюте
(«CurrencyCode»).
false - сумма введена в
валюте «российский
рубль (RUB)»
метод
roundingМet
Метод
0..1
Метод
округления,
округления
hod
округления
необходим
для
(roundingMe
округления выходного
thod)
параметра
«Сумма
операции во второй
валюте (amount)».
Если не передан, то
принимает
по
умолчанию значение
«1 (Математическое)»
Возможные значения
по числовым кодам:
0 - без округления,
1 - математическое,
2 - отсечение,
3 - в меньшую сторону,
4 - в большую сторону.
точность
roundingPre
Long
0..1
Точность округления
округления
cision
полученного
кросс-
курса.
Количество
знаков для округления
кросс-курса валюты.
Максимальное
значение 10 знаков.
Выходные параметры
Наименова
Элемент
Тип
Кратность
Коммента
ние
рий
параметра
Версия
jsonprc
String
1
Структура
JSONRPC
в
соответст
вии
с
версией
специфик
ации
JSONRPC
2.0.
Передаетс
я
значение
константы
«2.0».
Идентифик
id
String
1
Идентифи
атор
катор
запроса
запроса в
рамках
системы-
источника
из
запроса.
Перечень
result
object
0..1
Заполняет
выходных
ся только
параметро
в случае
в
успешной
обработк
и запроса
Данные
quoteRate
object
0..1
Не
по
<Rate>
передаетс
котируем
я
если
ому
кросс-
инструме
курс был
нту
рассчитан
по
сценария
м 1 или 2
Данные
baseRate
object
1
по
<Rate>
базовому
инструме
нту
Данные
crossRate
object
1
конверси
онной
операции
Сконверт
crossAmo
BigDecima
1
ированна
unt
l
я сумма
во второй
валюте
Кросс
-
crossRate
BigDecima
1
курс
l
валютной
пары
Масштаб
lotSize
BigDecima
1
базовой
l
валюты
относител
ьно
котирумо
й
Размерно
decimalPr
Long
1
Количество
сть
для
ecision
десятичных
цифр
суммы во
после точки.
второй
валюте
Финансов
finInstrum
String
1
вх.baseCode /
ый
ent
вх.quoteCode
инструме
нт
Прямая
direct
Boolean
0..1
Принимает
котировка
значения:
true - найден курс
валютной
пары,
переданной
во
входных параметрах
к методу
false - найден курс
перевернутой
валютной пары, (н-р:
если
на
вход
передается USD/EUR,
то найден курс для
EUR/USD).
null,
если расчет
произведен через
рубль
Наличие
error
object
0..1
Блок
ошибок
заполняет
ся только
в случае
возникно
вения
ошибки
Код
code
Integer
1
ошибки
Сообщен
message
String
1
ие
об
ошибке
Детальная
data
object
0..1
Не
информац
заполняет
ия
об
ся
на
ошибке
стороне
Курсов
Валют, но
может
заполнять
ся
на
стороне
ММТ
currencyRate
Список
ranges
List
1..N
курсов Сберб
анка с
порогами
Курс покупи
buy
BigDecimal
1
относительн
о рубля
Курс
sell
BigDecimal
1
продажи
относительн
о рубля
Нижняя
lowerRange
BigDecimal
1
граница
диапазона
Верхняя
upperRange
BigDecimal
0..1
null
-
отсутствует
граница
верхняя граница
диапазона
Используемы
rate
BigDecimal
1
й в
конверсионн
ой операции
курc
Дата/время
startDate
Date
1
начала
действия
курса
Буквенный
baseAlphaCo
String
1
код базовой
de
валюты
Числовой
baseNumeric
String
1
код базовой
Code
валюты
Буквенный
quoteAlphaC
String
1
код валюты
ode
котировки
Числовой
quoteNumer
String
1
код валюты
icCode
котировки
Масштаб
lotSize
BigDecimal
1
валюты
относительно
рубля
ИД
rqUID
String
1
распоряжени
е
Перечень ошибок
Ссылка на описание ошибок по спецификации JSON RPC 2.0 и ММТ: .Ошибки v4.2.0
Код ошибки
Текст ошибки
Пояснение
-31000
Отсутствие обязательных
Отсутствие
или
некорректное
параметров
заполнение одного или более из
обязательных параметров
-31001
Отсутствие курсов валют
По
переданным
параметрам
отсутствуют курсы валют
-31004
В
качестве
валюты
Во входных параметрах в качестве
передано
значение
кода
валюты/металла
передано
"российский рубль"
значение для российского рубля.
-31005
Найдено более одной
В справочнике найдено более одной
записи тербанка
записи для переданного значения
территориального банка
-31006
Не найдено записи по
В справочнике департаментов не
переданному во входных
найдено записи по переданному ТБ
данных ТБ
-31007
Найдено более одного
Для переданного набора данных
распоряжения
существует
2
распоряжения с
одинаковым
временем
начала
действия курсов.
Пример вызова метода
Пример запроса
{
"jsonrpc": "2.0",
"id": 111,
"method": "getCrossRate",
"params": [
{
"requestDate": "2021-04-16T12:18:24.847",
"terbank": 44,
"baseCode": "USD",
"quoteCode": "EUR",
"type": "currency",
"buy": true,
"amount": 100000.98,
"directOperation": true,
"roundingMethod": "MATH",
"roundingPrecision": 6
}
]
}
Пример успешного ответа
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"baseRate": {
"ranges": [
{
"buy": 1.1166,
"sell": 1.3834,
"lowerRange": 0.0,
"upperRange": 500000.0
}
],
"rate": 1.1166,
"startDate": "2021-04-15T16:37:28.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "USD",
"quoteNumericCode": "840",
"lotSize": 1,
"rqUID": "72fd0b40c4e642d4b8d30a2efc6082a1"
},
"crossCurrencyRate": {
"crossAmount": 126186.14,
"crossRate": 0.895575,
"lotSize": 1,
"decimalPrecision": 2,
"direct": false,
"finInstrument": "USD / EUR"
}
}
}
Расчет кросс-курса через рубль
{
"jsonrpc": "2.0",
"id": 111,
"method": "getCrossRate",
"params": [
{
"requestDate": "2021-04-16T12:18:24.847",
"terbank": 44,
"baseCode": "USD",
"quoteCode": "GBP",
"type": "currency",
"buy": true,
"amount": 100000.98,
"directOperation": true,
"roundingMethod": "MATH",
"roundingPrecision": 6
}
]
}
Результат ответа
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"quoteRate": {
"ranges": [
{
"buy": 89.95,
"sell": 97.56,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"rate": 89.95,
"startDate": "2021-04-23T13:36:55.000+03:00",
"baseAlphaCode": "GBP",
"baseNumericCode": "826",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "48e65d8abb564722b9798d686e01cc02"
},
"baseRate": {
"ranges": [
{
"buy": 68.15,
"sell": 70.51,
"lowerRange": 1000.0,
"upperRange": 9999.99
},
{
"buy": 67.93,
"sell": 70.73,
"lowerRange": 0,
"upperRange": 999.99
},
{
"buy": 68.36,
"sell": 70.3,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
}
],
"rate": 70.3,
"startDate": "2021-04-23T13:36:55.000+03:00",
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "48e65d8abb564722b9798d686e01cc02"
},
"crossCurrencyRate": {
"crossAmount": 7816.22,
"crossRate": 0.781545,
"lotSize": 1,
"decimalPrecision": 2,
"finInstrument": "USD/GBP"
}
}
}
Курс ЮЛ с конверсией валюта-рубль (getRate)
API
ExchangeRatesForLegalEntities
Назначение
Получение курса валют Сбербанка для юридических
лиц по заданным атрибутам на дату-время из входных
параметров для валютной пары состоящей из
валюты/рубль.
Всегда возвращает курс за N единиц валюты и масштаб
N.
Источник данных
АС «Курсы валют» (АС КВ)
Jira
RPU-5509
RPU-6182
Статус
develop
Входные параметры
Наименован
Элемент
Тип данных
Кратность
Комментарий
ие
параметра
Версия
jsonprc
String
1
Структура в соответствии с
JSONRPC
версией
спецификации
JSONRPC 2.0.
Передается
значение
константы «2.0».
Наименован
method
String
1
Наименование
ие метода
вызываемого метода.
Идентификат
id
String
1
Идентификатор запроса в
ор запроса
рамках системы-источника.
Перечень
params
list <object>
1
входных
параметров
дата/время
requestDate
requestDate
1
Календарн
запроса
ые дата и
время на
которые
нужно
получить
курс, см.
пример
ниже.
территориа
terbank
Integer
1
Территори
льный банк
альный
банк
Код
baseCode
String
1
Код фин.
инструмента
инструмен
та,
для
которого
необходи
мо
получить
курс
(буквенны
й/числово
й)
Вид курса
type
String
0..1
Возможны
е
значения:
• currency
-
кур
сы
для
Ю
Л
(ес
ли
не
зап
ол
не
н
пр
ин
им
ает
зна
че
ни
е
по
ум
ол
ча
ни
ю)
• metal-
уче
тн
ые
це
ны
др
агм
ета
лл
ов
ба
нка
;
ЦУ
tier
String
1
Номер
организаци
ценового
и
уровня
(например
, «2»)
покупка
buy
Boolean
1
Принимае
т
значения:
• true
-
Ку
рс
по
куп
ки
Ба
нк
ом
(ку
рс
пр
од
аж
и
Кл
ие
нто
м);
• false
-
Ку
рс
пр
од
аж
и
Ба
нк
ом
(ку
рс
по
куп
ки
Кл
ие
нто
м).
сумма
amount
Double
1
Сумма для
операции
проведени
я
конверсио
нной
операции
прямая
directOperati
Boolean
1
Определя
операция
on
ет валюту,
в которой
введена
сумма.
Принимае
т
значения:
• true
-
су
мм
а
вве
де
на
в
вал
ют
е
(«C
urr
enc
yC
od
e»).
• false
-
су
мм
а
вве
де
на
в
вал
ют
е
«р
осс
ий
ски
й
ру
бль
(RU
B)»
метод
roundingМet
Метод
0..1
Метод
округления
hod
округления
округлени
(roundingMe
я,
thod)
необходи
м
для
округлени
я
выходного
параметра
«Сумма
операции
во второй
валюте
(sumSecon
d)».
Если
не
передан,
то
принимае
т
по
умолчани
ю
значение
«1
(Математи
ческое)»
Возможны
е значения
по
числовым
кодам:
•
0
- без
ок
руг
ле
ни
я,
•
1
-
ма
те
ма
тич
еск
ое,
•
2
-
отс
ече
ни
е,
•
3
- в
ме
нь
шу
ю
сто
ро
ну,
•
4
- в
бо
ль
шу
ю
сто
ро
ну.
Выходные параметры
Наименов
Элемент
Тип
Кратност
Коммент
ание
ь
арий
параметра
Версия
jsonprc
String
1
Структура
JSONRPC
в
соответст
вии
с
версией
специфик
ации
JSONRPC
2.0.
Передаетс
я
значение
константы
«2.0».
Идентифик
id
String
1
Идентифи
атор
катор
запроса
запроса в
рамках
системы-
источника
из
запроса.
Перечень
result
object
0..1
Заполняет
выходных
ся только
параметро
в случае
в
успешной
обработк
и запроса
Использу
rate
BigDecima
1
емый в
l
конверси
онной
операции
курc
Дата/вре
startDate
Date
1
мя начала
действия
курса
Буквенны
baseAlpha
String
1
По
ISO
й
код
Code
4217:
базовой
американ
валюты
ский
доллар
-
USD;
евро
-
EUR.
Числовой
baseNume
String
1
По
ISO
код
ricCode
4217:
базовой
американ
валюты
ский
доллар
-
840;
евро
-
978;
Буквенны
quoteAlph
String
1
Буквенны
й
код
aCode
й код для
валюты
российско
котировк
го рубля -
и
RUB.
Числовой
quoteNum
String
1
Числовой
код
ericCode
код для
валюты
российско
котировк
го рубля -
и
643.
Масштаб
lotSize
BigDecima
1
базовой
l
валюты
относител
ьно
котируем
ой
валюты
ИД
rqUID
String
1
распоряж
ение
Сумма
amount
BigDecima
1
операции
l
во второй
валюте
Размерно
decimalPr
Long
1
Количеств
сть
для
ecision
о
суммы во
десятичн
второй
ых цифр
валюте
после
точки.
Список
ranges
list<object
1..N
курсов Сб
>
ербанка с
порогами
Курс
buy
BigDecima
1
покупи
l
относител
ьно рубля
Курс
sell
BigDecima
1
продажи
l
относител
ьно рубля
Нижняя
lowerRang
BigDecima
1
граница
e
l
диапазона
Верхняя
upperRan
BigDecima
0..1
null
-
отсутствует
граница
ge
l
верхняя граница
диапазона
Наличие
error
Error
0..1
Блок
ошибок
заполняет
ся только
в случае
возникно
вения
ошибки
Код
code
Integer
1
ошибки
Сообщен
message
String
1
ие
об
ошибке
Детальная
data
String
0..1
Не
информац
заполняет
ия
об
ся
на
ошибке
стороне
Курсов
Валют, но
может
заполнять
ся
на
стороне
ММТ
Перечень ошибок
Ссылка на описание ошибок по спецификации JSON RPC 2.0 и ММТ: .Ошибки v4.2.0
Код ошибки
Текст ошибки
Пояснение
-31000
Отсутствие обязательных
Отсутствие
или
некорректное
параметров
заполнение одного или более из
обязательных параметров
-31001
Отсутствие курсов валют
По переданным параметрам отсутствуют
курсы валют
-31004
В
качестве
валюты
Во входных параметрах в качестве кода
передано
значение
валюты/металла передано значение для
"российский рубль"
российского рубля.
-31005
Найдено более одной
В справочнике найдено более одной
записи тербанка
записи для переданного значения
территориального банка
-31006
Не найдено записи по
В справочнике департаментов не
переданному во входных
найдено записи по переданному ТБ
данных ТБ
-31007
Найдено более одного
Для переданного набора данных
распоряжения
существует
2
распоряжения
с
одинаковым временем начала действия
курсов.
Пример вызова метода
Запрос
{
"jsonrpc": "2.0",
"id": 111,
"method": "getRate",
"params": [
{
"requestDate": "2021-04-23T01:13:56.484",
"terbank": 38,
"currencyCode": "USD",
"type": "currency",
"tier": "1",
"buy": true,
"amount": 35000.0,
"directOperation": true,
"roundingMethod": "1"
}
]
}
Ответ
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"ranges": [
{
"buy": 68.28,
"sell": 70.37,
"lowerRange": 0,
"upperRange": 499.99
},
{
"buy": 68.16,
"sell": 70.5,
"lowerRange": 500.0,
"upperRange": 999.99
},
{
"buy": 68.36,
"sell": 70.3,
"lowerRange": 1000.0,
"upperRange": 9999999999.99
}
],
"rate": 68.36,
"startDate": "2021-04-22T16:48:56.000+03:00",
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "28fc0971f294413baa39c10bc3a76df0",
"amount": 2392600.0,
"decimalPrecision": 2
}
}
Список курсов валюты/металла ОМС (getRates)
API
ExchangeRatesForLegalEntities
Назначение
Получение списка курсов CБ валют/металлов (ОМС) на
операционную дату для юридических лиц.
По каждой валютной паре возвращает курс за N
единиц валюты и масштаб N
Внимание: курсы только по валютным парам из
справочника.
Источник данных
Последовательное переключение между:
• АС «Агрегатор рыночных курсов» (АС АРК);
• АС «Курсы валют» (АС КВ)
Jira
основная таска RPU-5274
доработка по металлам RPU-5581
ограничение блоков запроса курсов RPU-6249
Входные параметры
Наимен
Элеме
Тип
Кратно
Комме
ование
нт
данны
сть
нтарий
параме
х
тра
Версия
jsonprc
String
1
Структу
JSONRP
ра
в
C
соответ
ствии с
версие
й
специф
икации
JSONR
PC 2.0.
Переда
ется
значен
ие
конста
нты
«2.0».
Наимен
method
String
1
Наиме
ование
новани
метода
е
вызыва
емого
метода.
Переда
ется
значен
ие
конста
нты
«getRat
es».
Иденти
id
String
1
Иденти
фикатор
фикато
запроса
р
запрос
а
в
рамках
систем
ы-
источн
ика.
Перечен
params
list
1
ь
<object
входных
>
парамет
ров
дата/вр
request
Date
1
Календ
емя
Date
арные
запрос
дата и
а
время
на
которы
е
нужно
получи
ть
курс во
зможн
ый
формат
YYYY-
MM-
DDThh:
mm:ss[.
SSS]±h
h
террит
terBank
Int
0..1
Если
ориаль
Code
значен
ный
ие не
банк
переда
но или
пустое,
то по
умолча
нию
беретс
я
значен
ие
38
ТБ.
Блок
rates
list
1..2
При
запрос
<object
исполь
а
>
зовани
курсов
и двух
блоков
запрос
а
курсов,
они
должн
ы быть
с
разным
и
значен
иями
Вида
курса
(type)
Вид
type
String
1
Возмо
курса
жные
значен
ия:
• СUR
R
E
N
C
Y
-
к
у
р
с
ы
д
л
я
Ю
Л
;
• MET
A
L
-
у
ч
е
т
н
ы
е
ц
е
н
ы
д
р
а
г
-
м
е
т
а
л
л
о
в
б
а
н
к
а
;
Список
tierPairs
list
1..N
валютн
<object
ых пар
>
по ЦУ
ЦУ
tier
String
1
Номер
органи
ценово
зации
го
уровня,
наприм
ер «2».
список
pairs
list
0..N
Перече
валютн
<object
нь
ых пар
>
валют,
по
которы
м
запраш
иваютс
я курсы
Сберба
нка.
Для
type=C
URREN
CY
обязат
елен,
для
type=M
ETAL
может
быть
пустым
код
baseCo
String
1
Числовой
или
базово
de
буквенный
код
й
валюты. Пример:
валюты
USD, 840.
код
quoteC
String
1
Числовой
или
котиру
ode
буквенный
код
емой
валюты. Пример:
валюты
EUR, 978.
Выходные параметры
Наим
Элем
Тип
Крат
Ком
енова
ент
ност
мент
ние
ь
арий
парам
етра
Верси
jsonp
String
1
Струк
я
rc
тура
JSONR
в
PC
соотв
етств
ии с
верси
ей
спец
ифик
ации
JSON
RPC
2.0.
Пере
даетс
я
значе
ние
конст
анты
«2.0».
Идент
id
String
1
Иден
ифика
тифи
тор
катор
запрос
запро
а
са в
рамк
ах
систе
мы-
источ
ника
из
запро
са.
Переч
result
list
0..1
Запо
ень
<obje
лняет
выход
ct>
ся
ных
тольк
парам
о в
етров
случа
е
успе
шной
обра
ботки
запро
са
Пере
succe
List
0..N
чень
ss
<obje
успе
ct>
шных
резул
ьтато
в
Вид
type
String
1
Равен
курса
пара
метру
из
списк
а
вх.typ
e
Спис
tierRa
list
1..N
ок
tes
<obje
валю
ct>
тных
пар
по ЦУ
ЦУ
tier
String
1
орган
изац
ии
Спис
rates
list
1..N
ок
<obje
курсо
ct>
в
валю
т
Спис
range
List
1..N
ок
s
курсо
в
с
поро
гами
Курс
buy
BigDe
1
Курс
поку
cimal
покупки
пки
валюты
Банком
(курс
продажи
для
клиента).
Валютна
я пара,
для
которой
этот курс,
определ
яется по
сочетани
ю
парамет
ров:
• базова
я/
к
о
т
и
р
у
е
м
а
я
в
а
л
ю
та
и
з
в
х
о
д
н
ы
х
д
а
н
н
ы
х;
• пряма
я
к
о
т
и
р
о
в
к
а
(п
р
я
м
а
я
и
л
и
о
б
р
ат
н
а
я)
Курс
sell
BigDe
1
Курс
прод
cimal
продажи
ажи
валюты
Банком
(курс
покупки
для
клиента)
Нижн
lower
BigDe
1
яя
Rang
cimal
грани
e
ца
диап
азона
Верх
upper
BigDe
1
няя
Rang
cimal
грани
e
ца
диап
азона
Дата/
startD
Date
1
возм
врем
ate
ожны
я
й
начал
форм
а
ат YY
дейст
YY-
вия
MM-
курса
DDTh
h:mm
:ss[.SS
S]±hh
:mm
Букве
baseA
String
1
нный
lphaC
код
ode
базов
ой
валю
ты
Числ
base
String
1
овой
Nume
код
ricCo
базов
de
ой
валю
ты
Букве
quote
String
1
нный
Alpha
код
Code
валю
ты
котир
овки
Числ
quote
String
1
овой
Nume
код
ricCo
валю
de
ты
котир
овки
Масш
lotSiz
Num
1
таб
e
ber
валю
ты
ИД
rqUID
String
1
расп
оряж
ение
Пере
errors
List
0..N
чень
<obje
ошиб
ct>
ок
Вид
type
String
1
курса
Ошиб
error
objec
0..1
ка
t
Код
code
Int
1
-
ошиб
ки
Опис
descri
String
1
ание
ption
ошиб
ки
Спис
tierRa
list
0..N
ок
tes
<obje
курсо
ct>
в
валю
т
ЦУ
tier
String
1
орган
изац
ии
Оши
error
objec
0..1
бка
t
Код
code
Int
1
-
ошиб
31012
ки
Опис
descri
String
1
ание
ption
ошиб
ки
Спис
rates
list
0..N
ок
<obje
курсо
ct>
в
валю
т
Базов
baseC
String
1
ая
ode
валю
та
Коти
quote
String
1
руем
Code
ая
валю
та
Ошиб
error
list
1
ка
<obje
ct>
Код
code
Int
1
-31011; -31001
ошиб
ки
Опис
descri
String
1
ание
ption
ошиб
ки
Налич
error
Error
0..1
Блок
ие
запол
ошибо
няетс
к
я
тольк
о в
случа
е
возн
икно
вения
|