API для работы с динамическими клиентами#

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

API позволяет:

  • генерировать software_statement;

  • получать список Initial Access Token (IAT) приложения;

  • создавать IAT;

  • удалять IAT.

Методы API вызываются через административные сервисы по адресу:

https://login.mos.ru/sps/admin/api/v3/app/{appId}/oauth/...

где {appId} — идентификатор приложения, для которого выполняется операция.

Внимание

Необходимо указать разрешения (scope) blitz_api_sys_app и blitz_api_sys_app_chg среди допустимых разрешений, которые имеет право запрашивать данное приложение.

Генерация software_statement#

Метод: PUT /sps/admin/api/v3/app/{appId}/oauth/softStm

Авторизация: Bearer {token}, где token — это маркер доступа вызывающей системы, содержащий разрешение blitz_api_sys_app_chg.

Тело запроса: в формате JSON. Поле softwareVersion - обязательное, поля redirectUris, tokenEndpointAuthMethod, grantTypes, responseTypes, scope - опциональные.

Пример

curl --location --request PUT 'https://login.mos.ru/sps/admin/api/v3/app/exampleApp/oauth/softStm' \
--header 'Authorization: Bearer eyJra...CQQ' \
--header 'Content-Type: application/json' \
--data-raw '{
   "softwareVersion": "1",
   "redirectUris": [
      "https://example.com/callback"
   ],
   "tokenEndpointAuthMethod": "client_secret_basic",
   "grantTypes": [
      "authorization_code"
   ],
   "responseTypes": [
      "code",
      "token"
   ],
   "scope": [
      "openid",
      "profile"
   ]
}'
Успех#
200 ОК

"eyJr...QJA"
Ошибка авторизации#
401 Unauthorized

{
   "type": "security_error",
   "error": "bad_access_token",
   "desc": "token_not_found"
}
Ошибка при указании некорректного идентификатора приложения#
404 Not Found

{
   "type": "process_error",
   "error": "client_not_found",
   "desc": "unknown client 'badAppId'"
}
Ошибки значений полей запроса#
400 Bad Request

{
   "type": "input_error",
   "error": "wrong_values",
   "errors": [
   {
         "type": "input_error",
         "error": "json.error.mandatory.field",
         "desc": "json.error.expected.string",
         "pos": "softwareVersion"
   },
   {
         "type": "input_error",
         "error": "json.error.expected.uri",
         "desc": "Illegal character in scheme name at index 0: а:ff",
         "pos": "redirectUris.[0]"
   },
      {
         "type": "input_error",
         "error": "wrong_value",
         "desc": "unexpected values [authorization_code1]",
         "pos": "grantTypes"
      },
      {
         "type": "input_error",
         "error": "wrong_value",
         "desc": "unexpected values [token1]",
         "pos": "responseTypes"
      },
      {
         "type": "input_error",
         "error": "wrong_value",
         "desc": "wrong value client_secret_basic1, expected some of [none,client_secret_basic,client_secret_post]",
         "pos": "tokenEndpointAuthMethod"
      },
      {
         "type": "input_error",
         "error": "wrong_value",
         "desc": "unexpected values [profile1]",
         "pos": "scope"
      }
   ]
}

Получение IAT токенов приложения#

Метод: GET /sps/admin/api/v3/app/{appId}/oauth/iat

Авторизация: Bearer {token}, где token — это маркер доступа вызывающей системы, содержащий разрешение blitz_api_sys_app.

Пример

curl --location --request GET 'https://login.mos.ru/sps/admin/api/v3/app/exampleApp/oauth/iat' \
--header 'Authorization: Bearer eyJra...qElQ' \
Успех#
200 ОК

[
   {
      "createdOn": 1769437759,
      "softwareVersion": "1",
      "softwareId": "exampleApp",
      "id": "ZYzL...mQ"
   }
]
Ошибка авторизации#
401 Unauthorized

{
   "type": "security_error",
   "error": "bad_access_token",
   "desc": "token_not_found"
}
Ошибка вызова с некорректным идентификатором приложения#
404 Not Found

{
   "type": "process_error",
   "error": "client_not_found",
   "desc": "unknown client 'badAppId'"
}

Создание IAT токена приложения#

Метод: PUT /sps/admin/api/v3/app/{appId}/oauth/iat

Авторизация: Bearer {token}, где token — это маркер доступа вызывающей системы, содержащий разрешение blitz_api_sys_app_chg.

Тело запроса: в формате JSON. Поле softwareVersion – обязательное.

Пример

curl --location --request PUT 'https://login.mos.ru/sps/admin/api/v3/app/exampleApp/oauth/iat' \
--header 'Authorization: Bearer eyJra...ElQ' \
--header 'Content-Type: application/json' \
--data-raw '{
   "softwareVersion": "1"
}'
Успех#
200 ОК

{
   "createdOn": 1769594410,
   "softwareVersion": "1",
   "softwareId": "exampleApp",
   "id": "GbhF...qw"
}
Ошибка авторизации#
401 Unauthorized

{
   "type": "security_error",
   "error": "bad_access_token",
   "desc": "token_not_found"
}
Ошибка вызова с некорректным идентификатором приложения#
404 Not Found

{
   "type": "process_error",
   "error": "client_not_found",
   "desc": "unknown client 'badAppId'"
}
Ошибки значений полей запроса#
400 Bad Request

{
   "type": "input_error",
   "error": "wrong_values",
   "errors": [
   {
         "type": "input_error",
         "error": "json.error.mandatory.field",
         "desc": "json.error.expected.string",
         "pos": "softwareVersion"
   }
   ]
}

Удаление IAT токена приложения#

Метод: DELETE /sps/admin/api/v3/app/{appId}/oauth/iat/{tokenId}

Авторизация: Bearer {token}, где token — это маркер доступа вызывающей системы, содержащий разрешение blitz_api_sys_app_chg.

Пример

curl --location --request DELETE 'https://login.mos.ru/sps/admin/api/v3/app/exampleApp/oauth/iat/SmCYp...aqw' \
--header 'Authorization: Bearer eyJra...ElQ'
Успех#
204 No Content
Ошибка авторизации#
401 Unauthorized

{
   "type": "security_error",
   "error": "bad_access_token",
   "desc": "token_not_found"
}
Ошибка вызова с некорректным идентификатором приложения#
404 Not Found

{
   "type": "process_error",
   "error": "client_not_found",
   "desc": "unknown client 'badAppId'"
}