---
title: "Get Demand Config"
method: GET
path: "/v1/forecasting/demand-config/{teamId}"
---

# Get Demand Config

`GET /v1/forecasting/demand-config/{teamId}`

## Request

- Base URL: `https://app.untetherlabs.com/api`
- URL: `https://app.untetherlabs.com/api/v1/forecasting/demand-config/{teamId}`
- Auth: HTTP bearer

Get a [team](/reference/v1/teams/get-team)'s demand configuration: for
each [role](/reference/v1/roles/get-role), the extra columns
[POST /v1/forecasting/demand](/reference/v1/forecasting/upload-demand-forecast)
accepts and the values each allows.

- An axis with `mode: "column"` is an upload column. `column` is its
  CSV header or JSON key, and `values` are the values a cell accepts,
  matched exactly. An empty cell means any value.
- An axis with `mode: "ratio"` is a fixed split of the role's demand
  across the values of a licensed-region [skill](/guides/skills), used
  when demand is filtered by region. It is not an upload column.

`roleAxis` is how the team's demand maps to its roles.

## Path parameters

- `teamId` string, uuid, required: The id of a [team](/reference/v1/teams/get-team).

## Response `200`

- DemandConfig
  - `teamId` string, uuid, required: The [team](/reference/v1/teams/get-team).
  - `roleAxis` union, required: The team's role axis.
    - RoleAxisColumn: Every uploaded row names its role. The default.
      - `mode` 'column', required
    - RoleAxisNotUsed: The forecast describes the whole team rather than its roles. Upload it on any one of the team's roles; coverage then compares it with the hours scheduled across every role of the team instead of that role alone.
      - `mode` 'not_used', required
    - RoleAxisRatio: A team total uploaded without a role is split across the team's roles by fixed fractions. Rows sent to POST /v1/forecasting/demand always name a role, so this applies to team totals uploaded in the Untether web app.
      - `mode` 'ratio', required
      - `ratios` object, required: The fraction of the team total each role receives, keyed by role id. Every key must be a role of this team and the fractions must sum to 1.
  - `roles` DemandConfigRole[], required: Every role of the team, by name.
    - `roleId` string, uuid, required: The [role](/reference/v1/roles/get-role), as the `role` column of an upload names it.
    - `roleName` string, required: The name of the role.
    - `axes` SkillAxis[], required: The role's skill axes. Empty when its demand is not broken down by any skill.
      - union: How the role's demand is broken down by a skill.
        - SkillAxisColumn: Uploads for the role accept this skill as an extra column. A cell holds one of the skill's values and tags that row's demand with it; an empty cell means the demand applies whatever the value.
          - `skillId` string, uuid, required: The [skill](/guides/skills) the axis breaks demand down by.
          - `skillName` string, required: The name of that skill.
          - `mode` 'column', required
          - `column` string, required: The CSV column (or JSON key) that carries this skill in an upload for the role.
          - `values` string[], required: The values a cell in the column may hold, matched exactly.
        - SkillAxisRatio: A fixed split of the role's demand across a licensed-region skill's values. It is not an upload column and does not change stored demand: views filtered to some regions scale the role's demand by their share. Only licensed_region skills take this mode.
          - `skillId` string, uuid, required: The [skill](/guides/skills) the axis breaks demand down by.
          - `skillName` string, required: The name of that skill.
          - `mode` 'ratio', required
          - `ratios` object, required: The fraction of the role's demand in each of the skill's values, keyed by value. Every key must be one of the skill's values and the fractions must sum to 1.

## Other responses

- `400`: We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses. Errors should be identified by their `type` field. You can view extensions for each error response below.
- `404`: We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses. Errors should be identified by their `type` field. You can view extensions for each error response below.

---

[API](https://skmtc.dev/untetherlabs/apis/untether-labs-api.md) - [All operations](https://skmtc.dev/untetherlabs/apis/untether-labs-api/llms.txt) - [OpenAPI document](https://skmtc.dev/untetherlabs/apis/untether-labs-api/revisions/143223935df3?raw)
