PATCH/v1/apps/{app_id}
Изменить OAuth-приложение
update_app
Меняет переданные поля. Сужение scopes сразу сужает уже выданные токены; расширение действует только для новых авторизаций. role и data_profile применяются только к приложению confidential. Тип клиента изменить нельзя. Добавлено в 1.62.0.
Аутентификация
Передайте ключ API в заголовке Authorization: Authorization: Bearer <ключ>.
Параметры пути
app_idstringобязательноID приложения (
app_…), он жеclient_id.length ≤ 36
Параметры заголовков
Idempotency-KeystringКлюч для безопасного повтора записи: от 1 до 255 печатных символов ASCII; рекомендуется UUID v4 на каждую логическую операцию. Повтор с тем же ключом в течение 24 часов не выполняет операцию заново: он возвращает сохранённый ответ (статус, заголовки и тело) с заголовком
Idempotency-Replayed: true. Тот же ключ с другим методом, путём,Content-Typeили телом — ответ409 api.idempotency_mismatch; пока первый запрос ещё выполняется —409 api.idempotency_in_progressсRetry-After: 1. После ответа 5xx или 429 ключ освобождается, и повтор выполняет операцию заново. Ключ действует в пределах организации и вызывающей стороны (ключ API, пользователь или ключ своего источника).length ≥ 1, length ≤ 255
Тело запроса
application/json
namestringНазвание для экрана согласия.
length ≥ 1, length ≤ 100
descriptionstringОписание для экрана согласия.
length ≤ 1000
homepage_urlstring | nullСайт приложения;
nullили пустая строка удаляют его.length ≤ 2000
redirect_urisarray of stringПолный новый список адресов возврата.
items ≤ 10
scopesarray of OAuthScopeПолный новый набор областей доступа.
items ≥ 1
rolestringРоль токенов client credentials (только
confidential).data_profilestringПрофиль доступа токенов client credentials (только
confidential).
Ответы
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Через сколько секунд сбросится самый строгий лимит.
Idempotency-Replayedtrue— ответ воспроизведён из сохранённого для этогоIdempotency-Key: операция повторно не выполнялась.
application/json
idstringобязательноID приложения (
app_и 32 шестнадцатеричных символа), он жеclient_id.namestringобязательноНазвание, которое сотрудник видит на экране согласия.
descriptionstringобязательноОписание для экрана согласия (может быть пустым).
homepage_urlstring | nullобязательноСайт приложения.
redirect_urisarray of stringобязательноРазрешённые адреса возврата (точное совпадение строки).
Области доступа, которые приложение может запрашивать.
client_secret_prefixstring | nullобязательноПервые символы секрета клиента, чтобы его узнать;
nullдля публичного приложения.rolestring | nullобязательноРоль токенов client credentials (
admin,editor,verifier,viewer);nullдля публичного приложения.data_profilestring | nullобязательноПрофиль доступа токенов client credentials;
nullдля публичного приложения.authorizationsintegerобязательноЧисло действующих авторизаций сотрудников.
created_atstring (date-time)обязательноupdated_atstring (date-time)обязательно
400Запрос неверен: значение параметра или состояние объекта не позволяет выполнить действие (`detail` — сообщение).
Заголовки ответа
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Учётные данные не переданы (нет ни cookie сессии, ни ключа API) или ключ не найден.
Заголовки ответа
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
403Действие запрещено: недостаточно прав роли, нет доступа к коллекции или карточке, запрос выполняется в режиме «Смотреть как» либо организация приостановлена или удалена (`detail` — объект с `code: org_suspended | org_deleted`).
Заголовки ответа
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
404Объект не существует или вам недоступен. API не подтверждает существование объекта с ограниченным доступом.
Заголовки ответа
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
409Состояние объекта не позволяет выполнить действие: например, дубль, идёт индексация или задание уже обработано.
Заголовки ответа
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
422Ошибка проверки: тело или параметры не соответствуют схеме (`detail` — список ошибок проверки) либо значение параметра вне допустимого диапазона (`detail` — сообщение).
Заголовки ответа
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
429Слишком много запросов (`api.rate_limited`), квота организации на минуту, день или месяц исчерпана (`api.quota_exceeded`; в `error.details` — `quota`, `limit` и `reset_at`), достигнут лимит организации или сервис ответов занят (`answers.engine_busy`). Подождите время, указанное в заголовке `Retry-After`.
Заголовки ответа
Retry-AfterСколько секунд подождать перед повтором запроса.
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
Коды ошибок
Коды, которые эта операция может вернуть в error.code, помимо общих кодов любого запроса.
- 401auth.not_authenticated
- 403auth.admin_required
- 403api_keys.scope
- 409api.idempotency_in_progress
- 400api.idempotency_key_invalid
- 409api.idempotency_mismatch
- 404oauth_apps.not_found
- 400oauth_apps.invalid
- 400oauth_apps.invalid_redirect_uri
- 400oauth_apps.invalid_scope
- 409oauth_apps.not_confidential
- 400profiles.unknown
- 422validation.failed
Безопасные повторы
Передавайте заголовок Idempotency-Key (например, UUID) с каждым POST и PATCH. Повтор с тем же ключом в течение 24 часов возвращает сохранённый ответ, а не выполняет запрос снова.
Лимиты частоты
В ответах есть заголовки RateLimit и RateLimit-Policy, а также прежние X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset. В ответе 429 есть Retry-After в секундах: подождите и повторите запрос.