opsdocsConsole

Ops platform / HTTP API

Docs

Publish and yank versions of a doc set, read them without a token, and follow the revision a docs reader serves.

Updated 13 Oct 2026View as Markdown

Publish and yank versions of a doc set, read them without a token, and follow the revision a docs reader serves.

GET /api/v1/docs/readers

The docs readers of the projects you can see, with the revision each one serves and how its last call went.

StatusMeansBody
200DoneDocReadersResponse
401No token, or a token that is not valid

GET /api/v1/docs/revision

The current docs revision and every publish and yank after the one you name. A docs reader also polls it, with its three headers, to say which revision it serves.

ParameterInTypeAbout
since (optional)queryinteger or nullThe revision the caller already has; 0 or left out lists every change.
x-ops-docs-reader (optional)headerstring or nullA reader's poll: its project
x-ops-docs-secret (optional)headerstring or nullA reader's poll: its secret
x-ops-docs-served (optional)headerinteger or nullA reader's poll: the revision it serves
StatusMeansBody
200DoneDocRevisionResponse
401A reader's poll whose secret does not match
422A reader's poll missing a header, or serving a revision ops has not reached
429Too many reads from this address; wait a minute

GET /api/v1/docs/revisions/{revision}/pickups

When each docs reader picked up one revision, and how long it took after the publish or yank.

ParameterInTypeAbout
revisionpathinteger
StatusMeansBody
200DoneDocRevisionPickupsResponse
401No token, or a token that is not valid
404No such revision

GET /api/v1/docs/sets

Every doc set, with its newest version and how many versions it has. Narrow it by project or kind. No token needed.

ParameterInTypeAbout
project (optional)querystring or nullOnly this project's sets.
kind (optional)querystring or nullOnly sets of this kind: package or service.
StatusMeansBody
200DoneDocSetsResponse
422Not a kind
429Too many reads from this address; wait a minute

GET /api/v1/docs/sets/{set}/versions

One doc set and all its versions, newest first, yanked ones included. No token needed.

ParameterInTypeAbout
setpathstring
StatusMeansBody
200DoneDocVersionsResponse
404No such set
429Too many reads from this address; wait a minute

GET /api/v1/docs/sets/{set}/versions/{version}

One version of a doc set, with the list of its pages and images. No token needed.

ParameterInTypeAbout
setpathstring
versionpathstring
StatusMeansBody
200DoneDocVersionDetail
404No such set or version
429Too many reads from this address; wait a minute

PUT /api/v1/docs/sets/{set}/versions/{version}

Publish a docs folder as one version of a doc set. The body is the folder as a plain tar. A version never changes: the same bytes again change nothing, and other bytes are refused.

ParameterInTypeAbout
setpathstring
versionpathstring
project (optional)querystring or nullThe project a service set's first version is published for. Needed only then; any other set refuses one that is not its own.
source (optional)querystring or nullpush (default) or publish (a package publish run's docs step).

Body: application/x-tar bytes. The docs folder as a plain tar

StatusMeansBody
200The same bytes again: nothing changedDocPublishResponse
201PublishedDocPublishResponse
401No token, or a token that is not valid
403Not allowed to publish in the set's project
409That version is published with other content
413Larger than the body limit
422The folder, the name or the version is refusedDocRefusal

GET /api/v1/docs/sets/{set}/versions/{version}/archive

The docs folder of one version, exactly as it was published, as a plain tar. Yanked versions are still served. No token needed.

ParameterInTypeAbout
setpathstring
versionpathstring
StatusMeansBody
200The docs folder as a plain tar (application/x-tar)
404No such set or version
429Too many reads from this address; wait a minute
503The archive could not be read

POST /api/v1/docs/sets/{set}/versions/{version}/yank

Yank one version, so readers stop showing it. Its archive stays readable.

ParameterInTypeAbout
setpathstring
versionpathstring
StatusMeansBody
200DoneDocYankResponse
401No token, or a token that is not valid
403Not allowed to publish in the set's project
404No such set or version

GET /api/v1/projects/{slug}/docs/refreshes

The project's docs reader and the last 50 revisions it picked up, with how long each took.

ParameterInTypeAbout
slugpathstring
StatusMeansBody
200DoneDocRefreshesResponse
401No token, or a token that is not valid
403Your role does not allow this

Types

DocReadersResponse

FieldTypeAbout
readersarray of DocReaderView
revisionintegerThe revision now, to compare each reader's with.

DocRevisionResponse

The revision now and every change after since, oldest first.

FieldTypeAbout
changesarray of DocChange
revisioninteger
sinceinteger

DocRevisionPickupsResponse

What a publish run or a deploy shows under its docs step.

FieldTypeAbout
atstring
readersarray of DocRevisionPickup
revisioninteger

DocSetsResponse

FieldTypeAbout
setsarray of DocSetView

DocVersionsResponse

A set and its versions, newest published first.

FieldTypeAbout
setDocSetView
versionsarray of DocVersionView

DocVersionDetail

One version with its manifest: every page and image, so an index never opens the archive.

FieldTypeAbout
archivestringThe path the archive is read from.
digeststring
kindstring
manifestManifest
published_atstring
setstring
size_bytesinteger
sourcestring
versionstring
yankedboolean
yanked_at (optional)string or null

DocPublishResponse

What a publish did. created is false for the same bytes pushed again, which changes nothing; revision is then the revision the version was first published at.

FieldTypeAbout
createdboolean
digeststring
imagesinteger
kindstring
pagesinteger
project (optional)string or null
published_atstring
revisioninteger
setstring
size_bytesinteger
versionstring

DocRefusal

A refused docs folder: every problem found, each naming its page.

FieldTypeAbout
errorstring
refusalsarray of string

DocYankResponse

What a yank did. Yanking a yanked version changes nothing and answers the same.

FieldTypeAbout
revisionintegerThe revision the yank bumped to, or the current one when it was yanked already.
setstring
versionstring
yanked_atstring

DocRefreshesResponse

A project's reader and its refreshes, newest first; reader null when the project declares none.

FieldTypeAbout
reader (optional)null or DocReaderView
refreshesarray of DocRefresh

DocReaderView

One docs reader, and what it last said it serves.

FieldTypeAbout
call_error (optional)string or null
call_ms (optional)integer or null
called_at (optional)string or nullThe last call ops made to it, how long it took, and why it failed.
pathstring
pickup_ms (optional)integer or nullMilliseconds from the bump of served_revision to the reader serving it.
projectstring
served_at (optional)string or null
served_revision (optional)integer or nullThe revision it serves, as it last reported; null before it ever answered.
servicestring

DocChange

One bump of the revision.

FieldTypeAbout
actionstringpublished or yanked.
atstring
digeststring
kindstring
revisioninteger
setstring
versionstring

DocRevisionPickup

When one reader first served a revision (or a newer one).

FieldTypeAbout
picked_up_at (optional)string or nullnull while it has not.
pickup_ms (optional)integer or nullMilliseconds after the bump.
projectstring

DocSetView

One set as the listing shows it.

FieldTypeAbout
kindstringpackage or service.
latest (optional)string or nullThe newest published version that is not yanked; null before the first.
namestring
packagesarray of stringThe published package names it follows (a module: its crate and its layer).
project (optional)string or nullThe project that owns it.
updated_at (optional)string or nullWhen its newest version was published.
versionsintegerHow many versions it has, yanked ones included.

DocVersionView

One version as a set's listing shows it.

FieldTypeAbout
digeststringSHA-256 of the archive, lowercase hex: a reader's cache key.
imagesinteger
pagesinteger
published_atstring
size_bytesinteger
sourcestringpublish (a package publish run), deploy (a production deploy) or push.
versionstring
yankedboolean
yanked_at (optional)string or null

Manifest

FieldTypeAbout
imagesarray of ManifestImageEvery image, by path.
pagesarray of ManifestPageEvery Markdown page, by path.

DocRefresh

One refresh of a reader: a revision it picked up.

FieldTypeAbout
picked_up_atstring
pickup_msinteger
revisioninteger
viastringcall (its answer to ops's call) or poll (its own poll).

ManifestImage

FieldTypeAbout
pathstring
sizeinteger

ManifestPage

FieldTypeAbout
description (optional)string or null
order (optional)integer or nullThe front matter's order; pages without one sort after those with one, by path.
pathstringInside the docs folder, / separated, guides/install.md.
sizeintegerBytes of the Markdown file.
titlestring