---
title: "Update a question"
method: PATCH
path: "/workspaces/{id}/questions/{questionId}"
tags: ["questions"]
---

# Update a question

`PATCH /workspaces/{id}/questions/{questionId}`

## Request

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

## Path parameters

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

## Request body

- QuestionPatchBody
  - `title` string
  - `framing` string
  - `visibility` 'public' | 'private': Defaults from the plan.
  - `depth` 'standard' | 'full': standard (the default) or full: what is shown up front and what a draft proposes.
  - `evidenceCutoff` union: The evidence cut-off; empty clears it.
    - string, date
    - ''
  - `constraintKind` union: What limits the investigation; empty clears it, and every priority under it.
    - 'time' | 'money' | 'people' | 'access' | 'deadline'
    - ''
  - `constraintNote` string
  - `constraintDeadline` union
    - string, date
    - ''
  - `availability` union: Whether it examines if each option could be had and kept; empty: not stated.
    - 'engaged' | 'not-material'
    - ''
  - `scenariosStated` union: none: no scenarios apply; empty: not stated. Refused while it names one (409).
    - 'none'
    - ''
  - `reason` string: Why — kept in the history.

## Response `200`

The updated question.

- Question
  - `id` string, uuid, required
  - `workspaceId` string, uuid, required
  - `createdBy` string, uuid
  - `title` string, required
  - `framing` string
  - `visibility` 'public' | 'private', required: Public is readable by anybody signed in; private by the workspace alone.
  - `evidenceCutoff` string: The evidence cut-off, YYYY-MM-DD: what came after it is listed apart.
  - `constraintKind` 'time' | 'money' | 'people' | 'access' | 'deadline': What limits the investigation. Only with one may a person prioritise the open matters.
  - `constraintNote` string
  - `constraintDeadline` string: For a deadline: YYYY-MM-DD.
  - `availability` 'engaged' | 'not-material': engaged: whether each option could be had and kept is examined here; not-material: the question raises no material availability issue. Absent: not stated.
  - `scenariosStated` 'none': none: the question says no scenarios apply. Absent: not stated.
  - `depth` 'standard' | 'full', required: standard or full: what is shown up front and what a draft proposes.
  - `askingStep` 'options' | 'scenarios' | 'dimensions' | 'sources' | 'view' | 'ask': Still being asked: the furthest step the wizard reached. Its workspace’s alone, and not drafted, until it is asked. Absent once asked.
  - `createdAt` string, required
  - `updatedAt` string, required
  - `links` QuestionLinks, required: Relative /v1 URLs to follow.
    - `self` string, required
    - `options` string, required
    - `propositions` string, required
    - `evidence` string, required
    - `dependencies` string, required
    - `variables` string, required
    - `investigation` string, required
    - `challenges` string, required
    - `history` string, required
    - `bearings` string, required
    - `symmetry` string, required
    - `briefing` string, required
    - `snapshots` string, required
    - `sources` string, required
    - `workspace` string, required

## Other responses

- `400`: The plan does not allow a private question: `plan_limit`.
- `401`: No token, or not a valid one: `unauthorized`.
- `404`: No such question.

---

[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)
