> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fitsociety.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Intakes

> Assign intake forms and read client intake submissions.

Use [Forms](/public-api/forms) to create and manage templates. Assignment
requires an active, non-archived template of the matching type. Archiving a
template preserves existing assignments and submitted answers.

## Assign intake form

```http theme={null}
POST /public/v1/clients/{clientId}/intake-assignments
Authorization: Bearer <access_token>
Content-Type: application/json
```

Required scope: `form_assignments:write`

Request body:

| Field    | Type   | Required | Rule                                                             |
| :------- | :----- | :------- | :--------------------------------------------------------------- |
| `formId` | string | yes      | Existing non-deleted `intake` form in the authenticated company. |

Assigning an intake form makes it the current form for the client and marks
previous current intake assignments as not current.

Response fields:

| Field                             | Type    | Nullable | Description                              |
| :-------------------------------- | :------ | :------- | :--------------------------------------- |
| `data.assignment.assignmentId`    | string  | no       | Assignment ID.                           |
| `data.assignment.clientId`        | string  | no       | Client ID.                               |
| `data.assignment.formId`          | string  | no       | Form ID.                                 |
| `data.assignment.formName`        | string  | no       | Form name.                               |
| `data.assignment.status`          | string  | no       | Assignment status.                       |
| `data.assignment.isAccessEnabled` | boolean | no       | Whether client access is enabled.        |
| `data.assignment.isCurrentForm`   | boolean | no       | Whether this is the current intake form. |
| `data.assignment.assignedAt`      | string  | yes      | Assignment creation timestamp.           |
| `data.assignment.updatedAt`       | string  | yes      | Assignment update timestamp.             |

## Get current intake assignment

```http theme={null}
GET /public/v1/clients/{clientId}/intake-assignment
Authorization: Bearer <access_token>
```

Required scope: `intakes:read`

Response fields:

| Field                             | Type    | Nullable | Description                                                      |
| :-------------------------------- | :------ | :------- | :--------------------------------------------------------------- |
| `data.status`                     | string  | no       | `not_assigned`, `active`, `completed`, `disabled`, or `expired`. |
| `data.assignment`                 | object  | yes      | Current assignment metadata, or `null`.                          |
| `data.assignment.assignmentId`    | string  | no       | Assignment ID.                                                   |
| `data.assignment.clientId`        | string  | no       | Client ID.                                                       |
| `data.assignment.formId`          | string  | no       | Form ID.                                                         |
| `data.assignment.formName`        | string  | no       | Form name.                                                       |
| `data.assignment.status`          | string  | no       | Assignment status.                                               |
| `data.assignment.isAccessEnabled` | boolean | no       | Whether client access is enabled.                                |
| `data.assignment.isCurrentForm`   | boolean | no       | Whether this is the current intake form.                         |
| `data.assignment.assignedAt`      | string  | yes      | Assignment creation timestamp.                                   |
| `data.assignment.updatedAt`       | string  | yes      | Assignment update timestamp.                                     |

Not exposed: coach IDs, raw form structure, form media, disabled assignment
history, or draft answers.

## Get latest intake submission

```http theme={null}
GET /public/v1/clients/{clientId}/intake/submission
Authorization: Bearer <access_token>
```

Required scope: `intakes:read`

Response fields:

| Field                              | Type    | Nullable | Description                                              |
| :--------------------------------- | :------ | :------- | :------------------------------------------------------- |
| `data.intake.submissionId`         | string  | no       | Submission ID.                                           |
| `data.intake.formId`               | string  | yes      | Form ID.                                                 |
| `data.intake.formName`             | string  | no       | Form name.                                               |
| `data.intake.formType`             | string  | no       | `intake`.                                                |
| `data.intake.settingId`            | string  | yes      | Setting ID when applicable.                              |
| `data.intake.submittedFor`         | string  | yes      | Submission period/date.                                  |
| `data.intake.submittedAt`          | string  | yes      | Submission timestamp.                                    |
| `data.intake.isReviewed`           | boolean | no       | Review status.                                           |
| `data.intake.answers[].question`   | string  | no       | Question name.                                           |
| `data.intake.answers[].answerType` | string  | no       | Answer type.                                             |
| `data.intake.answers[].answer`     | string  | no       | Normalized answer. Media answers are `[media redacted]`. |
| `data.intake.answers[].answeredAt` | string  | yes      | Answer timestamp.                                        |
| `data.intake.feedbacks[].feedback` | string  | no       | Feedback text.                                           |
| `data.intake.feedbacks[].givenAt`  | string  | yes      | Feedback timestamp.                                      |
