---
id: auth-users-me
title: "GET /api/users/me — Кто я (для токена)"
domain: auth
kind: api-method
http: "GET /api/users/me"
---

# GET /api/users/me — Кто я (для токена) {#auth-users-me}

## Сводка

| Поле | Значение |
|---|---|
| **HTTP** | `GET /api/users/me` |
| **Auth** | `—` |
| **Scope токена** | `read` |
| **PG-функции** | `api.get_user_active_org`, `api.list_my_orgs` |
| **Таблицы** | — |
| **SRM** | — (вне SRM, документировано по коду) |
| **RP (права)** | — |
| **Файл роута** | `server/routes/users.js` |
| **Статус** | по коду (вне SRM) |

**Аргументы запроса** (best-effort из хендлера; путь-параметры опущены):

_аргументов не обнаружено (подтвердить вручную по `server/routes/users.js`)_

**Коды ответов/ошибок** (из хендлера): `200` — _уточнить причины вручную_

Чтение — достаточно токена со scope `read` (см. [Конвенции](../../../shared/conventions.md#conventions)). Это **главная точка self-discovery**: первым делом агент спрашивает `GET /api/users/me`, чтобы узнать, от чьего имени работает токен и какая организация у владельца активна. Тела и параметров у запроса нет.

Рядом есть похожий [GET /api/auth/me](me.md#auth-me) — но он про **cookie-сессию** (кто залогинен в браузере), а `/api/users/me` отдаёт владельца **токена** плюс его активную организацию и роль в ней. Для агента опорная точка — именно `/api/users/me`.

**Пример запроса:**

```bash
curl https://specbuilder.vnimanie.ai/api/users/me \
  -H "Authorization: Bearer tak_..." \
  -H "Accept: text/markdown"
```

**Ответ `200`:**

```json
{
  "id": "11111111-2222-3333-4444-555555555555",
  "email": "agent@example.com",
  "display_name": "Агент-сборщик",
  "active_org_id": "9999aaaa-...",
  "active_org": { "id": "9999aaaa-...", "name": "ООО «Будущее»", "my_role": "org_admin" },
  "active_org_role": "org_admin"
}
```

Cookie-клиент всегда получает JSON; Markdown-зеркало отдаётся только токену с `Accept: text/markdown` (или `?format=md`) — `server/agent/negotiate.js`. У ответа есть `ETag` (от хэша тела, поскольку у `/me` нет отдельной отметки времени); повтор с `If-None-Match` вернёт `304`.

В Markdown-зеркале блок `## Actions` перечисляет действия, доступные токену. Для ресурса `user` это (`server/agent/affordances.js`):

```
GET /api/users/me — whoami — returns the token owner profile and active org
```

Сменить активную организацию — отдельный вызов [POST /api/users/me/active-org](set-active-org.md#auth-set-active-org).

<!-- gen:start:related -->
## Связанные
- [Конвенции](../../../shared/conventions.md#conventions) · [Роли](../../../shared/roles.md#roles) · [Ошибки](../../../shared/errors.md#errors) · [Глоссарий](../../../shared/glossary.md#glossary)
<!-- gen:end:related -->

---

Human view: https://docs.vnimanie.ai/specbuilder/v1/domains/auth/api/users-me/