Standups
Async written check-ins — entries, blockers, history and the live worklist.
Scopes: standups:read, standups:write
Krrim's standups are written and asynchronous: each person posts what they did, what they are doing and what is blocking them, and the team reads it when they get to it.
Writing as a service account
GET /api/v1/standups/me/
PUT /api/v1/standups/me/me is the token's service account, not the person who created the token.
A bot that posts a build summary each morning posts as itself, which is the
honest attribution.
There is no endpoint to post an entry on someone else's behalf, and that is deliberate. A standup entry is a statement by a person; an integration that could write one for them would make the whole record untrustworthy.
Blockers
GET /api/v1/standups/blockers/Everything currently declared as blocking, across the team. This is the endpoint worth wiring to a chat channel — blockers are the part of a standup that needs a reader today.
Worklist
GET /api/v1/standups/worklist/{user_id}/The live list of what one person actually has in flight, drawn from their tasks rather than from what they typed. Today only.
History
GET /api/v1/standups/history/{user_id}/History is a frozen record, not a re-read of current state. Past entries say what was true on the day they were written — including task titles and statuses as they were then. That is the point: a standup history that silently updates itself to match today is not a history.
Endpoints
| Method | Path | Scope |
|---|---|---|
GET | /api/v1/standups/ | standups:read |
GET | /api/v1/standups/blockers/ | standups:read |
GET | /api/v1/standups/history/{user_id}/ | standups:read |
GET | /api/v1/standups/me/ | standups:read |
PUT | /api/v1/standups/me/ | standups:write |
POST | /api/v1/standups/me/redraft/ | standups:write |
POST | /api/v1/standups/me/skip/ | standups:write |
GET | /api/v1/standups/settings/ | standups:read |
PATCH | /api/v1/standups/settings/ | standups:write |
GET | /api/v1/standups/worklist/{user_id}/ | standups:read |