Skip to main content
Papevidocs

Editor Guide

Workflow & Publishing

Every page moves through a deterministic set of states. Status is computed live from timestamps — there is no stored status field.

Content states

1

Draft API: hidden

The default state. Authors iterate freely without touching live content. No published_at date is set.

2

Review API: hidden

Reviewers validate quality and policy via inline comments. Authors address feedback before moving forward.

3

Approved API: hidden

Administrative checkpoint before release. Content can be published immediately or scheduled.

4

Scheduled API: hidden until publish time

published_at is set to a future time. The page becomes visible automatically when that time arrives (checked every minute).

5

Published API: visible

Live on the API. published_at ≤ now and either unpublish_at is null or in the future.

Scheduling

Set Publish at to schedule a go-live. Set Unpublish at to expire content automatically. A background job processes both every minute.

Scenario: Scheduled publish

  1. Set published_at to tomorrow 9am
  2. Status shows "Scheduled"
  3. API returns 404 until that time
  4. Job fires, page becomes Published
  5. API returns 200

Scenario: Auto-unpublish

  1. Page is live, set unpublish_at
  2. Status stays "Published" until then
  3. Job fires at unpublish time
  4. Status becomes "Unscheduled"
  5. API returns 404

Scenario: Re-publish

  1. Page was unpublished
  2. Update published_at to now
  3. Next job run publishes it again
  4. API returns 200

Who can do what

ActionEditorModeratorSite OwnerAdmin
Create/edit draft
Submit for review
Approve
Publish / schedule
Force unpublish