Руководство по эксплуатации продукта «Platform V Exchange Rates» Код компонента: CRT (Поколение 4) - часть 2

 

  Главная      Книги - Разные     Руководство по эксплуатации продукта «Platform V Exchange Rates» Код компонента: CRT (Поколение 4)

 

поиск по сайту            правообладателям  

 

   

 

   

 

содержание      ..      1      2      3      ..

 

 

 

Руководство по эксплуатации продукта «Platform V Exchange Rates» Код компонента: CRT (Поколение 4) - часть 2

 

 

ошиб
ки
Код
code
Int
1
ошиб
ки
Сооб
mess
String
1
щени
age
е об
ошиб
ке
Детал
data
Objec
0..1
Не
ьная
t
запол
инфо
няетс
рмац
я на
ия об
сторо
ошиб
не
ке
Курсо
в
Валю
т, но
може
т
запол
нятьс
я на
сторо
не
ММТ
Перечень ошибок
Ссылка на описание ошибок по спецификации JSON RPC 2.0 и ММТ: .Ошибки v4.2.0
Пример вызова метода
Запрос
Пример запроса c валютами
POST data:
{
"jsonrpc": "2.0",
"method": "getRates",
"id": 111,
"params": [
{
"requestDate": "2021-06-17T02:44:05.888",
"terBankCode": "55",
"rates": [
{
"type": "CURRENCY",
"tierPairs": [
{
"tier": "6",
"pairs": [
{
"baseCode": "AUD",
"quoteCode": "RUB"
},
{
"baseCode": "EUR",
"quoteCode": "RUB"
},
{
"baseCode": "CNY",
"quoteCode": "RUB"
}
]
},
{
"tier": "1",
"pairs": [
{
"baseCode": "EUR",
"quoteCode": "USD"
},
{
"baseCode": "JPY",
"quoteCode": "GBP"
},
{
"baseCode": "GBP",
"quoteCode": "JPY"
}
]
},
{
"tier": "2",
"pairs": [
{
"baseCode": "EUR",
"quoteCode": "USD"
},
{
"baseCode": "USD",
"quoteCode": "HelloWorld"
},
{
"baseCode": "HelloWorld",
"quoteCode": "USD"
}
]
},
{
"tier": "HelloWorld",
"pairs": [
{
"baseCode": "EUR",
"quoteCode": "USD"
},
{
"baseCode": "USD",
"quoteCode": "RUB"
}
]
}
]
}
]
}
]
}
[no cookies]
Пример запроса с металлами
POST data:
{
"jsonrpc": "2.0",
"method": "getRates",
"id": 111,
"params": [
{
"requestDate": "2021-08-05T10:56:37.420+03:00",
"terBankCode": "38",
"rates": [
{
"type": "METAL",
"tierPairs": [
{
"tier": "1",
"pairs": [
{
"baseCode": "A98",
"quoteCode": "RUB"
},
{
"baseCode": "A33",
"quoteCode": "RUB"
},
{
"baseCode": "A76",
"quoteCode": "RUB"
},
{
"baseCode": "A99",
"quoteCode": "RUB"
}
]
}
]
}
]
}
]
}
Ответ Валютная пара USD/EUR
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"success": [
{
"type": "CURRENCY",
"tierRates": [
{
"tier": "6",
"rates": [
{
"ranges": [
{
"buy": 52.87,
"sell": 56.84,
"lowerRange": 0,
"upperRange": 99999.99
}
],
"rate": null,
"startDate": "2021-06-06T21:00:00.000+00:00",
"baseAlphaCode": "AUD",
"baseNumericCode": "036",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "75c59c1851eb417fb567e687226f6191",
"orderNumber": "055-168-ОК-230421-001",
"orderDate": "2021-04-23T10:07:10.000+00:00",
"tier": "6"
},
{
"ranges": [
{
"buy": 10.15,
"sell": 11.17,
"lowerRange": 0,
"upperRange": 699999.99
}
],
"rate": null,
"startDate": "2021-06-06T21:00:00.000+00:00",
"baseAlphaCode": "CNY",
"baseNumericCode": "156",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "75c59c1851eb417fb567e687226f6191",
"orderNumber": "055-168-ОК-230421-001",
"orderDate": "2021-04-23T10:07:10.000+00:00",
"tier": "6"
},
{
"ranges": [
{
"buy": 82.43,
"sell": 87.06,
"lowerRange": 0,
"upperRange": 99999.99
}
],
"rate": null,
"startDate": "2021-06-06T21:00:00.000+00:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "75c59c1851eb417fb567e687226f6191",
"orderNumber": "055-168-ОК-230421-001",
"orderDate": "2021-04-23T10:07:10.000+00:00",
"tier": "6"
}
]
},
{
"tier": "1",
"rates": [
{
"ranges": [
{
"buy": 1.1494,
"sell": 1.3506,
"lowerRange": 0,
"upperRange": 499999.9999
}
],
"rate": null,
"startDate": "2021-06-06T21:00:00.000+00:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "USD",
"quoteNumericCode": "840",
"lotSize": 1,
"rqUID": "42e1d56a4df9455abade6c59ad0c894a",
"orderNumber": "055-168-ОК-230421-001",
"orderDate": "2021-04-23T10:07:10.000+00:00",
"tier": "1"
}
]
}
]
}
],
"errors": [
{
"type": "CURRENCY",
"tierRates": [
{
"tier": "1",
"rates": [
{
"baseCode": "JPY",
"quoteCode": "GBP",
"error": {
"code": "-31001",
"description": "Отсутствие курсов валют"
}
},
{
"baseCode": "GBP",
"quoteCode": "JPY",
"error": {
"code": "-31001",
"description": "Отсутствие курсов валют"
}
}
],
"error": null
},
{
"tier": "2",
"rates": [
{
"baseCode": "USD",
"quoteCode": "HelloWorld",
"error": {
"code": "-31011",
"description": "Единица измерения не найдена."
}
},
{
"baseCode": "HelloWorld",
"quoteCode": "USD",
"error": {
"code": "-31011",
"description": "Единица измерения не найдена."
}
}
],
"error": {
"code": "-31001",
"description": "Отсутствие курсов валют"
}
},
{
"tier": "HelloWorld",
"rates": [],
"error": {
"code": "-31010",
"description": "Ценовой уровень с кодом [HelloWorld] не найден."
}
}
],
"error": null
}
]
}
}
Ответ с металлами
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"success": [
{
"type": "METAL",
"tierRates": [
{
"tier": "1",
"rates": [
{
"ranges": [
{
"buy": 6317,
"sell": 6649,
"lowerRange": null,
"upperRange": null
}
],
"rate": null,
"startDate": "2021-08-05T07:55:34.000+00:00",
"baseAlphaCode": "A33",
"baseNumericCode": "A33",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "0d1541158bf146bd95f580e03ccdfbd8",
"orderNumber": "038-044-ОК-050821-002",
"orderDate": "2021-08-05T07:35:44.000+00:00",
"tier": "1"
},
{
"ranges": [
{
"buy": 59.56,
"sell": 63.6,
"lowerRange": null,
"upperRange": null
}
],
"rate": null,
"startDate": "2021-08-05T07:55:34.000+00:00",
"baseAlphaCode": "A99",
"baseNumericCode": "A99",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "0d1541158bf146bd95f580e03ccdfbd8",
"orderNumber": "038-044-ОК-050821-002",
"orderDate": "2021-08-05T07:35:44.000+00:00",
"tier": "1"
},
{
"ranges": [
{
"buy": 4223,
"sell": 4526,
"lowerRange": null,
"upperRange": null
}
],
"rate": null,
"startDate": "2021-08-05T07:55:34.000+00:00",
"baseAlphaCode": "A98",
"baseNumericCode": "A98",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "0d1541158bf146bd95f580e03ccdfbd8",
"orderNumber": "038-044-ОК-050821-002",
"orderDate": "2021-08-05T07:35:44.000+00:00",
"tier": "1"
},
{
"ranges": [
{
"buy": 2497,
"sell": 2691,
"lowerRange": null,
"upperRange": null
}
],
"rate": null,
"startDate": "2021-08-05T07:55:34.000+00:00",
"baseAlphaCode": "A76",
"baseNumericCode": "A76",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "0d1541158bf146bd95f580e03ccdfbd8",
"orderNumber": "038-044-ОК-050821-002",
"orderDate": "2021-08-05T07:35:44.000+00:00",
"tier": "1"
}
]
}
]
}
],
"errors": []
}
}
Список курсов валюты/металла ОМС с разницей на дату (getRatesWithPreviousRateChanges)
API
ExchangeRatesForLegalEntities
Назначение
Получение списка курсов CБ валют/металлов (ОМС) с
указанием разницы относительно предыдущего курса
на операционную дату для юридических лиц.
По каждой валютной паре возвращает курс за N
единиц валюты и масштаб N
Внимание: курсы только по валютным парам из
справочника.
Источник данных
Последовательное переключение между:
АС «Агрегатор рыночных курсов» (АС АРК);
АС «Курсы валют» (АС КВ)
Jira
RPU-6246
Доработки:
RPU-6554
Входные параметры
Наимен
Элеме
Тип
Кратно
Комме
ование
нт
данны
сть
нтарий
параме
х
тра
Версия
jsonprc
String
1
Структу
JSONRP
ра
в
C
соответ
ствии с
версие
й
специф
икации
JSONR
PC 2.0.
Переда
ется
значен
ие
конста
нты
«2.0».
Наимен
method
String
1
Наиме
ование
новани
метода
е
вызыва
емого
метода.
Переда
ется
значен
ие
конста
нты
«getRat
esWith
Previou
sRateC
hanges
».
Иденти
id
String
1
Иденти
фикатор
фикато
запроса
р
запрос
а
в
рамках
систем
ы-
источн
ика.
Перечен
params
List
1
Массив
ь
<Objec
из
входных
t>
одного
парамет
элемен
ров
та
object
(требов
ание
трансп
орта)
дата/вр
request
String(к
1
Календ
емя
Date
ак Dat
арные
запрос
e)
дата и
а
время
на
которы
е
нужно
получи
ть
курс,во
зможн
ый
формат
YYYY-
MM-
DDThh:
mm:ss[.
SSS]±h
h
террит
terBank
Integer
0..1
Если
ориаль
Code
значен
ный
ие не
банк
переда
но или
пустое,
то по
умолча
нию
беретс
я
значен
ие
38
ТБ.
Блок
rates
List
1..2
При
запрос
<Objec
исполь
а
t>
зовани
курсов
и двух
блоков
запрос
а
курсов,
они
должн
ы быть
с
разным
и
значен
иями
Вида
курса
(type)
Вид
type
String
1
Допуст
курса
имые
значен
ия:
• СUR
R
E
N
C
Y
-
к
у
р
с
ы
д
л
я
Ю
Л
;
• MET
A
L
-
у
ч
е
т
н
ы
е
ц
е
н
ы
д
р
а
г
-
м
е
т
а
л
л
о
в
б
а
н
к
а
(
О
М
С
)
;
Список
tierPairs
List
1..6
валютн
<Objec
ых пар
t>
по ЦУ
ЦУ
tier
String
1
Номер
органи
ценово
зации
го
уровня,
наприм
ер
«2».Для
валют
обязат
ельно
указан
ие
ЦУ.Для
металл
ов
значен
ие ЦУ в
поиске
курсов
исполь
зоватьс
я
не
будет;
если
будет
переда
но
нескол
ько
блоков
с
разным
и
значен
иями
tier
в
ответе
будет
один
блок с
любым
tier из
запрос
а,
в
которы
й
попаду
т
все
перечи
сленны
е
валютн
ые
пары,
либо
все
валютн
ые
пары
из
актуаль
ного на
дату
запрос
а
распор
яжения
список
pairs
List
0..5
Перече
валютн
<Objec
нь
ых пар
t>
валют,
по
которы
м
запраш
иваютс
я курсы
Сберба
нка.
Если
список
валютн
ых пар
не
перечи
слен, то
в ответ
попаду
т
все
валютн
ые
пары
из
актуаль
ного на
дату
запрос
а
распор
яжения
код
baseCo
String
1
Числовой
или
базово
de
буквенный
код
й
валюты. Пример:
валюты
USD, 840.
код
quoteC
String
1
Числовой
или
котиру
ode
буквенный
код
емой
валюты. Пример:
валюты
EUR, 978.
Примеры вызова метода
Пример запроса c валютами
{
"jsonrpc": "2.0",
"method": "getRatesWithPreviousRateChanges",
"id": 1111,
"params": [
{
"requestDate": "2022-01-27T10:44:05.888",
"terBankCode": "55",
"rates": [
{
"type": "CURRENCY",
"tierPairs": [
{
"tier": "6"
}
]
}
]
}
]
}
Ответы
{
"jsonrpc": "2.0",
"id": 1111,
"result": {
"success": [
{
"type": "CURRENCY",
"tierRates": [
{
"tier": "6",
"rates": [
{
"startDate": "2022-01-25T11:34:51.000+03:00",
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "CNY",
"quoteNumericCode": "156",
"lotSize": 1,
"rqUID": "02d6883d470a4845a837a0864a30ba71",
"orderNumber": "055-168-ОК-250122-002",
"orderDate": "2022-01-25T11:29:54.000+03:00",
"ranges": [
{
"buy": 6.3075000000,
"sell": 7.2851000000,
"lowerRange": 0,
"upperRange": 99999.9999000000,
"previousBuyChange": 0.3603000000,
"previousSellChange": -0.3603000000
}
]
},
{
"startDate": "2022-01-26T10:05:32.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "CHF",
"quoteNumericCode": "756",
"lotSize": 1,
"rqUID": "9a56c412688f41e9827d23a3c96f5eb2",
"orderNumber": "055-168-ОК-260122-003",
"orderDate": "2022-01-26T10:00:36.000+03:00",
"ranges": [
{
"buy": 0.9779000000,
"sell": 1.1128000000,
"lowerRange": 0,
"upperRange": 99999.9999000000,
"previousBuyChange": 0E-10,
"previousSellChange": 0E-10
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "BYN",
"baseNumericCode": "933",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 25.8000000000,
"sell": 32.8000000000,
"lowerRange": 0,
"upperRange": 199999.9900000000,
"previousBuyChange": 0.3500000000,
"previousSellChange": 1.0500000000
},
{
"buy": 25.8000000000,
"sell": 32.8000000000,
"lowerRange": 199999.9900000000,
"upperRange": 999999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "JPY",
"baseNumericCode": "392",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1E+2,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 62.8200000000,
"sell": 68.8800000000,
"lowerRange": 0,
"upperRange": 11999999.9900000000,
"previousBuyChange": -0.3000000000,
"previousSellChange": 1.7000000000
},
{
"buy": 62.8200000000,
"sell": 68.8800000000,
"lowerRange": 11999999.9900000000,
"upperRange": 59999999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "GBP",
"baseNumericCode": "826",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 82.2100000000,
"sell": 93.9500000000,
"lowerRange": 0,
"upperRange": 99999.9900000000,
"previousBuyChange": -2.2000000000,
"previousSellChange": 3.6000000000
},
{
"buy": 82.2100000000,
"sell": 93.9500000000,
"lowerRange": 99999.9900000000,
"upperRange": 499999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "CZK",
"baseNumericCode": "203",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1E+1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 31.4200000000,
"sell": 41.6700000000,
"lowerRange": 0,
"upperRange": 2199999.9900000000,
"previousBuyChange": 0.2000000000,
"previousSellChange": 0.7000000000
},
{
"buy": 31.4200000000,
"sell": 41.6700000000,
"lowerRange": 2199999.9900000000,
"upperRange": 10999999.9900000000
}
]
},
{
"startDate": "2022-01-25T11:34:51.000+03:00",
"baseAlphaCode": "GBP",
"baseNumericCode": "826",
"quoteAlphaCode": "USD",
"quoteNumericCode": "840",
"lotSize": 1,
"rqUID": "e04ebb61be7f48a7a6f3251ba793720b",
"orderNumber": "055-168-ОК-250122-002",
"orderDate": "2022-01-25T11:29:54.000+03:00",
"ranges": [
{
"buy": 1.2846000000,
"sell": 1.4412000000,
"lowerRange": 0,
"upperRange": 99999.9999000000,
"previousBuyChange": -0.0055000000,
"previousSellChange": -0.0065000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 57.8100000000,
"sell": 63.9500000000,
"lowerRange": 0,
"upperRange": 99999.9900000000,
"previousBuyChange": 0.3400000000,
"previousSellChange": 1.7000000000
},
{
"buy": 57.8100000000,
"sell": 63.9500000000,
"lowerRange": 99999.9900000000,
"upperRange": 499999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "NOK",
"baseNumericCode": "578",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1E+1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 64.0900000000,
"sell": 72.3000000000,
"lowerRange": 0,
"upperRange": 799999.9900000000,
"previousBuyChange": -0.0500000000,
"previousSellChange": 1.5500000000
},
{
"buy": 64.0900000000,
"sell": 72.3000000000,
"lowerRange": 799999.9900000000,
"upperRange": 3999999.9900000000
}
]
},
{
"startDate": "2022-01-26T10:05:32.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "GBP",
"quoteNumericCode": "826",
"lotSize": 1,
"rqUID": "70e5f6bbe5ad4d1f8af4ebf6c4583583",
"orderNumber": "055-168-ОК-260122-003",
"orderDate": "2022-01-26T10:00:36.000+03:00",
"ranges": [
{
"buy": 0.7843000000,
"sell": 0.8851000000,
"lowerRange": 0,
"upperRange": 99999.9999000000,
"previousBuyChange": 0E-10,
"previousSellChange": 0E-10
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "BYN",
"quoteNumericCode": "933",
"lotSize": 1,
"rqUID": "2702f508992e4a81b43f240de93c8489",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 2.4347000000,
"sell": 3.3495000000,
"lowerRange": 0,
"upperRange": 99999.9999000000,
"previousBuyChange": -0.0540000000,
"previousSellChange": 0.0540000000
},
{
"buy": 2.4347000000,
"sell": 3.3495000000,
"lowerRange": 99999.9999000000,
"upperRange": 499999.9999000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "SGD",
"baseNumericCode": "702",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 48.9200000000,
"sell": 55.9700000000,
"lowerRange": 0,
"upperRange": 199999.9900000000,
"previousBuyChange": -1.0800000000,
"previousSellChange": 1.9400000000
},
{
"buy": 48.9200000000,
"sell": 55.9700000000,
"lowerRange": 199999.9900000000,
"upperRange": 999999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "CAD",
"baseNumericCode": "124",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 47.4400000000,
"sell": 55.5600000000,
"lowerRange": 0,
"upperRange": 99999.9900000000,
"previousBuyChange": -1.2600000000,
"previousSellChange": 2.1600000000
},
{
"buy": 47.4400000000,
"sell": 55.5600000000,
"lowerRange": 99999.9900000000,
"upperRange": 499999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "DKK",
"baseNumericCode": "208",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 10.7200000000,
"sell": 11.7800000000,
"lowerRange": 0,
"upperRange": 599999.9900000000,
"previousBuyChange": -0.0800000000,
"previousSellChange": 0.2000000000
},
{
"buy": 10.7200000000,
"sell": 11.7800000000,
"lowerRange": 599999.9900000000,
"upperRange": 2999999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "CHF",
"baseNumericCode": "756",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 60.6300000000,
"sell": 70.3700000000,
"lowerRange": 0,
"upperRange": 99999.9900000000,
"previousBuyChange": -1.5700000000,
"previousSellChange": 2.5700000000
},
{
"buy": 60.6300000000,
"sell": 70.3700000000,
"lowerRange": 99999.9900000000,
"upperRange": 499999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 63.0000000000,
"sell": 70.0000000000,
"lowerRange": 0,
"upperRange": 99999.9900000000,
"previousBuyChange": 0.4800000000,
"previousSellChange": 1.8000000000
},
{
"buy": 63.0000000000,
"sell": 70.0000000000,
"lowerRange": 99999.9900000000,
"upperRange": 499999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "KZT",
"baseNumericCode": "398",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1E+2,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 8.6000000000,
"sell": 20.7300000000,
"lowerRange": 0,
"upperRange": 36999999.9900000000,
"previousBuyChange": -4.1000000000,
"previousSellChange": 4.8000000000
},
{
"buy": 8.6000000000,
"sell": 20.7300000000,
"lowerRange": 36999999.9900000000,
"upperRange": 184999999.9900000000
}
]
},
{
"startDate": "2022-01-25T11:34:51.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "USD",
"quoteNumericCode": "840",
"lotSize": 1,
"rqUID": "e04ebb61be7f48a7a6f3251ba793720b",
"orderNumber": "055-168-ОК-250122-002",
"orderDate": "2022-01-25T11:29:54.000+03:00",
"ranges": [
{
"buy": 1.0714000000,
"sell": 1.1925000000,
"lowerRange": 0,
"upperRange": 99999.9999000000,
"previousBuyChange": -0.0131000000,
"previousSellChange": -0.0075000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "PLN",
"baseNumericCode": "985",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 18.9200000000,
"sell": 21.7600000000,
"lowerRange": 0,
"upperRange": 399999.9900000000,
"previousBuyChange": 0.1400000000,
"previousSellChange": 0.3200000000
},
{
"buy": 18.9200000000,
"sell": 21.7600000000,
"lowerRange": 399999.9900000000,
"upperRange": 1999999.9900000000
}
]
},
{
"startDate": "2022-01-21T18:00:00.000+03:00",
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "NOK",
"quoteNumericCode": "578",
"lotSize": 1,
"rqUID": "9f7c3b23aa0c43ea8f47344cabcbf25e",
"orderNumber": "055-168-ОК-210122-003",
"orderDate": "2022-01-21T17:55:02.000+03:00",
"ranges": [
{
"buy": 9.0593000000,
"sell": 10.5174000000,
"lowerRange": 0,
"upperRange": 99999.9999000000,
"previousBuyChange": -0.1834000000,
"previousSellChange": 0.1834000000
},
{
"buy": 9.0593000000,
"sell": 10.5174000000,
"lowerRange": 99999.9999000000,
"upperRange": 499999.9999000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "SEK",
"baseNumericCode": "752",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1E+1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 64.0100000000,
"sell": 71.5100000000,
"lowerRange": 0,
"upperRange": 799999.9900000000,
"previousBuyChange": 0E-10,
"previousSellChange": 1.5000000000
},
{
"buy": 64.0100000000,
"sell": 71.5100000000,
"lowerRange": 799999.9900000000,
"upperRange": 3999999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "AUD",
"baseNumericCode": "036",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 40.4700000000,
"sell": 47.0200000000,
"lowerRange": 0,
"upperRange": 99999.9900000000,
"previousBuyChange": -0.8500000000,
"previousSellChange": 1.8500000000
},
{
"buy": 40.4700000000,
"sell": 47.0200000000,
"lowerRange": 99999.9900000000,
"upperRange": 499999.9900000000
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "CNY",
"baseNumericCode": "156",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 10.8800000000,
"sell": 12.6400000000,
"lowerRange": 0,
"upperRange": 699999.9900000000,
"previousBuyChange": -0.2800000000,
"previousSellChange": 0.5000000000
},
{
"buy": 10.8800000000,
"sell": 12.6400000000,
"lowerRange": 699999.9900000000,
"upperRange": 3499999.9900000000
}
]
},
{
"startDate": "2022-01-26T10:05:32.000+03:00",
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "CHF",
"quoteNumericCode": "756",
"lotSize": 1,
"rqUID": "9a56c412688f41e9827d23a3c96f5eb2",
"orderNumber": "055-168-ОК-260122-003",
"orderDate": "2022-01-26T10:00:36.000+03:00",
"ranges": [
{
"buy": 0.8662000000,
"sell": 0.9808000000,
"lowerRange": 0,
"upperRange": 99999.9999000000,
"previousBuyChange": 0E-10,
"previousSellChange": 0E-10
}
]
},
{
"startDate": "2022-01-25T11:34:51.000+03:00",
"baseAlphaCode": "AUD",
"baseNumericCode": "036",
"quoteAlphaCode": "USD",
"quoteNumericCode": "840",
"lotSize": 1,
"rqUID": "e04ebb61be7f48a7a6f3251ba793720b",
"orderNumber": "055-168-ОК-250122-002",
"orderDate": "2022-01-25T11:29:54.000+03:00",
"ranges": [
{
"buy": 0.7417000000,
"sell": 0.8794000000,
"lowerRange": 0,
"upperRange": 99999.9999000000,
"previousBuyChange": 0E-10,
"previousSellChange": 0E-10
}
]
},
{
"startDate": "2022-01-25T18:00:00.000+03:00",
"baseAlphaCode": "HKD",
"baseNumericCode": "344",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1E+1,
"rqUID": "db60a2ae476449eb9187263dc338b156",
"orderNumber": "055-168-ОК-250122-003",
"orderDate": "2022-01-25T17:55:02.000+03:00",
"ranges": [
{
"buy": 84.0200000000,
"sell": 98.9200000000,
"lowerRange": 0,
"upperRange": 799999.9900000000,
"previousBuyChange": -0.3500000000,
"previousSellChange": 3.5400000000
},
{
"buy": 84.0200000000,
"sell": 98.9200000000,
"lowerRange": 799999.9900000000,
"upperRange": 3999999.9900000000
}
]
}
]
}
]
}
]
}
}
Пример запроса с несуществующими валютами
{
"jsonrpc": "2.0",
"method": "getRatesWithPreviousRateChanges",
"id": 111,
"params": [
{
"requestDate": "2022-01-17T10:10:05.888",
"terBankCode": "38",
"rates": [
{
"type": "CURRENCY",
"tierPairs": [
{
"tier": "6",
"pairs": [
{
"baseCode": "AUD",
"quoteCode": "RUB"
},
{
"baseCode": "EUR",
"quoteCode": "RUB"
},
{
"baseCode": "CNY",
"quoteCode": "RUB"
}
]
},
{
"tier": "1",
"pairs": [
{
"baseCode": "EUR",
"quoteCode": "USD"
},
{
"baseCode": "JPY",
"quoteCode": "GBP"
},
{
"baseCode": "GBP",
"quoteCode": "JPY"
}
]
},
{
"tier": "2",
"pairs": [
{
"baseCode": "EUR",
"quoteCode": "USD"
},
{
"baseCode": "USD",
"quoteCode": "RUB1"
},
{
"baseCode": "RUB1",
"quoteCode": "USD"
}
]
},
{
"tier": "tier1",
"pairs": [
{
"baseCode": "EUR",
"quoteCode": "USD"
},
{
"baseCode": "USD",
"quoteCode": "RUB"
}
]
}
]
}
]
}
]
}
Ответ с курсами валют и ошибками
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"success": [
{
"type": "CURRENCY",
"tierRates": [
{
"tier": "1",
"rates": [
{
"startDate": "2022-01-12T18:00:00.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "USD",
"quoteNumericCode": "840",
"lotSize": 1,
"rqUID": "1641fe77cfe2480ea795b5f8a3f17fce",
"orderNumber": "038-162-ОК-120122-003",
"orderDate": "2022-01-12T17:55:02.000+03:00",
"ranges": [
{
"buy": 1.0472000000,
"sell": 1.2182000000,
"lowerRange": 0,
"upperRange": 499999.9999000000,
"previousBuyChange": -0.0321000000,
"previousSellChange": 0.0376000000
}
]
}
]
},
{
"tier": "6",
"rates": [
{
"startDate": "2022-01-17T09:13:54.000+03:00",
"baseAlphaCode": "AUD",
"baseNumericCode": "036",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "d2cbefbac82345dbab6d866027f90e89",
"orderNumber": "038-162-ОК-170122-001",
"orderDate": "2022-01-17T09:09:05.000+03:00",
"ranges": [
{
"buy": 41.3200000000,
"sell": 45.1700000000,
"lowerRange": 0,
"upperRange": 99999.9900000000,
"previousBuyChange": 0E-10,
"previousSellChange": 0E-10
}
]
},
{
"startDate": "2022-01-17T09:13:54.000+03:00",
"baseAlphaCode": "CNY",
"baseNumericCode": "156",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "d2cbefbac82345dbab6d866027f90e89",
"orderNumber": "038-162-ОК-170122-001",
"orderDate": "2022-01-17T09:09:05.000+03:00",
"ranges": [
{
"buy": 11.1700000000,
"sell": 12.1400000000,
"lowerRange": 0,
"upperRange": 699999.9900000000,
"previousBuyChange": 0.1000000000,
"previousSellChange": 0.1900000000
}
]
},
{
"startDate": "2022-01-17T09:13:54.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "d2cbefbac82345dbab6d866027f90e89",
"orderNumber": "038-162-ОК-170122-001",
"orderDate": "2022-01-17T09:09:05.000+03:00",
"ranges": [
{
"buy": 83.2900000000,
"sell": 88.8400000000,
"lowerRange": 0,
"upperRange": 99999.9900000000,
"previousBuyChange": 2.5500000000,
"previousSellChange": 2.8300000000
}
]
}
]
}
]
}
],
"errors": [
{
"type": "CURRENCY",
"tierRates": [
{
"tier": "1",
"rates": [
{
"baseCode": "JPY",
"quoteCode": "GBP",
"error": {
"code": "-31001",
"description": "Отсутствие курсов валют"
}
},
{
"baseCode": "GBP",
"quoteCode": "JPY",
"error": {
"code": "-31001",
"description": "Отсутствие курсов валют"
}
}
]
},
{
"tier": "2",
"rates": [
{
"baseCode": "USD",
"quoteCode": "RUB1",
"error": {
"code": "-31011",
"description": "Единица измерения не найдена."
}
},
{
"baseCode": "RUB1",
"quoteCode": "USD",
"error": {
"code": "-31011",
"description": "Единица измерения не найдена."
}
}
],
"error": {
"code": "-31001",
"description": "Отсутствие курсов валют"
}
},
{
"tier": "tier1",
"error": {
"code": "-31010",
"description": "Ценовой уровень с кодом [tier1] не найден."
}
}
]
}
]
}
}
Пример запроса с металлами
POST data:
{
"jsonrpc": "2.0",
"method": "getRates",
"id": 111,
"params": [
{
"requestDate": "2022-01-05T10:15:37.420+03:00",
"terBankCode": "38",
"rates": [
{
"type": "METAL",
"tierPairs": [
{
"tier": "1",
"pairs": [
{
"baseCode": "A98",
"quoteCode": "RUB"
},
{
"baseCode": "A33",
"quoteCode": "RUB"
},
{
"baseCode": "A76",
"quoteCode": "RUB"
},
{
"baseCode": "A99",
"quoteCode": "RUB"
},
{
"baseCode": "USD",
"quoteCode": "RUB"
}
]
}
]
}
]
}
]
}
Ответ с курсами металлов
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"success": [
{
"type": "METAL",
"tierRates": [
{
"tier": "1",
"rates": [
{
"startDate": "2022-01-05T04:00:00.000+03:00",
"baseAlphaCode": "A33",
"baseNumericCode": "A33",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "c8b96707737d43efaa8319dd5606645f",
"orderNumber": "038-SBm-ОК-050122-001",
"orderDate": "2022-01-05T03:59:01.000+03:00",
"tier": "1",
"ranges": [
{
"buy": 4.37E+3,
"sell": 4855,
"lowerRange": 0,
"upperRange": 9999999999.99
}
]
},
{
"startDate": "2022-01-05T04:00:00.000+03:00",
"baseAlphaCode": "A99",
"baseNumericCode": "A99",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "c8b96707737d43efaa8319dd5606645f",
"orderNumber": "038-SBm-ОК-050122-001",
"orderDate": "2022-01-05T03:59:01.000+03:00",
"tier": "1",
"ranges": [
{
"buy": 40.97,
"sell": 48.49,
"lowerRange": 1E+2,
"upperRange": 9999999999.99
},
{
"buy": 41.13,
"sell": 48.32,
"lowerRange": 0,
"upperRange": 49.99
},
{
"buy": 41.13,
"sell": 48.32,
"lowerRange": 5E+1,
"upperRange": 99.99
}
]
},
{
"startDate": "2022-01-05T04:00:00.000+03:00",
"baseAlphaCode": "A98",
"baseNumericCode": "A98",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "c8b96707737d43efaa8319dd5606645f",
"orderNumber": "038-SBm-ОК-050122-001",
"orderDate": "2022-01-05T03:59:01.000+03:00",
"tier": "1",
"ranges": [
{
"buy": 3444,
"sell": 3849,
"lowerRange": 35,
"upperRange": 99.99
},
{
"buy": 3427,
"sell": 3866,
"lowerRange": 0,
"upperRange": 34.99
},
{
"buy": 3459,
"sell": 3833,
"lowerRange": 1E+2,
"upperRange": 9999999999.99
}
]
},
{
"startDate": "2022-01-05T04:00:00.000+03:00",
"baseAlphaCode": "A76",
"baseNumericCode": "A76",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "c8b96707737d43efaa8319dd5606645f",
"orderNumber": "038-SBm-ОК-050122-001",
"orderDate": "2022-01-05T03:59:01.000+03:00",
"tier": "1",
"ranges": [
{
"buy": 2235,
"sell": 2499,
"lowerRange": 5E+1,
"upperRange": 149.99
},
{
"buy": 2235,
"sell": 2499,
"lowerRange": 1.5E+2,
"upperRange": 9999999999.99
},
{
"buy": 2224,
"sell": 2.51E+3,
"lowerRange": 0,
"upperRange": 49.99
}
]
}
]
}
]
}
],
"errors": [
{
"type": "METAL",
"tierRates": [
{
"tier": "1",
"rates": [
{
"baseCode": "USD",
"quoteCode": "RUB",
"error": {
"code": "-31001",
"description": "Отсутствие курсов валют"
}
}
]
}
]
}
]
}
}
Блок Розничный бизнес
API "ExchangeRatesForIndividuals" (курсы ФЛ Сбербанка)
Интерфейс для использования
ExchangeRatesForIndividuals
Maven
<dependency>
<groupId>sbp.ru.sbt.pricing</groupId>
<artifactId>exchange-rates-for-individuals-cloud-api</artifactId>
<version>уточнять</version>
</dependency>
Котировки металлов ФЛ с конверсией (getMetalRate)
API
ExchangeRatesForIndividuals
Поколение API
4
Назначение
Получение котировок металлов Сбербанка для
физических лиц по заданным атрибутам на дату-время
из входных параметров для валютной пары состоящей
из валюты/рубль.
Всегда возвращает курс за N единиц валюты и масштаб
N.
Внимание!
Что касается индивидуального курса по клиенту, то это
регулируется
заполнением
выходного
атрибута «Признак индивидуального курса». Для того
чтобы получить индивидуальный курс нужно чтобы
данный курс был тиражирован последним для
запрашиваемой даты/времени, во входных данных
задан
соответствующий
ВСП
и
выбран
соответствующий PMR. Если тиража индивидуального
курса нет на запрашиваемую дату/время, то вы
получите обычный курс для выбранного PMR.
Rq
getMetalRateForIndividualsJsonRpcRq.json
Rs
getMetalRateForIndividualsJsonRpcRs.json
Входные параметры
Параметр
Элемент
Тип данных
Обязательнос
Примечания
ть
тб
terbank
Integer
1
Территориальный банк
осб
branch
Integer
0..1
Отделение
сберегательного
банка
(сбербанка) России
всп
office
Integer
0..1
Внутреннее
структурное
подразделение
код_металла
currencyCode
String
1
Код металла, для которой
необходимо
получить
котировку
сумма_операци
amount
Double
0..1
Заполненяется только в
и
случае получения курса по
ОМС
вид_курса
currencyRateTy
String
1
Код вида курса (например,
pe
«PMR-1»)
покупка
buy
Boolean
1
Принимает значения:
• true - Курс покупки;
• false - Курс продажи.
вес_металла
metalWeight
Integer
0..1
Заполнено только в случае
получения
курса
для
слитка.
ед_измерения_м
measureUnit
String
0..1
Заполнено только в случае
ассы_слитка
получения
курса
для
слитка.
Принимает значения:
• грамм;
• унция;
• килограмм.
упаковка_слитка
pack
String
0..1
Заполнено только в случае
получения
курса
для
слитка.
Принимает значения:
• стандартная упаковка;
• высококачественная
упаковка
(В/К
упаковка);
• подарочная упаковка.
состояние_слитк
state
String
0..1
Заполнено только в случае
а
получения курса для слитка
Принимает значения:
• удовлетворительное;
• отличное;
• не
определено
(используется для
курса продажи).
прямая
directOperation
Boolean
1
Определяет валюту, в
операция
которой введена сумма.
(Заполнено только в случае
получения курса для ОМС)
Принимает значения:
• true - сумма введена по
металлу
(«CurrencyCode»).
• false
- сумма введена
котируемой
валюте «российски
й рубль (RUB)»
дата_время_зап
requestDate
Date
1
Дата-время, на которую
роса
необходимо
получить
кросс-курс по заданным
атрибутам
Выходные параметры
Наименован
Элемент
Тип
Кратность
Примечани
ие
е
параметра
Дата/время
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
распоряжени
я
Номер
orderNumbe
String
0..1
Имеется
приказа об
r
пока идет
утверждении
тираж из АС
курса
КВ
Дата начала
orderDate
Date
0..1
Имеется
действия
пока идет
приказа
тираж из АС
КВ
Признак
personalSign
Boolean
1
индивидуаль
ного курса
Используемы
rate
BigDecimal
1
й в
конверсионн
ой операции
курс
Сумма
amount
BigDecimal
1
операции во
второй
валюте
Размерность
decimalPreci
Long
1
Не
второй
sion
заполняется
валюты
, передается
значение
«0».
Список
ranges
List
1..N
курсов
с
порогами
Курс покупи
buy
BigDecimal
1
Курс
sell
BigDecimal
1
продажи
Нижняя
lowerRange
BigDecimal
0..1
передается null если
граница
граница
отсутствует,
диапазона
актуально для слитков
Верхняя
upperRange
BigDecimal
0..1
передается null если
граница
граница
отсутствует,
диапазона
актуально для слитков
Список PMR
PMR-1
Котировки покупки и продажи в
Покупка/ продажа (ДМ в
физическом виде (мерные слитки)
физическом виде)
PMR-2
Котировки покупки и продажи в
Покупка/ продажа
физическом виде (стандартные
слитки)
PMR-3
Котировки покупки и продажи в
Покупка/ продажа
обезличенном виде
PMR-4
Котировки покупки/ продажи по
Покупка/ продажа
ОМС тарифный план "Сбербанк
Премьер"
PMR-5
Котировки покупки/ продажи по
Покупка/ продажа
ОМС тарифный план "Сбербанк
Золотой"/ "Зарплатный Золотой"
PMR-6
Котировки покупки/ продажи по
Покупка/ продажа
ОМС тарифный план "Сбербанк1"
PMR-7
Котировки покупки/ продажи по
Покупка/ продажа
ОМС тарифный план "Sberbank
Private Banking"
PMR - 3
Запрос
POST https://currency-rates-https-ift-rb.apps.dev-
gen.ca.sbrf.ru/ru.sbt.currency.cloud.api.individual.ExchangeRatesForIndividuals
POST data:
{
"jsonrpc": "2.0",
"id": 111,
"method": "getMetalRate",
"params": [
{
"terbank": 38,
"branch": "9038",
"office": "01014",
"currencyCode": "A98",
"amount": 100.00,
"currencyRateType": "PMR-3",
"directOperation": true,
"requestDate": "2021-04-08T03:44:51.336",
"buy": true
}
]
}
[no cookies]
Ответ
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"ranges": [
{
"buy": 3731,
"sell": 4004,
"lowerRange": 0,
"upperRange": 499.99
},
{
"buy": 3749,
"sell": 3989,
"lowerRange": 500.0,
"upperRange": 9999999999.99
}
],
"personalSign": false,
"rate": 3731,
"startDate": "2021-04-06T20:27:21.000+03:00",
"baseAlphaCode": "A98",
"baseNumericCode": "A98",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "d28124044c64480ca44366f1158d2f43",
"orderNumber": "038-SBm-ОК-060421-004",
"orderDate": "2021-04-06T20:07:25.000+03:00",
"amount": 373100.0,
"decimalPrecision": 0
}
}
PMR - 5
Запрос
POST https://currency-rates-https-ift-rb.apps.dev-
gen.ca.sbrf.ru/ru.sbt.currency.cloud.api.individual.ExchangeRatesForIndividuals
POST data:
{
"jsonrpc": "2.0",
"id": 111,
"method": "getMetalRate",
"params": [
{
"terbank": 38,
"branch": "9038",
"office": "01014",
"currencyCode": "A98",
"amount": 100.00,
"currencyRateType": "PMR-5",
"directOperation": true,
"requestDate": "2021-04-08T03:48:00.567",
"buy": true
}
]
}
[no cookies]
Ответ
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"ranges": [
{
"buy": 3784,
"sell": 3990.0,
"lowerRange": 0,
"upperRange": 499.99
},
{
"buy": 3794,
"sell": 3981,
"lowerRange": 500.0,
"upperRange": 9999999999.99
}
],
"personalSign": false,
"rate": 3784,
"startDate": "2021-04-06T20:27:21.000+03:00",
"baseAlphaCode": "A98",
"baseNumericCode": "A98",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "638fc110815740debcbdc5609bc74630",
"orderNumber": "038-TPm-ОК-060421-004",
"orderDate": "2021-04-06T20:07:24.000+03:00",
"amount": 378400.0,
"decimalPrecision": 0
}
}
Кросс-курс ФЛ с конверсией валюта-валюта (getCrossRate)
API
ExchangeRatesForIndividuals
Назначение
Получение кросс-курса валют Сбербанка для
физических лиц по заданным атрибутам на дату-время
из входных параметров для валютной пары состоящей
из валюты/валюты.
Всегда возвращает курс за N единиц валюты и масштаб
N.
Внимание!
Что касается индивидуального курса по клиенту, то это
регулируется
заполнением
выходного
атрибута «Признак индивидуального курса». Для того
чтобы получить индивидуальный курс нужно чтобы
данный курс был тиражирован последним для
запрашиваемой даты/времени, во входных данных
задан
соответствующий
ВСП
и
выбран
соответствующий ERNP. Если тиража индивидуального
курса нет на запрашиваемую дату/время, то вы
получите обычный курс для выбранного ERNP.
Rq
getCrossRateForIndividualsRq.json
Rs
getCrossRateForIndividualsRs.json
Входные параметры
Наименован
Элемент
Тип данных
Кратность
Комментарий
ие
параметра
Версия
jsonprc
String
1
Структура
в
JSONRPC
соответствии
с
версией
спецификации
JSONRPC 2.0.
Передается
значение константы
«2.0».
Наименован
method
String
1
Наименование
ие метода
вызываемого
метода.
Идентификат
id
String
1
Идентификатор
ор запроса
запроса в рамках
системы-источника.
Перечень
params
Parameter
1
входных
параметров
дата/время
requestDate
Date
1
Календарные дата
запроса
и
время
на
которые нужно
получить курс, см.
пример ниже.
территориа
terbank
Integer
1
Территориальный
льный банк
банк
осб
branch
Integer
0..1
Отделение
сберегательного
банка (сбербанка)
России
всп
office
Integer
0..1
Внутреннее
структурное
подразделение
код базовой
baseCurrenc
String
1
Код
базовой
валюты
yCode
валюты
(буквенный/числ
овой)
код
quoteCurren
String
1
Код котируемой
котируемой
cyCode
валюты
валюты
(буквенный/числ
овой)
вид курса
currencyRate
String
1
Код вида курса
Type
(например,
«ERNP-1»).
Возможные
значения:
• ERNP-1
• ERNP-2
• ERNP-3
• и т.д.
покупка
buy
Boolean
1
Принимает
значения:
• true
-
Курс
покупки
Банком
(курс
продажи
Клиентом)
;
• false
-
Курс
продажи
Банком
(курс
покупки
Клиентом)
сумма
amount
Double
1
Сумма
для
операции
проведения
конверсионной
операции
прямая
directOperati
Boolean
1
Определяет
операция
on
валюту, в которой
введена сумма.
Принимает
значения:
• true
- сумма
введена в
базовой
валюте.
• false
- сумма
введена в
котируемо
й валюте.
метод
roundingМet
Метод
0..1
Метод
округления
hod
округления
округления,
(roundingMe
необходим
для
thod)
округления
выходного
параметра
«Сумма операции
во второй валюте
(sumSecond)».
Если не передан,
то принимает по
умолчанию
значение
«1
(Математическое)
»
Возможные
значения
по
числовым кодам:
0
-
без
округлени
я,
1
-
математич
еское,
• 2 - отсечение,
• 3 - в меньшую
сторону,
• 4 - в большую
сторону.
• 5 - банковское
округлени
е
• 6 -
математич
еское
округлени
е до 2х
знаков
("как
в
ЦОДе")
точность
roundingPre
Long
0..1
Точность
округления
cision
округления
полученного
кросс-курса.
Количество
знаков
для
округления
кросс-курса
валюты.
Максимальное
значение
10
знаков.
Если не передан,
то по умолчанию
принимает
значение
-
4 знака
канал
channel
String
0..1
Канал
выполнения
операции,
для
которой делается
расчет
суммы.Возможны
е значения:
• "TRADITIONAL"
-
Традицио
нный
канал
обслужив
ания
ВСП),
будут
использов
аны
указанные
значения
ОСБ/ВСП
для поиска
курса
с
учетом
области
его
действия.
• "DISTANT"
-
Дистанци
онный
канал
обслужив
ания
(УКО),
указанные
значения
ОСБ/ВСП
не будут
применять
ся
для
поиска
курса
По
умолчанию
логика
определения
канала:
• если указан вид
курсаcurre
ncyRateTy
pe
= "ERNP-
1"
или
"ERNP-3",
то
используе
тся канал
"Traditiona
l"
• для
всех
остальных
случаев
-
канал
"Distant"
добавлено дораб
откой rpu-6565
алгоритм
algorithm
String
0..1
Выбор алгоритм
расчета
расчета
конверсионной
суммы.
Возможные
значения:
• "ONE_UNIT_LOT
_SIZE" - на
основе
рассчитан
ного кросс
курса
в
масштабе
1 к
1, с
учетом его
точности,
используе
тся
по
умолчани
ю
• "CB_LOT_SIZE" -
на основе
кросс
курса
в
масштабе
(ЦБ), как
считает
ЦОД
добавлено дораб
откой rpu-6565
показать
returnCrossR
Boolean
0..1
Признак
кросс курс в
ateLotSizeCB
добавления
в
масштабе
ответе атрибутов
кросс курса в
масштабе
ЦБ
вместе
со
значением
его
масштаба. Будет
рассчитан
и
выведен в ответ
только
при
использовании
алгоритма
"CB_LOT_SIZE". По
умолчанию
- не
показывать, false
добавлено дораб
откой rpu-6565
Выходные параметры
Наименов
Элемент
Тип
Кратност
Коммент
ание
ь
арий
параметра
Версия
jsonprc
String
1
Структура
JSONRPC
в
соответст
вии
с
версией
специфик
ации
JSONRPC
2.0.
Передаетс
я
значение
константы
«2.0».
Идентифик
id
String
1
Идентифи
атор
катор
запроса
запроса в
рамках
системы-
источника
из
запроса.
Перечень
result
Parameter
0..1
Заполняет
выходных
ся только
параметро
в случае
в
успешной
обработк
и запроса
Данные
quoteCurr
currencyR
1
по
encyRate
ate
котируем
ой валюте
Данные
baseCurre
currencyR
1
по
ncyRate
ate
базовой
валюте
Данные
crossCurre
конверси
ncyRate
онной
операции
Сконверт
crossAmo
BigDecima
1
Расчет
суммы
ированна
unt
l
выполняется
по
я сумма
выбранному алгоритму
во второй
во
валюте
вход.атрибуте algorithm
изменено доработкой
rpu-6565
Кросс
-
crossRate
BigDecima
1
Кросс курс для валют
курс
l
приведенный
к
валютной
масштабу
1,
расчет
пары
зависит от выбранного
алгоритма
во вход.атрибуте algori
thm
изменено доработкой
rpu-6565
Масштаб
lotSize
BigDecima
1
Всегда будет =1
кросс
l
курса
Размерно
decimalPr
Long
1
Количество десятичных
сть
для
ecision
цифр после точки.
суммы во
второй
валюте
Финансов
finInstrum
String
1
Осуществить
ый
ent
конкатенацию: baseCurr
инструме
encyRate.baseAlphaCod
нт
e
+
"/"
+ quoteCurrencyRate.ba
seAlphaCode
Сумма в
amountRU
BigDecima
1
рублевом
B
l
эквивален
те
Кросс
crossRateL
0..1
Кросс курс для валют в
курс
в
otSizeCB
масштабе ЦБ.
масштабе
Атрибут включить в
ЦБ
ответ только если в
запросе
задан
атрибут returnCrossRat
eLotSizeCB
= true.
Заполняется значением
только при условии:
вход: algorithm
="CB_LOT_SIZE",
для
других
алгоритмов
будет заполнен "null"
добавлено доработкой
rpu-6565
Масштаб
crossLotSi
0..1
Отношение масштабов
котируем
zeCB
ЦБ котируемой валюты
ой
и
к базовой.
базовой
Атрибут включить в
валют
ответ только если в
запросе
задан
атрибут returnCrossRat
eLotSizeCB
=true.
Заполняется значением
только при условии:
вход: algorithm
="CB_LOT_SIZE",
для
других
алгоритмов
будет заполнен "null"
добавлено доработкой
rpu-6565
Наличие
error
Error
0..1
Блок
ошибок
заполняет
ся только
в случае
возникно
вения
ошибки
Код
code
Integer
1
ошибки
Сообщен
message
String
1
ие
об
ошибке
Детальная
data
object
0..1
Не заполняется на
информац
стороне Курсов Валют,
ия
об
но может заполняться
ошибке
на стороне ММТ
currencyRate
Перечень
result
Paramete
0..1
Заполняе
выходных
r
тся
параметро
только в
в
случае
успешно
й
обработк
и запроса
Список
ranges
List
1..N
курсов Сб
ербанка с
порогами
Курс
buy
BigDecima
1
покупи
l
относител
ьно рубля
Курс
sell
BigDecima
1
продажи
l
относител
ьно рубля
Нижняя
lowerRang
BigDecima
1
граница
e
l
диапазона
Верхняя
upperRan
BigDecima
0..1
null
-
отсутствует
граница
ge
l
верхняя граница
диапазона
Признак
personalSi
Boolean
1
Возможн
индивиду
gn
ые
ального
значения:
курса
• «Истина
(tr
ue)
» -
пр
ед
ос
та
вл
ен
ны
й
ку
рс
яв
ля
етс
я
ин
ди
ви
ду
ал
ьн
ым
дл
я
ко
нк
ре
тн
ог
о
кл
ие
нт
а
Ба
нк
а;
• «Ложь
(fal
se)
» -
ку
рс
мо
же
т
пр
им
ен
ять
ся
дл
я
вс
ех
кл
ие
нт
ов
Ба
нк
а;
Использу
rate
BigDecima
1
емый в
l
конверси
онной
операции
курc
Дата/вре
startDate
Date
1
мя начала
действия
курса
Буквенны
baseAlpha
String
1
й
код
Code
базовой
валюты
Числовой
baseNume
String
1
код
ricCode
базовой
валюты
Буквенны
quoteAlph
String
1
всегда
й
код
aCode
"RUB"
валюты
котировк
и
Числовой
quoteNum
String
1
всегда
код
ericCode
"643"
валюты
котировк
и
Масштаб
lotSize
BigDecima
1
валюты
l
относител
ьно рубля
ИД
rqUID
String
1
распоряж
ение
Номер
orderNum
String
0..1
Имеется
приказа
ber
пока идет
об
тираж из
утвержде
АС КВ
нии курса
Дата
и
orderDate
Date
1
время
формиров
ания
приказа
Кейсы применения
Метод основывается на принципе "обратного калькулятора" - РБ БТ СК
v.0.1_08.02.2017_ок.docxEUR/USD "buy": true "directOperation": true
Базовая валюта EUR, котируемая USD, банк покупает у клиента 100 EUR (по курсу 82.67) и
продает X USD (по курсу 60.0)
Ответ
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"quoteCurrencyRate": {
"ranges": [
{
Пример запроса
"buy": 59,
"sell": 60.0,
gen.ca.sbrf.ru/ru.sbt.currency.cloud.api.individual.ExchangeRatesForIndividual
"lowerRange": 0,
s
"upperRange": 9999999999.99
}
POST data:
],
{
"personalSign": false,
"jsonrpc": "2.0",
"rate": 60.0,
"id": 111,
"startDate": "2018-10-05T15:27:47.000+03:00",
"method": "getCrossRate",
"baseAlphaCode": "USD",
"params": [
"baseNumericCode": "840",
{
"quoteAlphaCode": "RUB",
"requestDate": "2021-03-22T12:48:09.847",
"quoteNumericCode": "643",
"terbank": 38,
"lotSize": 1,
"branch": "",
"rqUID": "95219309fef043e78edc86f4c1ff29d9",
"office": "",
"orderNumber": "038-001-ОК-260716-007",
"baseCurrencyCode": "978",
"orderDate": "2018-10-05T15:27:47.000+03:00"
"quoteCurrencyCode": "840",
},
"currencyRateType": "ERNP-1",
"baseCurrencyRate": {
"buy": true,
"ranges": [
"amount": 100.0,
{
"directOperation": true,
"buy": 82.67,
"roundingMethod": "MATH",
"sell": 91.25,
"roundingPrecision": 6
"lowerRange": 0,
}
"upperRange": 499.99
]
},
}
{
"buy": 83.17,
[no cookies]
"sell": 92.26,
"lowerRange": 500.0,
"upperRange": 2999.99
},
{
"buy": 84.07,
"sell": 93.27,
"lowerRange": 3000.0,
"upperRange": 9999999999.99
}
],
"personalSign": false,
"rate": 82.67,
"startDate": "2018-10-05T15:27:47.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "95219309fef043e78edc86f4c1ff29d9",
"orderNumber": "038-001-ОК-260716-007",
"orderDate": "2018-10-05T15:27:47.000+03:00"
},
"crossCurrencyRate": {
"crossAmount": 137.78,
"crossRate": 1.377833,
"lotSize": 1,
"decimalPrecision": 2,
"finInstrument": "Base/quote",
"amountRUB": 8267.00
}
}
}
EUR/USD "buy": false "directOperation": true
Базовая валюта EUR, котируемая USD, банк продает клиенту 100 EUR (по курсу 91.25) и хочет за это получить X USD (по курсу 59.0)
Пример запроса
Ответ
{
gen.ca.sbrf.ru/ru.sbt.currency.cloud.api.individual.ExchangeRatesForIndividuals
"jsonrpc": "2.0",
"id": 111,
POST data:
"result": {
{
"quoteCurrencyRate": {
"jsonrpc": "2.0",
"ranges": [
"id": 111,
{
"method": "getCrossRate",
"buy": 59,
"params": [
"sell": 60.0,
{
"lowerRange": 0,
"requestDate": "2021-03-22T12:48:09.847",
"upperRange": 9999999999.99
"terbank": 38,
}
"branch": "",
"office": "",
],
"baseCurrencyCode": "978",
"personalSign": false,
"quoteCurrencyCode": "840",
"rate": 59,
"currencyRateType": "ERNP-1",
"startDate": "2018-10-05T15:27:47.000+03:00",
"buy": false,
"baseAlphaCode": "USD",
"amount": 100.0,
"baseNumericCode": "840",
"directOperation": true,
"quoteAlphaCode": "RUB",
"roundingMethod": "MATH",
"quoteNumericCode": "643",
"roundingPrecision": 6
"lotSize": 1,
}
"rqUID": "95219309fef043e78edc86f4c1ff29d9",
]
"orderNumber": "038-001-ОК-260716-007",
}
"orderDate": "2018-10-05T15:27:47.000+03:00"
},
[no cookies]
"baseCurrencyRate": {
"ranges": [
{
"buy": 82.67,
"sell": 91.25,
"lowerRange": 0,
"upperRange": 499.99
},
{
"buy": 83.17,
"sell": 92.26,
"lowerRange": 500.0,
"upperRange": 2999.99
},
{
"buy": 84.07,
"sell": 93.27,
"lowerRange": 3000.0,
"upperRange": 9999999999.99
}
],
"personalSign": false,
"rate": 91.25,
"startDate": "2018-10-05T15:27:47.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "95219309fef043e78edc86f4c1ff29d9",
"orderNumber": "038-001-ОК-260716-007",
"orderDate": "2018-10-05T15:27:47.000+03:00"
},
"crossCurrencyRate": {
"crossAmount": 154.66,
"crossRate": 1.54661,
"lotSize": 1,
"decimalPrecision": 2,
"finInstrument": "Base/quote",
"amountRUB": 9125.00
}
}
}
EUR/USD "buy": true "directOperation": false
Базовая валюта EUR, котируемая USD, сколько банк должен купить у клиента EUR (по курсу 82.67), чтобы продать 100 USD (по курсу 60.0)
Ответ
{
Пример запроса
"jsonrpc": "2.0",
"id": 111,
gen.ca.sbrf.ru/ru.sbt.currency.cloud.api.individual.Excha
"result": {
ngeRatesForIndividuals
"quoteCurrencyRate": {
"ranges": [
POST data:
{
{
"buy": 59,
"jsonrpc": "2.0",
"sell": 60.0,
"id": 111,
"lowerRange": 0,
"method": "getCrossRate",
"upperRange": 9999999999.99
"params": [
}
{
],
"requestDate": "2021-03-22T12:48:09.847",
"personalSign": false,
"terbank": 38,
"rate": 60.0,
"branch": "",
"startDate": "2018-10-05T15:27:47.000+03:00",
"office": "",
"baseAlphaCode": "USD",
"baseCurrencyCode": "978",
"baseNumericCode": "840",
"quoteCurrencyCode": "840",
"quoteAlphaCode": "RUB",
"currencyRateType": "ERNP-1",
"quoteNumericCode": "643",
"buy": false,
"lotSize": 1,
"amount": 100.0,
"rqUID": "95219309fef043e78edc86f4c1ff29d9",
"directOperation": false,
"orderNumber": "038-001-ОК-260716-007",
"roundingMethod": "MATH",
"orderDate": "2018-10-05T15:27:47.000+03:00"
"roundingPrecision": 6
},
}
"baseCurrencyRate": {
]
"ranges": [
}
{
"buy": 82.67,
[no cookies]
"sell": 91.25,
"lowerRange": 0,
"upperRange": 499.99
},
{
"buy": 83.17,
"sell": 92.26,
"lowerRange": 500.0,
"upperRange": 2999.99
},
{
"buy": 84.07,
"sell": 93.27,
"lowerRange": 3000.0,
"upperRange": 9999999999.99
}
],
"personalSign": false,
"rate": 82.67,
"startDate": "2018-10-05T15:27:47.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "95219309fef043e78edc86f4c1ff29d9",
"orderNumber": "038-001-ОК-260716-007",
"orderDate": "2018-10-05T15:27:47.000+03:00"
},
"crossCurrencyRate": {
"crossAmount": 72.58,
"crossRate": 1.377833,
"lotSize": 1,
"decimalPrecision": 2,
"finInstrument": "Base/quote",
"amountRUB": 6000.00
}
}
}
EUR/USD "buy": false "directOperation": false
Базовая валюта EUR, котируемая USD, сколько банк должен продать клиенту EUR (по курсу 91.25), чтобы купить 100 USD (по курсу 59.0)
Пример запроса
Ответ
{
gen.ca.sbrf.ru/ru.sbt.currency.cloud.api.individual.ExchangeRatesForIndividual
"jsonrpc": "2.0",
s
"id": 111,
"result": {
POST data:
"quoteCurrencyRate": {
{
"ranges": [
"jsonrpc": "2.0",
{
"id": 111,
"buy": 59,
"method": "getCrossRate",
"sell": 60.0,
"params": [
"lowerRange": 0,
{
"upperRange": 9999999999.99
"requestDate": "2021-03-22T12:48:09.847",
}
"terbank": 38,
],
"branch": "",
"personalSign": false,
"office": "",
"rate": 59,
"baseCurrencyCode": "978",
"startDate": "2018-10-05T15:27:47.000+03:00",
"quoteCurrencyCode": "840",
"baseAlphaCode": "USD",
"currencyRateType": "ERNP-1",
"baseNumericCode": "840",
"buy": false,
"quoteAlphaCode": "RUB",
"amount": 100.0,
"quoteNumericCode": "643",
"directOperation": false,
"lotSize": 1,
"roundingMethod": "MATH",
"rqUID": "95219309fef043e78edc86f4c1ff29d9",
"roundingPrecision": 6
"orderNumber": "038-001-ОК-260716-007",
}
"orderDate": "2018-10-05T15:27:47.000+03:00"
]
},
}
"baseCurrencyRate": {
"ranges": [
[no cookies]
{
"buy": 82.67,
"sell": 91.25,
"lowerRange": 0,
"upperRange": 499.99
},
{
"buy": 83.17,
"sell": 92.26,
"lowerRange": 500.0,
"upperRange": 2999.99
},
{
"buy": 84.07,
"sell": 93.27,
"lowerRange": 3000.0,
"upperRange": 9999999999.99
}
],
"personalSign": false,
"rate": 91.25,
"startDate": "2018-10-05T15:27:47.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "95219309fef043e78edc86f4c1ff29d9",
"orderNumber": "038-001-ОК-260716-007",
"orderDate": "2018-10-05T15:27:47.000+03:00"
},
"crossCurrencyRate": {
"crossAmount": 64.66,
"crossRate": 1.54661,
"lotSize": 1,
"decimalPrecision": 2,
"finInstrument": "Base/quote",
"amountRUB": 5900.00
}
}
}
Пример запроса
{
"jsonrpc": "2.0",
"id": 111,
"method": "getCrossRate",
"params": [
{
"requestDate": "2022-03-30T12:48:09.847",
"terbank": 44,
"branch": "8591",
"office": "01",
"baseCurrencyCode": "978",
"quoteCurrencyCode": "826",
"currencyRateType": "ERNP-3",
"buy": true,
"amount": 100.0,
"directOperation": true,
"roundingMethod": "MATH",
"roundingPrecision": 6,
"algorithm":"CB_LOT_SIZE",
"returnCrossRateLotSizeCB": true
}
]
}
Пример Ответа
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"quoteCurrencyRate": {
"ranges": [
{
"buy": 98.59,
"sell": 106.91,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"personalSign": false,
"startDate": "2022-03-30T10:42:51.000+03:00",
"baseAlphaCode": "GBP",
"baseNumericCode": "826",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "7f8dcdadcb134088b106c6e5bb1de66d",
"orderNumber": "044-001-ОК-300322-002",
"orderDate": "2022-03-30T10:40:04.000+03:00",
"rate": 106.91
},
"baseCurrencyRate": {
"ranges": [
{
"buy": 96.14,
"sell": 104.86,
"lowerRange": 0,
"upperRange": 999.99
},
{
"buy": 96.67,
"sell": 104.33,
"lowerRange": 1E+3,
"upperRange": 9999999999.99
}
],
"personalSign": false,
"startDate": "2022-03-30T10:42:51.000+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "7f8dcdadcb134088b106c6e5bb1de66d",
"orderNumber": "044-001-ОК-300322-002",
"orderDate": "2022-03-30T10:40:04.000+03:00",
"rate": 96.14
},
"crossCurrencyRate": {
"crossAmount": 89.93,
"crossRate": 0.899261,
"lotSize": 1,
"decimalPrecision": 2,
"finInstrument": "EUR/GBP",
"amountRub": 9614,
"crossRateLotSizeCB": 0.899261,
"crossLotSizeCB": 1
}
}
}
Ответ c ошибкой
{
"jsonrpc": "2.0",
"id": 111,
"error": {
"code": 1099,
"message": "Invocation exception",
"data": {
"cause": {
"cause": {
"cause": null,
"stackTrace": [
{
"methodName": "getMeasureByMeasureSourceCode",
"fileName": "MeasureDaoNsiImpl.java",
"lineNumber": 104,
"className": "ru.sbt.currency.integration.service.nsi.facade.MeasureDaoNsiImpl",
"nativeMethod": false
},
{
"methodName": "getCurrencyMeasure",
"fileName": "CacheServiceImpl.java",
"lineNumber": 138,
"className": "ru.sbt.currency.rates.service.impl.CacheServiceImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "<generated>",
"lineNumber": -1,
"className":
"ru.sbt.currency.rates.service.impl.CacheServiceImpl$$FastClassBySpringCGLIB$$9b549464",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "MethodProxy.java",
"lineNumber": 218,
"className": "org.springframework.cglib.proxy.MethodProxy",
"nativeMethod": false
},
{
"methodName": "invokeJoinpoint",
"fileName": "CglibAopProxy.java",
"lineNumber": 771,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "ReflectiveMethodInvocation.java",
"lineNumber": 163,
"className": "org.springframework.aop.framework.ReflectiveMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "CglibAopProxy.java",
"lineNumber": 749,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "invokeWithinTransaction",
"fileName": "TransactionAspectSupport.java",
"lineNumber": 367,
"className": "org.springframework.transaction.interceptor.TransactionAspectSupport",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "TransactionInterceptor.java",
"lineNumber": 118,
"className": "org.springframework.transaction.interceptor.TransactionInterceptor",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "ReflectiveMethodInvocation.java",
"lineNumber": 186,
"className": "org.springframework.aop.framework.ReflectiveMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "CglibAopProxy.java",
"lineNumber": 749,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "intercept",
"fileName": "CglibAopProxy.java",
"lineNumber": 691,
"className":
"org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor",
"nativeMethod": false
},
{
"methodName": "getCurrencyMeasure",
"fileName": "<generated>",
"lineNumber": -1,
"className":
"ru.sbt.currency.rates.service.impl.CacheServiceImpl$$EnhancerBySpringCGLIB$$c7a6ce70",
"nativeMethod": false
},
{
"methodName": "getExRateRequestId",
"fileName": "ExRateRequestHelperImpl.java",
"lineNumber": 64,
"className": "ru.sbt.currency.rates.service.impl.ExRateRequestHelperImpl",
"nativeMethod": false
},
{
"methodName": "getExRateRequestId",
"fileName": "ExRateRequestHelperImpl.java",
"lineNumber": 51,
"className": "ru.sbt.currency.rates.service.impl.ExRateRequestHelperImpl",
"nativeMethod": false
},
{
"methodName": "getCrossRate",
"fileName": "IndividualRateServiceImpl.java",
"lineNumber": 131,
"className": "ru.sbt.currency.rates.service.individual.impl.IndividualRateServiceImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "<generated>",
"lineNumber": -1,
"className":
"ru.sbt.currency.rates.service.individual.impl.IndividualRateServiceImpl$$FastClassBySpringCGLIB$$adb29646
",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "MethodProxy.java",
"lineNumber": 218,
"className": "org.springframework.cglib.proxy.MethodProxy",
"nativeMethod": false
},
{
"methodName": "invokeJoinpoint",
"fileName": "CglibAopProxy.java",
"lineNumber": 771,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "ReflectiveMethodInvocation.java",
"lineNumber": 163,
"className": "org.springframework.aop.framework.ReflectiveMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "CglibAopProxy.java",
"lineNumber": 749,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "invokeWithinTransaction",
"fileName": "TransactionAspectSupport.java",
"lineNumber": 367,
"className": "org.springframework.transaction.interceptor.TransactionAspectSupport",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "TransactionInterceptor.java",
"lineNumber": 118,
"className": "org.springframework.transaction.interceptor.TransactionInterceptor",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "ReflectiveMethodInvocation.java",
"lineNumber": 186,
"className": "org.springframework.aop.framework.ReflectiveMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "CglibAopProxy.java",
"lineNumber": 749,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "intercept",
"fileName": "CglibAopProxy.java",
"lineNumber": 691,
"className":
"org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor",
"nativeMethod": false
},
{
"methodName": "getCrossRate",
"fileName": "<generated>",
"lineNumber": -1,
"className":
"ru.sbt.currency.rates.service.individual.impl.IndividualRateServiceImpl$$EnhancerBySpringCGLIB$$54581156"
,
"nativeMethod": false
},
{
"methodName": "lambda$getCrossRate$1",
"fileName": "IndividualRateAuditableServiceImpl.java",
"lineNumber": 56,
"className":
"ru.sbt.currency.rates.service.individual.impl.IndividualRateAuditableServiceImpl",
"nativeMethod": false
},
{
"methodName": "executeWithExceptionHandling",
"fileName": "AuditableService.java",
"lineNumber": 26,
"className": "ru.sbt.currency.integration.service.audit.AuditableService",
"nativeMethod": false
},
{
"methodName": "getCrossRate",
"fileName": "IndividualRateAuditableServiceImpl.java",
"lineNumber": 55,
"className":
"ru.sbt.currency.rates.service.individual.impl.IndividualRateAuditableServiceImpl",
"nativeMethod": false
},
{
"methodName": "getCrossRate",
"fileName": "ExchangeRatesForIndividualsImpl.java",
"lineNumber": 45,
"className": "ru.sbt.currency.cloud.api.individual.impl.ExchangeRatesForIndividualsImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "<generated>",
"lineNumber": -1,
"className":
"ru.sbt.currency.cloud.api.individual.impl.ExchangeRatesForIndividualsImpl$$FastClassBySpringCGLIB$$18d5
53b2",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "MethodProxy.java",
"lineNumber": 218,
"className": "org.springframework.cglib.proxy.MethodProxy",
"nativeMethod": false
},
{
"methodName": "invokeJoinpoint",
"fileName": "CglibAopProxy.java",
"lineNumber": 771,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "ReflectiveMethodInvocation.java",
"lineNumber": 163,
"className": "org.springframework.aop.framework.ReflectiveMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "CglibAopProxy.java",
"lineNumber": 749,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "MethodInvocationProceedingJoinPoint.java",
"lineNumber": 88,
"className": "org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint",
"nativeMethod": false
},
{
"methodName": "processApiCall",
"fileName": "MetricsCollectionAspect.java",
"lineNumber": 54,
"className": "ru.sbt.currency.rates.common.metrics.MetricsCollectionAspect",
"nativeMethod": false
},
{
"methodName": "invoke0",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": -2,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": true
},
{
"methodName": "invoke",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": 62,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "DelegatingMethodAccessorImpl.java",
"lineNumber": 43,
"className": "sun.reflect.DelegatingMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "Method.java",
"lineNumber": 498,
"className": "java.lang.reflect.Method",
"nativeMethod": false
},
{
"methodName": "invokeAdviceMethodWithGivenArgs",
"fileName": "AbstractAspectJAdvice.java",
"lineNumber": 644,
"className": "org.springframework.aop.aspectj.AbstractAspectJAdvice",
"nativeMethod": false
},
{
"methodName": "invokeAdviceMethod",
"fileName": "AbstractAspectJAdvice.java",
"lineNumber": 633,
"className": "org.springframework.aop.aspectj.AbstractAspectJAdvice",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "AspectJAroundAdvice.java",
"lineNumber": 70,
"className": "org.springframework.aop.aspectj.AspectJAroundAdvice",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "ReflectiveMethodInvocation.java",
"lineNumber": 186,
"className": "org.springframework.aop.framework.ReflectiveMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "CglibAopProxy.java",
"lineNumber": 749,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "ExposeInvocationInterceptor.java",
"lineNumber": 95,
"className": "org.springframework.aop.interceptor.ExposeInvocationInterceptor",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "ReflectiveMethodInvocation.java",
"lineNumber": 186,
"className": "org.springframework.aop.framework.ReflectiveMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "CglibAopProxy.java",
"lineNumber": 749,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "intercept",
"fileName": "CglibAopProxy.java",
"lineNumber": 691,
"className":
"org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor",
"nativeMethod": false
},
{
"methodName": "getCrossRate",
"fileName": "<generated>",
"lineNumber": -1,
"className":
"ru.sbt.currency.cloud.api.individual.impl.ExchangeRatesForIndividualsImpl$$EnhancerBySpringCGLIB$$313c0
285",
"nativeMethod": false
},
{
"methodName": "invoke0",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": -2,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": true
},
{
"methodName": "invoke",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": 62,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "DelegatingMethodAccessorImpl.java",
"lineNumber": 43,
"className": "sun.reflect.DelegatingMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "Method.java",
"lineNumber": 498,
"className": "java.lang.reflect.Method",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "ApiUtils_CallbackApi.java",
"lineNumber": 120,
"className":
"com.sbt.core.transport.lite.utils.api.callback.ApiUtils_CallbackApi$MethodUtils_CallbackApi",
"nativeMethod": false
},
{
"methodName": "invokeRequest",
"fileName": "TransportJsonRpcConverter.java",
"lineNumber": 303,
"className": "com.sbt.core.transport.jsonrpc.lib.converter.TransportJsonRpcConverter",
"nativeMethod": false
},
{
"methodName": "handleRequest",
"fileName": "JsonRpcRequestHandler.java",
"lineNumber": 28,
"className": "com.sbt.core.transport.lite.server.request.handler.JsonRpcRequestHandler",
"nativeMethod": false
},
{
"methodName": "processRequest",
"fileName": "HttpRequestProcessor.java",
"lineNumber": 69,
"className": "com.sbt.core.transport.lite.server.processor.HttpRequestProcessor",
"nativeMethod": false
},
{
"methodName": "handleJsonRpcRequest",
"fileName": "MmtSpringController.java",
"lineNumber": 127,
"className": "com.sbt.core.transport.lite.server.spring.web.MmtSpringController",
"nativeMethod": false
},
{
"methodName": "invoke0",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": -2,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": true
},
{
"methodName": "invoke",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": 62,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "DelegatingMethodAccessorImpl.java",
"lineNumber": 43,
"className": "sun.reflect.DelegatingMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "Method.java",
"lineNumber": 498,
"className": "java.lang.reflect.Method",
"nativeMethod": false
},
{
"methodName": "doInvoke",
"fileName": "InvocableHandlerMethod.java",
"lineNumber": 190,
"className": "org.springframework.web.method.support.InvocableHandlerMethod",
"nativeMethod": false
},
{
"methodName": "invokeForRequest",
"fileName": "InvocableHandlerMethod.java",
"lineNumber": 138,
"className": "org.springframework.web.method.support.InvocableHandlerMethod",
"nativeMethod": false
},
{
"methodName": "invokeAndHandle",
"fileName": "ServletInvocableHandlerMethod.java",
"lineNumber": 105,
"className":
"org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod",
"nativeMethod": false
},
{
"methodName": "invokeHandlerMethod",
"fileName": "RequestMappingHandlerAdapter.java",
"lineNumber": 878,
"className":
"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter",
"nativeMethod": false
},
{
"methodName": "handleInternal",
"fileName": "RequestMappingHandlerAdapter.java",
"lineNumber": 792,
"className":
"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter",
"nativeMethod": false
},
{
"methodName": "handle",
"fileName": "AbstractHandlerMethodAdapter.java",
"lineNumber": 87,
"className": "org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter",
"nativeMethod": false
},
{
"methodName": "doDispatch",
"fileName": "DispatcherServlet.java",
"lineNumber": 1040,
"className": "org.springframework.web.servlet.DispatcherServlet",
"nativeMethod": false
},
{
"methodName": "doService",
"fileName": "DispatcherServlet.java",
"lineNumber": 943,
"className": "org.springframework.web.servlet.DispatcherServlet",
"nativeMethod": false
},
{
"methodName": "processRequest",
"fileName": "FrameworkServlet.java",
"lineNumber": 1006,
"className": "org.springframework.web.servlet.FrameworkServlet",
"nativeMethod": false
},
{
"methodName": "doPost",
"fileName": "FrameworkServlet.java",
"lineNumber": 909,
"className": "org.springframework.web.servlet.FrameworkServlet",
"nativeMethod": false
},
{
"methodName": "service",
"fileName": "HttpServlet.java",
"lineNumber": 652,
"className": "javax.servlet.http.HttpServlet",
"nativeMethod": false
},
{
"methodName": "service",
"fileName": "FrameworkServlet.java",
"lineNumber": 883,
"className": "org.springframework.web.servlet.FrameworkServlet",
"nativeMethod": false
},
{
"methodName": "service",
"fileName": "HttpServlet.java",
"lineNumber": 733,
"className": "javax.servlet.http.HttpServlet",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 231,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "WsFilter.java",
"lineNumber": 53,
"className": "org.apache.tomcat.websocket.server.WsFilter",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 193,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilterInternal",
"fileName": "RequestContextFilter.java",
"lineNumber": 100,
"className": "org.springframework.web.filter.RequestContextFilter",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "OncePerRequestFilter.java",
"lineNumber": 119,
"className": "org.springframework.web.filter.OncePerRequestFilter",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 193,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilterInternal",
"fileName": "FormContentFilter.java",
"lineNumber": 93,
"className": "org.springframework.web.filter.FormContentFilter",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "OncePerRequestFilter.java",
"lineNumber": 119,
"className": "org.springframework.web.filter.OncePerRequestFilter",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 193,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilterInternal",
"fileName": "WebMvcMetricsFilter.java",
"lineNumber": 93,
"className": "org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "OncePerRequestFilter.java",
"lineNumber": 119,
"className": "org.springframework.web.filter.OncePerRequestFilter",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 193,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilterInternal",
"fileName": "CharacterEncodingFilter.java",
"lineNumber": 201,
"className": "org.springframework.web.filter.CharacterEncodingFilter",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "OncePerRequestFilter.java",
"lineNumber": 119,
"className": "org.springframework.web.filter.OncePerRequestFilter",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 193,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "StandardWrapperValve.java",
"lineNumber": 202,
"className": "org.apache.catalina.core.StandardWrapperValve",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "StandardContextValve.java",
"lineNumber": 97,
"className": "org.apache.catalina.core.StandardContextValve",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "AuthenticatorBase.java",
"lineNumber": 541,
"className": "org.apache.catalina.authenticator.AuthenticatorBase",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "StandardHostValve.java",
"lineNumber": 143,
"className": "org.apache.catalina.core.StandardHostValve",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "ErrorReportValve.java",
"lineNumber": 92,
"className": "org.apache.catalina.valves.ErrorReportValve",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "StandardEngineValve.java",
"lineNumber": 78,
"className": "org.apache.catalina.core.StandardEngineValve",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "RemoteIpValve.java",
"lineNumber": 747,
"className": "org.apache.catalina.valves.RemoteIpValve",
"nativeMethod": false
},
{
"methodName": "service",
"fileName": "CoyoteAdapter.java",
"lineNumber": 343,
"className": "org.apache.catalina.connector.CoyoteAdapter",
"nativeMethod": false
},
{
"methodName": "service",
"fileName": "Http11Processor.java",
"lineNumber": 374,
"className": "org.apache.coyote.http11.Http11Processor",
"nativeMethod": false
},
{
"methodName": "process",
"fileName": "AbstractProcessorLight.java",
"lineNumber": 65,
"className": "org.apache.coyote.AbstractProcessorLight",
"nativeMethod": false
},
{
"methodName": "process",
"fileName": "AbstractProtocol.java",
"lineNumber": 868,
"className": "org.apache.coyote.AbstractProtocol$ConnectionHandler",
"nativeMethod": false
},
{
"methodName": "doRun",
"fileName": "NioEndpoint.java",
"lineNumber": 1590,
"className": "org.apache.tomcat.util.net.NioEndpoint$SocketProcessor",
"nativeMethod": false
},
{
"methodName": "run",
"fileName": "SocketProcessorBase.java",
"lineNumber": 49,
"className": "org.apache.tomcat.util.net.SocketProcessorBase",
"nativeMethod": false
},
{
"methodName": "runWorker",
"fileName": "ThreadPoolExecutor.java",
"lineNumber": 1149,
"className": "java.util.concurrent.ThreadPoolExecutor",
"nativeMethod": false
},
{
"methodName": "run",
"fileName": "ThreadPoolExecutor.java",
"lineNumber": 624,
"className": "java.util.concurrent.ThreadPoolExecutor$Worker",
"nativeMethod": false
},
{
"methodName": "run",
"fileName": "TaskThread.java",
"lineNumber": 61,
"className": "org.apache.tomcat.util.threads.TaskThread$WrappingRunnable",
"nativeMethod": false
},
{
"methodName": "run",
"fileName": "Thread.java",
"lineNumber": 748,
"className": "java.lang.Thread",
"nativeMethod": false
}
],
"message": "Не найдена Единица измерения с кодом 8401"
},
"stackTrace": [
{
"methodName": "executeWithExceptionHandling",
"fileName": "AuditableService.java",
"lineNumber": 34,
"className": "ru.sbt.currency.integration.service.audit.AuditableService",
"nativeMethod": false
},
{
"methodName": "getCrossRate",
"fileName": "IndividualRateAuditableServiceImpl.java",
"lineNumber": 55,
"className": "ru.sbt.currency.rates.service.individual.impl.IndividualRateAuditableServiceImpl",
"nativeMethod": false
},
{
"methodName": "getCrossRate",
"fileName": "ExchangeRatesForIndividualsImpl.java",
"lineNumber": 45,
"className": "ru.sbt.currency.cloud.api.individual.impl.ExchangeRatesForIndividualsImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "<generated>",
"lineNumber": -1,
"className":
"ru.sbt.currency.cloud.api.individual.impl.ExchangeRatesForIndividualsImpl$$FastClassBySpringCGLIB$$18d5
53b2",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "MethodProxy.java",
"lineNumber": 218,
"className": "org.springframework.cglib.proxy.MethodProxy",
"nativeMethod": false
},
{
"methodName": "invokeJoinpoint",
"fileName": "CglibAopProxy.java",
"lineNumber": 771,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "ReflectiveMethodInvocation.java",
"lineNumber": 163,
"className": "org.springframework.aop.framework.ReflectiveMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "CglibAopProxy.java",
"lineNumber": 749,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "MethodInvocationProceedingJoinPoint.java",
"lineNumber": 88,
"className": "org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint",
"nativeMethod": false
},
{
"methodName": "processApiCall",
"fileName": "MetricsCollectionAspect.java",
"lineNumber": 54,
"className": "ru.sbt.currency.rates.common.metrics.MetricsCollectionAspect",
"nativeMethod": false
},
{
"methodName": "invoke0",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": -2,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": true
},
{
"methodName": "invoke",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": 62,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "DelegatingMethodAccessorImpl.java",
"lineNumber": 43,
"className": "sun.reflect.DelegatingMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "Method.java",
"lineNumber": 498,
"className": "java.lang.reflect.Method",
"nativeMethod": false
},
{
"methodName": "invokeAdviceMethodWithGivenArgs",
"fileName": "AbstractAspectJAdvice.java",
"lineNumber": 644,
"className": "org.springframework.aop.aspectj.AbstractAspectJAdvice",
"nativeMethod": false
},
{
"methodName": "invokeAdviceMethod",
"fileName": "AbstractAspectJAdvice.java",
"lineNumber": 633,
"className": "org.springframework.aop.aspectj.AbstractAspectJAdvice",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "AspectJAroundAdvice.java",
"lineNumber": 70,
"className": "org.springframework.aop.aspectj.AspectJAroundAdvice",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "ReflectiveMethodInvocation.java",
"lineNumber": 186,
"className": "org.springframework.aop.framework.ReflectiveMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "CglibAopProxy.java",
"lineNumber": 749,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "ExposeInvocationInterceptor.java",
"lineNumber": 95,
"className": "org.springframework.aop.interceptor.ExposeInvocationInterceptor",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "ReflectiveMethodInvocation.java",
"lineNumber": 186,
"className": "org.springframework.aop.framework.ReflectiveMethodInvocation",
"nativeMethod": false
},
{
"methodName": "proceed",
"fileName": "CglibAopProxy.java",
"lineNumber": 749,
"className": "org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation",
"nativeMethod": false
},
{
"methodName": "intercept",
"fileName": "CglibAopProxy.java",
"lineNumber": 691,
"className": "org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor",
"nativeMethod": false
},
{
"methodName": "getCrossRate",
"fileName": "<generated>",
"lineNumber": -1,
"className":
"ru.sbt.currency.cloud.api.individual.impl.ExchangeRatesForIndividualsImpl$$EnhancerBySpringCGLIB$$313c0
285",
"nativeMethod": false
},
{
"methodName": "invoke0",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": -2,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": true
},
{
"methodName": "invoke",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": 62,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "DelegatingMethodAccessorImpl.java",
"lineNumber": 43,
"className": "sun.reflect.DelegatingMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "Method.java",
"lineNumber": 498,
"className": "java.lang.reflect.Method",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "ApiUtils_CallbackApi.java",
"lineNumber": 120,
"className":
"com.sbt.core.transport.lite.utils.api.callback.ApiUtils_CallbackApi$MethodUtils_CallbackApi",
"nativeMethod": false
},
{
"methodName": "invokeRequest",
"fileName": "TransportJsonRpcConverter.java",
"lineNumber": 303,
"className": "com.sbt.core.transport.jsonrpc.lib.converter.TransportJsonRpcConverter",
"nativeMethod": false
},
{
"methodName": "handleRequest",
"fileName": "JsonRpcRequestHandler.java",
"lineNumber": 28,
"className": "com.sbt.core.transport.lite.server.request.handler.JsonRpcRequestHandler",
"nativeMethod": false
},
{
"methodName": "processRequest",
"fileName": "HttpRequestProcessor.java",
"lineNumber": 69,
"className": "com.sbt.core.transport.lite.server.processor.HttpRequestProcessor",
"nativeMethod": false
},
{
"methodName": "handleJsonRpcRequest",
"fileName": "MmtSpringController.java",
"lineNumber": 127,
"className": "com.sbt.core.transport.lite.server.spring.web.MmtSpringController",
"nativeMethod": false
},
{
"methodName": "invoke0",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": -2,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": true
},
{
"methodName": "invoke",
"fileName": "NativeMethodAccessorImpl.java",
"lineNumber": 62,
"className": "sun.reflect.NativeMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "DelegatingMethodAccessorImpl.java",
"lineNumber": 43,
"className": "sun.reflect.DelegatingMethodAccessorImpl",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "Method.java",
"lineNumber": 498,
"className": "java.lang.reflect.Method",
"nativeMethod": false
},
{
"methodName": "doInvoke",
"fileName": "InvocableHandlerMethod.java",
"lineNumber": 190,
"className": "org.springframework.web.method.support.InvocableHandlerMethod",
"nativeMethod": false
},
{
"methodName": "invokeForRequest",
"fileName": "InvocableHandlerMethod.java",
"lineNumber": 138,
"className": "org.springframework.web.method.support.InvocableHandlerMethod",
"nativeMethod": false
},
{
"methodName": "invokeAndHandle",
"fileName": "ServletInvocableHandlerMethod.java",
"lineNumber": 105,
"className":
"org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod",
"nativeMethod": false
},
{
"methodName": "invokeHandlerMethod",
"fileName": "RequestMappingHandlerAdapter.java",
"lineNumber": 878,
"className":
"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter",
"nativeMethod": false
},
{
"methodName": "handleInternal",
"fileName": "RequestMappingHandlerAdapter.java",
"lineNumber": 792,
"className":
"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter",
"nativeMethod": false
},
{
"methodName": "handle",
"fileName": "AbstractHandlerMethodAdapter.java",
"lineNumber": 87,
"className": "org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter",
"nativeMethod": false
},
{
"methodName": "doDispatch",
"fileName": "DispatcherServlet.java",
"lineNumber": 1040,
"className": "org.springframework.web.servlet.DispatcherServlet",
"nativeMethod": false
},
{
"methodName": "doService",
"fileName": "DispatcherServlet.java",
"lineNumber": 943,
"className": "org.springframework.web.servlet.DispatcherServlet",
"nativeMethod": false
},
{
"methodName": "processRequest",
"fileName": "FrameworkServlet.java",
"lineNumber": 1006,
"className": "org.springframework.web.servlet.FrameworkServlet",
"nativeMethod": false
},
{
"methodName": "doPost",
"fileName": "FrameworkServlet.java",
"lineNumber": 909,
"className": "org.springframework.web.servlet.FrameworkServlet",
"nativeMethod": false
},
{
"methodName": "service",
"fileName": "HttpServlet.java",
"lineNumber": 652,
"className": "javax.servlet.http.HttpServlet",
"nativeMethod": false
},
{
"methodName": "service",
"fileName": "FrameworkServlet.java",
"lineNumber": 883,
"className": "org.springframework.web.servlet.FrameworkServlet",
"nativeMethod": false
},
{
"methodName": "service",
"fileName": "HttpServlet.java",
"lineNumber": 733,
"className": "javax.servlet.http.HttpServlet",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 231,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "WsFilter.java",
"lineNumber": 53,
"className": "org.apache.tomcat.websocket.server.WsFilter",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 193,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilterInternal",
"fileName": "RequestContextFilter.java",
"lineNumber": 100,
"className": "org.springframework.web.filter.RequestContextFilter",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "OncePerRequestFilter.java",
"lineNumber": 119,
"className": "org.springframework.web.filter.OncePerRequestFilter",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 193,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilterInternal",
"fileName": "FormContentFilter.java",
"lineNumber": 93,
"className": "org.springframework.web.filter.FormContentFilter",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "OncePerRequestFilter.java",
"lineNumber": 119,
"className": "org.springframework.web.filter.OncePerRequestFilter",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 193,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilterInternal",
"fileName": "WebMvcMetricsFilter.java",
"lineNumber": 93,
"className": "org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "OncePerRequestFilter.java",
"lineNumber": 119,
"className": "org.springframework.web.filter.OncePerRequestFilter",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 193,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilterInternal",
"fileName": "CharacterEncodingFilter.java",
"lineNumber": 201,
"className": "org.springframework.web.filter.CharacterEncodingFilter",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "OncePerRequestFilter.java",
"lineNumber": 119,
"className": "org.springframework.web.filter.OncePerRequestFilter",
"nativeMethod": false
},
{
"methodName": "internalDoFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 193,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "doFilter",
"fileName": "ApplicationFilterChain.java",
"lineNumber": 166,
"className": "org.apache.catalina.core.ApplicationFilterChain",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "StandardWrapperValve.java",
"lineNumber": 202,
"className": "org.apache.catalina.core.StandardWrapperValve",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "StandardContextValve.java",
"lineNumber": 97,
"className": "org.apache.catalina.core.StandardContextValve",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "AuthenticatorBase.java",
"lineNumber": 541,
"className": "org.apache.catalina.authenticator.AuthenticatorBase",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "StandardHostValve.java",
"lineNumber": 143,
"className": "org.apache.catalina.core.StandardHostValve",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "ErrorReportValve.java",
"lineNumber": 92,
"className": "org.apache.catalina.valves.ErrorReportValve",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "StandardEngineValve.java",
"lineNumber": 78,
"className": "org.apache.catalina.core.StandardEngineValve",
"nativeMethod": false
},
{
"methodName": "invoke",
"fileName": "RemoteIpValve.java",
"lineNumber": 747,
"className": "org.apache.catalina.valves.RemoteIpValve",
"nativeMethod": false
},
{
"methodName": "service",
"fileName": "CoyoteAdapter.java",
"lineNumber": 343,
"className": "org.apache.catalina.connector.CoyoteAdapter",
"nativeMethod": false
},
{
"methodName": "service",
"fileName": "Http11Processor.java",
"lineNumber": 374,
"className": "org.apache.coyote.http11.Http11Processor",
"nativeMethod": false
},
{
"methodName": "process",
"fileName": "AbstractProcessorLight.java",
"lineNumber": 65,
"className": "org.apache.coyote.AbstractProcessorLight",
"nativeMethod": false
},
{
"methodName": "process",
"fileName": "AbstractProtocol.java",
"lineNumber": 868,
"className": "org.apache.coyote.AbstractProtocol$ConnectionHandler",
"nativeMethod": false
},
{
"methodName": "doRun",
"fileName": "NioEndpoint.java",
"lineNumber": 1590,
"className": "org.apache.tomcat.util.net.NioEndpoint$SocketProcessor",
"nativeMethod": false
},
{
"methodName": "run",
"fileName": "SocketProcessorBase.java",
"lineNumber": 49,
"className": "org.apache.tomcat.util.net.SocketProcessorBase",
"nativeMethod": false
},
{
"methodName": "runWorker",
"fileName": "ThreadPoolExecutor.java",
"lineNumber": 1149,
"className": "java.util.concurrent.ThreadPoolExecutor",
"nativeMethod": false
},
{
"methodName": "run",
"fileName": "ThreadPoolExecutor.java",
"lineNumber": 624,
"className": "java.util.concurrent.ThreadPoolExecutor$Worker",
"nativeMethod": false
},
{
"methodName": "run",
"fileName": "TaskThread.java",
"lineNumber": 61,
"className": "org.apache.tomcat.util.threads.TaskThread$WrappingRunnable",
"nativeMethod": false
},
{
"methodName": "run",
"fileName": "Thread.java",
"lineNumber": 748,
"className": "java.lang.Thread",
"nativeMethod": false
}
],
"message": "Не найдена Единица измерения с кодом 8401"
},
"stackTrace": [],
"message": "Service throw exception: ru.sbt.currency.integration.exception.CurrencyRatesAppException"
}
}
}
Курс ФЛ с конверсией валюта-рубль (getRate)
API
ExchangeRatesForIndividuals
Поколение API
4
Назначение
Получение курса валют Сбербанка для физических
лиц по заданным атрибутам на дату-время из входных
параметров для валютной пары, состоящей из
валюты/рубль.
Всегда возвращает курс за N единиц валюты и
масштаб N.
Внимание!
Что касается индивидуального курса по клиенту, то это
регулируется заполнением выходного атрибута
«Признак индивидуального курса». Для того чтобы
получить индивидуальный курс нужно чтобы данный
курс
был
тиражирован
последним
для
запрашиваемой даты/времени, во входных данных
задан
соответствующий
ВСП
и
выбран
соответствующий
ERNP.
Если
тиража
индивидуального курса нет на запрашиваемую
дату/время, то вы получите обычный курс для
выбранного ERNP.
Rq
getRateForIndividualsJsonRpcRq.json
Rs
getRateForIndividualsJsonRpcRs.json
Входные параметры
Наименован
Элемент
Тип данных
Кратность
Комментарий
ие
параметра
Версия
jsonprc
String
1
Структура
в
JSONRPC
соответствии
с
версией
спецификации
JSONRPC 2.0.
Передается
значение
константы «2.0».
Наименован
method
String
1
Наименование
ие метода
вызываемого
метода.
Идентификат
id
String
1
Идентификатор
ор запроса
запроса в рамках
системы-
источника.
Перечень
params
Parameter
1
входных
параметров
дата/время
requestDate
Date
1
Календарные дата
запроса
и
время
на
которые нужно
получить курс, см.
пример ниже.
территориа
terbank
Integer
1
Территориальный
льный банк
банк
осб
branch
Integer
0..1
Отделение
сберегательного
банка (сбербанка)
России
всп
office
Integer
0..1
Внутреннее
структурное
подразделение
код валюты
currencyCod
String
1
Код валюты, для
e
которой
необходимо
получить
курс
(буквенный/числ
овой)
вид курса
currencyRate
String
1
Код вида курса
Type
(например,
«ERNP-1»).
Возможные
значения:
• ERNP-1
• ERNP-2
• ERNP-3
• ERNP-4
• ERNP-5
• и т.д.
покупка
buy
Boolean
1
Принимает
значения:
• true
-
Курс
покупки
Банком
(курс
продажи
Клиентом)
;
• false
-
Курс
продажи
Банком
(курс
покупки
Клиентом)
сумма
amount
Double
1
Сумма
для
операции
проведения
конверсионной
операции
прямая
directOperati
Boolean
1
Определяет
операция
on
валюту, в которой
введена сумма.
Принимает
значения:
• true
- сумма
введена в
валюте
(«Currency
Code»).
• false
- сумма
введена в
валюте
«российск
ий рубль
(RUB)»
метод
roundingMet
Метод
0..1
Метод
округления
hod
округления
округления,
(roundingMe
необходим
для
thod)
округления
выходного
параметра
«Сумма операции
во второй валюте
(sumSecond)».
Если не передан,
то принимает по
умолчанию
значение
«1
(Математическое)
»
канал
channel
String
0..1
Канал
выполнения
операции,
для
которой делается
расчет
суммы.Возможны
е значения:
• "TRADITIONAL"
-
Традицио
нный
канал
обслужив
ания
ВСП),
будут
использов
аны
указанные
значения
ОСБ/ВСП
для поиска
курса
с
учетом
области
его
действия.
• "DISTANT"
-
Дистанци
онный
канал
обслужив
ания
(УКО),
указанные
значения
ОСБ/ВСП
не будут
применять
ся
для
поиска
курса
По
умолчанию
логика
определения
канала:
если указан вид
курса currencyRat
eType
• = "ERNP-1" или
"ERNP-3",
то
используе
тся канал
"TRADITIO
NAL"
• для
всех
остальных
случаев
-
канал
"DISTANT"
добавлено дораб
откой rpu-6565
Выходные параметры
Наименов
Элемент
Тип
Кратност
Коммент
ание
ь
арий
параметра
Версия
jsonprc
String
1
Структура
JSONRPC
в
соответст
вии
с
версией
специфик
ации
JSONRPC
2.0.
Передаетс
я
значение
константы
«2.0».
Идентифик
id
String
1
Идентифи
атор
катор
запроса
запроса в
рамках
системы-
источника
из
запроса.
Перечень
result
Parameter
0..1
Заполняет
выходных
ся только
параметро
в случае
в
успешной
обработк
и запроса
Список
ranges
List
1..N
курсов
Сбербанк
а с
порогами
Курс
buy
BigDecima
1
покупи
l
относител
ьно рубля
Курс
sell
BigDecima
1
продажи
l
относител
ьно рубля
Нижняя
lowerRang
BigDecima
1
граница
e
l
диапазона
Верхняя
upperRan
BigDecima
0..1
null - отсутствует
граница
ge
l
верхняя граница
диапазона
Признак
personalSi
Boolean
1
Возможные
индивиду
gn
значения:
ального
• «Истина
курса
(true)»
-
предос
тавлен
ный
курс
являет
ся
индиви
дуальн
ым для
конкре
тного
клиент
а
Банка;
• «Ложь
(false)»
- курс
может
приме
няться
для
всех
клиент
ов
Банка;
Использу
rate
BigDecima
1
емый в
l
конверси
онной
операции
курc
Дата/вре
startDate
Date
1
мя начала
действия
курса
Буквенны
baseAlpha
String
1
й
код
Code
базовой
валюты
Числовой
baseNume
String
1
код
ricCode
базовой
валюты
Буквенны
quoteAlph
String
1
всегда "RUB"
й
код
aCode
валюты
котировк
и
Числовой
quoteNum
String
1
всегда "643"
код
ericCode
валюты
котировк
и
Масштаб
lotSize
BigDecima
1
базовой
l
валюты
относител
ьно рубля
ИД
rqUID
String
1
распоряж
ение
Номер
orderNum
String
0..1
Имеется пока
приказа
ber
идет тираж из
об
АС КВ
утвержде
нии курса
Дата
и
orderDate
Date
0..1
Имеется пока
время
идет тираж из
формиров
АС КВ
ания
приказа
Сумма
amount
BigDecima
1
операции
l
во второй
валюте
Размерно
decimalPr
Long
1
Количество
сть
для
ecision
десятичных
суммы во
цифр
после
второй
точки.
валюте
Наличие
error
Error
0..1
Блок
ошибок
заполняет
ся только
в случае
возникно
вения
ошибки
Код
code
Integer
1
ошибки
Сообщен
message
String
1
ие
об
ошибке
Детальная
data
String
0..1
Не заполняется на
информац
стороне Курсов
ия
об
Валют, но может
ошибке
заполняться
на
стороне ММТ
Перечень ошибок
Ссылка на описание ошибок по спецификации JSON RPC 2.0 и ММТ: .Ошибки v4.2.0, Описание
API - 4-е поколение
Пример вызова метода
Пример запроса
POST data:
{
"jsonrpc": "2.0",
"id": 111,
"method": "getRate",
"params": [
{
"requestDate": "2021-04-06T03:59:40.627",
"terbank": 18,
"branch": "",
"office": "",
"currencyCode": "978",
"currencyRateType": "ERNP-1",
"buy": true,
"amount": 110046.0,
"directOperation": true,
"roundingMethod": "MATH"
}
]
}
[no cookies]
Пример успешного ответа
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"ranges": [
{
"buy": 66.02,
"sell": 69.42,
"lowerRange": 1000.0,
"upperRange": 9999.9999
},
{
"buy": 65.87,
"sell": 69.57,
"lowerRange": 0,
"upperRange": 999.9999
},
{
"buy": 66.17,
"sell": 69.27,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
}
],
"personalSign": false,
"rate": 66.17,
"startDate": "2021-04-06T03:57:40.932+03:00",
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "55b18cb122f8484fbfb9762a2e1ad239",
"orderNumber": "55b18cb122f8484fbfb9762a2e1ad239",
"orderDate": "2021-04-06T03:54:40.932+03:00",
"amount": 7281743.82,
"decimalPrecision": 2
}
}
Ответ с ошибкой
{
"jsonrpc": "2.0",
"id": 111,
"error": {
"code": -31001,
"message": "Отсутствие курсов валют",
"data": {
"cause": null,
"stackTrace": [],
"message": "Подходящее распоряжение не найдено: [18nullnull] - [{ERNP-13223}] - [{Tue Apr 06
04:20:54 MSK 2021}]"
}
}
}
Список курсов ФЛ валюты (getRates)
API
ExchangeRatesForIndividuals
Назначение
Получение списка курсов CБ валют/металлов (ОМС, без
слитков) на операционную дату для физических лиц.
По каждой валютной паре возвращает курс за N
единиц валюты и масштаб N
Внимание: курсы предоставляются as-is, валютные
пары из справочника
Rq
getRatesIndividualsJsonRpcRq.json
Rs
getRatesIndividualsJsonRpcRs.json
Входные параметры
Наименов
Элемент
Тип
Кратност
Коммент
ание
данных
ь
арий
параметра
Версия
jsonprc
String
1
Структура
JSONRPC
в
соответст
вии
с
версией
специфик
ации
JSONRPC
2.0.
Передаетс
я
значение
константы
«2.0».
Наименова
method
String
1
Наименов
ние метода
ание
вызываем
ого
метода.
Передаетс
я
значение
константы
«getRates
».
Идентифик
id
String
1
Идентифи
атор
катор
запроса
запроса в
рамках
системы-
источника
Перечень
params
list
1
входных
<object>
параметро
в
дата/врем
requestDa
Date
1
Календар
я запроса
te
ные дата и
время на
которые
нужно
получить
курс, см.
пример
ниже.
территор
terBankCo
Integer
1
иальный
de
банк
ОСБ
branch
Integer
0..1
Отделени
е
сберегате
льного
банка
(сбербанк
а) России
ВСП
office
Integer
0..1
Внутренне
е
структурн
ое
подразде
ление
Запрашив
currencyR
list
1..N
аемый
ates
<object>
объект
курсов
Вид курса
currencyR
String
1
Код
вида
курса
ateType
Например,
«ERNP-
1», «PMR-1». Передан
может быть любой
код вида курса
список
baseCodeL
list
0..N
Перечень валют, по
базовых
ist
<String>
которым
валют
запрашиваются курсы
Сбербанка.Числовой
или буквенный код
валюты. Пример: USD,
840.
Выходные параметры
Наимен
Элеме
Тип
Кратно
Комме
ование
нт
сть
нтарий
параме
тра
Версия
jsonprc
String
1
Структу
JSONRP
ра
в
C
соответ
ствии с
версие
й
специф
икации
JSONR
PC 2.0.
Переда
ется
значен
ие
конста
нты
«2.0».
Иденти
id
String
1
Иденти
фикатор
фикато
запроса
р
запрос
а
в
рамках
систем
ы-
источн
ика из
запрос
а.
Перечен
result
List
0..1
Заполн
ь
<object
яется
выходн
>
только
ых
в
парамет
случае
ров
успешн
ой
обрабо
тки
запрос
а
Перече
success
List
0..N
нь
<object
успешн
>
ых
результ
атов
Вид
currenc
String
1
равен
курса
yRateTy
вх.curre
pe
ncyRate
Type
Список
rates
List
0..N
курсов
<object
валют
>
Список
ranges
List
1..N
курсов
<object
Сберба
>
нка с
порога
ми
Курс
buy
BigDeci
1
Курс
покупки
покупк
mal
валюты
Банком
и
(курс продажи для
клиента).
Валютная пара, для
которой этот курс,
определяется
по
сочетанию
параметров:
• базовая/котируе
мая валюта
из входных
данных;
• прямая
котировка
(прямая или
обратная).
Курс
sell
BigDeci
1
Курс
продажи
прода
mal
валюты
Банком
жи
(курс покупки для
клиента)
Нижня
lowerRa
BigDeci
1
я
nge
mal
границ
а
диапаз
она
Верхня
upperR
BigDeci
0..1
Если атрибут не
я
ange
mal
заполнен,
то
границ
диапазон
не
а
ограничен сверху.
диапаз
Диапазон
не
она
включая верхнюю
границу.
Дата/в
startDat
Date
1
ремя
e
начала
действ
ия
курса
Буквен
baseAlp
String
1
Буквен
ный
haCode
ный
код
код для
базово
базово
й
й
валюты
валюты
валютн
ой
пары
заданн
ой во
входны
х
параме
трах.
Числов
baseNu
String
1
ой код
mericC
базово
ode
й
валюты
Буквен
quoteAl
String
1
Буквен
ный
phaCod
ный
код
e
код для
валюты
котиру
котиро
емой
вки
валюты
валютн
ой
пары
заданн
ой во
входны
х
параме
трах.
Числов
quoteN
String
1
ой код
umeric
валюты
Code
котиро
вки
Масшт
lotSize
BigDeci
1
аб
mal
валюты
ИД
rqUID
String
1
распор
яжение
Призна
person
Boolea
1
к
alSign
n
индиви
дуальн
ого
курса
Номер
orderN
String
0..1
Имеетс
приказ
umber
я пока
а
об
идет
утверж
тираж
дении
из АС
курса
КВ
Перече
errors
List
0..N
Код и
нь
<object
описан
ошибо
>
ие
к
ошибк
и.
Не
переда
ется в
случае
успешн
ого
заверш
ения.
Вид
currenc
String
1
равен
курса
yRateTy
вх.curre
pe
ncyRate
Type
Статус
status
object
0..1
Не
переда
ется
если
данный
тип
сущест
вует
Код
code
Int
1
ошибк
и
Описан
descript
String
1
ие
ion
ошибк
и
Список
rates
List
0..N
курсов
<object
валют
>
Базова
baseCo
String
1
равен
я
de
значен
валюта
ию из
списка
вх.base
CodeLis
t
Статус
status
object
1
Код
code
Int
1
ошибк
и
Описан
descript
String
1
ие
ion
ошибк
и
Наличие
error
Error
0..1
Блок
ошибок
заполн
яется
только
в
случае
возник
новени
я
глобал
ьной
ошибк
и
Код
code
Int
1
ошибк
и
Сообщ
messag
String
1
ение
e
об
ошибк
е
Деталь
data
String
0..1
Не
ная
заполн
инфор
яется
мация
на
об
сторон
ошибк
е
е
Курсов
Валют,
но
может
заполн
яться
на
сторон
е ММТ
Перечень ошибок
Код ошибки
Текст ошибки
Пояснение
-31000
Отсутствие обязательных
Отсутствие
или
некорректное
параметров
заполнение одного или более из
обязательных параметров
-31001
Отсутствие курсов валют
По переданному коду
валюты,
отсутствует курс
-31004
В
качестве
валюты
Во входных параметрах в качестве кода
передано
значение
валюты/металла передано значение
"российский рубль"
для российского рубля.
-31005
Найдено более одной
В справочнике найдено более одной
записи тербанка
записи для переданного значения
территориального банка
-31006
Не найдено записи по
В справочнике департаментов не
переданному во входных
найдено записи по переданному ТБ
данных ТБ
-31007
Найдено более одного
Для переданного набора данных
распоряжения
существует
2
распоряжения
с
одинаковым
временем
начала
действия курсов.
Пример вызова метода
Запрос
{
"jsonrpc": "2.0",
"method": "getRates",
"id": 111,
"params": [
{
"requestDate": "2021-04-12T06:17:48.834+03",
"terbank": "38",
"branch": "9038",
"office": "01205",
"currencyRates": [
{
"currencyRateType": "ERNP-1",
"baseCodeList": [
"EUR",
"USD",
"HelloWorld"
]
},
{
"currencyRateType": "HelloWorld",
"baseCodeList": [
"EUR",
"USD",
"CHF"
]
}
]
}
]
}
Ответ
{
"jsonrpc": "2.0",
"id": 111,
"result": [
{
"success": [
{
"type": "ERNP-1",
"rates": [
{
"ranges": [
{
"buy": 66.17,
"sell": 69.27,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
},
{
"buy": 66.02,
"sell": 69.42,
"lowerRange": 1000.0,
"upperRange": 9999.9999
},
{
"buy": 65.87,
"sell": 69.57,
"lowerRange": 0,
"upperRange": 999.9999
}
],
"personalSign": false,
"rate": 66.17,
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "1028d7c75d1948deb1cb2f9fa112f687",
"orderNumber": "1028d7c75d1948deb1cb2f9fa112f687",
"orderDate": "2021-04-09T09:51:05.567+03:00",
"startDate": "2021-04-09T09:54:05.567+03:00"
},
{
"ranges": [
{
"buy": 66.17,
"sell": 69.27,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
},
{
"buy": 66.02,
"sell": 69.42,
"lowerRange": 1000.0,
"upperRange": 9999.9999
}
],
"personalSign": false,
"rate": 66.17,
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1,
"rqUID": "1028d7c75d1948deb1cb2f9fa112f687",
"orderNumber": "1028d7c75d1948deb1cb2f9fa112f687",
"orderDate": "2021-04-09T09:51:05.567+03:00",
"startDate": "2021-04-09T09:54:05.567+03:00"
}
]
}
],
"errors": [
{
"type": "HelloWorld",
"error": {
"code": -31008,
"description": "Модуль курса валют. Подходящее распоряжение не найдено: [38nullnull] -
[{HelloWorld}] - [{Wed Apr 21 07:12:18 MSK 2021}]"
}
},
{
"type": "ERNP-1",
"rates": [
{
"baseCode": "HelloWorld",
"error": {
"code": "-31001",
"description": "Модуль курса валют. Отсутствует курс валют. Тербанк: 38; ОСБ: null;
ВСП: null; тип валюты: ERNP-2; Код базовой валюты: HelloWorld"
}
}
]
}
]
}
]
}
API "ExchangeRatesSupplementary" (курсы для аналитики/запроса истории)
Ограничения пропускной способности
Данное API изолировано от остальных стандартных методов, имеет высокий
latency, имеет ограниченное количество потоков на вход (5 на pod, 10 на
кластере, 20 всего).
API
Интерфейс для использования
ExchangeRatesSupplementary
Maven
<dependency>
<groupId>sbp.ru.sbt.pricing</groupId>
<artifactId>***TDP***</artifactId>
<version>уточнять</version>
</dependency>
Список курсов ФЛ валюты за период (getIndividualRatesRange)
API
ExchangeRatesSupplementary
Назначение
Получение списка курсов валют CБ за период для
физичееских лиц.
По каждой валютной паре возвращает курс за N
единиц валюты и масштаб N
Внимание: курсы предоставляются as-is, валютные
пары из справочника
Примечание
Метод не кэширует курсы, работает только с БД.
JSON схема ответа
getIndividualRatesRangeRs.json
Входные параметры
Наименован
Элемент
Тип данных
Кратность
Комментар
ие
ий
параметра
Версия
jsonprc
String
1
Структура в
JSONRPC
соответстви
и с версией
спецификац
ии JSONRPC
2.0.
Передается
значение
константы
«2.0».
Наименован
method
String
1
Наименован
ие метода
ие
вызываемог
о метода.
Передается
значение
константы
«getIndividu
alRatesRang
e».
Идентификат
id
String
1
Идентифика
ор запроса
тор запроса
в
рамках
системы-
источника.
Перечень
params
-
1
входных
параметров
дата начала
dateFrom
Date
1
Календарная
периода
дата начала периода.
дата
dateTo
Date
1
Календарная
окончания
дата окончания периода
периода
территориа
terBank
Integer
1
льный банк
осб
branch
Integer
0..1
Отделение
сберегательного
банка
(сбербанка) России
всп
office
Integer
0..1
Внутреннее структурное
подразделение
Вид курса
currencyRate
String
1
Код
вида
курса
Type
(например, «ERNP-1»).
Возможные значения:
• ERNP-1
• ERNP-2
• ERNP-3
• и т.д.
список
baseCodeLis
list <String>
0..N
Перечень
валют,
по
базовых
t
которым запрашиваются
валют
курсы
Сбербанка.Числовой или
буквенный
код
валюты. Пример:
USD,
840.
Выходные параметры
Наимен
Элеме
Тип
Кратно
Комме
ование
нт
сть
нтарий
параме
тра
Версия
jsonprc
String
1
Структу
JSONRP
ра
в
C
соответ
ствии с
версие
й
специф
икации
JSONR
PC 2.0.
Переда
ется
значен
ие
конста
нты
«2.0».
Иденти
id
String
1
Иденти
фикатор
фикато
запроса
р
запрос
а
в
рамках
систем
ы-
источн
ика из
запрос
а.
Перечен
result
List
0..1
Заполн
ь
<object
яется
выходн
>
только
ых
в
парамет
случае
ров
успешн
ой
обрабо
тки
запрос
а
Перече
success
List
0..N
нь
<object
успешн
>
ых
результ
атов
ИД
rqUID
String
1
распор
яжения
Номер
orderN
String
0..1
Имеетс
приказ
umber
я пока
а
об
идет
утверж
тираж
дении
из АС
курса
КВ
Дата
orderD
Date
0..1
Имеетс
приказ
ate
я пока
а
об
идет
утверж
тираж
дении
из АС
курса
КВ
Дата/в
startDat
Date
1
ремя
e
начала
действ
ия
распор
яжения
Список
rates
List
0..N
курсов
<object
валют
>
Список
ranges
List
1..N
Код и
курсов
<object
описан
Сберба
>
ие
нка с
ошибк
порога
и.
Не
ми
переда
ется в
случае
успешн
ого
заверш
ения.
Курс
buy
BigDeci
1
Курс
покупки
покупк
mal
валюты Банком (курс
и
продажи
для
клиента).
Валютная пара, для
которой этот курс,
определяется
по
сочетанию
параметров:
• базовая/котируем
ая валюта из
входных
данных;
• прямая котировка
(прямая или
обратная).
Курс
sell
BigDeci
1
Курс
продажи
прода
mal
валюты Банком (курс
жи
покупки для клиента)
Нижня
lowerRa
BigDeci
1
я
nge
mal
границ
а
диапаз
она
Верхня
upperR
BigDeci
0..1
Если атрибут не
я
ange
mal
заполнен,
то
границ
диапазон
не
а
ограничен сверху.
диапаз
Диапазон
не
она
включая верхнюю
границу.
Буквен
baseAlp
String
1
Буквен
ный
haCode
ный
код
код для
базово
базово
й
й
валюты
валюты
валютн
ой
пары
заданн
ой во
входны
х
параме
трах.
Числов
baseNu
String
1
ой код
mericC
базово
ode
й
валюты
Буквен
quoteAl
String
1
Буквен
ный
phaCod
ный
код
e
код для
валюты
котиру
котиро
емой
вки
валюты
валютн
ой
пары
заданн
ой во
входны
х
параме
трах.
Числов
quoteN
String
1
ой код
umeric
валюты
Code
котиро
вки
Масшт
lotSize
BigDeci
1
аб
mal
валюты
Призна
person
Boolea
1
к
alSign
n
индиви
дуальн
ого
курса
Перече
errors
List
0..N
нь
<object
ошибо
>
к
Базова
baseCo
String
1
равен
я
de
значен
валюта
ию из
списка
вх.base
CodeLis
t
Статус
status
object
1
Код
code
Int
1
ошибк
и
Описан
descript
String
1
ие
ion
ошибк
и
Наличие
error
Error
0..1
Блок
ошибок
заполн
яется
только
в
случае
возник
новени
я
глобал
ьной
ошибк
и
Код
code
Int
1
ошибк
и
Сообщ
messag
String
1
ение
e
об
ошибк
е
Деталь
data
String
0..1
Не
ная
заполн
инфор
яется
мация
на
об
сторон
ошибк
е
е
Курсов
Валют,
но
может
заполн
яться
на
сторон
е ММТ
Пример вызова метода
Запрос
{
"jsonrpc": "2.0",
"id": 111,
"method": "getIndividualRatesRange",
"params": [
{
"dateFrom": "2021-07-07T11:35:50.729",
"dateTo": "2021-07-27T11:35:50.731",
"terbank": 38,
"branch": "",
"office": "",
"currencyRateType": "ERNP-2"
}
]
}
Запрос со списком валют
{
"jsonrpc": "2.0",
"id": 111,
"method": "getIndividualRatesRange",
"params": [
{
"dateFrom": "2021-12-07T11:35:50.729",
"dateTo": "2021-12-08T11:35:50.731",
"terbank": 38,
"branch": "",
"office": "",
"currencyRateType": "ERNP-7",
"baseCodeList": ["USD", "EUR", "CHF"]
}
]
}
Ответ
{
"jsonrpc": "2.0",
"id": 111,
"result": {
"success": [
{
"rqUid": "bdc09acd2a8849e682e0fe3c70e6609c",
"orderNumber": "038-701-ОК-070721-004",
"orderDate": "2021-07-07T11:33:00.000+03:00",
"startDate": "2021-07-07T11:34:20.000+03:00",
"rates": [
{
"ranges": [
{
"buy": 87.27,
"sell": 89.94,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
},
{
"buy": 86.64,
"sell": 90.57,
"lowerRange": 0,
"upperRange": 999.99
},
{
"buy": 87.07,
"sell": 90.14,
"lowerRange": 1000.0,
"upperRange": 9999.99
}
],
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 72.08,
"sell": 75.39,
"lowerRange": 0,
"upperRange": 999.99
},
{
"buy": 72.51,
"sell": 74.96,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
},
{
"buy": 72.3,
"sell": 75.17,
"lowerRange": 1000.0,
"upperRange": 9999.99
}
],
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
}
],
"personalSign": false
},
{
"rqUid": "70a4dafe7eb24c31aca2137cea41c520",
"orderNumber": "038-007-ОК-070721-004",
"orderDate": "2021-07-07T11:33:01.000+03:00",
"startDate": "2021-07-07T11:33:50.000+03:00",
"rates": [
{
"ranges": [
{
"buy": 74.35,
"sell": 80.43,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "CHF",
"baseNumericCode": "756",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 86.84,
"sell": 103.24,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "HKD",
"baseNumericCode": "344",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 10.0
},
{
"ranges": [
{
"buy": 10.86,
"sell": 12.08,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "DKK",
"baseNumericCode": "208",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 57.69,
"sell": 61.92,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "CAD",
"baseNumericCode": "124",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 83.18,
"sell": 89.94,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "NOK",
"baseNumericCode": "578",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 10.0
},
{
"ranges": [
{
"buy": 10.54,
"sell": 12.28,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "CNY",
"baseNumericCode": "156",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 53.77,
"sell": 57.89,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "AUD",
"baseNumericCode": "036",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 40.59,
"sell": 46.49,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "SGD",
"baseNumericCode": "702",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 64.21,
"sell": 68.82,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "JPY",
"baseNumericCode": "392",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 100.0
},
{
"ranges": [
{
"buy": 68.89,
"sell": 74.33,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "SEK",
"baseNumericCode": "752",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 10.0
}
],
"personalSign": false
},
{
"rqUid": "fc973c6a56b4474ea82db1e3fe8a85cf",
"orderNumber": "038-050-ОК-290621-002",
"orderDate": "2021-06-29T12:19:22.000+03:00",
"startDate": "2021-06-29T12:21:59.000+03:00",
"rates": [
{
"ranges": [
{
"buy": 98.82,
"sell": 106.38,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "GBP",
"baseNumericCode": "826",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
}
],
"personalSign": false
},
{
"rqUid": "f597d83e2b65403db4e13a4e3a69aa2a",
"orderNumber": "038-701-ОК-160721-001",
"orderDate": "2021-07-16T12:52:52.000+03:00",
"startDate": "2021-07-16T12:54:13.000+03:00",
"rates": [
{
"ranges": [
{
"buy": 87.07,
"sell": 90.11,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
},
{
"buy": 86.87,
"sell": 90.31,
"lowerRange": 1000.0,
"upperRange": 9999.99
},
{
"buy": 86.44,
"sell": 90.74,
"lowerRange": 0,
"upperRange": 999.99
}
],
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 73.66,
"sell": 77.32,
"lowerRange": 0,
"upperRange": 999.99
},
{
"buy": 73.88,
"sell": 77.1,
"lowerRange": 1000.0,
"upperRange": 9999.99
},
{
"buy": 74.09,
"sell": 76.89,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
}
],
"personalSign": false
},
{
"rqUid": "383f9279187144afb71812007b090217",
"orderNumber": "038-007-ОК-220721-005",
"orderDate": "2021-07-22T13:12:34.000+03:00",
"startDate": "2021-07-22T13:13:25.000+03:00",
"rates": [
{
"ranges": [
{
"buy": 78.14,
"sell": 84.49,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "CHF",
"baseNumericCode": "756",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 87.59,
"sell": 104.99,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "HKD",
"baseNumericCode": "344",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 10.0
},
{
"ranges": [
{
"buy": 53.24,
"sell": 57.93,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "AUD",
"baseNumericCode": "036",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 40.59,
"sell": 46.49,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "SGD",
"baseNumericCode": "702",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 68.62,
"sell": 73.85,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "JPY",
"baseNumericCode": "392",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 100.0
},
{
"ranges": [
{
"buy": 10.86,
"sell": 12.08,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "DKK",
"baseNumericCode": "208",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 57.14,
"sell": 61.98,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "CAD",
"baseNumericCode": "124",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 68.89,
"sell": 74.33,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "SEK",
"baseNumericCode": "752",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 10.0
},
{
"ranges": [
{
"buy": 81.48,
"sell": 89.08,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "NOK",
"baseNumericCode": "578",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 10.0
},
{
"ranges": [
{
"buy": 10.69,
"sell": 12.47,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "CNY",
"baseNumericCode": "156",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
}
],
"personalSign": false
},
{
"rqUid": "0cd5443247ff4663b812059438f4610d",
"orderNumber": "038-701-ОК-190721-007",
"orderDate": "2021-07-19T15:24:39.000+03:00",
"startDate": "2021-07-19T15:26:07.000+03:00",
"rates": [
{
"ranges": [
{
"buy": 86.78,
"sell": 88.21,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
},
{
"buy": 86.15,
"sell": 88.84,
"lowerRange": 0,
"upperRange": 999.99
},
{
"buy": 86.58,
"sell": 88.41,
"lowerRange": 1000.0,
"upperRange": 9999.99
}
],
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 74.09,
"sell": 76.89,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
},
{
"buy": 73.88,
"sell": 77.1,
"lowerRange": 1000.0,
"upperRange": 9999.99
},
{
"buy": 73.66,
"sell": 77.32,
"lowerRange": 0,
"upperRange": 999.99
}
],
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
}
],
"personalSign": false
},
{
"rqUid": "b7c4a1f741834bd9950ec015320cee39",
"orderNumber": "038-701-ОК-150721-003",
"orderDate": "2021-07-15T14:47:26.000+03:00",
"startDate": "2021-07-15T14:48:48.000+03:00",
"rates": [
{
"ranges": [
{
"buy": 86.44,
"sell": 90.74,
"lowerRange": 0,
"upperRange": 999.99
},
{
"buy": 86.87,
"sell": 90.31,
"lowerRange": 1000.0,
"upperRange": 9999.99
},
{
"buy": 87.07,
"sell": 90.11,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 73.66,
"sell": 77.32,
"lowerRange": 0,
"upperRange": 999.99
},
{
"buy": 74.09,
"sell": 76.89,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
},
{
"buy": 73.88,
"sell": 77.1,
"lowerRange": 1000.0,
"upperRange": 9999.99
}
],
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
}
],
"personalSign": false
},
{
"rqUid": "1f40677f49e04a4fb48fb19913e11091",
"orderNumber": "038-701-ОК-260721-002",
"orderDate": "2021-07-26T12:28:45.000+03:00",
"startDate": "2021-07-26T12:30:04.000+03:00",
"rates": [
{
"ranges": [
{
"buy": 86.15,
"sell": 88.84,
"lowerRange": 0,
"upperRange": 999.99
},
{
"buy": 86.58,
"sell": 88.41,
"lowerRange": 1000.0,
"upperRange": 9999.99
},
{
"buy": 86.78,
"sell": 88.21,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "EUR",
"baseNumericCode": "978",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 73.88,
"sell": 77.1,
"lowerRange": 1000.0,
"upperRange": 9999.99
},
{
"buy": 74.09,
"sell": 76.89,
"lowerRange": 10000.0,
"upperRange": 9999999999.99
},
{
"buy": 73.66,
"sell": 77.32,
"lowerRange": 0,
"upperRange": 999.99
}
],
"baseAlphaCode": "USD",
"baseNumericCode": "840",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
}
],
"personalSign": false
},
{
"rqUid": "c94726e4bc8f4940aaa902a0edfb3ce8",
"orderNumber": "038-007-ОК-190721-005",
"orderDate": "2021-07-19T15:22:22.000+03:00",
"startDate": "2021-07-19T15:23:20.000+03:00",
"rates": [
{
"ranges": [
{
"buy": 78.14,
"sell": 84.49,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "CHF",
"baseNumericCode": "756",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 87.59,
"sell": 104.99,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "HKD",
"baseNumericCode": "344",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 10.0
},
{
"ranges": [
{
"buy": 53.24,
"sell": 57.93,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "AUD",
"baseNumericCode": "036",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 40.59,
"sell": 46.49,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "SGD",
"baseNumericCode": "702",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 68.62,
"sell": 73.85,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "JPY",
"baseNumericCode": "392",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 100.0
},
{
"ranges": [
{
"buy": 10.86,
"sell": 12.08,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "DKK",
"baseNumericCode": "208",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 57.14,
"sell": 61.98,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "CAD",
"baseNumericCode": "124",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 1
},
{
"ranges": [
{
"buy": 68.89,
"sell": 74.33,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "SEK",
"baseNumericCode": "752",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 10.0
},
{
"ranges": [
{
"buy": 81.48,
"sell": 89.08,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],
"baseAlphaCode": "NOK",
"baseNumericCode": "578",
"quoteAlphaCode": "RUB",
"quoteNumericCode": "643",
"lotSize": 10.0
},
{
"ranges": [
{
"buy": 10.69,
"sell": 12.47,
"lowerRange": 0,
"upperRange": 9999999999.99
}
],

 

 

 

 

 

 

 

содержание      ..      1      2      3      ..