Запрос котировок — сценарий
Сценарий демонстрирует ситуацию запроса и получения конкурентоспособных котировок для последующего обмена Активами между Участниками. Применяется до инициализации Расчёта на условиях DvP, когда Участнику требуется пополнить остатки Активов, продать Актив другим Участникам или купить Актив, необходимый для исполнения клиентского Кредитового перевода.
Шаг 1. Создать запрос котировок
Финансовому учреждению-отправителю необходимо определить условия для Запроса котировок requestQuotation: максимальное и минимальное количество единиц Котируемого актива, которое Участник готов купить в рамках одной транзакции, сведения о Базовом активе и Котируемом активе и время окончания действия Запроса котировок. После этого Участнику ОФУ требуется сформировать полезную нагрузку и передать её в объекте requestQuotation
через конечную точку /exchange/quotations/request, в ответ TKEY7 отправит квитанцию об успешном Запросе котировок requestQuotationResult, содержащую уникальный идентификатор Запроса котировок, по которому Участник будет отслеживать и получать Котировки от других Участников. Ответить на Запрос котировок смогут Участники, включённые в Разрешённый список, и с которыми установлена Кредитная линия по Активам.
Пример запроса
{"method": "POST","url": "https://ru.bluebank.payments.tkey7.com/client/v1/api/exchange/quotations/request","headers": {"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjYyODkwNDEzNWIyZDgzOWVjZWU1NjU5OCJ9.eyJ2cnNuIjoiMS4wLjAiLCJlbnYiOiJwcm9kIiwiaXAiOlsiMjUxLjI2LjEwOC4xNjMiLCI2Mi4yMDMuMTU2LjIyOCIsIjIxLjQ0LjIwLjIyNyIsIjE0OC4zNC4yMjUuMTUwIiwiMTU4LjE4Ni4yMDAuMTQwIl0sImFjY3QiOlsiZW1pc3Npb24iLCJtYWluIiwicmVzZXJ2ZSIsImRpc3RyaWJ1dGlvbiIsImNvbnNvbGlkYXRlIiwiY2hlY2tpbmciXSwiZW5kcHQiOlsiL2NsaWVudC92MS9hcGkvYmFsYW5jZXMvZGlnaXRhbC1hY2NvdW50cyIsIi9jbGllbnQvdjEvYXBpL2NoYXJnZXMvcmVxdWVzdCIsIi9jbGllbnQvdjEvYXBpL2NoYXJnZXMvcmVzcG9uc2UiLCIvY2xpZW50L3YxL2FwaS9kaWdpdGFsLWFjY291bnRzIiwiL2NsaWVudC92MS9hcGkvZXhjaGFuZ2UiLCIvY2xpZW50L3YxL2FwaS9leGNoYW5nZS9xdW90YXRpb25zIiwiL2NsaWVudC92MS9hcGkvZXhjaGFuZ2UvcXVvdGF0aW9ucy9yZXF1ZXN0IiwiL2NsaWVudC92MS9hcGkvZ2F0ZXdheS9tZXNzYWdlcyIsIi9jbGllbnQvdjEvYXBpL21lbWJlcnMiLCIvY2xpZW50L3YxL2FwaS9wYXltZW50LXBvaW50cyIsIi9jbGllbnQvdjEvYXBpL3BheW1lbnRzL21lc3NhZ2UvcmVkZWVtIiwiL2NsaWVudC92MS9hcGkvcGF5bWVudHMvbWVzc2FnZS9yZXBseSIsIi9jbGllbnQvdjEvYXBpL3BheW1lbnRzL21lc3NhZ2Uvc2VuZCIsIi9jbGllbnQvdjEvYXBpL3NldHRsZW1lbnQtaW5zdHJ1bWVudHMiLCIvY2xpZW50L3YxL2FwaS9zZXR0bGVtZW50LWluc3RydW1lbnRzL2RpZ2l0YWwtYWNjb3VudHMiLCIvY2xpZW50L3YxL2FwaS9zZXR0bGVtZW50LWluc3RydW1lbnRzL21lbWJlcnMiLCIvY2xpZW50L3YxL2FwaS9zZXR0bGVtZW50LW9ibGlnYXRpb25zIiwiL2NsaWVudC92MS9hcGkvc2lnbi9tZXNzYWdlIiwiL2NsaWVudC92MS9hcGkvc2lnbi9wYXlsb2FkIiwiL2NsaWVudC92MS9hcGkvdHJhbnNhY3Rpb25zIl0sImNudCI6MCwiaWF0IjoxNjU4MzkxNDA2LCJuYmYiOjE2NTgzOTE0MDksImV4cCI6MTY1ODQ3NzgwNiwiYXVkIjoiYmx1ZWJhbmsiLCJzdWIiOiItTjJfd2FQQkd2OXJuYmRfUmx1TiIsImp0aSI6IlFLNDN1RDF4Um5EOU1helpkdGF5eWVyMXZEIn0.lhEP1ZyYKgfC8UWnYloULUw00nEL0dxFSm_1WGHVxj0"},"body": {"base_asset_info": {"asset_code_identification": "USD",
Шаг 2. Извлечь запрос котировок
TKEY7 получит Запрос котировок от Участника ОФУ, и сделает запрос доступным для Участника ПФУ через Шлюзовую службу сообщений Kafka. Финансовому учреждению-получателю необходимо сделать вызов в конечную точку /gateway/messages с аргументом quotations
, чтобы извлечь ожидающий ответа Запрос котировок.
Пример ответа
{"response_data": [{"base_asset_info": {"asset_code_identification": "USD","asset_group_identification": "DSA","asset_issuer_identification": "bluebank"},"buyer_member_identification": "bluebank",
Шаг 3. Отправить котировку
Финансовому учреждению-получателю необходимо принять решение о предоставлении Котировки, в случае принятия положительного решения Участнику ПФУ требуется сформировать условия Котировки для обмена quotationInfo: обменный курс между Базовым и Котируемым активом, максимальное и минимальное количество единиц Котируемого актива, которое ПФУ готов продать, и также время начала и окончания действия Котировки. После этого Участнику ПФУ необходимо закодировать данные объекта quotationInfo
в base64, а затем сделать вызов в конечную точку /sign/payload для подписания полезной нагрузки quotationInfo
, в ответ Участник ПФУ получит подпись объекта, необходимую для отправки Запроса котировок. Для завершения публикации Котировки Участнику ПФУ требуется сформировать полезную нагрузку quotationObject и передать в конечную точку /exchange/quotation/request/{quotation_uuid}, где quotation_uuid
— уникальный идентификатор котировки, который формируется из request_uuid
идентификатора Запроса котировок ОФУ и идентификатора Участника ПФУ member_identification
. Пример: 844349a6-fd5c-4fbc-9062-f1a6583d95be-sellerBankName
. В ответ TKEY7 вернёт подтверждение об успешной отправке Котировки.
Пример запроса на подпись
{"method": "POST","url": "https://ch.greenbank.payments.tkey7.com/client/v1/api/sign/payload","headers": {"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjYyODkwNjA1NGE0YmUzNzg1MzU4M2FjYiJ9.eyJ2cnNuIjoiMS4wLjAiLCJlbnYiOiJwcm9kIiwiaXAiOlsiMTAxLjEwMy4yMjEuMjI0IiwiMjMzLjc5LjEyOS4zOSIsIjExNS4xNy4yMTMuMjgiXSwiYWNjdCI6WyJlbWlzc2lvbiIsIm1haW4iLCJzZXR0bGVtZW50Iiwib3BlcmF0aW5nIl0sImVuZHB0IjpbIi9jbGllbnQvdjEvYXBpL2JhbGFuY2VzL2RpZ2l0YWwtYWNjb3VudHMiLCIvY2xpZW50L3YxL2FwaS9jaGFyZ2VzL3JlcXVlc3QiLCIvY2xpZW50L3YxL2FwaS9jaGFyZ2VzL3Jlc3BvbnNlIiwiL2NsaWVudC92MS9hcGkvZGlnaXRhbC1hY2NvdW50cyIsIi9jbGllbnQvdjEvYXBpL2V4Y2hhbmdlIiwiL2NsaWVudC92MS9hcGkvZXhjaGFuZ2UvcXVvdGF0aW9ucyIsIi9jbGllbnQvdjEvYXBpL2V4Y2hhbmdlL3F1b3RhdGlvbnMvcmVxdWVzdCIsIi9jbGllbnQvdjEvYXBpL2dhdGV3YXkvbWVzc2FnZXMiLCIvY2xpZW50L3YxL2FwaS9tZW1iZXJzIiwiL2NsaWVudC92MS9hcGkvcGF5bWVudC1wb2ludHMiLCIvY2xpZW50L3YxL2FwaS9wYXltZW50cy9tZXNzYWdlL3JlZGVlbSIsIi9jbGllbnQvdjEvYXBpL3BheW1lbnRzL21lc3NhZ2UvcmVwbHkiLCIvY2xpZW50L3YxL2FwaS9wYXltZW50cy9tZXNzYWdlL3NlbmQiLCIvY2xpZW50L3YxL2FwaS9zZXR0bGVtZW50LWluc3RydW1lbnRzIiwiL2NsaWVudC92MS9hcGkvc2V0dGxlbWVudC1pbnN0cnVtZW50cy9kaWdpdGFsLWFjY291bnRzIiwiL2NsaWVudC92MS9hcGkvc2V0dGxlbWVudC1pbnN0cnVtZW50cy9tZW1iZXJzIiwiL2NsaWVudC92MS9hcGkvc2V0dGxlbWVudC1vYmxpZ2F0aW9ucyIsIi9jbGllbnQvdjEvYXBpL3NpZ24vbWVzc2FnZSIsIi9jbGllbnQvdjEvYXBpL3NpZ24vcGF5bG9hZCIsIi9jbGllbnQvdjEvYXBpL3RyYW5zYWN0aW9ucyJdLCJjbnQiOjEsImlhdCI6MTY1ODM5NzEwNywibmJmIjoxNjU4Mzk3MTExLCJleHAiOjE2NTgzOTgwMDYsImF1ZCI6ImdyZWVuYmFuayIsInN1YiI6Ii1OMl9WOVdGY2lLNXFMQ2dWTG9BIiwianRpIjoiWFpZWDBGVTFHU1pXUWg0OHpjQlJ1QUMyb3QifQ.EbpXxGaJUVI3hIZ0uIDG3bIIbWJ7JT5va6yRiHkfaMc"},"body": {"end_time": "1658395887","foreign_exchange_rate": "0.9698534",
Пример запроса
{"method": "POST","url": "https://ch.greenbank.payments.tkey7.com/client/v1/api/exchange/quotations/133a1727-0de2-4b06-ba98-bc9ba38d05c1-greenbank","headers": {"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjYyODkwNjA1NGE0YmUzNzg1MzU4M2FjYiJ9.eyJ2cnNuIjoiMS4wLjAiLCJlbnYiOiJwcm9kIiwiaXAiOlsiMTAxLjEwMy4yMjEuMjI0IiwiMjMzLjc5LjEyOS4zOSIsIjExNS4xNy4yMTMuMjgiXSwiYWNjdCI6WyJlbWlzc2lvbiIsIm1haW4iLCJzZXR0bGVtZW50Iiwib3BlcmF0aW5nIl0sImVuZHB0IjpbIi9jbGllbnQvdjEvYXBpL2JhbGFuY2VzL2RpZ2l0YWwtYWNjb3VudHMiLCIvY2xpZW50L3YxL2FwaS9jaGFyZ2VzL3JlcXVlc3QiLCIvY2xpZW50L3YxL2FwaS9jaGFyZ2VzL3Jlc3BvbnNlIiwiL2NsaWVudC92MS9hcGkvZGlnaXRhbC1hY2NvdW50cyIsIi9jbGllbnQvdjEvYXBpL2V4Y2hhbmdlIiwiL2NsaWVudC92MS9hcGkvZXhjaGFuZ2UvcXVvdGF0aW9ucyIsIi9jbGllbnQvdjEvYXBpL2V4Y2hhbmdlL3F1b3RhdGlvbnMvcmVxdWVzdCIsIi9jbGllbnQvdjEvYXBpL2dhdGV3YXkvbWVzc2FnZXMiLCIvY2xpZW50L3YxL2FwaS9tZW1iZXJzIiwiL2NsaWVudC92MS9hcGkvcGF5bWVudC1wb2ludHMiLCIvY2xpZW50L3YxL2FwaS9wYXltZW50cy9tZXNzYWdlL3JlZGVlbSIsIi9jbGllbnQvdjEvYXBpL3BheW1lbnRzL21lc3NhZ2UvcmVwbHkiLCIvY2xpZW50L3YxL2FwaS9wYXltZW50cy9tZXNzYWdlL3NlbmQiLCIvY2xpZW50L3YxL2FwaS9zZXR0bGVtZW50LWluc3RydW1lbnRzIiwiL2NsaWVudC92MS9hcGkvc2V0dGxlbWVudC1pbnN0cnVtZW50cy9kaWdpdGFsLWFjY291bnRzIiwiL2NsaWVudC92MS9hcGkvc2V0dGxlbWVudC1pbnN0cnVtZW50cy9tZW1iZXJzIiwiL2NsaWVudC92MS9hcGkvc2V0dGxlbWVudC1vYmxpZ2F0aW9ucyIsIi9jbGllbnQvdjEvYXBpL3NpZ24vbWVzc2FnZSIsIi9jbGllbnQvdjEvYXBpL3NpZ24vcGF5bG9hZCIsIi9jbGllbnQvdjEvYXBpL3RyYW5zYWN0aW9ucyJdLCJjbnQiOjEsImlhdCI6MTY1ODM5NzEwNywibmJmIjoxNjU4Mzk3MTExLCJleHAiOjE2NTgzOTgwMDYsImF1ZCI6ImdyZWVuYmFuayIsInN1YiI6Ii1OMl9WOVdGY2lLNXFMQ2dWTG9BIiwianRpIjoiWFpZWDBGVTFHU1pXUWg0OHpjQlJ1QUMyb3QifQ.EbpXxGaJUVI3hIZ0uIDG3bIIbWJ7JT5va6yRiHkfaMc"},"body": {"quotation_payload": "eyJlbmRfdGltZSI6IjE2NTgzOTU4ODciLCJmb3JlaWduX2V4Y2hhbmdlX3JhdGUiOiIwLjk2OTg1MzQiLCJtYXhpbXVtX2Ftb3VudF9saW1pdCI6IjM1MDAiLCJxdW90YXRpb25fdXVpZCI6IjEzM2ExNzI3LTBkZTItNGIwNi1iYTk4LWJjOWJhMzhkMDVjMS1ncmVlbmJhbmsiLCJyZXF1ZXN0X3F1b3RhdGlvbiI6eyJiYXNlX2Fzc2V0X2luZm8iOnsiYXNzZXRfY29kZV9pZGVudGlmaWNhdGlvbiI6IlVTRCIsImFzc2V0X2dyb3VwX2lkZW50aWZpY2F0aW9uIjoiRFNBIiwiYXNzZXRfaXNzdWVyX2lkZW50aWZpY2F0aW9uIjoiYmx1ZWJhbmsifSwiYnV5ZXJfbWVtYmVyX2lkZW50aWZpY2F0aW9uIjoiYmx1ZWJhbmsiLCJtYXhpbXVtX2Ftb3VudF9saW1pdCI6NTAwMCwibWluaW11bV9hbW91bnRfbGltaXQiOjEwMDAsInF1b3RlX2Fzc2V0X2luZm8iOnsiYXNzZXRfY29kZV9pZGVudGlmaWNhdGlvbiI6IkNIRiIsImFzc2V0X2dyb3VwX2lkZW50aWZpY2F0aW9uIjoiRFNBIiwiYXNzZXRfaXNzdWVyX2lkZW50aWZpY2F0aW9uIjoiZ3JlZW5iYW5rIn0sInRpbWVfZW5kX3JlcXVlc3RfcXVvdGF0aW9uIjoxNjU4Mzk4Nzg3fSwic2VsbGVyX2NyZWRpdGluZ19hY2NvdW50X2lkZW50aWZpY2F0aW9uIjoic2V0dGxlbWVudCIsInNlbGxlcl9kZWJpdGluZ19hY2NvdW50X2lkZW50aWZpY2F0aW9uIjoibWFpbiIsInNlbGxlcl9tZW1iZXJfaWRlbnRpZmljYXRpb24iOiJncmVlbmJhbmsiLCJzdGFydF90aW1lIjoiMTY1ODM5MDQ4NyJ9","member_signature": "TZwddboeeLH+3GEFmduCvBTbh7C1pey2WsqwKexr7oweckkiKY028qDZGP9oJPXggEwXkP70zUSh0kOEFKetDA=="
Шаг 4. Извлечь котировку
TKEY7 получит ответ на Запрос котировок от Участника ПФУ, и сделает ответ доступным для Участника ОФУ через Шлюзовую службу сообщений Kafka. Финансовому учреждению-отправителю необходимо сделать вызов в конечную точку /gateway/messages с аргументом quotations
, чтобы извлечь Котировку. На этом шаге Участник ОФУ может принять дальнейшее решение об обмене Активами, в случае принятия положительного решения, Участнику ОФУ требуется действовать в соответствии с условиями Котировки, чтобы завершить обмен Активами, см. сценарий: Расчёт на условиях DvP.
Пример ответа
{"response_data": [{"quotation_payload": "eyJlbmRfdGltZSI6IjE2NTgzOTU4ODciLCJmb3JlaWduX2V4Y2hhbmdlX3JhdGUiOiIwLjk2OTg1MzQiLCJtYXhpbXVtX2Ftb3VudF9saW1pdCI6IjM1MDAiLCJxdW90YXRpb25fdXVpZCI6IjEzM2ExNzI3LTBkZTItNGIwNi1iYTk4LWJjOWJhMzhkMDVjMS1ncmVlbmJhbmsiLCJyZXF1ZXN0X3F1b3RhdGlvbiI6eyJiYXNlX2Fzc2V0X2luZm8iOnsiYXNzZXRfY29kZV9pZGVudGlmaWNhdGlvbiI6IlVTRCIsImFzc2V0X2dyb3VwX2lkZW50aWZpY2F0aW9uIjoiRFNBIiwiYXNzZXRfaXNzdWVyX2lkZW50aWZpY2F0aW9uIjoiYmx1ZWJhbmsifSwiYnV5ZXJfbWVtYmVyX2lkZW50aWZpY2F0aW9uIjoiYmx1ZWJhbmsiLCJtYXhpbXVtX2Ftb3VudF9saW1pdCI6NTAwMCwibWluaW11bV9hbW91bnRfbGltaXQiOjEwMDAsInF1b3RlX2Fzc2V0X2luZm8iOnsiYXNzZXRfY29kZV9pZGVudGlmaWNhdGlvbiI6IkNIRiIsImFzc2V0X2dyb3VwX2lkZW50aWZpY2F0aW9uIjoiRFNBIiwiYXNzZXRfaXNzdWVyX2lkZW50aWZpY2F0aW9uIjoiZ3JlZW5iYW5rIn0sInRpbWVfZW5kX3JlcXVlc3RfcXVvdGF0aW9uIjoxNjU4Mzk4Nzg3fSwic2VsbGVyX2NyZWRpdGluZ19hY2NvdW50X2lkZW50aWZpY2F0aW9uIjoic2V0dGxlbWVudCIsInNlbGxlcl9kZWJpdGluZ19hY2NvdW50X2lkZW50aWZpY2F0aW9uIjoibWFpbiIsInNlbGxlcl9tZW1iZXJfaWRlbnRpZmljYXRpb24iOiJncmVlbmJhbmsiLCJzdGFydF90aW1lIjoiMTY1ODM5MDQ4NyJ9","member_signature": "TZwddboeeLH+3GEFmduCvBTbh7C1pey2WsqwKexr7oweckkiKY028qDZGP9oJPXggEwXkP70zUSh0kOEFKetDA=="}],"topic_name": "quotations"}
Ответы на вопросы
- Отмена Котировки проводится до принятия Котировки Участником ОФУ через конечную точку DELETE /exchange/quotations, если ОФУ принял Котировку, отменить её невозможно.
- Основная причина, почему не приходят ответы на Запрос котировок — отсутствие Участника в Разрешённом списке, поскольку ответить на Запрос котировок могут только Участники, включённые в Разрешённый список. Вместе с тем Участники могут не предоставлять Котировку, если не желают обменивать Активы.