Головна/Credentials/Default-записи та життєвий цикл ENУКРРУС API-довідник (ReDoc) ↗

Default-записи та життєвий цикл

Один default на власника й провайдера, явні переходи — і що насправді роблять disable/delete.

Збережений credential буває active або disabled, може бути default-ом свого власника й може бути м'яко видаленим. Ці три осі керують усім, що робить resolve, тож їхні інваріанти строгі.

Прапорець default

is_default позначає запис, який resolve вибере для його власника й провайдера. Інваріант: щонайбільше один активний default на пару (провайдер, власник), забезпечений транзакційно.

  • make-default перемикає атомарно: попередній default втрачає прапорець у тій самій транзакції; ніколи не буває ані моменту з двома, ані проміжку без жодного. Кваліфікуються лише active-записи (інакше 400). Виклик на поточному default — це no-op із перевіркою версії.
  • Перший credential власника для провайдера стає default автоматично — без жодного прапора; другий create без прапора лишає default там, де він був.
  • create з make_default: true перебирає default на новостворений запис тим самим атомарним перемиканням. Задокументований 409 DEFAULT_CREDENTIAL_ALREADY_EXISTS — це запобіжник конкурентності (два таких create наввипередки), а не звична відповідь; повторіть раз — і один із них тримає прапор.

Disable та enable

disable ставить запис на паузу, не знищуючи його: resolve одразу перестає його бачити, а is_default знімається в тій самій транзакції. Вимикаючи свій поточний default, можете передати replacement_default_id — інший активний запис того самого власника й провайдера — щоб підвищити його атомарно; без нього власник свідомо лишається без default (і resolve провалюється на наступний рівень).

enable повертає запис у active, але не відновлює прапорець default — повторне підвищення є явним make-default. Відновлений ключ, який мовчки знову стає живим default, — саме той сюрприз, якому це правило запобігає.

Delete

DELETE — це м'яке видалення: миттєве зникнення зі списків, читань, resolve і reveal; is_default знімається; шифротекст переживає вікно відновлення (за замовчуванням 5 днів), поки purge-джоб не прибере його фізично (audit-подія credential.purged). Видалення поточного default приймає той самий replacement_default_id. Повтор видалення власного вже видаленого запису: ідемпотентний 204. Версія не потрібна.

Оптимістичне блокування все зв'язує

PATCH, make-default, disable та enable — усі вимагають поточної version; кожен успіх її інкрементує. Два адміни, що редагують той самий запис, не можуть мовчки перезаписати одне одного — той, хто програв, отримує 409 CREDENTIAL_VERSION_CONFLICT і перечитує. Повна конвенція: Errors and Conventions.

Розібраний приклад усього цього танцю — два ключі, перемикання, disable із заміною: сценарій cookbook 04.