---
title: "The briefing: the whole model, and what the database concludes from it"
method: GET
path: "/workspaces/{id}/questions/{questionId}/briefing"
tags: ["model"]
---

# The briefing: the whole model, and what the database concludes from it

`GET /workspaces/{id}/questions/{questionId}/briefing`

## Request

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

## Path parameters

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

## Response `200`

The briefing.

- QuestionBrief: The whole model, with the investigation set and the symmetry counts the database draws from it.
  - `id` string, uuid, required
  - `title` string, required
  - `framing` string, nullable
  - `visibility` string, required
  - `evidenceCutoff` string, nullable
  - `availability` object, nullable
    - `engaged` boolean, required
    - `stated` 'engaged' | 'not-material' | 'null', nullable
  - `options` object[], required
    - `id` string, uuid, required
    - `label` string, required
    - `description` string, nullable
    - `status` string
    - `drafted` boolean
  - `scenarios` object[]
    - `id` string, uuid, required
    - `label` string, required
    - `description` string, nullable
  - `propositions` object[], required
    - `id` string, uuid, required
    - `name` string, nullable
    - `statement` string, required
    - `claimType` string, required
    - `standing` string, nullable
    - `evidenceStrength` string, required
    - `problemKind` string, required
    - `horizon` string, nullable
    - `role` string
    - `switchingCondition` string, nullable
    - `attribution` string
    - `transmission` string, nullable
    - `effect` string, nullable
    - `scenarioId` string, nullable
    - `switchingStatus` string, nullable
    - `upstreamChangedAt` string, nullable
    - `upstreamChangedFrom` string, nullable
    - `switchingTestedAt` string, nullable
    - `switchingTestedByName` string, nullable
    - `switchingBasis` string, nullable
    - `reviewBy` string, nullable
    - `affects` object[]
      - `groupId` string, uuid, required
      - `bearing` string, required
      - `note` string, nullable
    - `evidenceFamilies` integer, nullable
    - `everyScenario` boolean, nullable
    - `dimensionId` string, nullable
    - `firstPersonOnly` string[], nullable: Whose expectation it is, where its only accepted support is first-person evidence: theirs, never established.
    - `status` string, required
    - `decidedByName` string, nullable
    - `decidedAt` string, nullable
    - `position` integer
    - `createdAt` string
    - `bearsOn` string[], required
    - `bearings` object[]
      - `optionId` string, uuid, required
      - `configurationId` string, nullable
      - `aspect` string, required
    - `bearingsReviewedAt` string, nullable
    - `notYetConsidered` string[]
  - `evidence` object[], required
    - `id` string, uuid, required
    - `propositionId` string, uuid, required
    - `stance` string, required
    - `summary` string, required
    - `source` string, required
    - `sourceUrl` string, nullable
    - `sourceKind` string, required
    - `sourceItemId` string, nullable
    - `assertedBy` string, nullable
    - `assertedRole` string, nullable
    - `declaredInterest` string, nullable
    - `publishedOn` string, nullable
    - `accessedOn` string, nullable
    - `pinpoint` string, nullable
    - `derivesFromId` string, nullable
    - `lean` string, nullable
    - `whyThisSource` string, nullable
    - `afterCutoff` boolean, nullable
    - `status` string, required
    - `decidedByName` string, nullable
    - `decidedAt` string, nullable
    - `createdAt` string
  - `sources` object[], required: Names only, and only to the workspace: the documents are its own.
    - `itemId` string, uuid, required
    - `name` string, required
    - `size` number, required
  - `dependencies` object[], required
    - `id` string, uuid, required
    - `propositionId` string, uuid, required
    - `dependsOnId` string, uuid, required
    - `mechanism` string, nullable
    - `status` string, required
    - `decidedByName` string, nullable
    - `decidedAt` string, nullable
    - `createdAt` string
  - `variables` object[], required
    - `id` string, uuid, required
    - `propositionId` string, uuid, required
    - `name` string, required
    - `unit` string, nullable
    - `estimates` object[], required
      - `id` string, uuid, required
      - `low` number, required
      - `high` number, required
      - `source` string, nullable
      - `assertedBy` string, nullable
      - `assertedRole` string, nullable
      - `horizon` string, nullable
      - `scenarioId` string, nullable
      - `everyScenario` boolean, nullable
      - `configurationId` string, nullable
      - `everyConfiguration` boolean, nullable
      - `basis` string, nullable
      - `derivation` string, nullable
      - `measuredAgainst` string, nullable
      - `status` string, required
      - `decidedByName` string, nullable
      - `decidedAt` string, nullable
    - `breakEvens` object[], required
      - `id` string, uuid, required
      - `threshold` number, required
      - `horizon` 'transition' | 'early' | 'medium' | 'long' | 'every' | 'null', nullable: The matched horizon: transition (Day One), early adjustment, medium term, long run, or every horizon. None: not stated — never every.
      - `consequence` string, required: What changes at the threshold.
      - `basis` 'derived' | 'published' | 'criterion' | 'asserted', required: How it is known: derived (its arithmetic shown), published, a published criterion, or asserted by a named party — which records that they say so, not that they are right.
      - `derivation` string, nullable: For a derived one: the arithmetic.
      - `source` string, nullable: Where it is published, or asserted.
      - `assertedBy` string, nullable: For an asserted one: who draws the line.
      - `belowOutcome` string, nullable: What occurs below the threshold.
      - `aboveOutcome` string, nullable: What occurs above it.
      - `compares` object[], required: The two options it compares, each perhaps one configuration, in no order; or none. Never which is ahead: which way a consequence counts is a judgement, not the model’s.
        - `optionId` string, uuid, required
        - `configurationId` string, uuid, nullable
      - `configurationId` string, uuid, nullable: For a break-even comparing no options: the configuration it holds under.
      - `scenarioId` string, uuid, nullable
      - `everyScenario` boolean
      - `measuredAgainst` string, nullable: What it is measured against: compared with a range’s baseline, never bridged.
      - `status` string, required
      - `drafted` boolean
      - `decidedByName` string, nullable
      - `decidedAt` string, nullable
  - `challenges` object[], required
    - `id` string, uuid, required
    - `targetKind` string, required
    - `targetId` string, uuid, required
    - `objection` string, required
    - `raisedByName` string, nullable
    - `outcome` string, nullable
    - `validity` string, nullable
    - `response` string, nullable
    - `resolvedByName` string, nullable
    - `resolvedAt` string, nullable
    - `createdAt` string
  - `investigation` InvestigationSet, required
    - `questionId` string, uuid, required
    - `variables` object[], required
      - `variableId` string, uuid, required
      - `name` string, required
      - `unit` string, nullable, required
      - `propositionId` string, uuid, required
      - `problemKind` 'epistemic' | 'capability' | 'normative', required
      - `status` 'critical' | 'not-critical' | 'incomplete', required
      - `acceptedEstimates` integer, required
      - `acceptedBreakEvens` integer, required: The evidence’s: derived, published or criterion.
      - `crossings` object[], required
        - `breakEvenId` string, uuid, required
        - `variableId` string, uuid, required
        - `threshold` number, required
        - `horizon` 'transition' | 'early' | 'medium' | 'long' | 'every' | 'null', nullable: The matched horizon: transition (Day One), early adjustment, medium term, long run, or every horizon. None: not stated — never every.
        - `consequence` string, required: What changes at the threshold.
        - `basis` 'derived' | 'published' | 'criterion' | 'asserted', required: How it is known: derived (its arithmetic shown), published, a published criterion, or asserted by a named party — which records that they say so, not that they are right.
        - `derivation` string, nullable: For a derived one: the arithmetic.
        - `source` string, nullable: Where it is published, or asserted.
        - `assertedBy` string, nullable: For an asserted one: who draws the line.
        - `belowOutcome` string, nullable: What occurs below the threshold.
        - `aboveOutcome` string, nullable: What occurs above it.
        - `compares` object[], required: The two options it compares, each perhaps one configuration, in no order; or none. Never which is ahead: which way a consequence counts is a judgement, not the model’s.
          - `optionId` string, uuid, required
          - `configurationId` string, uuid, nullable
        - `configurationId` string, uuid, nullable: For a break-even comparing no options: the configuration it holds under.
        - `scenarioId` string, uuid, nullable
        - `everyScenario` boolean
        - `measuredAgainst` string, nullable: What it is measured against: compared with a range’s baseline, never bridged.
        - `estimateIds` string[], required
      - `disagreements` object[], required
        - `breakEvenId` string, uuid, required
        - `variableId` string, uuid, required
        - `threshold` number, required
        - `horizon` 'transition' | 'early' | 'medium' | 'long' | 'every' | 'null', nullable: The matched horizon: transition (Day One), early adjustment, medium term, long run, or every horizon. None: not stated — never every.
        - `consequence` string, required: What changes at the threshold.
        - `basis` 'derived' | 'published' | 'criterion' | 'asserted', required: How it is known: derived (its arithmetic shown), published, a published criterion, or asserted by a named party — which records that they say so, not that they are right.
        - `derivation` string, nullable: For a derived one: the arithmetic.
        - `source` string, nullable: Where it is published, or asserted.
        - `assertedBy` string, nullable: For an asserted one: who draws the line.
        - `belowOutcome` string, nullable: What occurs below the threshold.
        - `aboveOutcome` string, nullable: What occurs above it.
        - `compares` object[], required: The two options it compares, each perhaps one configuration, in no order; or none. Never which is ahead: which way a consequence counts is a judgement, not the model’s.
          - `optionId` string, uuid, required
          - `configurationId` string, uuid, nullable
        - `configurationId` string, uuid, nullable: For a break-even comparing no options: the configuration it holds under.
        - `scenarioId` string, uuid, nullable
        - `everyScenario` boolean
        - `measuredAgainst` string, nullable: What it is measured against: compared with a range’s baseline, never bridged.
        - `belowEstimateIds` string[], required
        - `aboveEstimateIds` string[], required
      - `sides` object[], required: Every accepted break-even, whoever’s, and which accepted ranges lie below, above and across it.
        - `breakEvenId` string, uuid, required
        - `variableId` string, uuid, required
        - `threshold` number, required
        - `horizon` 'transition' | 'early' | 'medium' | 'long' | 'every' | 'null', nullable: The matched horizon: transition (Day One), early adjustment, medium term, long run, or every horizon. None: not stated — never every.
        - `consequence` string, required: What changes at the threshold.
        - `basis` 'derived' | 'published' | 'criterion' | 'asserted', required: How it is known: derived (its arithmetic shown), published, a published criterion, or asserted by a named party — which records that they say so, not that they are right.
        - `derivation` string, nullable: For a derived one: the arithmetic.
        - `source` string, nullable: Where it is published, or asserted.
        - `assertedBy` string, nullable: For an asserted one: who draws the line.
        - `belowOutcome` string, nullable: What occurs below the threshold.
        - `aboveOutcome` string, nullable: What occurs above it.
        - `compares` object[], required: The two options it compares, each perhaps one configuration, in no order; or none. Never which is ahead: which way a consequence counts is a judgement, not the model’s.
          - `optionId` string, uuid, required
          - `configurationId` string, uuid, nullable
        - `configurationId` string, uuid, nullable: For a break-even comparing no options: the configuration it holds under.
        - `scenarioId` string, uuid, nullable
        - `everyScenario` boolean
        - `measuredAgainst` string, nullable: What it is measured against: compared with a range’s baseline, never bridged.
        - `belowEstimateIds` string[], required
        - `aboveEstimateIds` string[], required
        - `acrossEstimateIds` string[], required
        - `withoutRange` object[]: The sides it compares with no accepted range read against them: nothing is filled in for them.
          - `optionId` string, uuid, required
          - `configurationId` string, uuid, nullable
        - `notCompared` object[]: The variable’s accepted ranges not read against it, and why, dimension by dimension: shown, never bridged.
          - `estimateId` string, uuid, required
          - `mismatches` object[], required
            - `dimension` 'horizon' | 'scenario' | 'baseline' | 'option' | 'configuration', required
            - `result` 'mismatch' | 'not-stated', required
            - `side` 'range' | 'threshold' | 'either'
            - `says` string, required
      - `attributed` object[], required: A party’s asserted threshold that the accepted ranges reach or lie either side of: listed as theirs, never the model’s, and never what makes the variable critical.
        - `breakEvenId` string, uuid, required
        - `variableId` string, uuid, required
        - `threshold` number, required
        - `horizon` 'transition' | 'early' | 'medium' | 'long' | 'every' | 'null', nullable: The matched horizon: transition (Day One), early adjustment, medium term, long run, or every horizon. None: not stated — never every.
        - `consequence` string, required: What changes at the threshold.
        - `basis` 'derived' | 'published' | 'criterion' | 'asserted', required: How it is known: derived (its arithmetic shown), published, a published criterion, or asserted by a named party — which records that they say so, not that they are right.
        - `derivation` string, nullable: For a derived one: the arithmetic.
        - `source` string, nullable: Where it is published, or asserted.
        - `assertedBy` string, nullable: For an asserted one: who draws the line.
        - `belowOutcome` string, nullable: What occurs below the threshold.
        - `aboveOutcome` string, nullable: What occurs above it.
        - `compares` object[], required: The two options it compares, each perhaps one configuration, in no order; or none. Never which is ahead: which way a consequence counts is a judgement, not the model’s.
          - `optionId` string, uuid, required
          - `configurationId` string, uuid, nullable
        - `configurationId` string, uuid, nullable: For a break-even comparing no options: the configuration it holds under.
        - `scenarioId` string, uuid, nullable
        - `everyScenario` boolean
        - `measuredAgainst` string, nullable: What it is measured against: compared with a range’s baseline, never bridged.
        - `belowEstimateIds` string[], required
        - `aboveEstimateIds` string[], required
        - `acrossEstimateIds` string[], required
        - `withoutRange` object[]: The sides it compares with no accepted range read against them: nothing is filled in for them.
          - `optionId` string, uuid, required
          - `configurationId` string, uuid, nullable
        - `notCompared` object[]: The variable’s accepted ranges not read against it, and why, dimension by dimension: shown, never bridged.
          - `estimateId` string, uuid, required
          - `mismatches` object[], required
            - `dimension` 'horizon' | 'scenario' | 'baseline' | 'option' | 'configuration', required
            - `result` 'mismatch' | 'not-stated', required
            - `side` 'range' | 'threshold' | 'either'
            - `says` string, required
      - `incompleteBecause` 'no-break-even' | 'no-range' | 'no-range-in-its-scope' | 'no-range-at-its-horizon' | 'null', nullable: Why it is not yet testable: no break-even the evidence gives is established; or one is, and the ranges to test it are missing.
    - `valueChoices` string[], required: Propositions no range resolves: people decide them.
    - `untested` string[]: Accepted or qualified empirical and mixed propositions that state nothing which would change them. Absent from an older snapshot.
    - `unresolved` object[]: Claims a person has left unresolved, with what resolving each takes: open matters, whether or not a figure could settle them. Absent from an older snapshot.
      - `propositionId` string, uuid, required
      - `problemKind` 'epistemic' | 'capability' | 'normative', required: While unresolved: investigate (epistemic), build capacity, or decide (normative).
    - `constraint` object, nullable: What limits the investigation, when the question names it.
      - `kind` string, required
      - `note` string, nullable
      - `deadline` string, nullable
    - `undefinedOptions` string[]: Accepted options with no accepted configuration, where the question uses the frontier: a gap to fill, never a verdict.
    - `availabilityUnexamined` object[]: Accepted options with no decided claim on whether they could be obtained, or would last — only where the question engages availability. Listed, and not counted against readiness.
      - `optionId` string, uuid, required
      - `obtainable` boolean, required
      - `durable` boolean, required
    - `availability` object: Whether the question engages availability, and what it says of it.
      - `engaged` boolean, required
      - `stated` 'engaged' | 'not-material' | 'null', nullable
    - `priorities` object: A person's priorities under that constraint, by proposition id.
  - `symmetry` Symmetry, required
    - `questionId` string, uuid, required
    - `options` object[], required
      - `optionId` string, uuid, required
      - `label` string, required
      - `propositions` integer, required
      - `accepted` integer, required
      - `qualified` integer, required
      - `unresolved` integer, required
      - `rejected` integer, required
      - `proposed` integer, required
      - `evidence` integer, required: Accepted evidence behind those propositions.
      - `challenges` integer, required: Challenges to those propositions or their evidence.
      - `withoutTransmission` integer: Specific to some options but not all, with no transmission named.
      - `variables` integer: Variables with an accepted range, of the decided specific propositions bearing on it.
      - `ranges` integer: Their accepted ranges.
      - `groupsAffected` integer: The groups of people those claims affect.
      - `obtainable` integer: Decided claims on whether it could be obtained: how hard that was examined.
      - `durable` integer: Decided claims on whether it would last.
    - `bearingOnNone` object, required
      - `propositions` integer, required
      - `accepted` integer, required
      - `qualified` integer, required
      - `unresolved` integer, required
      - `rejected` integer, required
      - `proposed` integer, required
      - `evidence` integer, required: Accepted evidence behind those propositions.
      - `challenges` integer, required: Challenges to those propositions or their evidence.
      - `withoutTransmission` integer: Specific to some options but not all, with no transmission named.
    - `common` object: Common pressures: counted once, against no option. Absent from an older snapshot.
      - `propositions` integer, required
      - `accepted` integer, required
      - `qualified` integer, required
      - `unresolved` integer, required
      - `rejected` integer, required
      - `proposed` integer, required
      - `evidence` integer, required: Accepted evidence behind those propositions.
      - `challenges` integer, required: Challenges to those propositions or their evidence.
      - `withoutTransmission` integer: Specific to some options but not all, with no transmission named.
  - `readiness` object: Whether it is ready to freeze by the stopping rule: counted, never enforced. Absent from an older snapshot.
    - `openChallenges` integer, required
    - `undecided` integer, required
    - `untested` integer, required
    - `ready` boolean, required
  - `frontier` Frontier: The configuration frontier. Absent from an older snapshot.
    - `dimensions` object[], required: The factors: what every option is compared on.
      - `id` string, uuid, required
      - `label` string, required
      - `description` string, nullable
      - `position` integer, required
      - `suggested` boolean
      - `status` 'proposed' | 'accepted' | 'rejected': Proposed by a draft, or decided by a person. Absent from an older snapshot.
      - `drafted` boolean
      - `decidedByName` string, nullable
    - `configurations` object[], required
      - `id` string, uuid, required
      - `optionId` string, uuid, required
      - `label` string, required
      - `description` string, nullable
      - `position` integer, required
      - `said` integer, required: How many dimensions it has an answer for.
      - `status` 'proposed' | 'accepted' | 'rejected': Proposed by a draft, or decided by a person. Absent from an older snapshot.
      - `drafted` boolean
      - `decidedByName` string, nullable
    - `cells` object[], required
      - `id` string, uuid, required
      - `optionId` string, uuid: Absent from a snapshot before 0047.
      - `configurationId` string, uuid, nullable: With one, the way of taking the option it answers for; without, the option's own.
      - `dimensionId` string, uuid, required
      - `answer` string, required
      - `source` string, nullable
      - `status` 'proposed' | 'accepted' | 'rejected': Proposed by a draft, or decided by a person. Absent from an older snapshot.
      - `drafted` boolean
      - `decidedByName` string, nullable
    - `assessments` object[]: How each proposition fares under a configuration, and a scenario where it turns on one. Absent from an older snapshot.
      - `id` string, uuid, required
      - `propositionId` string, uuid, required
      - `configurationId` string, uuid, required
      - `scenarioId` string, uuid, nullable
      - `verdict` 'survives' | 'weakened' | 'conditional' | 'fails', required: How the proposition fares under the configuration: survives, weakened, conditional or fails.
      - `conditions` string, nullable
      - `source` string, nullable
      - `status` 'proposed' | 'accepted' | 'rejected'
      - `drafted` boolean
      - `decidedByName` string, nullable
      - `basisChangedAt` string, nullable: When an accepted answer of its configuration changed after it was made: part of the configuration basis it was assessed against changed — nothing more. Cleared by a person.
      - `basisChangedLabel` string, nullable
      - `basisChangedKind` 'answer' | 'answered' | 'configuration' | 'question-removed' | 'null', nullable
      - `basis` string[], nullable: The frontier questions that form part of its stated basis — a person's statement, never inferred. Absent: none is stated, and every accepted answer of its configuration counts.
    - `said` integer, required
    - `possible` integer, required: Configurations times dimensions: what could be said.
  - `groups` object[]: The groups of people the decision affects. Absent from an older snapshot.
    - `id` string, uuid, required
    - `label` string, required
    - `description` string, nullable
    - `position` integer, required
    - `status` 'proposed' | 'accepted' | 'rejected'
    - `drafted` boolean
    - `decidedByName` string, nullable
  - `decisions` object[]: What was decided on it, and what happened since. Absent from an older snapshot.
    - `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
  - `counts` QuestionCounts: Its counts, for its charts. Absent from an older snapshot.
    - `byVerdict` object, required
    - `byStrength` object, required
    - `bySwitching` object
    - `propositions` integer, required
    - `undecided` integer, required
    - `openChallenges` integer, required
    - `upstreamChanged` integer: Decided propositions resting on one that changed since, waiting to be re-checked.
    - `reaches` object: How many propositions a change to each would reach, through accepted links, by its id.
    - `evidenceFamilies` object: Independent families among each proposition’s accepted evidence, by its id.
    - `qualifications` object: Which ways each proposition’s accepted qualifications lean, by its id.
    - `afterCutoff` integer: Evidence after the question’s cut-off.
    - `byKind` object: Claims by what resolving them takes: epistemic, capability, normative.
    - `forecasts` integer: Claims about what will happen.
    - `scenarios` integer
    - `groups` integer: Groups of people it affects.
    - `acceptedEvidence` integer
    - `openByKind` object: The decision-critical set by what resolving it takes.
    - `challengesBy` object: Challenges by where they stand: open, genuine, partly, not-genuine or unsaid.

## Other responses

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