PUBLICAR / Status lifecycle

Ciclo de vida do conteúdo

11 statuses cobrem todo o lifecycle: rascunho, estoque, agendamento, pipeline ativo, terminais e cancel. Cada transição é explícita — endpoint dedicado.


Os 11 statuses

O campo status num content é uma dimensão única que cobre desde rascunho até pós-publicação. Ele decide o que pode ser editado, o que aparece em cada tab do dashboard, e o que o snapshot público mostra.

StatusGrupoDescrição/p/{token}
draftPre-publishRascunho em construção. Sem dispatch.404 em /p/{token} (private)
storedPre-publishPronto pra publicar, sem data marcada.404 em /p/{token} (private)
awaiting_mediaPre-publishAguardando upload large media (>100MB) via presigned URL.404 em /p/{token}
scheduledPre-publishAgendado pra data futura. O QStash dispara no horário (notBefore).Liberado (auto-bump shareable)
queuedPipelineWorker pegou, dispatch pendente.Renderiza SSR
publishingPipeline1+ job em dispatch contra plataforma.Renderiza SSR
processing_remotePipelineProvider aceitou, transcoding async (YT/LI). Polling automático.Renderiza SSR
publishedTerminalTodos os jobs concluídos com sucesso.Renderiza SSR
partialTerminalAlguns jobs OK, outros failed. Retry recupera só os failed.Renderiza SSR (mostra só plataformas published)
failedTerminalTodos os jobs falharam. Retry reprocessa tudo.404
cancelledCanceladoUsuário cancelou. Reativável (→ draft ou stored).404

Transições válidas

Cada transição é validada pelo domain layer (atomic-claim no DB). Tentativas inválidas retornam 422 invalid_transition. As transições internas do pipeline (queued → publishing, etc) são feitas pelo worker — você não chama elas direto.

DeParaVia
draftstoredPOST /move-to-stored
draftscheduledPOST /schedule
draftqueuedPOST /publish
storeddraftPOST /move-to-draft
storedscheduledPOST /schedule
storedqueuedPOST /publish
scheduledpublishingQStash dispara no horário (notBefore)
scheduleddraft|storedPOST /move-to-draft ou /move-to-stored
queuedpublishingworker
publishingprocessing_remoteprovider sync
publishingpublished|partial|failedworker terminal
processing_remotepublished|partial|failedpoller terminal
partialpublishingPOST /retry (só failed jobs)
failedpublishingPOST /retry (tudo)
draft|stored|scheduled|awaiting_media|queuedcancelledPOST /cancel (ou DELETE)
cancelleddraft|storedPOST /reactivate

Fluxos típicos

Publish direto (legacy)

POST /contents (status=queued) → publishing → published

Rascunho → publish

POST /contents (status=draft) → PATCH (edita) → POST /publish → publishing → published

Estoque + agendamento

POST /contents (status=stored) → POST /schedule → scheduled → (QStash no horário) → publishing → published

Edit pós-publish

POST /clone (do publicado) → PATCH (edita o clone) → POST /publish (clone)

O original fica intacto (snapshot público continua válido).

Retry depois de partial

published em IG + failed em FB (partial) → POST /retry → reprocessa só FB

IG não é re-publicado (preservado). Pra failed total (todos falharam), retry reprocessa tudo.

Próximos passos

Nesta página