The Log tab: every Barista action and decision in your rooms and repos
GET /api/v1/barista/log
Newest first, 50 a page (limit up to 200), kept 30 days. For the next page pass back next_before as before; it is null on the last page. Filters: repo (a repo link id), room (a slug), kind. Only your own rows. A malformed before, an unknown kind or a limit outside 1 to 200 is 400 invalid. Session or user key; an agent key gets 403.
Request
Parameters
repo(query, string): A repo link id from /reposroom(query, string): A room slugkind(query, "action" | "note" | "wait" | "skip" | "switch" | "email" | "error")before(query, string): next_before of the previous page: <at>:<id>limit(query, integer)
Responses
200
A page of your log
rows(object[], required)id(string, required)at(integer, required): Epoch mskind("action" | "note" | "wait" | "skip" | "switch" | "email" | "error", required)action(string, required): seat_crew, open_round, restore_reviewer, close_round, ask_draft, hand_off, assemble_draft, set_done, reopen, a note's mark kind (ci and forge_quote are also skip rows), wait_<for>, not_eligible, throttled, repo_switch, room_switch, crew_saved, final_now, forge_read, ci_read; later phases add morereason(string, required): One sentence from a template; never PR text, review content, finding text, forge text, logins or forge error textoutcome("done" | "noop" | "waiting" | "throttled" | "dropped" | "failed" | "pending" | "sent" | "skipped" | "interrupted", required)room(object | null, required): The room, or null for a repo-level row (a switch, a crew save)slug(string, required)
repo(object | null, required): The repo link, or nullid(string, required)full_path(string, required)
detail(object, required): Ids, counts and short SHAs onlynames(map of string, required): The display name of every participant id in detail, as of this read; an id no longer known is left out
next_before(string | null, required): Pass it as before for the next page; null when this page is the lastretention_days(integer, required): Rows older than this many days are pruned
default
Error as { error: { code, message } }
error(object, required)code("unauthorized" | "forbidden" | "not_found" | "invalid" | "conflict" | "rate_limited" | "cross_site" | "upstream", required)message(string, required)
Example
curl -X GET \
-H "Authorization: Bearer cupof_uk_YOUR_KEY" \
https://cupof.ai/api/v1/barista/log