PATCH/v1/api-keys/{key_id}
Змінити ключ API
update_api_key
Змінює профіль доступу, області доступу, обмеження за колекціями, дозволені мережі та закінчення строку дії ключа. Поля, які не передано, лишаються без змін.
Автентифікація
Передайте ключ API в заголовку Authorization: Authorization: Bearer <ключ>.
Параметри шляху
key_idintegerобов’язково
Параметри заголовка
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
X-View-AsstringЛише для ключів API з роллю
admin. Виконує запит від імені профілю доступу<profile>[:viewer|verifier|editor], наприкладemployee:viewer. Ключ інсталяції не може використовувати цей заголовок (403).
Параметри cookie
kb_view_asstringCookie режиму «View as» для сесії. Встановлюється через
POST /auth/view-as, очищається черезDELETE /auth/view-as.
Тіло запиту
application/json
data_profilestringНовий профіль доступу ключа. Профіль доступу не застосовується до ролі
admin, тому для ключа адміністратора будь-який профіль, крімfull, повертає400 api_keys.data_profile_not_applicable.scopesarray of ApiKeyScopeОбласті доступу ключа. Область
systemчерез API не видається.collection_idsarray of integerОбмежує ключ цими колекціями. Порожній список — без обмежень. Ключ, який викликає і сам обмежений колекціями, бачить і змінює лише ключі у своїх колекціях (інші ключі повертають
404 api_keys.not_found) і може задати лише непорожній список власних колекцій. Порожній список або колекція поза його списком повертає400 api_keys.invalid_collections. Без цього поля колекції ключа не змінюються.items ≤ 100
allowed_cidrsarray of stringМережі, з яких можна використовувати ключ.
items ≤ 50
expires_atstring (date-time) | nullЧас закінчення строку дії (у майбутньому).
null— ключ діє безстроково.
Відповіді
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: операцію не виконано повторно.
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Дію не дозволено: роль не має достатніх прав, немає доступу до колекції чи картки, запит виконується в режимі «View as» або організацію призупинено чи видалено (`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
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, крім загальних кодів будь-якого запиту.
- 409api.idempotency_in_progress
- 400api.idempotency_key_invalid
- 409api.idempotency_mismatch
- 400api_keys.data_profile_not_applicable
- 400api_keys.invalid_cidrs
- 400api_keys.invalid_collections
- 400api_keys.invalid_expires
- 400api_keys.invalid_scopes
- 404api_keys.not_found
- 403auth.admin_required
- 401auth.not_authenticated
- 403auth.system_scope
- 400profiles.unknown
- 403view_as.read_only
Безпечні повтори
Надсилайте заголовок Idempotency-Key (наприклад, UUID) з кожним POST і PATCH. Повтор із тим самим ключем протягом 24 годин повертає збережену відповідь, а не виконує запит знову.
Ліміти частоти
Відповіді містять заголовки RateLimit і RateLimit-Policy, а також давніші X-RateLimit-Limit, X-RateLimit-Remaining і X-RateLimit-Reset. Відповідь 429 містить Retry-After у секундах: зачекайте й повторіть запит.