package cloud.nstart.terravault.ordinis.restapi.dto.schemaworkflow;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.JsonNode;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

/**
 * Создание нового schema draft'а от текущего HEAD.
 *
 * <p>Endpoint: {@code POST /api/v1/dictionaries/{name}/drafts}.
 *
 * <p>{@code fromVersion} обязателен и сверяется с текущей
 * {@code DictionaryDefinition.schemaVersion} — если расходится → 409
 * ({@code version_mismatch}, кто-то ещё опубликовал свой draft пока этот
 * пользователь готовился).
 *
 * <p>{@code proposedSchema} — full JSON Schema document (replace, не patch).
 * Если null — backend копирует current HEAD schema (maker edit'ит позже
 * через update endpoint, который пока не реализован — Phase 1 will add).
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public record CreateSchemaDraftRequest(
    /** Current HEAD schema version that this draft branches from. */
    @NotBlank String fromVersion,
    /** Optional maker rationale shown reviewer'ам. */
    String reason,
    /** Full proposed JSON Schema. */
    @NotNull JsonNode proposedSchema) {}
