---
title: "Заменить учётные данные приложения с перекрытием"
method: POST
path: "/api/v1/developer/apps/{key}/keys/{id}/rotation"
tags: ["Developer account"]
---

# Заменить учётные данные приложения с перекрытием

`POST /api/v1/developer/apps/{key}/keys/{id}/rotation`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/developer/apps/{key}/keys/{id}/rotation`
- Auth: HTTP bearer

Перекрытие называется часами. Ноль означает УМОЛЧАНИЕ — сутки, — а не «без перекрытия»: мгновенная замена гарантированно роняет конвейер, который о ротации ещё не знает, и получить её молчаливой передачей нуля нельзя. Осознанный отказ от перекрытия — это отзыв, у него свой адрес.

Значение нового ключа показывается один раз, как и при выпуске.

## Path parameters

- `key` string, required
- `id` string, uuid, required

## Request body

- DeveloperAppKeyRotationInput
  - `overlap_hours` integer: Сколько часов доживает вытесненный ключ. Ноль — умолчание в сутки, а не «без перекрытия»

## Response `201`

Замена выпущена; значение показано один раз

- DeveloperIssuedAppKey
  - `key` DeveloperAppKey, required
    - `id` string, uuid, required
    - `app_id` string, uuid, required
    - `name` string, required: Человеческое имя ключа: вежливость, а не учётные данные
    - `hint` string, required: Последние знаки значения. Не секрет: по ним ключ не восстанавливается, а без них список не отвечает на вопрос «какой из них отзывать»
    - `issued_at` string, date-time, required
    - `issued_by` string, uuid
    - `rotated_from_id` string, uuid
    - `rotated_at` string, date-time
    - `expires_at` string, date-time: Конец перекрытия. Пусто у текущего ключа: он живёт до собственной ротации или отзыва
    - `revoked_at` string, date-time
    - `revoke_reason` string, required
    - `last_used_at` string, date-time: Когда этим ключом ходили в последний раз: единственный ответ на вопрос «можно ли уже отозвать вон тот»
  - `secret` string, required: Значение ключа. Показывается ОДИН РАЗ и больше никогда: в хранилище лежит хеш, и второго способа его узнать не существует

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Действие требует человека, а не ключа приложения
- `404`: Приложения или учётных данных с таким идентификатором нет; тот же ответ получает чужой
- `409`: Ключ уже отозван или вытеснен прошлой ротацией

---

[API](https://skmtc.dev/akeda/apis/akeda-erp-client-api.md) · [All operations](https://skmtc.dev/akeda/apis/akeda-erp-client-api/llms.txt) · [OpenAPI document](https://skmtc.dev/akeda/apis/akeda-erp-client-api/revisions/3c60ded179f2?raw)
