Справочник: пользователи и профиль
/users — ручки сайта ($API/site/$SITE/users), /me — ручки сети ($API/me). Подробно — пользователи и профиль.
GET /users
curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/users"
{
"success": true,
"site_id": "x9HTLHECq",
"total": 1,
"users": [
{ "id": null, "invite_id": 12, "email": "docs-proba-invite@example.com", "name": "Проба приглашения", "avatar": "https://secure.gravatar.com/avatar/…?s=96&d=mm&r=g", "is_super_admin": false, "added_at": "2026-09-25T20:25:37.000Z", "last_login_at": null, "status": "invited", "invited_by": 1 }
]
}
Поля строки: id, invite_id, email, name, avatar, is_super_admin, added_at, last_login_at, status (active или invited), invited_by.
POST /users
| Поле | Смысл |
|---|---|
email | обязательно, до 100 символов |
name | имя для новой учётки и приглашения |
curl -s -X POST "$API/site/$SITE/users" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"email": "docs-proba-invite@example.com", "name": "Проба приглашения"}'
{ "success": true, "site_id": "x9HTLHECq", "user": { "id": null, "invite_id": 12, "email": "docs-proba-invite@example.com", "status": "invited", "…": "…" }, "created": true, "already_member": false, "invited": true }
201. Почта уже в сети — created: false, invited: false, человек сразу администратор. Отказы: 400 invalid_email, 400 invalid_name, 409 already_member, 409 already_invited.
DELETE /users/{id}
{id} — id пользователя или invite-<id> приглашения.
curl -s -X DELETE "$API/site/$SITE/users/invite-12" -H "Authorization: Bearer $OP_TOKEN"
{ "success": true, "site_id": "x9HTLHECq", "removed": { "id": null, "invite_id": 12, "email": "docs-proba-invite@example.com", "name": "Проба приглашения" } }
Отказы: 400 invalid_user_id, 404 not_member, 404 invite_not_found, 409 cannot_remove_self, 409 last_admin, 403 insufficient_role (снять суперадмина может только суперадмин).
GET /me
curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/me"
{
"success": true,
"user": { "id": 42, "name": "Anna", "email": "anna@example.com", "avatar": "…", "is_super_admin": false, "registered": "2025-03-01T10:00:00.000Z", "last_login_at": "2026-09-25T09:02:10.000Z", "dashboard_lang": "ru" },
"sites_count": 3,
"api_token": { "prefix": "op_xxxxxxxx", "created_at": "2026-09-16T13:04:25.000Z", "last_used_at": "2026-09-25T20:11:36.000Z" }
}
api_token: null — токена нет.
PATCH /me
| Поле | Правило |
|---|---|
name | не пустое, до 250 символов |
email | адрес, свободный в сети |
dashboard_lang | en, ru или "" (сбросить) |
Ответ — как у GET /me. Отказы: 400 nothing_to_update, 400 invalid_name, 400 invalid_email, 400 invalid_dashboard_lang (allowed), 409 email_taken.
POST /me/api-token
Выпустить токен заново. Ответ — как у GET /me плюс token (единственный раз, когда он виден). Прежний токен перестаёт работать.
DELETE /me/api-token
Отозвать токен. Ответ — как у GET /me с api_token: null и revoked (true, если было что отзывать).