Регистрация#

Метод

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, а в теле запроса – введенный пользователем код подтверждения:

Запрос на подтверждение email#
POST /blitz/reg/api/v3/users/YNx9…Dw HTTP/1.1
Authorization: Bearer cNw…Nz
Content-Type: application/json

{
    "email_code":"269302"
}
Ответ, если введен неправильный код из email#
{
    "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"
}
Ответ, если истек срок действия или превышено число попыток (будет общая ошибка eml-expired)#
{
    "instructions": [
        {
            "email":"mail123@example.com",
            "name":"eml-expired"
        },
        {
            "mobile":"79988984169",
            "exp":1655280756,
            "attemts":3,"name":"mbl-try-again"
        }
    ],
    "context":"kE6r…7g"
}
Запрос для инициирования повторной отправки кода по email (в качестве значения параметра указать любой код)#
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, и останется только инструкция про телефон:

Ответ, если 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"
}
Запрос для инициирования повторной отправки кода по SMS (в качестве значения параметра указать любой код)#
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"
        }
    }

}'