Аутентификация

Для защиты от несанкционированного доступа к API перед подключением SmartMarket проверяет:

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

Чтобы подключить API:

  1. Получите ClientId и ClientSecret для смартапа.
  2. Добавьте сценарий получения access_token в сервис для вызова API.
  3. Добавьте access_token в сервис для вызова SmartPush API.

Шаг 1. Получите ClientId и ClientSecret

Запрос доступа

Чтобы получить ClientId и ClientSecret:

  1. Перейдите в SmartMarket Studio в личное пространство и нажмите кнопку Создать проект.
  2. Нажмите на проект SmartService и выберите SmartPush.
  3. Напишите обоснование, для чего вам доступ к сервису и нажмите кнопку Отправить на модерацию. Подробнее о заполнении заявки читайте в разделе Проект для SmartServices.

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

Генерация secret

После пройденной модерации в карточке с доступами отобразится раздел со следующими настройками:

  • client_id — значение отображается всегда;
  • scope — отображается список сервисов, к которым открыт доступ (SmartPush, SmartSpeech);
  • secret — отображается после нажатия кнопки Генерация secret.

Подробнее о доступах читайте в разделе Получение доступов к SmartPush. Чтобы получить ClientSecret, нажмите кнопку Генерация secret. Скопируйте значения и используйте их для дальнейшей работы с API SmartServices.

Шаг 2. Добавьте access_token в сервис API

На этом шаге необходимо добавить сценарий получения access_token в сервис вызова API.

Формат запроса


Параметры запроса

Поле Описание

Authorization

Обязательное

Авторизационные данные. Значения clientId и clientSecret кодируются в Base 64 и разделяются двоеточием: Ваsic <client_id>:<client_secret>

RqUID

Обязательное

Уникальный идентификатор запроса. Формируется по паттерну ([0-9][a-f][A-F]){32}). Для создания уникального идентификатора можно использовать стандартные библиотеки и классы для генерации UUID и GUID

scope

Обязательное

Значение сервиса — SMART_PUSH

curl --location --request POST 'https://salute.online.sberbank.ru:9443/api/v2/oauth' \
--header 'Authorization: Basic
ZTU2MjM2MjctYmI4Yy00MTJjLTk0Yjct232hNjk5OGU4ZWYzOjg4N2QxNWEyLWNiNGYtNDk5OC05NTkxLTViMjZkNjJkMzc1MQ==' \
--header 'RqUID: 6f0b1291-c7f3-43c6-bb2e-9f3efb2dc98e' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'scope=SMART_PUSH'

Пример запроса из SmartApp Framework

var response = $http.query(tokenUrl, {
method: "POST",
headers: {
'RqUID': reqId,
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + auth
},
form: {
scope: "SMART_PUSH"
},
dataType: "text"
});

Формат ответа


Поле Описание

access_token

Обязательное

Сгенерированный токен

expires_at

Обязательное

Время действия токена в секундах

{
"access_token": "eyJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwiYWxnIjoiUVAtMjU2In0",
"expires_at": 1617814516729
}

Пример ответа в случае ошибки 400

{
"code": "SCOPE_DATA_FORMAT_INVALID",
"message": "%s data format invalid"
}

Коды ошибок

Код Описание

400

Bad Request. Неправильный или некорректный запрос

401

Unauthorized. Не авторизован

500

Internal Server Error. Внутренняя ошибка сервера

Шаг 3. Добавьте access_token для вызова SmartPush

На этом шаге необходимо добавить access_token в сервис для вызова SmartPush.

Формат запроса


Параметры запроса


Поле Описание

authorization

Обязательное

Авторизационные данные. Необходимо передать access_token в формате: Вearer <access_token>

rquid

Обязательное

Уникальный идентификатор запроса. Формируется по паттерну ([0-9][a-f][A-F]){32}). Для создания уникального идентификатора можно использовать стандартные библиотеки и классы для генерации UUID и GUID

requestPayload

Обязательное

Тело запроса


Пример запроса

curl --location --request POST 'https://salute.online.sberbank.ru:9443/api/v2/smartpush/apprequest' \
--header 'Authorization: Bearer
eyJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwiYWxnIjoiUlNBLU9BRVAtMjU2In0.DCXAAnwXjmRleOrIJcXDWbQwsP5UGSptcY3x5XXRkYZm6x3QkDQBL63DKQZzwrwmtuFbKajq6ULHuQhsmGax-l_R6AhRkr7pWzJi1jpzCenq9PAN2UjF0BX_IiDRgmEExH6_2OtHaJ_7KbudukIOLEgxD9l8WcXFY992dgqLL6eK2nnnUvyfmr4ITc9PWuAFsMIO6jweNFw0e9vRYEDkAbnv9EGR-w9CGwfBsHNWZwZlo7fyu07fkSfmqmGdBvU4344344luNNrHwktSGOzNhpLhu0-0A3KI950vmp_37QY8isDi3epGU3HShdrBZkk70fdXxBKQA.MV2IksoyxTV_c-qm6hSXaQ.LUT4JqOzKqmFOR07-Asq7Fhqj_eYSTXcsJAK-JchmM1QUqhPLBXsUyXXh6ZcjsnN7Q0QXzuBlSjaBWekgWANDirI6HP_MsEM4FxfJAOh73aowC700cEQPPYAxzPYG0d4bOqsZh8Ss57lJB2VM7M6Y2FcG2hb5Q0i2zPskqSWxXejuCyr2uIlY7Fe4bu4NUqtCaKJVwqriVWLfbA0OzZyA0osDc42Ba0u1adFAdaZDCE.IlKOixP8hSUimEI2pdP118Tx0StZjcLdbSauE5R0YAA'
\
--header 'RqUID: 6f0b1291-c7f3-43c6-bb2e-9f3efb2dc98e' \
--header 'Content-Type: application/json' \
--data-raw '{
"requestPayload": {
}'

Формат ответа


Параметры ответа


Поле Описание

requestId

Идентификатор запроса, переданный клиентом

responseId

Идентификатор ответа сервера

timeStamp

Время формирования ответа сервиса

payload

Тело ответа


Пример ответа

{
"requestId": "a5ac95c6-8997-4326-abe0-159ee39dd041",
"responseId": "7e0ee6d2-4d0f-49fd-ae34-f5717a36c05e",
"timestamp": "2021-04-07T16:08:18.092759Z",
"payload": {
}
}

Пример ответа в случае ошибки

{
"requestId": "47a59d87-d30e-4737-8dde-6b6241f374c9",
"responseId": "d21b38c2-7438-4dea-b4b1-0c518e4b00c7",
"timestamp": "2021-04-07T16:54:51.128095Z",
"code": 401,
"errors": [
{
"key": "UNAUTHORIZED",
"message": "Invalid JWE claim: 'exp', token expired."
}
]
}

Коды ошибок

Код Описание

400

Bad Request. Неправильный или некорректный запрос

401

Unauthorized. Не авторизован

500

Internal Server Error. Внутренняя ошибка сервера

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней