Регистрация#
PUT https://login.company.com/blitz/reg/api/v3/users
Регистрация учетной записи пользователя.
Необходимые разрешения: blitz_api_sys_users_reg
.
Для отправки письма на английском языке укажите заголовок Accept-Language: en
(актуально только для версии v3
).
Атрибуты регистрируемой учетной записи:
first_name
– фамилия;name
– имя;middle_name
– отчество;phone_number
– номер мобильного телефона в виде составного объекта с атрибутами:value
– номер телефона в формате 7XXXXXXXXXX;verified
– признак, что телефон подтвержден –true
илиfalse
;
email
– адрес электронной почты в виде составного объекта с атрибутами:value
– адрес электронной почты;verified
– признак, что адрес подтвержден –true
илиfalse
;
Опциональный блок.
password
– пароль для создаваемой учетной записи пользователя (должен соответствовать настроенной парольной политике).
Опциональный блок.
Действия, выполняемые после регистрации учетной записи:
bindDynClient
- после регистрации учетной записи необходимо ассоциировать с ней ранее выпущенный свободный динамическийclient_id
экземпляра мобильного приложения.Используется при регистрации пользователя из мобильного приложения.
Параметры:
type
– имя действия. Должно быть передано значениеbindDynClient
;client_id
– значение, содержащее динамическийclient_id
.
"actions": [ { "type": "bindDynClient", "client_id": "dyn~test_app~af…59" } ]
Примеры
Регистрация с подтвержденным email и телефоном
PUT /blitz/reg/api/v3/users HTTP/1.1
Authorization: Bearer cNw…Nz
Content-Type: application/json
{
"user": {
"attrs": {
"sub": "BIP-9TZYWXQ",
"family_name": "Иванов",
"given_name": "Иван",
"middle_name": "Иванович",
"email": {
"value": "ivan.ivanov@example.com",
"verified": true
},
"phone_number": {
"value": "79991234567",
"verified": true
}
},
"credentials": {
"password": "Qwerty_123"
}
}
}
{
"instanceId": "Yml…Yw",
"subject": "BIP-9TZYWXQ",
"context": "M0F…pQ",
"cookies": [
{
"name": "css",
"value": "cp0…1o"
}
],
"instructions": []
}
{
"errors": [
{
"errMsg": "Пароль не соответствует парольным политикам: длина менее 8 символов, не содержит цифру, прописную букву, специальный символ.",
"field": "password"
}
],
"context": ""
}
{
"errors": [
{
"errMsg": "Пользователь с таким значением уже зарегистрирован. Для дальнейшей регистрации введите другое значение",
"field": "phone_number"
},
{
"errMsg": "Пользователь с таким значением уже зарегистрирован. Для дальнейшей регистрации введите другое значение",
"field": "email"
},
{
"errMsg": "Пользователь с таким значением уже зарегистрирован. Для дальнейшей регистрации введите другое значение",
"field": "sub"
}
],
"context": ""
}
Регистрация с неподтвержденными email и телефоном
PUT /blitz/reg/api/v3/users HTTP/1.1
Authorization: Bearer cNw…Nz
Content-Type: application/json
{
"user": {
"attrs": {
"sub": "BIP-1TZYWXQ",
"family_name": "Иванов",
"given_name": "Иван",
"middle_name": "Иванович",
"email": {
"value": "ivan.ivanov@example.com",
"verified": false
},
"phone_number": {
"value": "79991234567",
"verified": false
}
},
"credentials": {
"password": "Qwerty_123"
}
}
}
Если регистрация вызвана с передачей неподтвержденных телефона и/или email, то сервис отправит пользователю проверочный SMS с кодом подтверждения и/или email с кодом подтверждения и вернет сервисные атрибуты instructions
и context
.
Ответ, когда требуется ввод пользователем проверочных кодов:
{
"context": "NIi…qQ",
"instructions": [
{
"mobile": "+79991234567",
"exp": 1690444604,
"attemts": 3,
"name": "mbl-enter-code"
},
{
"email": "ivan.ivanov@example.com",
"exp": 1690644970,
"attemts": 3,
"name": "eml-enter-code"
}
]
}
Сервис регистрации может быть настроен так, что регистрация пользователя производится сразу, а контакты в учетную запись прописываются после подтверждения, в этом случае сервис регистрации вернет параметры зарегистрированной учетной записи (instanceId
, subject
, cookies
), а также инструкции для опционального подтверждения контактов в учетной записи:
{
"instanceId": "Yml…Yw",
"subject": "BIP-1TZYWXQ",
"context": "NIi…qQ",
"cookies": [
{
"name": "css",
"value": "t8_…84"
}
],
"instructions": [
{
"mobile": "+79991234567",
"exp": 1690444604,
"attemts": 3,
"name": "mbl-enter-code"
},
{
"email": "ivan.ivanov@example.com",
"exp": 1690644970,
"attemts": 3,
"name": "eml-enter-code"
}
]
}
При получении в ответе №1 инструкций eml-enter-code
и/или mbl-enter-code
нужно запросить у пользователя ввод кода подтверждения, отправленного на email и на мобильный телефон. После ввода каждого кода вызвать сервис для подтверждения контакта, указанного при регистрации, передав в URL запроса значение из параметра context
, а в теле запроса – введенный пользователем код подтверждения:
POST /blitz/reg/api/v3/users/YNx9…Dw HTTP/1.1
Authorization: Bearer cNw…Nz
Content-Type: application/json
{
"email_code":"269302"
}
{
"instructions": [
{
"email":"mail123@example.com",
"exp":1655283696,
"attemts":2,
"name":"eml-try-again"},
{
"mobile":"79988984169",
"exp":1655280756,
"attemts":3,
"name":"mbl-try-again"
}
],
"context":"kE6r…7g"
}
{
"instructions": [
{
"email":"mail123@example.com",
"name":"eml-expired"
},
{
"mobile":"79988984169",
"exp":1655280756,
"attemts":3,"name":"mbl-try-again"
}
],
"context":"kE6r…7g"
}
POST /blitz/reg/api/v3/users/YNx9…Dw HTTP/1.1
Authorization: Bearer cNw…Nz
Content-Type: application/json
{
"email_code_resend":"123456"
}
В случае если email успешно подтвержден, и осталось подтвердить телефон, то в ответе сервиса исчезнет инструкция про подтверждение email, и останется только инструкция про телефон:
{
"instructions": [
{
"mobile":"79988984169",
"exp":1655280756,
"attemts":3,
"name":"mbl-try-again"
}
],
"context":"kE6r…7g"
}
POST /blitz/reg/api/v3/users/YNx9…Dw HTTP/1.1
Authorization: Bearer cNw…Nz
Content-Type: application/json
{
"sms_code":"953568"
}
{
"instructions": [
{
"email":"mail123@example.com",
"exp":1655283696,
"attemts":2,
"name":"eml-try-again"},
{
"mobile":"79988984169",
"exp":1655280756,
"attemts":3,
"name":"mbl-try-again"
}
],
"context":"kE6r…7g"
}
{
"instructions": [
{
"mobile":"79988984169",
"name":"mbl-expired"
}
],
"context":"kE6r…7g"
}
{
"instructions": [
{
"mobile":"79988984169",
"name":"mbl-no-attempts"
}
],
"context":"kE6r…7g"
}
POST /blitz/reg/api/v3/users/YNx9…Dw HTTP/1.1
Authorization: Bearer cNw…Nz
Content-Type: application/json
{
"sms_code_resend":"123456"
}
Если все контакты были подтверждены в процессе регистрации, то в результате вызова сервиса в Blitz Identity Provider будет зарегистрирована учетная запись пользователя с предоставленными атрибутами и паролем. Сервис вернет присвоенный учетной записи идентификатор пользователя (subject
). Кроме того, вернется ряд сервисных атрибутов (instructions, cookies
и context
).
{
"instanceId": "Yml…Yw",
"subject": "BIP-1TZYWXQ",
"context": "NIi…qQ",
"cookies": [
{
"name": "css",
"value": "t8_…84"
}
],
"instructions": []
}
Регистрация может завершиться ошибкой. Тогда в теле ответа будет пояснение проблемы. В частности, если в Blitz Identity Provider нарушена уникальность атрибута, то сообщение будет содержать перечень полей, по которым нарушена уникальность.
{
"errors": [
{
"errMsg": "Такой пользователь уже зарегистрирован…",
"field": "email"
},
{
"errMsg": "Такой пользователь уже зарегистрирован…",
"field": "phone_number"
}
],
"context": ""
}
Регистрация с подтвержденными email и телефоном с передачей динамического client_id
PUT /blitz/reg/api/v3/users HTTP/1.1
Authorization: Bearer cNw…Nz
Content-Type: application/json
{
"user": {
"attrs": {
"sub": "BIP-9TZYWXQ",
"family_name": "Иванов",
"given_name": "Иван",
"middle_name": "Иванович",
"email": {
"value": "ivan.ivanov@example.com",
"verified": true
},
"phone_number": {
"value": "79991234567",
"verified": true
}
},
"credentials": {
"password": "Qwerty_123"
}
},
"actions": [
{
"type": "bindDynClient",
"client_id": "dyn~test-app~c84f26f3-10f3-4b85-a6ee-a4ca12c41d26"
}
]
}
Регистрация на английском языке
curl -v --location --request PUT 'https://demo.identityblitz.com/blitz/reg/api/v3/users' \
--header 'Content-Type: application/json' \
--header 'Accept-Language: en' \
--header 'Authorization: Bearer ...' \
--data-raw '{
"user": {
"attrs": {
"sub": "username",
"phone_number": {
"value": "89101234567",
"verified": false
}
},
"credentials": {
"password": "Qwerty_123"
}
}
}'