Fundamentals

Review and publishing

Save drafts with expected revisions, propose coordinated changes, and publish through human review.

PeopleTide Content · HTTP integration guides

A draft is not a release.

PUT /api/v1/sites/{site}/content/{id} accepts expectedRevision and document. Use 0 for a new document with a client-generated UUID; for an update use the current revision. A revision conflict means you must read and reconcile the latest document.

Propose the documents that belong together.

POST /api/v1/sites/{site}/changesets with a title and changes. Each change supplies id, expectedRevision, and either document or unpublish: true. Validate the changeset before human review.

JSON
{
  "title": "Update the welcome article",
  "changes": [{
    "id": "CONTENT_UUID", "expectedRevision": 1,
    "document": { "type": "article", "slug": "welcome", "title": "A new welcome", "fields": { "body": "Reviewed copy." } }
  }]
}

A human publisher makes the decision.

Publishers inspect differences and approve or reject. Optional scheduledAt is an ISO timestamp with an offset. Approval freezes source and dependency revisions; a later conflict requires a fresh proposal. Agents cannot approve.

Wait for the release to become active.

Approval queues publication. The publisher resolves dependencies and activates a complete release. Confirm the release in the workspace and public current.json; an accepted approval response is not proof of activation.

Rollback changes the active release.

A publisher can request rollback to an earlier release. It does not undo draft history, delete public immutable URLs, or restore infrastructure. Check current.json again after the operation becomes active.