# Questions

## Create a question

`client.questions.create(QuestionCreateParamsparams, RequestOptionsoptions?): Question`

**post** `/v5/questions`

Create a new question owned by the caller's account.

The question is one of six types selected by the required `question_type`
discriminator (categorical, rating, number, free_text, form, or timestamp),
and each type carries its own `configuration` block; `name` and `prompt`
are required for every type. Questions are the reusable units that are grouped
into question sets and referenced by rubrics, so create them before assembling
a question set. The created question is scoped to the caller's account and
records the creating identity. The question type and its configuration are set
at creation time and cannot be changed afterward through the update endpoint.

### Parameters

- `params: QuestionCreateParams`

  - `question: CategoricalQuestionRequest | RatingQuestionRequest | NumberQuestionRequest | 3 more`

    - `CategoricalQuestionRequest`

      - `configuration: CategoricalQuestionConfiguration`

        - `choices: Array<string>`

          Categorical answer choices (must contain at least one entry)

        - `dropdown?: boolean`

          Whether the question is displayed as a dropdown in the UI.

        - `multi?: boolean`

          Whether the question allows multiple answers.

      - `name: string`

      - `prompt: string`

        user-facing question prompt

      - `conditions?: Array<Record<string, unknown>>`

        Conditions for the question to be shown

      - `question_type?: "categorical"`

        - `"categorical"`

    - `RatingQuestionRequest`

      - `configuration: RatingQuestionConfiguration`

        - `max_label: string`

          Label shown for the maximum rating

        - `min_label: string`

          Label shown for the minimum rating

        - `steps: number`

          Number of discrete points on the scale (e.g., 5 for a 1–5 scale)

      - `name: string`

      - `prompt: string`

        user-facing question prompt

      - `conditions?: Array<Record<string, unknown>>`

        Conditions for the question to be shown

      - `question_type?: "rating"`

        - `"rating"`

    - `NumberQuestionRequest`

      - `name: string`

      - `prompt: string`

        user-facing question prompt

      - `conditions?: Array<Record<string, unknown>>`

        Conditions for the question to be shown

      - `configuration?: NumberQuestionConfiguration`

        - `max?: number`

          Maximum value for the number

        - `min?: number`

          Minimum value for the number

      - `question_type?: "number"`

        - `"number"`

    - `FreeTextQuestionRequest`

      - `name: string`

      - `prompt: string`

        user-facing question prompt

      - `conditions?: Array<Record<string, unknown>>`

        Conditions for the question to be shown

      - `configuration?: FreeTextQuestionConfiguration`

        - `max_length?: number`

          Maximum characters allowed

        - `min_length?: number`

          Minimum characters required

      - `question_type?: "free_text"`

        - `"free_text"`

    - `FormQuestionRequest`

      - `configuration: FormQuestionConfiguration`

        - `form_schema: Record<string, unknown>`

          The JSON schema of the desired form object

      - `name: string`

      - `prompt: string`

        user-facing question prompt

      - `conditions?: Array<Record<string, unknown>>`

        Conditions for the question to be shown

      - `question_type?: "form"`

        - `"form"`

    - `TimestampQuestionRequest`

      - `name: string`

      - `prompt: string`

        user-facing question prompt

      - `conditions?: Array<Record<string, unknown>>`

        Conditions for the question to be shown

      - `configuration?: TimestampQuestionConfiguration`

        - `multi?: boolean`

          Whether to allow multiple timestamps

      - `question_type?: "timestamp"`

        - `"timestamp"`

### Returns

- `Question = CategoricalQuestion | RatingQuestion | NumberQuestion | 3 more`

  - `CategoricalQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: CategoricalQuestionConfiguration`

      - `choices: Array<string>`

        Categorical answer choices (must contain at least one entry)

      - `dropdown?: boolean`

        Whether the question is displayed as a dropdown in the UI.

      - `multi?: boolean`

        Whether the question allows multiple answers.

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

      - `id: string`

      - `type: "user" | "service_account"`

        - `"user"`

        - `"service_account"`

      - `object?: "identity"`

        - `"identity"`

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "categorical"`

      - `"categorical"`

  - `RatingQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: RatingQuestionConfiguration`

      - `max_label: string`

        Label shown for the maximum rating

      - `min_label: string`

        Label shown for the minimum rating

      - `steps: number`

        Number of discrete points on the scale (e.g., 5 for a 1–5 scale)

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "rating"`

      - `"rating"`

  - `NumberQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: NumberQuestionConfiguration`

      - `max?: number`

        Maximum value for the number

      - `min?: number`

        Minimum value for the number

    - `object?: "question"`

      - `"question"`

    - `question_type?: "number"`

      - `"number"`

  - `FreeTextQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: FreeTextQuestionConfiguration`

      - `max_length?: number`

        Maximum characters allowed

      - `min_length?: number`

        Minimum characters required

    - `object?: "question"`

      - `"question"`

    - `question_type?: "free_text"`

      - `"free_text"`

  - `FormQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: FormQuestionConfiguration`

      - `form_schema: Record<string, unknown>`

        The JSON schema of the desired form object

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "form"`

      - `"form"`

  - `TimestampQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: TimestampQuestionConfiguration`

      - `multi?: boolean`

        Whether to allow multiple timestamps

    - `object?: "question"`

      - `"question"`

    - `question_type?: "timestamp"`

      - `"timestamp"`

### Example

```typescript
import SGPClient from 'scale-gp';

const client = new SGPClient({
  accountID: 'My Account ID',
  apiKey: process.env['SGP_API_KEY'], // This is the default and can be omitted
});

const question = await client.questions.create({
  question: {
    configuration: { choices: ['string'] },
    name: 'name',
    prompt: 'prompt',
    question_type: 'categorical',
  },
});

console.log(question);
```

#### Response

```json
{
  "id": "id",
  "configuration": {
    "choices": [
      "string"
    ],
    "dropdown": true,
    "multi": true
  },
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by": {
    "id": "id",
    "type": "user",
    "object": "identity"
  },
  "name": "name",
  "prompt": "prompt",
  "archived_at": "2019-12-27T18:11:19.117Z",
  "conditions": [
    {
      "foo": "bar"
    }
  ],
  "object": "question",
  "question_type": "categorical"
}
```

## List questions

`client.questions.list(QuestionListParamsquery?, RequestOptionsoptions?): CursorPage<Question>`

**get** `/v5/questions`

Return a paginated list of the caller's account's questions.

Archived questions are excluded by default; set `include_archived` to true
to include them alongside active ones. Pass `ids` to restrict the result to
a specific set of question IDs. Results are paginated through the standard
pagination parameters. Use this to discover existing questions before adding
them to a question set, or to audit which questions have been archived.

### Parameters

- `query: QuestionListParams`

  - `ending_before?: string`

  - `ids?: Array<string>`

  - `include_archived?: boolean`

  - `limit?: number`

  - `sort_by?: string`

  - `sort_order?: SortOrder`

    - `"asc"`

    - `"desc"`

  - `starting_after?: string`

### Returns

- `Question = CategoricalQuestion | RatingQuestion | NumberQuestion | 3 more`

  - `CategoricalQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: CategoricalQuestionConfiguration`

      - `choices: Array<string>`

        Categorical answer choices (must contain at least one entry)

      - `dropdown?: boolean`

        Whether the question is displayed as a dropdown in the UI.

      - `multi?: boolean`

        Whether the question allows multiple answers.

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

      - `id: string`

      - `type: "user" | "service_account"`

        - `"user"`

        - `"service_account"`

      - `object?: "identity"`

        - `"identity"`

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "categorical"`

      - `"categorical"`

  - `RatingQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: RatingQuestionConfiguration`

      - `max_label: string`

        Label shown for the maximum rating

      - `min_label: string`

        Label shown for the minimum rating

      - `steps: number`

        Number of discrete points on the scale (e.g., 5 for a 1–5 scale)

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "rating"`

      - `"rating"`

  - `NumberQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: NumberQuestionConfiguration`

      - `max?: number`

        Maximum value for the number

      - `min?: number`

        Minimum value for the number

    - `object?: "question"`

      - `"question"`

    - `question_type?: "number"`

      - `"number"`

  - `FreeTextQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: FreeTextQuestionConfiguration`

      - `max_length?: number`

        Maximum characters allowed

      - `min_length?: number`

        Minimum characters required

    - `object?: "question"`

      - `"question"`

    - `question_type?: "free_text"`

      - `"free_text"`

  - `FormQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: FormQuestionConfiguration`

      - `form_schema: Record<string, unknown>`

        The JSON schema of the desired form object

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "form"`

      - `"form"`

  - `TimestampQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: TimestampQuestionConfiguration`

      - `multi?: boolean`

        Whether to allow multiple timestamps

    - `object?: "question"`

      - `"question"`

    - `question_type?: "timestamp"`

      - `"timestamp"`

### Example

```typescript
import SGPClient from 'scale-gp';

const client = new SGPClient({
  accountID: 'My Account ID',
  apiKey: process.env['SGP_API_KEY'], // This is the default and can be omitted
});

// Automatically fetches more pages as needed.
for await (const question of client.questions.list()) {
  console.log(question);
}
```

#### Response

```json
{
  "has_more": true,
  "items": [
    {
      "id": "id",
      "configuration": {
        "choices": [
          "string"
        ],
        "dropdown": true,
        "multi": true
      },
      "created_at": "2019-12-27T18:11:19.117Z",
      "created_by": {
        "id": "id",
        "type": "user",
        "object": "identity"
      },
      "name": "name",
      "prompt": "prompt",
      "archived_at": "2019-12-27T18:11:19.117Z",
      "conditions": [
        {
          "foo": "bar"
        }
      ],
      "object": "question",
      "question_type": "categorical"
    }
  ],
  "total": 0,
  "limit": 0,
  "object": "list"
}
```

## Get a question

`client.questions.retrieve(stringquestionID, RequestOptionsoptions?): Question`

**get** `/v5/questions/{question_id}`

Retrieve a single question in the caller's account by its ID.

Both active and archived questions are returned; the archived state is
conveyed by the `archived_at` field on the response. The lookup is scoped to
the caller's account, and a question that does not exist within that account
results in a not-found error.

### Parameters

- `questionID: string`

### Returns

- `Question = CategoricalQuestion | RatingQuestion | NumberQuestion | 3 more`

  - `CategoricalQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: CategoricalQuestionConfiguration`

      - `choices: Array<string>`

        Categorical answer choices (must contain at least one entry)

      - `dropdown?: boolean`

        Whether the question is displayed as a dropdown in the UI.

      - `multi?: boolean`

        Whether the question allows multiple answers.

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

      - `id: string`

      - `type: "user" | "service_account"`

        - `"user"`

        - `"service_account"`

      - `object?: "identity"`

        - `"identity"`

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "categorical"`

      - `"categorical"`

  - `RatingQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: RatingQuestionConfiguration`

      - `max_label: string`

        Label shown for the maximum rating

      - `min_label: string`

        Label shown for the minimum rating

      - `steps: number`

        Number of discrete points on the scale (e.g., 5 for a 1–5 scale)

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "rating"`

      - `"rating"`

  - `NumberQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: NumberQuestionConfiguration`

      - `max?: number`

        Maximum value for the number

      - `min?: number`

        Minimum value for the number

    - `object?: "question"`

      - `"question"`

    - `question_type?: "number"`

      - `"number"`

  - `FreeTextQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: FreeTextQuestionConfiguration`

      - `max_length?: number`

        Maximum characters allowed

      - `min_length?: number`

        Minimum characters required

    - `object?: "question"`

      - `"question"`

    - `question_type?: "free_text"`

      - `"free_text"`

  - `FormQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: FormQuestionConfiguration`

      - `form_schema: Record<string, unknown>`

        The JSON schema of the desired form object

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "form"`

      - `"form"`

  - `TimestampQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: TimestampQuestionConfiguration`

      - `multi?: boolean`

        Whether to allow multiple timestamps

    - `object?: "question"`

      - `"question"`

    - `question_type?: "timestamp"`

      - `"timestamp"`

### Example

```typescript
import SGPClient from 'scale-gp';

const client = new SGPClient({
  accountID: 'My Account ID',
  apiKey: process.env['SGP_API_KEY'], // This is the default and can be omitted
});

const question = await client.questions.retrieve('question_id');

console.log(question);
```

#### Response

```json
{
  "id": "id",
  "configuration": {
    "choices": [
      "string"
    ],
    "dropdown": true,
    "multi": true
  },
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by": {
    "id": "id",
    "type": "user",
    "object": "identity"
  },
  "name": "name",
  "prompt": "prompt",
  "archived_at": "2019-12-27T18:11:19.117Z",
  "conditions": [
    {
      "foo": "bar"
    }
  ],
  "object": "question",
  "question_type": "categorical"
}
```

## Update a question

`client.questions.update(stringquestionID, QuestionUpdateParamsbody, RequestOptionsoptions?): Question`

**patch** `/v5/questions/{question_id}`

Update a question's display name.

Only the `name` is mutable through this endpoint; a question's type, prompt,
and type-specific configuration are fixed at creation and cannot be changed
here. Updating an archived question is rejected with a client error, so restore
it first if it needs to be edited. The update is scoped to the caller's account.

### Parameters

- `questionID: string`

- `body: QuestionUpdateParams`

  - `name: string`

    Display name for the question

### Returns

- `Question = CategoricalQuestion | RatingQuestion | NumberQuestion | 3 more`

  - `CategoricalQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: CategoricalQuestionConfiguration`

      - `choices: Array<string>`

        Categorical answer choices (must contain at least one entry)

      - `dropdown?: boolean`

        Whether the question is displayed as a dropdown in the UI.

      - `multi?: boolean`

        Whether the question allows multiple answers.

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

      - `id: string`

      - `type: "user" | "service_account"`

        - `"user"`

        - `"service_account"`

      - `object?: "identity"`

        - `"identity"`

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "categorical"`

      - `"categorical"`

  - `RatingQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: RatingQuestionConfiguration`

      - `max_label: string`

        Label shown for the maximum rating

      - `min_label: string`

        Label shown for the minimum rating

      - `steps: number`

        Number of discrete points on the scale (e.g., 5 for a 1–5 scale)

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "rating"`

      - `"rating"`

  - `NumberQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: NumberQuestionConfiguration`

      - `max?: number`

        Maximum value for the number

      - `min?: number`

        Minimum value for the number

    - `object?: "question"`

      - `"question"`

    - `question_type?: "number"`

      - `"number"`

  - `FreeTextQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: FreeTextQuestionConfiguration`

      - `max_length?: number`

        Maximum characters allowed

      - `min_length?: number`

        Minimum characters required

    - `object?: "question"`

      - `"question"`

    - `question_type?: "free_text"`

      - `"free_text"`

  - `FormQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: FormQuestionConfiguration`

      - `form_schema: Record<string, unknown>`

        The JSON schema of the desired form object

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "form"`

      - `"form"`

  - `TimestampQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: TimestampQuestionConfiguration`

      - `multi?: boolean`

        Whether to allow multiple timestamps

    - `object?: "question"`

      - `"question"`

    - `question_type?: "timestamp"`

      - `"timestamp"`

### Example

```typescript
import SGPClient from 'scale-gp';

const client = new SGPClient({
  accountID: 'My Account ID',
  apiKey: process.env['SGP_API_KEY'], // This is the default and can be omitted
});

const question = await client.questions.update('question_id', { name: 'x' });

console.log(question);
```

#### Response

```json
{
  "id": "id",
  "configuration": {
    "choices": [
      "string"
    ],
    "dropdown": true,
    "multi": true
  },
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by": {
    "id": "id",
    "type": "user",
    "object": "identity"
  },
  "name": "name",
  "prompt": "prompt",
  "archived_at": "2019-12-27T18:11:19.117Z",
  "conditions": [
    {
      "foo": "bar"
    }
  ],
  "object": "question",
  "question_type": "categorical"
}
```

## Archive a question

`client.questions.archive(stringquestionID, RequestOptionsoptions?): Question`

**delete** `/v5/questions/{question_id}`

Soft-delete a question by setting its `archived_at` timestamp.

This is not a permanent delete: the row is retained and can be brought back
with the restore endpoint. Once archived, the question is excluded from list
results by default (unless `include_archived` is set) and can no longer be
updated until it is restored. The archived question is returned in the
response with its `archived_at` populated.

### Parameters

- `questionID: string`

### Returns

- `Question = CategoricalQuestion | RatingQuestion | NumberQuestion | 3 more`

  - `CategoricalQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: CategoricalQuestionConfiguration`

      - `choices: Array<string>`

        Categorical answer choices (must contain at least one entry)

      - `dropdown?: boolean`

        Whether the question is displayed as a dropdown in the UI.

      - `multi?: boolean`

        Whether the question allows multiple answers.

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

      - `id: string`

      - `type: "user" | "service_account"`

        - `"user"`

        - `"service_account"`

      - `object?: "identity"`

        - `"identity"`

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "categorical"`

      - `"categorical"`

  - `RatingQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: RatingQuestionConfiguration`

      - `max_label: string`

        Label shown for the maximum rating

      - `min_label: string`

        Label shown for the minimum rating

      - `steps: number`

        Number of discrete points on the scale (e.g., 5 for a 1–5 scale)

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "rating"`

      - `"rating"`

  - `NumberQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: NumberQuestionConfiguration`

      - `max?: number`

        Maximum value for the number

      - `min?: number`

        Minimum value for the number

    - `object?: "question"`

      - `"question"`

    - `question_type?: "number"`

      - `"number"`

  - `FreeTextQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: FreeTextQuestionConfiguration`

      - `max_length?: number`

        Maximum characters allowed

      - `min_length?: number`

        Minimum characters required

    - `object?: "question"`

      - `"question"`

    - `question_type?: "free_text"`

      - `"free_text"`

  - `FormQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: FormQuestionConfiguration`

      - `form_schema: Record<string, unknown>`

        The JSON schema of the desired form object

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "form"`

      - `"form"`

  - `TimestampQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: TimestampQuestionConfiguration`

      - `multi?: boolean`

        Whether to allow multiple timestamps

    - `object?: "question"`

      - `"question"`

    - `question_type?: "timestamp"`

      - `"timestamp"`

### Example

```typescript
import SGPClient from 'scale-gp';

const client = new SGPClient({
  accountID: 'My Account ID',
  apiKey: process.env['SGP_API_KEY'], // This is the default and can be omitted
});

const question = await client.questions.archive('question_id');

console.log(question);
```

#### Response

```json
{
  "id": "id",
  "configuration": {
    "choices": [
      "string"
    ],
    "dropdown": true,
    "multi": true
  },
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by": {
    "id": "id",
    "type": "user",
    "object": "identity"
  },
  "name": "name",
  "prompt": "prompt",
  "archived_at": "2019-12-27T18:11:19.117Z",
  "conditions": [
    {
      "foo": "bar"
    }
  ],
  "object": "question",
  "question_type": "categorical"
}
```

## Restore an archived question

`client.questions.restore(stringquestionID, RequestOptionsoptions?): Question`

**post** `/v5/questions/{question_id}/restore`

Restore a previously archived question, reversing an archive.

This clears the question's `archived_at` timestamp, returning it to the
active state so it reappears in default listings and becomes editable again.
It is the inverse of the archive (DELETE) operation and is intended for
questions that were archived by mistake or are needed again.

### Parameters

- `questionID: string`

### Returns

- `Question = CategoricalQuestion | RatingQuestion | NumberQuestion | 3 more`

  - `CategoricalQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: CategoricalQuestionConfiguration`

      - `choices: Array<string>`

        Categorical answer choices (must contain at least one entry)

      - `dropdown?: boolean`

        Whether the question is displayed as a dropdown in the UI.

      - `multi?: boolean`

        Whether the question allows multiple answers.

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

      - `id: string`

      - `type: "user" | "service_account"`

        - `"user"`

        - `"service_account"`

      - `object?: "identity"`

        - `"identity"`

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "categorical"`

      - `"categorical"`

  - `RatingQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: RatingQuestionConfiguration`

      - `max_label: string`

        Label shown for the maximum rating

      - `min_label: string`

        Label shown for the minimum rating

      - `steps: number`

        Number of discrete points on the scale (e.g., 5 for a 1–5 scale)

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "rating"`

      - `"rating"`

  - `NumberQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: NumberQuestionConfiguration`

      - `max?: number`

        Maximum value for the number

      - `min?: number`

        Minimum value for the number

    - `object?: "question"`

      - `"question"`

    - `question_type?: "number"`

      - `"number"`

  - `FreeTextQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: FreeTextQuestionConfiguration`

      - `max_length?: number`

        Maximum characters allowed

      - `min_length?: number`

        Minimum characters required

    - `object?: "question"`

      - `"question"`

    - `question_type?: "free_text"`

      - `"free_text"`

  - `FormQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: FormQuestionConfiguration`

      - `form_schema: Record<string, unknown>`

        The JSON schema of the desired form object

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "form"`

      - `"form"`

  - `TimestampQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: TimestampQuestionConfiguration`

      - `multi?: boolean`

        Whether to allow multiple timestamps

    - `object?: "question"`

      - `"question"`

    - `question_type?: "timestamp"`

      - `"timestamp"`

### Example

```typescript
import SGPClient from 'scale-gp';

const client = new SGPClient({
  accountID: 'My Account ID',
  apiKey: process.env['SGP_API_KEY'], // This is the default and can be omitted
});

const question = await client.questions.restore('question_id');

console.log(question);
```

#### Response

```json
{
  "id": "id",
  "configuration": {
    "choices": [
      "string"
    ],
    "dropdown": true,
    "multi": true
  },
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by": {
    "id": "id",
    "type": "user",
    "object": "identity"
  },
  "name": "name",
  "prompt": "prompt",
  "archived_at": "2019-12-27T18:11:19.117Z",
  "conditions": [
    {
      "foo": "bar"
    }
  ],
  "object": "question",
  "question_type": "categorical"
}
```

## Domain Types

### Categorical Question

- `CategoricalQuestion`

  - `id: string`

    Unique identifier of the entity

  - `configuration: CategoricalQuestionConfiguration`

    - `choices: Array<string>`

      Categorical answer choices (must contain at least one entry)

    - `dropdown?: boolean`

      Whether the question is displayed as a dropdown in the UI.

    - `multi?: boolean`

      Whether the question allows multiple answers.

  - `created_at: string`

    ISO-timestamp when the entity was created

  - `created_by: Identity`

    The identity that created the entity.

    - `id: string`

    - `type: "user" | "service_account"`

      - `"user"`

      - `"service_account"`

    - `object?: "identity"`

      - `"identity"`

  - `name: string`

  - `prompt: string`

    user-facing question prompt

  - `archived_at?: string`

    ISO-timestamp when the entity was archived

  - `conditions?: Array<Record<string, unknown>>`

    Conditions for the question to be shown

  - `object?: "question"`

    - `"question"`

  - `question_type?: "categorical"`

    - `"categorical"`

### Categorical Question Configuration

- `CategoricalQuestionConfiguration`

  - `choices: Array<string>`

    Categorical answer choices (must contain at least one entry)

  - `dropdown?: boolean`

    Whether the question is displayed as a dropdown in the UI.

  - `multi?: boolean`

    Whether the question allows multiple answers.

### Form Question

- `FormQuestion`

  - `id: string`

    Unique identifier of the entity

  - `configuration: FormQuestionConfiguration`

    - `form_schema: Record<string, unknown>`

      The JSON schema of the desired form object

  - `created_at: string`

    ISO-timestamp when the entity was created

  - `created_by: Identity`

    The identity that created the entity.

    - `id: string`

    - `type: "user" | "service_account"`

      - `"user"`

      - `"service_account"`

    - `object?: "identity"`

      - `"identity"`

  - `name: string`

  - `prompt: string`

    user-facing question prompt

  - `archived_at?: string`

    ISO-timestamp when the entity was archived

  - `conditions?: Array<Record<string, unknown>>`

    Conditions for the question to be shown

  - `object?: "question"`

    - `"question"`

  - `question_type?: "form"`

    - `"form"`

### Form Question Configuration

- `FormQuestionConfiguration`

  - `form_schema: Record<string, unknown>`

    The JSON schema of the desired form object

### Free Text Question

- `FreeTextQuestion`

  - `id: string`

    Unique identifier of the entity

  - `created_at: string`

    ISO-timestamp when the entity was created

  - `created_by: Identity`

    The identity that created the entity.

    - `id: string`

    - `type: "user" | "service_account"`

      - `"user"`

      - `"service_account"`

    - `object?: "identity"`

      - `"identity"`

  - `name: string`

  - `prompt: string`

    user-facing question prompt

  - `archived_at?: string`

    ISO-timestamp when the entity was archived

  - `conditions?: Array<Record<string, unknown>>`

    Conditions for the question to be shown

  - `configuration?: FreeTextQuestionConfiguration`

    - `max_length?: number`

      Maximum characters allowed

    - `min_length?: number`

      Minimum characters required

  - `object?: "question"`

    - `"question"`

  - `question_type?: "free_text"`

    - `"free_text"`

### Free Text Question Configuration

- `FreeTextQuestionConfiguration`

  - `max_length?: number`

    Maximum characters allowed

  - `min_length?: number`

    Minimum characters required

### Number Question

- `NumberQuestion`

  - `id: string`

    Unique identifier of the entity

  - `created_at: string`

    ISO-timestamp when the entity was created

  - `created_by: Identity`

    The identity that created the entity.

    - `id: string`

    - `type: "user" | "service_account"`

      - `"user"`

      - `"service_account"`

    - `object?: "identity"`

      - `"identity"`

  - `name: string`

  - `prompt: string`

    user-facing question prompt

  - `archived_at?: string`

    ISO-timestamp when the entity was archived

  - `conditions?: Array<Record<string, unknown>>`

    Conditions for the question to be shown

  - `configuration?: NumberQuestionConfiguration`

    - `max?: number`

      Maximum value for the number

    - `min?: number`

      Minimum value for the number

  - `object?: "question"`

    - `"question"`

  - `question_type?: "number"`

    - `"number"`

### Number Question Configuration

- `NumberQuestionConfiguration`

  - `max?: number`

    Maximum value for the number

  - `min?: number`

    Minimum value for the number

### Question

- `Question = CategoricalQuestion | RatingQuestion | NumberQuestion | 3 more`

  - `CategoricalQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: CategoricalQuestionConfiguration`

      - `choices: Array<string>`

        Categorical answer choices (must contain at least one entry)

      - `dropdown?: boolean`

        Whether the question is displayed as a dropdown in the UI.

      - `multi?: boolean`

        Whether the question allows multiple answers.

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

      - `id: string`

      - `type: "user" | "service_account"`

        - `"user"`

        - `"service_account"`

      - `object?: "identity"`

        - `"identity"`

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "categorical"`

      - `"categorical"`

  - `RatingQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: RatingQuestionConfiguration`

      - `max_label: string`

        Label shown for the maximum rating

      - `min_label: string`

        Label shown for the minimum rating

      - `steps: number`

        Number of discrete points on the scale (e.g., 5 for a 1–5 scale)

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "rating"`

      - `"rating"`

  - `NumberQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: NumberQuestionConfiguration`

      - `max?: number`

        Maximum value for the number

      - `min?: number`

        Minimum value for the number

    - `object?: "question"`

      - `"question"`

    - `question_type?: "number"`

      - `"number"`

  - `FreeTextQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: FreeTextQuestionConfiguration`

      - `max_length?: number`

        Maximum characters allowed

      - `min_length?: number`

        Minimum characters required

    - `object?: "question"`

      - `"question"`

    - `question_type?: "free_text"`

      - `"free_text"`

  - `FormQuestion`

    - `id: string`

      Unique identifier of the entity

    - `configuration: FormQuestionConfiguration`

      - `form_schema: Record<string, unknown>`

        The JSON schema of the desired form object

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `object?: "question"`

      - `"question"`

    - `question_type?: "form"`

      - `"form"`

  - `TimestampQuestion`

    - `id: string`

      Unique identifier of the entity

    - `created_at: string`

      ISO-timestamp when the entity was created

    - `created_by: Identity`

      The identity that created the entity.

    - `name: string`

    - `prompt: string`

      user-facing question prompt

    - `archived_at?: string`

      ISO-timestamp when the entity was archived

    - `conditions?: Array<Record<string, unknown>>`

      Conditions for the question to be shown

    - `configuration?: TimestampQuestionConfiguration`

      - `multi?: boolean`

        Whether to allow multiple timestamps

    - `object?: "question"`

      - `"question"`

    - `question_type?: "timestamp"`

      - `"timestamp"`

### Rating Question

- `RatingQuestion`

  - `id: string`

    Unique identifier of the entity

  - `configuration: RatingQuestionConfiguration`

    - `max_label: string`

      Label shown for the maximum rating

    - `min_label: string`

      Label shown for the minimum rating

    - `steps: number`

      Number of discrete points on the scale (e.g., 5 for a 1–5 scale)

  - `created_at: string`

    ISO-timestamp when the entity was created

  - `created_by: Identity`

    The identity that created the entity.

    - `id: string`

    - `type: "user" | "service_account"`

      - `"user"`

      - `"service_account"`

    - `object?: "identity"`

      - `"identity"`

  - `name: string`

  - `prompt: string`

    user-facing question prompt

  - `archived_at?: string`

    ISO-timestamp when the entity was archived

  - `conditions?: Array<Record<string, unknown>>`

    Conditions for the question to be shown

  - `object?: "question"`

    - `"question"`

  - `question_type?: "rating"`

    - `"rating"`

### Rating Question Configuration

- `RatingQuestionConfiguration`

  - `max_label: string`

    Label shown for the maximum rating

  - `min_label: string`

    Label shown for the minimum rating

  - `steps: number`

    Number of discrete points on the scale (e.g., 5 for a 1–5 scale)

### Timestamp Question

- `TimestampQuestion`

  - `id: string`

    Unique identifier of the entity

  - `created_at: string`

    ISO-timestamp when the entity was created

  - `created_by: Identity`

    The identity that created the entity.

    - `id: string`

    - `type: "user" | "service_account"`

      - `"user"`

      - `"service_account"`

    - `object?: "identity"`

      - `"identity"`

  - `name: string`

  - `prompt: string`

    user-facing question prompt

  - `archived_at?: string`

    ISO-timestamp when the entity was archived

  - `conditions?: Array<Record<string, unknown>>`

    Conditions for the question to be shown

  - `configuration?: TimestampQuestionConfiguration`

    - `multi?: boolean`

      Whether to allow multiple timestamps

  - `object?: "question"`

    - `"question"`

  - `question_type?: "timestamp"`

    - `"timestamp"`

### Timestamp Question Configuration

- `TimestampQuestionConfiguration`

  - `multi?: boolean`

    Whether to allow multiple timestamps
