6.1 KiB
API для разработчиков: Регистрация пользователя
Этот файл описывает раздел API, связанный с проверкой наличия пользователя на сервере и dev/test операциями.
Сейчас здесь три метода:
AddUser— операция отключена (регистрация только через Solana);GetUser— временная серверная проверка существования пользователя и чтение его базовых данных;SearchUsers— dev/test поиск логинов по префиксу.
Регистрация выполняется через Solana (shine_users). Сервер при входе может лениво импортировать пользователя из Solana PDA в локальную БД, если записи ещё нет.
Статус документа
Это временная глава API.
Текущая регистрация пользователя и текущая проверка, существует пользователь или нет, пока реализованы как серверные dev/test операции. В будущем и регистрация, и проверка identity должны идти напрямую через Solana.
1. Операция AddUser
Назначение
Операция отключена. Используется только как явный ответ клиентам старых версий.
Запрос
{
"op": "AddUser",
"requestId": "reg-001",
"payload": {
"login": "anya",
"blockchainName": "anya-001",
"solanaKey": "BASE64_32_PUBLIC_KEY",
"blockchainKey": "BASE64_32_PUBLIC_KEY",
"clientKey": "BASE64_32_PUBLIC_KEY",
"bchLimit": 1000000
}
}
Пример ответа
{
"op": "AddUser",
"requestId": "reg-001",
"status": 410,
"ok": false,
"error": "ADD_USER_DISABLED",
"message": "Серверная регистрация AddUser отключена. Используйте регистрацию через Solana.",
"payload": {
}
}
Специфические коды ошибок AddUser
410 / ADD_USER_DISABLED— серверная регистрация отключена, используйте Solana-first flow.
2. Операция GetUser
Назначение
Временная серверная проверка, существует пользователь или нет.
Важно:
- это server-side existence-check;
- если пользователя нет в локальной БД, он может быть импортирован при авторизации из Solana PDA.
Запрос
{
"op": "GetUser",
"requestId": "user-001",
"payload": {
"login": "anya"
}
}
Успешный ответ: пользователь существует
{
"op": "GetUser",
"requestId": "user-001",
"status": 200,
"ok": true,
"payload": {
"exists": true,
"login": "Anya",
"blockchainName": "anya-001",
"solanaKey": "BASE64_32_PUBLIC_KEY",
"blockchainKey": "BASE64_32_PUBLIC_KEY",
"clientKey": "BASE64_32_PUBLIC_KEY",
"serverLastGlobalNumber": 128,
"serverLastGlobalHash": "4f...ab",
"serverBlockchainSizeBytes": 45212,
"serverBlockchainSizeLimitBytes": 100000
}
}
Дополнительные серверные поля в GetUser:
serverLastGlobalNumber— номер последнего блока в пользовательском блокчейне на сервере;serverLastGlobalHash— hash последнего блока (hex-строка 64 символа);serverBlockchainSizeBytes— текущий размер пользовательского блокчейна на сервере в байтах;serverBlockchainSizeLimitBytes— текущий лимит размера блокчейна на сервере в байтах;
Успешный ответ: пользователя нет
{
"op": "GetUser",
"requestId": "user-001",
"status": 200,
"ok": true,
"payload": {
"exists": false
}
}
Пример ошибки
{
"op": "GetUser",
"requestId": "user-001",
"status": 400,
"ok": false,
"error": "BAD_FIELDS",
"message": "Некорректные поля: login",
"payload": {
}
}
Специфические коды ошибок GetUser
400 / BAD_FIELDS— не передан или пустlogin.501 / DB_ERROR— ошибка БД при поиске пользователя.500 / INTERNAL_ERROR— непредвиденная внутренняя ошибка сервера.
3. Операция SearchUsers
Назначение
Поиск пользователей по префиксу логина. Операция зарегистрирована в серверном API и используется как вспомогательная dev/test операция.
Запрос
{
"op": "SearchUsers",
"requestId": "search-001",
"payload": {
"prefix": "an"
}
}
Успешный ответ
{
"op": "SearchUsers",
"requestId": "search-001",
"status": 200,
"ok": true,
"payload": {
"logins": ["anya", "andrey"]
}
}
Специфические коды ошибок SearchUsers
400 / BAD_FIELDS— некорректный или пустойprefix.501 / DB_ERROR— ошибка БД при поиске.500 / INTERNAL_ERROR— непредвиденная внутренняя ошибка сервера.
4. Короткое резюме
AddUser— отключен (410 / ADD_USER_DISABLED).GetUser— проверка существования пользователя на сервере.SearchUsers— временный поиск пользователей по префиксу.- Регистрация выполняется только через Solana.