POST/oauth/token
Выдать токен OAuth 2.0
oauth_token
Конечная точка выдачи токенов OAuth 2.0 (RFC 6749, раздел 3.2). grant_type: authorization_code обменивает одноразовый код на пару токенов и требует code_verifier (PKCE S256); refresh_token выдаёт новую пару по токену обновления и делает прежний токен обновления недействительным (ротация), а повторное использование недействительного отзывает всю цепочку; client_credentials выдаёт токен от имени организации — только для приложения confidential и без токена обновления. Клиент confidential аутентифицируется заголовком Authorization: Basic или полями client_id и client_secret; публичный клиент передаёт только client_id. Токен доступа действует 1 час, токен обновления — 90 дней. Ответы и ошибки соответствуют RFC 6749, раздел 5, с Cache-Control: no-store. Добавлено в 1.62.0.
Аутентификация
Учётные данные не нужны.
Тело запроса
application/x-www-form-urlencoded
grant_typestringобязательноДопустимые значения:
authorization_coderefresh_tokenclient_credentialscodestringКод авторизации (
authorization_code).redirect_uristringТот же адрес возврата, что и в запросе авторизации (
authorization_code).code_verifierstringИсходное значение PKCE, от 43 до 128 символов (
authorization_code).refresh_tokenstringТокен обновления (
refresh_token).scopestringОбласти доступа через пробел, только для сужения (
refresh_token,client_credentials).client_idstringID приложения, если секрет не передан в заголовке
Authorization: Basic.client_secretstringСекрет клиента приложения
confidential, если он не передан в заголовкеAuthorization: Basic.
Ответы
200Токены выданы.
Заголовки ответа
RateLimit-PolicyДействующие лимиты в формате черновика IETF
draft-ietf-httpapi-ratelimit-headers: элементы через запятую"<name>";q=<quota>;w=<window in seconds>.key— частота запросов ключа API (квота — допустимый всплеск, окно — время до полного восстановления; для сессии этоuser, без учётных данных —ip);minute,dayиmonth— квоты организации на календарную минуту, день и месяц по UTC.RateLimitСколько осталось по каждому лимиту из
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitЛимит самой строгой записи в
RateLimit-Policy(той, где осталось меньше всего запросов).X-RateLimit-RemainingСколько запросов осталось в пределах самого строгого лимита.
X-RateLimit-ResetЧерез сколько секунд сбросится самый строгий лимит.
application/json
access_tokenstringобязательноТокен доступа (
kbat_…) для заголовкаAuthorization: Bearer.token_typestringобязательноДопустимые значения:
Bearerexpires_inintegerобязательноВремя жизни токена доступа в секундах.
refresh_tokenstringТокен обновления (
kbrt_…); нет для client credentials.scopestringобязательноОбласти доступа токена через пробел.
400Ошибка по RFC 6749, раздел 5.2.
Заголовки ответа
RateLimit-PolicyДействующие лимиты в формате черновика IETF
draft-ietf-httpapi-ratelimit-headers: элементы через запятую"<name>";q=<quota>;w=<window in seconds>.key— частота запросов ключа API (квота — допустимый всплеск, окно — время до полного восстановления; для сессии этоuser, без учётных данных —ip);minute,dayиmonth— квоты организации на календарную минуту, день и месяц по UTC.RateLimitСколько осталось по каждому лимиту из
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitЛимит самой строгой записи в
RateLimit-Policy(той, где осталось меньше всего запросов).X-RateLimit-RemainingСколько запросов осталось в пределах самого строгого лимита.
X-RateLimit-ResetЧерез сколько секунд сбросится самый строгий лимит.
application/json
401Неверные учётные данные клиента (`invalid_client`).
Заголовки ответа
RateLimit-PolicyДействующие лимиты в формате черновика IETF
draft-ietf-httpapi-ratelimit-headers: элементы через запятую"<name>";q=<quota>;w=<window in seconds>.key— частота запросов ключа API (квота — допустимый всплеск, окно — время до полного восстановления; для сессии этоuser, без учётных данных —ip);minute,dayиmonth— квоты организации на календарную минуту, день и месяц по UTC.RateLimitСколько осталось по каждому лимиту из
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitЛимит самой строгой записи в
RateLimit-Policy(той, где осталось меньше всего запросов).X-RateLimit-RemainingСколько запросов осталось в пределах самого строгого лимита.
X-RateLimit-ResetЧерез сколько секунд сбросится самый строгий лимит.
application/json
Безопасные повторы
Передавайте заголовок Idempotency-Key (например, UUID) с каждым POST и PATCH. Повтор с тем же ключом в течение 24 часов возвращает сохранённый ответ, а не выполняет запрос снова.
Лимиты частоты
В ответах есть заголовки RateLimit и RateLimit-Policy, а также прежние X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset. В ответе 429 есть Retry-After в секундах: подождите и повторите запрос.