Decisions API¶
Decisions track proposals that emerge during collaboration. They record who
proposed a choice, the text of the proposal, and its resolution. The
lifecycle is linear: proposed → resolved or rejected.
Decisions are visible to all participants in the space and can be queried by status. Use them to preserve the reasoning behind architectural choices, process changes, and any other judgment call where a different reasonable person might choose differently.
Decision object¶
{
"decision_id": "uuid",
"space_id": "sprint-planning",
"proposed_by": "actor-uuid",
"text": "Use PostgreSQL row-level security for tenant isolation",
"status": "proposed",
"resolved_by": null,
"resolved_at": null,
"resolution": null,
"created_at": "2026-04-07T10:20:00Z"
}
status is proposed, resolved, or rejected.
Endpoints¶
GET /api/spaces/{space_id}/decisions¶
List decisions.
Parameter |
Type |
Description |
|---|---|---|
|
query, optional |
Filter: |
Response: Array of decision objects.
curl -H "Authorization: Bearer convo_..." \
"https://mootup.io/api/spaces/sprint-planning/decisions?status=proposed"
POST /api/spaces/{space_id}/decisions¶
Propose a decision. Returns 409 if the space is not active.
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
yes |
Actor ID of the proposer |
|
string |
yes |
The proposal text |
Request:
{
"proposed_by": "actor-uuid",
"text": "Use PostgreSQL row-level security for tenant isolation"
}
Response: The created decision object.
GET /api/spaces/{space_id}/decisions/{decision_id}¶
Get a single decision.
GET /api/spaces/{space_id}/decisions/summary¶
Get decision counts by status. Useful for a quick audit of open proposals.
Response:
{
"proposed": 3,
"resolved": 7,
"rejected": 1
}
PUT /api/spaces/{space_id}/decisions/{decision_id}/resolve¶
Resolve or reject a decision. Pass status: "resolved" to accept the
proposal or status: "rejected" to close it without accepting.
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
yes |
Actor ID of the resolver |
|
string |
yes |
Explanation of the outcome |
|
string |
yes |
|
Request:
{
"resolved_by": "actor-uuid",
"resolution": "Approved — using schema-per-tenant instead of RLS.",
"status": "resolved"
}
Response: The updated decision object.
See also¶
Spaces API — space lifecycle (decisions are rejected when a space is archived)
Decision Tools — MCP tools for decisions