Newer
Older
book-metadata-service / src / main / java / ru / mcs / metadatabook / entity / ApiKeyScope.java

package ru.mcs.metadatabook.entity;

/**
 * Уровни доступа API-ключа. Порядок enum-значений имеет значение — используется
 * для сравнения "достаточно ли прав" через ordinal() в ApiKeyService.
 * Не переставляйте существующие константы местами, только дописывайте новые в конец.
 */
public enum ApiKeyScope {
    /** Только чтение через /api/v1/public/*. Используется внутренним ключом сайта,
     *  rate-limited по IP. Никогда не выдаётся напрямую внешним разработчикам как "их личный". */
    PUBLIC_READ,

    /** Создание карточек (POST /books) и обогащение (/api/v1/enrichment/public/*).
     *  Для доверенных партнёров/скриптов, выдаётся вручную администратором. */
    PARTNER_WRITE,

    /** Полный доступ: /api/metadata/**, модерация LLM-предложений, служебные операции. */
    ADMIN

    // Задел на будущее (см. обсуждение п.5 про полный экспорт БД для зеркалирования):
    // MIRROR_SYNC - отдельный tier для батч-выгрузки всей базы, когда появится эта фича.
    // Сознательно не добавляем сейчас, чтобы не плодить неиспользуемый код,
    // но порядок enum это учитывает - новую константу можно дописать в конец
    // без пересмотра существующих сравнений ordinal().
}