Skip to content
quarry quarry API
Login

quarry API

Generated from the op registry by quarry docs — edit the ops, not this file; regenerate with make docs. Every op also appears in the OpenAPI document (quarry spec). Query inputs ride the query string; the same names work as JSON.

account.add

POST /api/v1/accounts — command, admin

Create a forge account. The password is hashed with argon2id and never stored or returned in plaintext.

Input:

field type rules
name string required,max=64
password string required,max=1024
admin boolean —

Output fields:

account.delete

POST /api/v1/accounts/delete — command, admin

Delete an account and all of its grants.

Input:

field type rules
name string required,max=64

Output fields:

account.grant

POST /api/v1/accounts/grant — command, admin

Grant an account read, write or admin on one repository.

Input:

field type rules
name string required,max=64
repo string required,max=64
role string required,oneof=read\|write\|admin

Output fields:

account.list

GET /api/v1/accounts — query, admin

List forge accounts and their per-repository grants.

Output fields:

account.passwd

POST /api/v1/accounts/passwd — command, admin

Set an account's password.

Input:

field type rules
name string required,max=64
password string required,max=1024

Output fields:

account.revoke

POST /api/v1/accounts/revoke — command, admin

Remove an account's grant on one repository.

Input:

field type rules
name string required,max=64
repo string required,max=64

Output fields:

archive.get

GET /api/v1/r/{repo}/archive/{version} — query, anonymous

Download a check-in's files as a reproducible archive (tar.gz or zip).

Input:

field type rules
repo string required,max=64
version string max=100
format string oneof=tar\|zip

Output fields:

artifact.resolve

GET /api/v1/r/{repo}/info/{prefix} — query, anonymous

Resolve an artifact hash prefix to its kind and canonical reference — fossil's /info dispatch.

Input:

field type rules
repo string required,max=64
prefix string required,min=4,max=64

Output fields:

attachment.get

GET /api/v1/r/{repo}/attachment/{hash} — query, anonymous

Fetch one attachment's content by its content-artifact hash.

Input:

field type rules
repo string required,max=64
hash string required,min=4,max=64

Output fields:

branch.list

GET /api/v1/r/{repo}/branch — query, anonymous

List branches with their tip check-in, most recently active first.

Input:

field type rules
repo string required,max=64

Output fields:

checkin.diff

GET /api/v1/r/{repo}/checkin/{hash}/diff — query, anonymous

Diff one check-in against its primary parent.

Input:

field type rules
repo string required,max=64
hash string required,min=4,max=64
file string max=4096
offset integer min=0
maxLines integer min=0
branch boolean —
from string max=64
unified boolean —

Output fields:

checkin.get

GET /api/v1/r/{repo}/checkin/{hash} — query, anonymous

Describe one check-in: metadata, parents, and its file set.

Input:

field type rules
repo string required,max=64
hash string required,min=4,max=64
files string max=4

Output fields:

checkin.manifest

GET /api/v1/r/{repo}/checkin/{hash}/manifest — query, anonymous

One check-in's manifest artifact, as cards. The file list is counted, not returned — it is 99% of the bytes and the tree browser already renders it.

Input:

field type rules
repo string required,max=64
hash string required,min=4,max=64

Output fields:

checkin.tags

GET /api/v1/r/{repo}/checkin/{hash}/tags — query, anonymous

The full tag history of a check-in — every tag artifact that touched it, oldest first, with which rows still stand.

Input:

field type rules
repo string required,max=64
hash string required,min=4,max=64

Output fields:

ci.list

GET /api/v1/r/{repo}/ci — query, anonymous

List a repository's CI runs, newest first.

Input:

field type rules
repo string required,max=64
limit integer min=0,max=200,default=50

Output fields:

doc.get

GET /api/v1/r/{repo}/doc/{hash}/{path...} — query, anonymous

Render one file from the tree as embedded documentation, chosen by extension.

Input:

field type rules
repo string required,max=64
hash string required,min=1,max=64
path string required,max=512

Output fields:

doc.list

GET /api/v1/r/{repo}/doc — query, anonymous

List the documents in a check-in's conventional documentation directories.

Input:

field type rules
repo string required,max=64
version string max=64

Output fields:

file.get

GET /api/v1/r/{repo}/file/{hash}/{path...} — query, anonymous

Fetch one file's content at a check-in.

Input:

field type rules
repo string required,max=64
hash string required,min=4,max=64
path string required,max=512

Output fields:

file.history

GET /api/v1/r/{repo}/history/{version}/{path...} — query, anonymous

List the check-ins that changed one file, newest first.

Input:

field type rules
repo string required,max=64
version string max=100
path string required,max=1024
limit integer min=0,max=200,default=50

Output fields:

fleet.status

GET /api/v1/fleet — query, admin

Report every served store's ingest health.

Output fields:

fleet.sync

POST /api/v1/fleet/sync — command, admin

Run an ingest round now — one store, or every store when repo is empty.

Input:

field type rules
repo string max=64

Output fields:

forum.get

GET /api/v1/r/{repo}/forum/{root} — query, anonymous

Fetch one forum thread: every post, rendered, in reading order.

Input:

field type rules
repo string required,max=64
root string required,min=4,max=64

Output fields:

forum.list

GET /api/v1/r/{repo}/forum — query, anonymous

List a repository's forum threads, most-recently-active first.

Input:

field type rules
repo string required,max=64
sort string max=8

Output fields:

forum.post

POST /api/v1/r/{repo}/forum — command, token

Open a new forum thread.

Input:

field type rules
repo string required,max=64
title string required,max=200
body string required,max=1048576
mimetype string max=64

Output fields:

forum.reply

POST /api/v1/r/{repo}/forum/{root} — command, token

Reply to a forum post within its thread.

Input:

field type rules
repo string required,max=64
root string required,min=4,max=64
to string max=64
body string required,max=1048576
mimetype string max=64

Output fields:

landing.accept

POST /api/v1/r/{repo}/landing/{id}/accept — command, token

Land the branch on its target and settle the record. Writes a merge check-in, so it needs the check-in capability rather than the forum one.

Input:

field type rules
repo string required,max=64
id string required,min=4,max=64
message string max=65536

Output fields:

landing.comment

POST /api/v1/r/{repo}/landing/{id}/comment — command, token

Add a remark to a landing's discussion. An ordinary forum reply.

Input:

field type rules
repo string required,max=64
id string required,min=4,max=64
message string max=65536

Output fields:

landing.get

GET /api/v1/r/{repo}/landing/{id} — query, anonymous

One landing: the record, its discussion, and whether the caller may accept it.

Input:

field type rules
repo string required,max=64
id string required,min=4,max=64

Output fields:

landing.list

GET /api/v1/r/{repo}/landing — query, anonymous

Landings in this repository: branches proposed to land on a target, newest activity first. A landing is a forum thread, so it reads on the forum capability.

Input:

field type rules
repo string required,max=64
state string max=16
limit integer min=0,max=200,default=50

Output fields:

landing.open

POST /api/v1/r/{repo}/landing — command, token

Propose a branch to land on a target. Mints a forum thread — no new artifact kind — so a stock fossil clone reads it as an ordinary discussion.

Input:

field type rules
repo string required,max=64
branch string required,max=120
target string max=120
message string required,max=65536

Output fields:

landing.reject

POST /api/v1/r/{repo}/landing/{id}/reject — command, token

Settle a landing without merging. Writes no check-in, so it needs only the capability to speak in the thread.

Input:

field type rules
repo string required,max=64
id string required,min=4,max=64
message string max=65536

Output fields:

markup.preview

POST /api/v1/r/{repo}/markup-preview — command, token

Render markdown exactly as saving it would — the composer's preview IS the production renderer, so what you see is what readers get.

Input:

field type rules
repo string required,max=64
body string max=1048576

Output fields:

me.feed

GET /api/v1/me/feed — query, token

The signed-in dashboard: the caller's granted repositories ordered by activity, the merged activity feed across them, and the caller's own recorded work.

Input:

field type rules
kind string max=2
offset integer min=0,max=1000
find string max=64

Output fields:

meta.docs

GET /api/v1/docs — query, anonymous

The API reference, generated from this registry and rendered.

Output fields:

meta.version

GET /api/v1/version — query, anonymous

Report the quarry build version.

Output fields:

mirror.detach

POST /api/v1/mirrors/detach — command, admin

Detach a store from its upstream: quarry becomes the source of truth and accepts writes; the upstream is kept as provenance (detachedFrom).

Input:

field type rules
repo string required,max=64

Output fields:

mirror.list

GET /api/v1/mirrors — query, admin

List configured upstream mirrors and their recent history.

Output fields:

mirror.run

POST /api/v1/mirrors/run — command, admin

Pull from upstream now — one store, or every configured mirror when repo is empty.

Input:

field type rules
repo string max=64

Output fields:

mirror.set

POST /api/v1/mirrors — command, admin

Configure a store's upstream and pull interval.

Input:

field type rules
repo string required,max=64
url string required,max=2048
every integer min=0,max=604800,default=3600

Output fields:

mirror.writes

POST /api/v1/mirrors/writes — command, admin

Allow or refuse local writes (push, tickets, wiki, forum) on a mirror. Refused by default: a write landing on a tracking store forks it by accident.

Input:

field type rules
repo string required,max=64
accept boolean —

Output fields:

ops.status

GET /api/v1/ops — query, admin

Operational analytics: slowest routes, recent renders, store subprocess load.

Input:

field type rules
limit integer min=0,max=200,default=25

Output fields:

people.list

GET /api/v1/people — query, anonymous

List contributors across every repository the caller may read.

Input:

field type rules
repo string max=64
q string max=100
offset integer min=0,max=1000000
limit integer min=0,max=500,default=100

Output fields:

repo.about

GET /api/v1/r/{repo}/about — query, anonymous

The repository's About aggregate: description, homepage and topics (.quarry/repo.json), the landing page's document tabs, the latest release tag, and the contributor count. One op so the panel costs one invoke and the JSON API sees the same panel.

Input:

field type rules
repo string required,max=64
doc string max=512

Output fields:

repo.add

POST /api/v1/repos — command, admin

Serve a repository: an existing store at path, a new empty one (create), or a clone of clone. Cloning also records a mirror unless noMirror.

Input:

field type rules
name string required,max=64
path string max=4096
description string max=300
private boolean —
create boolean —
clone string max=2048
readme boolean —
license string max=16
ignore boolean —
noMirror boolean —
mirrorEvery integer min=0,max=604800

Output fields:

repo.counts

GET /api/v1/r/{repo}/counts — query, anonymous

Count a repository's content by section — what the navigation shows.

Input:

field type rules
repo string required,max=64

Output fields:

repo.delete

POST /api/v1/repos/delete — command, admin

Destroy a repository: its store, its index and everything keyed to it. confirm must equal name. Only repositories quarry created can be deleted.

Input:

field type rules
name string required,max=64
confirm string required,max=64

Output fields:

repo.get

GET /api/v1/r/{repo}/info — query, anonymous

Describe one repository: its settings and headline counts.

Input:

field type rules
repo string required,max=64

Output fields:

repo.list

GET /api/v1/repos — query, anonymous

List the served repositories with their tip check-in.

Input:

field type rules
q string max=64
sort string oneof=active\|name\|size
limit integer min=0,max=500
kind string oneof=\|mirror\|native

Output fields:

repo.reindex

POST /api/v1/r/{repo}/reindex — command, admin

Wipe this repository's derived index and replay it from the store, in process, while the forge serves. The sanctioned repair for any index that disagrees with its store.

Input:

field type rules
repo string required,max=64

Output fields:

repo.remove

POST /api/v1/repos/remove — command, admin

Stop serving a repository. The store on disk is left untouched.

Input:

field type rules
name string required,max=64

Output fields:

repo.update

POST /api/v1/repos/update — command, admin

Set a repository's settings: description and visibility. Fields are applied whole.

Input:

field type rules
name string required,max=64
description string max=300
private boolean —
homepage string max=300
topics string max=600

Output fields:

search.all

GET /api/v1/search — query, anonymous

Full-text search across every repository the caller may read.

Input:

field type rules
q string required,max=200
kind string oneof=checkin\|wiki\|ticket\|forum\|technote\|doc\|file
repo string max=64
limit integer min=0,max=200,default=50

Output fields:

search.query

GET /api/v1/r/{repo}/search — query, anonymous

Full-text search over a repository's check-ins, wiki, and tickets.

Input:

field type rules
repo string required,max=64
q string required,max=200
kind string oneof=checkin\|wiki\|ticket\|forum\|technote\|doc\|file
limit integer min=0,max=200,default=50

Output fields:

tag.list

GET /api/v1/r/{repo}/tag — query, anonymous

List release tags — symbolic names that are not branches.

Input:

field type rules
repo string required,max=64
limit integer min=0,max=500,default=100

Output fields:

technote.add

POST /api/v1/r/{repo}/technote — command, token

Record a technote; passing an existing event id records an edit.

Input:

field type rules
repo string required,max=64
body string required,max=1048576
mimetype string max=64
comment string max=200
event string max=64
time string max=32

Output fields:

technote.get

GET /api/v1/r/{repo}/technote/{event} — query, anonymous

Fetch one technote, rendered, by event-id prefix; rev selects one edit.

Input:

field type rules
repo string required,max=64
event string required,max=64
rev string max=64

Output fields:

technote.history

GET /api/v1/r/{repo}/technote/{event}/history — query, anonymous

List every recorded edit of one technote, newest first.

Input:

field type rules
repo string required,max=64
event string required,max=64

Output fields:

technote.list

GET /api/v1/r/{repo}/technote — query, anonymous

List a repository's technotes at their latest edit, newest first.

Input:

field type rules
repo string required,max=64

Output fields:

ticket.across

GET /api/v1/me/tickets — query, token

Every tracker the caller can reach, as one listing: the same report axes as ticket.list asked of all granted repositories at once, with repository as one more browse axis.

Input:

field type rules
limit integer min=0,max=200,default=50
state string oneof=open\|closed\|all
repo string max=64
type string max=64
severity string max=64
priority string max=64
subsystem string max=64
status string max=64
author string max=64
title string max=128
order string max=32
awaiting boolean —

Output fields:

ticket.config

GET /api/v1/r/{repo}/ticket-config — query, anonymous

The repository's ticket vocabulary: .quarry/tickets.json at the tip of trunk, merged over fossil's defaults. List order is sort order.

Input:

field type rules
repo string required,max=64

Output fields:

ticket.get

GET /api/v1/r/{repo}/ticket/{id} — query, anonymous

Fetch one ticket: folded state plus change history.

Input:

field type rules
repo string required,max=64
id string required,min=4,max=40

Output fields:

ticket.list

GET /api/v1/r/{repo}/ticket — query, anonymous

List a repository's tickets with their folded current state.

Input:

field type rules
repo string required,max=64
limit integer min=0,max=200,default=50
before string max=96
state string oneof=open\|closed\|all
type string max=64
severity string max=64
priority string max=64
subsystem string max=64
status string max=64
author string max=64
title string max=128
offset integer min=0,max=100000
order string max=32

Output fields:

ticket.new

POST /api/v1/r/{repo}/ticket — command, token

Open a new ticket.

Input:

field type rules
repo string required,max=64
title string required,max=200
status string max=40
comment string max=65536
type string max=40
severity string max=40
priority string max=40
subsystem string max=80
foundin string max=80

Output fields:

ticket.set

POST /api/v1/r/{repo}/ticket/{id} — command, token

Record a ticket change; empty fields are left untouched.

Input:

field type rules
repo string required,max=64
id string required,min=4,max=40
title string max=200
status string max=40
resolution string max=40
comment string max=65536
description string max=65536
type string max=40
severity string max=40
priority string max=40
subsystem string max=80
foundin string max=80

Output fields:

timeline.list

GET /api/v1/r/{repo}/timeline — query, anonymous

List a repository's events — check-ins, wiki edits, ticket changes — newest first, paged by before.

Input:

field type rules
repo string required,max=64
limit integer min=0,max=200,default=50
before string max=96
branch string max=64
tag string max=64
user string max=64
y string oneof=all\|ci\|w\|t\|e\|f

Output fields:

tree.list

GET /api/v1/r/{repo}/tree/{version}/{path...} — query, anonymous

List one directory of a check-in, with the directory's README rendered.

Input:

field type rules
repo string required,max=64
version string max=100
path string max=1024

Output fields:

wiki.get

GET /api/v1/r/{repo}/wiki/{name} — query, anonymous

Fetch one wiki page, rendered — latest, or the revision named by rev.

Input:

field type rules
repo string required,max=64
name string required,max=100
rev string max=64

Output fields:

wiki.history

GET /api/v1/r/{repo}/wiki/{name}/history — query, anonymous

List every recorded edit of one wiki page, newest first.

Input:

field type rules
repo string required,max=64
name string required,max=100

Output fields:

wiki.list

GET /api/v1/r/{repo}/wiki — query, anonymous

List a repository's wiki pages with their latest edit.

Input:

field type rules
repo string required,max=64

Output fields:

wiki.save

POST /api/v1/r/{repo}/wiki/{name} — command, token

Record a wiki page edit (creates the page on first save).

Input:

field type rules
repo string required,max=64
name string required,max=100
body string required,max=1048576
mimetype string max=64

Output fields: