---
title: "Record a decision: the option chosen, why, and the model as it was"
method: POST
path: "/workspaces/{id}/questions/{questionId}/decisions"
tags: ["model"]
---

# Record a decision: the option chosen, why, and the model as it was

`POST /workspaces/{id}/questions/{questionId}/decisions`

## Request

- Base URL: `https://api.swingfactor.ai/v1`
- URL: `https://api.swingfactor.ai/v1/workspaces/{id}/questions/{questionId}/decisions`
- Auth: HTTP bearer

Recorded by a person and never rewritten. Unless a snapshot is named, the model is frozen now, named for the decision; that snapshot is kept while the decision stands.

## Path parameters

- `id` string, uuid, required
- `questionId` string, uuid, required

## Headers

- `Idempotency-Key` string

## Request body

- RecordDecisionBody
  - `optionId` string, uuid, required
  - `configurationId` string, uuid: An accepted configuration of the option chosen, where one was.
  - `rationale` string, required
  - `snapshotId` string, uuid: The snapshot it was made on. Absent: one is frozen now, named for the decision.
  - `stanceVersionId` string, uuid: A version of a stance the recorder holds on this question, cited by the act. Shown only as the stance’s holder allows; never part of the record.

## Response `201`

The decisions, with it.

- DecisionList
  - `items` object[], required
    - `id` string, uuid, required
    - `snapshotId` string, uuid, required
    - `snapshotName` string, nullable
    - `optionId` string, uuid, nullable
    - `optionLabel` string, required
    - `configurationId` string, uuid, nullable
    - `configurationLabel` string, nullable
    - `rationale` string, required
    - `decidedByName` string, nullable
    - `decidedAt` string, required
    - `outcomes` object[], required
      - `id` string, uuid, required
      - `observedOn` string, required
      - `whatHappened` string, required
      - `propositionId` string, uuid, nullable
      - `held` 'held' | 'partly' | 'did-not-hold' | 'too-early' | 'null', nullable
      - `recordedByName` string, nullable
      - `recordedAt` string, required
  - `total` integer, required
  - `offset` integer, required
  - `limit` integer, required

## Other responses

- `401`: No token, or not a valid one: `unauthorized`.
- `403`: Only a person records a decision.
- `404`: No such option or snapshot.
- `422`: No reason given.

---

[API](https://skmtc.dev/swingfactor/apis/swingfactor-api.md) · [All operations](https://skmtc.dev/swingfactor/apis/swingfactor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/swingfactor/apis/swingfactor-api/revisions/c2fe881a39c3?raw)
