Public: anyone can read this; 1 person and the crew can change it.

API

What the app describes at /openapi.json, read live.

36 operations in 3 areas

api 34

  • GET /api/audit The audit trail, newest first; `before` pages back by id.

    Parameters

    limitqueryinteger
    beforequeryinteger

    200 The audit trail, newest first; `before` pages back by id.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/audit/{id} One row of the audit trail.

    Parameters

    idpathintegerrequired

    200 One row of the audit trail.

    Fields

    idintegerrequired
    atstringrequired
    who_idstring | null
    who_namestring | null
    roleenum(anon, user, admin)required
    resourcestringrequired
    verbstringrequired
    targetstring | null
    allowedenum(0, 1)required
    outcomestringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/avatars Every chef in the hub.

    200 Every chef in the hub.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • POST /api/avatars Step into the hub as yourself (already there, you stay put).

    201 Step into the hub as yourself (already there, you stay put).

    Fields

    idintegerrequired
    author_idstringrequired
    namestringrequired
    xnumberrequired
    znumberrequired
    txnumberrequired
    tznumberrequired
    ageintegerrequired
    emotestring | null
    emoteAgeinteger
    saystring | null
    sayAgeinteger

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/avatars/{id} One chef in the hub.

    Parameters

    idpathintegerrequired

    200 One chef in the hub.

    Fields

    idintegerrequired
    author_idstringrequired
    namestringrequired
    xnumberrequired
    znumberrequired
    txnumberrequired
    tznumberrequired
    ageintegerrequired
    emotestring | null
    emoteAgeinteger
    saystring | null
    sayAgeinteger

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • DELETE /api/avatars/{id} Leave the hub.

    Parameters

    idpathintegerrequired

    200 Leave the hub.

    Fields

    idintegerrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • PATCH /api/avatars/{id} Walk somewhere, emote, or say something.

    Parameters

    idpathintegerrequired

    Body

    xnumber
    znumber
    emoteenum(wave, dance, cheer, taste, bow)
    saystring

    200 Walk somewhere, emote, or say something.

    Fields

    idintegerrequired
    author_idstringrequired
    namestringrequired
    xnumberrequired
    znumberrequired
    txnumberrequired
    tznumberrequired
    ageintegerrequired
    emotestring | null
    emoteAgeinteger
    saystring | null
    sayAgeinteger

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/delves The tables, newest first.

    200 The tables, newest first.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • POST /api/delves Open today's dungeon with yourself at the table.

    201 Open today's dungeon with yourself at the table.

    Fields

    idintegerrequired
    daystringrequired
    author_idstringrequired
    host_namestringrequired
    partyobject[]required
    depthintegerrequired
    roomsintegerrequired
    roomstringrequired
    scoreintegerrequired
    overenum(null, victory, wiped, timeout, abandoned)required
    joinablebooleanrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/delves/{id} One table. Its ticks stream at /delves/{id}/events.

    Parameters

    idpathintegerrequired

    200 One table. Its ticks stream at /delves/{id}/events.

    Fields

    idintegerrequired
    daystringrequired
    author_idstringrequired
    host_namestringrequired
    partyobject[]required
    depthintegerrequired
    roomsintegerrequired
    roomstringrequired
    scoreintegerrequired
    overenum(null, victory, wiped, timeout, abandoned)required
    joinablebooleanrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/heroes Every chef at every table.

    200 Every chef at every table.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • POST /api/heroes Take a seat at a table (four a table).

    Body

    delveintegerrequired
    classstring

    201 Take a seat at a table (four a table).

    Fields

    idintegerrequired
    delve_idintegerrequired
    author_idstringrequired
    author_namestringrequired
    classIdstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/heroes/{id} One chef at a table.

    Parameters

    idpathintegerrequired

    200 One chef at a table.

    Fields

    idintegerrequired
    delve_idintegerrequired
    author_idstringrequired
    author_namestringrequired
    classIdstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • DELETE /api/heroes/{id} Leave the table. The last chef out ends the delve.

    Parameters

    idpathintegerrequired

    200 Leave the table. The last chef out ends the delve.

    Fields

    idintegerrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • PATCH /api/heroes/{id} Give your chef an order.

    Parameters

    idpathintegerrequired

    Body

    typeenum(move, attack, dodge, ability, throw, stop)required
    xnumber
    znumber
    targetinteger
    spiceenum(pepper-bomb, salt-the-earth, hot-sauce)

    200 Give your chef an order.

    Fields

    idintegerrequired
    delve_idintegerrequired
    author_idstringrequired
    author_namestringrequired
    classIdstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/notes The notes, newest first.

    Parameters

    limitqueryinteger

    200 The notes, newest first.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • POST /api/notes Add a note as the person asking.

    Body

    bodystringrequired

    201 Add a note as the person asking.

    Fields

    idintegerrequired
    bodystringrequired
    author_idstringrequired
    author_namestringrequired
    created_atstringrequired
    updated_atstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/notes/{id} One note.

    Parameters

    idpathintegerrequired

    200 One note.

    Fields

    idintegerrequired
    bodystringrequired
    author_idstringrequired
    author_namestringrequired
    created_atstringrequired
    updated_atstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • DELETE /api/notes/{id} Remove a note.

    Parameters

    idpathintegerrequired

    200 Remove a note.

    Fields

    idintegerrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • PATCH /api/notes/{id} Change a note's words.

    Parameters

    idpathintegerrequired

    Body

    bodystringrequired

    200 Change a note's words.

    Fields

    idintegerrequired
    bodystringrequired
    author_idstringrequired
    author_namestringrequired
    created_atstringrequired
    updated_atstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/pantry Your pantry: the ingredients you have brought home.

    200 Your pantry: the ingredients you have brought home.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/pantry/{id} One ingredient in your pantry.

    Parameters

    idpathintegerrequired

    200 One ingredient in your pantry.

    Fields

    idintegerrequired
    author_idstringrequired
    ingredientenum(ghost-pepper, slime-jelly, stale-crust, rock-salt, torch-mushroom)required
    countintegerrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/runs A day's leaderboard (today unless `day`), best first.

    Parameters

    dayquerystring
    limitqueryinteger

    200 A day's leaderboard (today unless `day`), best first.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/runs/{id} One run, with its ghost.

    Parameters

    idpathintegerrequired

    200 One run, with its ghost.

    Fields

    idintegerrequired
    daystringrequired
    seedintegerrequired
    outcomeenum(victory, wiped, timeout, abandoned)required
    scoreintegerrequired
    depthintegerrequired
    killsintegerrequired
    goldintegerrequired
    ticksintegerrequired
    crewstring[]required
    author_idstringrequired
    author_namestringrequired
    created_atstringrequired
    ghoststring

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • DELETE /api/runs/{id} Strike a run from the board.

    Parameters

    idpathintegerrequired

    200 Strike a run from the board.

    Fields

    idintegerrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/spices Your shelf: the jars you have crafted and not thrown.

    200 Your shelf: the jars you have crafted and not thrown.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • POST /api/spices Craft a spice: its recipe comes out of your pantry.

    Body

    spiceenum(pepper-bomb, salt-the-earth, hot-sauce)required

    201 Craft a spice: its recipe comes out of your pantry.

    Fields

    idintegerrequired
    kindenum(pepper-bomb, salt-the-earth, hot-sauce)required
    author_idstringrequired
    author_namestringrequired
    created_atstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/spices/{id} One jar on your shelf.

    Parameters

    idpathintegerrequired

    200 One jar on your shelf.

    Fields

    idintegerrequired
    kindenum(pepper-bomb, salt-the-earth, hot-sauce)required
    author_idstringrequired
    author_namestringrequired
    created_atstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • DELETE /api/spices/{id} Tip a jar out.

    Parameters

    idpathintegerrequired

    200 Tip a jar out.

    Fields

    idintegerrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/trades Your ledger: every loaf in or out of your wallet, newest first.

    200 Your ledger: every loaf in or out of your wallet, newest first.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • POST /api/trades Trade at the Bread Exchange: sell pantry ingredients for loaves, or buy a spice jar with them.

    Body

    kindenum(sell, buy)required
    ingredientenum(ghost-pepper, slime-jelly, stale-crust, rock-salt, torch-mushroom)
    countinteger
    spiceenum(pepper-bomb, salt-the-earth, hot-sauce)

    201 Trade at the Bread Exchange: sell pantry ingredients for loaves, or buy a spice jar with them.

    Fields

    idintegerrequired
    author_idstringrequired
    author_namestringrequired
    kindenum(sell, buy, earn)required
    itemstringrequired
    countintegerrequired
    loavesintegerrequired
    notestringrequired
    created_atstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/trades/{id} One line of your ledger.

    Parameters

    idpathintegerrequired

    200 One line of your ledger.

    Fields

    idintegerrequired
    author_idstringrequired
    author_namestringrequired
    kindenum(sell, buy, earn)required
    itemstringrequired
    countintegerrequired
    loavesintegerrequired
    notestringrequired
    created_atstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/wallets The Bread Barons: the biggest hoards of bread, biggest first.

    Parameters

    limitqueryinteger

    200 The Bread Barons: the biggest hoards of bread, biggest first.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
  • GET /api/wallets/{id} One chef's bread.

    Parameters

    idpathintegerrequired

    200 One chef's bread.

    Fields

    idintegerrequired
    author_idstringrequired
    author_namestringrequired
    loavesintegerrequired
    updated_atstringrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring

healthz 1

  • GET /healthz Whether the app is up: its version, commit, environment and seconds since it started.

    200 Whether the app is up: its version, commit, environment and seconds since it started.

    Fields

    okbooleanrequired
    versionstringrequired
    commitstring
    envstring
    uptimeintegerrequired

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring

mcp 1

  • POST /mcp One JSON-RPC 2.0 message to the MCP server; its tools are the actions.

    Body

    jsonrpcanyrequired
    idany
    methodstringrequired
    paramsobject

    200 One JSON-RPC 2.0 message to the MCP server; its tools are the actions.

    default { error, message }: why not

    Fields

    errorstringrequired
    messagestring
↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs