# Forms · REST API

> A Sheetgo form collects data straight into a workflow.

HTML version: https://developers.sheetgo.com/api/forms/

[Developers](/index.md) › [REST API](/api.md) › [Forms & Integrations](/api.md#api-endpoints)

REST API · 7 endpoints

## Forms

**Complete for this group.** Each operation below lists its parameters, request body, responses and errors. Every model they use is documented under [Models used on this page](#models), so you do not need another page to build a request. Base URL `https://api.sheetgo.com`; paths are complete, version included (`/rest/beta/…`): append them to the base URL exactly as shown; send `Authorization: Bearer sg_…`. Also in the API's own docs: <https://api.sheetgo.com/rest/reference/forms> ([Markdown](https://api.sheetgo.com/rest/reference/forms.md)).

**Conventions for every endpoint.** Lists take `page` (from 1) and `per_page` (1-100, default 50), and `total` counts **pages**, not items. Collection URLs end with `/`. `POST …/run` returns `200` when the run is *queued*; poll `GET …/run`. Google Sheets use `provider: "drive"`; column fields take letters (`"E"`). Error bodies and status codes: [REST API › Errors](/api.md#api-errors).

**Python recipes.** [API client helper](/examples.md#recipe-sheetgo-api) · [Read every page of a list](/examples.md#recipe-paginate).

A **Sheetgo form** collects data straight into a workflow. Its fields come from your spreadsheet's columns, and every submission is appended as a new row — a simple way to feed a workflow from people instead of another system.

Use these endpoints to **list** a workflow's forms and **read** their configuration.

## Operations

#### GET `/rest/beta/workflows/{workflow_id}/forms/` — Get a paginated list of forms

Return a list of forms following the pagination parameters

##### Parameters

| Name | In | Type |  | Description |
| --- | --- | --- | --- | --- |
| `workflow_id` | path | string | required | Workflow identification |
| `page` | query | integer | optional | Page number, 1-based Default: `1` · Min: `1` |
| `per_page` | query | integer | optional | Number of items per page (1-100; values above 100 are clamped to 100 and the effective size is echoed in the response) Default: `50` · Min: `1` |

##### Responses

| Status | Meaning | Body |
| --- | --- | --- |
| 200 | A paginated list of forms | [`PaginatedResponse_FormModel_`](#model-PaginatedResponse_FormModel_) |
| 401 | Authentication failed or token is invalid | — |
| 404 | Not found | — |
| 422 | Validation Error | [`HTTPValidationError`](#model-HTTPValidationError) |

##### Example request

```
curl -s -X GET "https://api.sheetgo.com/rest/beta/workflows/WORKFLOW_ID/forms/" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"
```

In the API's own docs: <https://api.sheetgo.com/rest/reference/forms#get-rest-beta-workflows-workflow-id-forms>

#### POST `/rest/beta/workflows/{workflow_id}/forms/` — Create a new form

Create a new form

##### Parameters

| Name | In | Type |  | Description |
| --- | --- | --- | --- | --- |
| `workflow_id` | path | string | required | Workflow identification |

##### Request body (required)

`application/json` · [`FormCreate`](#model-FormCreate)

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `confirmation_message` | string | nullable | Confirmation message |
| `description` | string | nullable | Form description |
| `include_header` | boolean | nullable | True if include header Default: `false` |
| `limit_responses` | boolean | nullable | True if should limit responses Default: `false` |
| `require_auth` | boolean | nullable | True if it requires authentication Default: `false` |
| `source` | [`FormFile`](#model-FormFile) | required | Form fields source file |
| `target` | [`FormFile`](#model-FormFile) | required | Response destination file |
| `title` | string | optional | Title for the form Default: `"Untitled form"` |

##### Responses

| Status | Meaning | Body |
| --- | --- | --- |
| 200 | The form model created | [`FormModel`](#model-FormModel) |
| 401 | Authentication failed or token is invalid | — |
| 404 | Not found | — |
| 422 | Validation Error | [`HTTPValidationError`](#model-HTTPValidationError) |

##### Example request

```
curl -s -X POST "https://api.sheetgo.com/rest/beta/workflows/WORKFLOW_ID/forms/" \
  -H "Authorization: Bearer $SHEETGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
```

In the API's own docs: <https://api.sheetgo.com/rest/reference/forms#post-rest-beta-workflows-workflow-id-forms>

#### GET `/rest/beta/workflows/{workflow_id}/forms/{form_id}` — Get a form

Returns the form model data

##### Parameters

| Name | In | Type |  | Description |
| --- | --- | --- | --- | --- |
| `workflow_id` | path | string | required | Workflow identification |
| `form_id` | path | string | required | Form identification |

##### Responses

| Status | Meaning | Body |
| --- | --- | --- |
| 200 | The form model data | [`FormModel`](#model-FormModel) |
| 401 | Authentication failed or token is invalid | — |
| 404 | Not found | — |
| 422 | Validation Error | [`HTTPValidationError`](#model-HTTPValidationError) |

##### Example request

```
curl -s -X GET "https://api.sheetgo.com/rest/beta/workflows/WORKFLOW_ID/forms/FORM_ID" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"
```

In the API's own docs: <https://api.sheetgo.com/rest/reference/forms#get-rest-beta-workflows-workflow-id-forms-form-id>

#### PATCH `/rest/beta/workflows/{workflow_id}/forms/{form_id}` — Update an existing form

Patches form data

##### Parameters

| Name | In | Type |  | Description |
| --- | --- | --- | --- | --- |
| `workflow_id` | path | string | required | Workflow identification |
| `form_id` | path | string | required | Form identification |

##### Request body (required)

`application/json` · [`FormPatch`](#model-FormPatch)

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `confirmation_message` | string | nullable | Confirmation message |
| `description` | string | nullable | Form description |
| `limit_responses` | boolean | nullable | Limit each respondent to one response. Must be sent together with `require_auth` — identifying the respondent is how the limit is enforced. |
| `require_auth` | boolean | nullable | Require respondents to authenticate. SG-14657 — must be sent together with `limit_responses`; sending one alone is a 422. Setting `limit_responses` true forces this on. |
| `source` | [`FormFile`](#model-FormFile) | nullable | Form fields source file |
| `sync_fields_after_submission` | boolean | nullable | True it should sync fields after submission |
| `target` | [`FormFile`](#model-FormFile) | nullable | Response destination file |
| `title` | string | nullable | Title for the form |

##### Responses

| Status | Meaning | Body |
| --- | --- | --- |
| 200 | The form model patched | [`FormModel`](#model-FormModel) |
| 401 | Authentication failed or token is invalid | — |
| 404 | Not found | — |
| 422 | Validation Error | [`HTTPValidationError`](#model-HTTPValidationError) |

##### Example request

```
curl -s -X PATCH "https://api.sheetgo.com/rest/beta/workflows/WORKFLOW_ID/forms/FORM_ID" \
  -H "Authorization: Bearer $SHEETGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
```

In the API's own docs: <https://api.sheetgo.com/rest/reference/forms#patch-rest-beta-workflows-workflow-id-forms-form-id>

#### DELETE `/rest/beta/workflows/{workflow_id}/forms/{form_id}` — Delete a form

Deletes a form

##### Parameters

| Name | In | Type |  | Description |
| --- | --- | --- | --- | --- |
| `workflow_id` | path | string | required | Workflow identification |
| `form_id` | path | string | required | Form identification |

##### Responses

| Status | Meaning | Body |
| --- | --- | --- |
| 200 | The form was successfully deleted | [`SuccessResponse`](#model-SuccessResponse) |
| 401 | Authentication failed or token is invalid | — |
| 404 | Not found | — |
| 422 | Validation Error | [`HTTPValidationError`](#model-HTTPValidationError) |

##### Example request

```
curl -s -X DELETE "https://api.sheetgo.com/rest/beta/workflows/WORKFLOW_ID/forms/FORM_ID" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"
```

In the API's own docs: <https://api.sheetgo.com/rest/reference/forms#delete-rest-beta-workflows-workflow-id-forms-form-id>

#### GET `/rest/beta/workflows/{workflow_id}/forms/{form_id}/responses` — Get a form's responses (paginated)

Return the form's responses (from its first target spreadsheet), paginated.

##### Parameters

| Name | In | Type |  | Description |
| --- | --- | --- | --- | --- |
| `workflow_id` | path | string | required | Workflow identification |
| `form_id` | path | string | required | Form identification |
| `page` | query | integer | optional | Page number Default: `1` · Min: `1` |
| `per_page` | query | integer | optional | Items per page Default: `50` · Min: `1` · Max: `100` |
| `strip_tags` | query | boolean | optional | Strip trailing ' [config]' tags from response headers Default: `false` |

##### Responses

| Status | Meaning | Body |
| --- | --- | --- |
| 200 | Paginated form responses | [`PaginatedResponse`](#model-PaginatedResponse) |
| 401 | Authentication failed or token is invalid | — |
| 404 | Form or workflow not found | — |
| 422 | Validation Error | [`HTTPValidationError`](#model-HTTPValidationError) |

##### Example request

```
curl -s -X GET "https://api.sheetgo.com/rest/beta/workflows/WORKFLOW_ID/forms/FORM_ID/responses" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"
```

In the API's own docs: <https://api.sheetgo.com/rest/reference/forms#get-rest-beta-workflows-workflow-id-forms-form-id-responses>

#### HEAD `/rest/beta/workflows/{workflow_id}/forms/{form_id}/responses` — Inspect a form's responses metadata without downloading them

Return response count / columns / last-modified in headers, no body.

##### Parameters

| Name | In | Type |  | Description |
| --- | --- | --- | --- | --- |
| `workflow_id` | path | string | required | Workflow identification |
| `form_id` | path | string | required | Form identification |
| `strip_tags` | query | boolean | optional | Strip trailing ' [config]' tags from response headers Default: `false` |

##### Responses

| Status | Meaning | Body |
| --- | --- | --- |
| 200 | Response metadata in X-Sheetgo-\* headers | any |
| 401 | Authentication failed or token is invalid | — |
| 404 | Form or workflow not found | — |
| 422 | Validation Error | [`HTTPValidationError`](#model-HTTPValidationError) |

##### Example request

```
curl -s -X HEAD "https://api.sheetgo.com/rest/beta/workflows/WORKFLOW_ID/forms/FORM_ID/responses" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"
```

In the API's own docs: <https://api.sheetgo.com/rest/reference/forms#head-rest-beta-workflows-workflow-id-forms-form-id-responses>

## Models used on this page

Every request and response model referenced above, including nested ones (12). The full catalogue is on the [Models](/api/models.md) page.

#### `FileType`

**Type:** one of `"gsheets"`, `"xlsx"`, `"csv"`, `"tsv"`, `"folder"`

#### `FormCreate`

Form creation data

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `confirmation_message` | string | nullable | Confirmation message |
| `description` | string | nullable | Form description |
| `include_header` | boolean | nullable | True if include header Default: `false` |
| `limit_responses` | boolean | nullable | True if should limit responses Default: `false` |
| `require_auth` | boolean | nullable | True if it requires authentication Default: `false` |
| `source` | [`FormFile`](#model-FormFile) | required | Form fields source file |
| `target` | [`FormFile`](#model-FormFile) | required | Response destination file |
| `title` | string | optional | Title for the form Default: `"Untitled form"` |

Used by: [POST /rest/beta/workflows/{workflow\_id}/forms/](/api/forms.md#post-rest-beta-workflows-workflow-id-forms)

#### `FormFile`

Used in form creation and update

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `file_type` | [`FileType`](#model-FileType) | required | Type of the file |
| `id` | string | required | Id of the file |
| `name` | string | required | Name of the file |
| `provider` | [`Provider`](#model-Provider) | required | Service origin of the file |
| `tab_id` | integer | required | Tab id of the file |
| `tab_name` | string | required | Tab name of the file |

#### `FormFileModel`

For displaying data

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `file_type` | [`FileType`](#model-FileType) | nullable | Type of the file |
| `id` | string | required | Id of the file |
| `name` | string | nullable | Name of the file |
| `provider` | [`Provider`](#model-Provider) | nullable | Service origin of the file |
| `tab_id` | integer | nullable | Tab id of the file |
| `tab_name` | string | nullable | Tab name of the file |

#### `FormModel`

For displaying data

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `confirmation_message` | string | nullable | Confirmation message |
| `description` | string | nullable | Form description |
| `id` | string | optional | Form identification |
| `include_header` | boolean | nullable | True if include header Default: `false` |
| `limit_responses` | boolean | nullable | True if should limit responses Default: `false` |
| `require_auth` | boolean | nullable | True if it requires authentication Default: `false` |
| `source` | [`FormFileModel`](#model-FormFileModel) | nullable | Form fields source file |
| `target` | [`FormFileModel`](#model-FormFileModel) | nullable | Response destination file |
| `title` | string | optional | Title for the form Default: `"Untitled form"` |

Used by: [POST /rest/beta/workflows/{workflow\_id}/forms/](/api/forms.md#post-rest-beta-workflows-workflow-id-forms), [GET /rest/beta/workflows/{workflow\_id}/forms/{form\_id}](/api/forms.md#get-rest-beta-workflows-workflow-id-forms-form-id), [PATCH /rest/beta/workflows/{workflow\_id}/forms/{form\_id}](/api/forms.md#patch-rest-beta-workflows-workflow-id-forms-form-id)

#### `FormPatch`

Form update data

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `confirmation_message` | string | nullable | Confirmation message |
| `description` | string | nullable | Form description |
| `limit_responses` | boolean | nullable | Limit each respondent to one response. Must be sent together with `require_auth` — identifying the respondent is how the limit is enforced. |
| `require_auth` | boolean | nullable | Require respondents to authenticate. SG-14657 — must be sent together with `limit_responses`; sending one alone is a 422. Setting `limit_responses` true forces this on. |
| `source` | [`FormFile`](#model-FormFile) | nullable | Form fields source file |
| `sync_fields_after_submission` | boolean | nullable | True it should sync fields after submission |
| `target` | [`FormFile`](#model-FormFile) | nullable | Response destination file |
| `title` | string | nullable | Title for the form |

Used by: [PATCH /rest/beta/workflows/{workflow\_id}/forms/{form\_id}](/api/forms.md#patch-rest-beta-workflows-workflow-id-forms-form-id)

#### `HTTPValidationError`

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `detail` | array of [`ValidationError`](#model-ValidationError) | optional |  |

Used by: [GET /rest/beta/workflows/](/api/workflows.md#get-rest-beta-workflows), [POST /rest/beta/workflows/](/api/workflows.md#post-rest-beta-workflows), [POST /rest/beta/workflows/run/{id}](/api/workflows.md#post-rest-beta-workflows-run-id), [GET /rest/beta/workflows/{id}](/api/workflows.md#get-rest-beta-workflows-id), [PATCH /rest/beta/workflows/{id}](/api/workflows.md#patch-rest-beta-workflows-id), [DELETE /rest/beta/workflows/{id}](/api/workflows.md#delete-rest-beta-workflows-id), [GET /rest/beta/workflows/{id}/collaborators](/api/workflows.md#get-rest-beta-workflows-id-collaborators), [POST /rest/beta/workflows/{id}/collaborators](/api/workflows.md#post-rest-beta-workflows-id-collaborators), [DELETE /rest/beta/workflows/{id}/collaborators](/api/workflows.md#delete-rest-beta-workflows-id-collaborators), [PATCH /rest/beta/workflows/{id}/collaborators/{email}](/api/workflows.md#patch-rest-beta-workflows-id-collaborators-email), [DELETE /rest/beta/workflows/{id}/collaborators/{email}](/api/workflows.md#delete-rest-beta-workflows-id-collaborators-email), [GET /rest/beta/workflows/{id}/destinations](/api/workflows.md#get-rest-beta-workflows-id-destinations), [GET /rest/beta/workflows/{id}/files](/api/workflows.md#get-rest-beta-workflows-id-files), [GET /rest/beta/workflows/{id}/general-access](/api/workflows.md#get-rest-beta-workflows-id-general-access), [PUT /rest/beta/workflows/{id}/general-access](/api/workflows.md#put-rest-beta-workflows-id-general-access), [DELETE /rest/beta/workflows/{id}/general-access](/api/workflows.md#delete-rest-beta-workflows-id-general-access), [POST /rest/beta/workflows/{id}/leave](/api/workflows.md#post-rest-beta-workflows-id-leave), [POST /rest/beta/workflows/{id}/request-access](/api/workflows.md#post-rest-beta-workflows-id-request-access), [GET /rest/beta/workflows/{id}/run](/api/workflows.md#get-rest-beta-workflows-id-run), [POST /rest/beta/workflows/{id}/run](/api/workflows.md#post-rest-beta-workflows-id-run), [GET /rest/beta/workflows/{id}/sources](/api/workflows.md#get-rest-beta-workflows-id-sources), [GET /rest/beta/automations/](/api/automations.md#get-rest-beta-automations), [POST /rest/beta/automations/run/{id}](/api/automations.md#post-rest-beta-automations-run-id), [GET /rest/beta/automations/{id}](/api/automations.md#get-rest-beta-automations-id), [DELETE /rest/beta/automations/{id}](/api/automations.md#delete-rest-beta-automations-id), [GET /rest/beta/automations/{id}/destinations](/api/automations.md#get-rest-beta-automations-id-destinations), [GET /rest/beta/automations/{id}/files](/api/automations.md#get-rest-beta-automations-id-files), [GET /rest/beta/automations/{id}/run](/api/automations.md#get-rest-beta-automations-id-run), [POST /rest/beta/automations/{id}/run](/api/automations.md#post-rest-beta-automations-id-run), [GET /rest/beta/automations/{id}/sources](/api/automations.md#get-rest-beta-automations-id-sources), [GET /rest/beta/workflows/{id}/trigger](/api/triggers.md#get-rest-beta-workflows-id-trigger), [DELETE /rest/beta/workflows/{id}/trigger](/api/triggers.md#delete-rest-beta-workflows-id-trigger), [GET /rest/beta/workflows/{id}/dashboard](/api/dashboards.md#get-rest-beta-workflows-id-dashboard), [DELETE /rest/beta/workflows/{id}/dashboard/elements/{element\_id}](/api/dashboards.md#delete-rest-beta-workflows-id-dashboard-elements-element-id), [GET /rest/beta/workflows/{id}/dashboard/elements/{element\_id}/data](/api/dashboards.md#get-rest-beta-workflows-id-dashboard-elements-element-id-data), [PUT /rest/beta/workflows/{id}/dashboard/publish](/api/dashboards.md#put-rest-beta-workflows-id-dashboard-publish), [GET /rest/beta/workflows/{workflow\_id}/forms/](/api/forms.md#get-rest-beta-workflows-workflow-id-forms), [POST /rest/beta/workflows/{workflow\_id}/forms/](/api/forms.md#post-rest-beta-workflows-workflow-id-forms), [GET /rest/beta/workflows/{workflow\_id}/forms/{form\_id}](/api/forms.md#get-rest-beta-workflows-workflow-id-forms-form-id), [PATCH /rest/beta/workflows/{workflow\_id}/forms/{form\_id}](/api/forms.md#patch-rest-beta-workflows-workflow-id-forms-form-id), [DELETE /rest/beta/workflows/{workflow\_id}/forms/{form\_id}](/api/forms.md#delete-rest-beta-workflows-workflow-id-forms-form-id), [GET /rest/beta/workflows/{workflow\_id}/forms/{form\_id}/responses](/api/forms.md#get-rest-beta-workflows-workflow-id-forms-form-id-responses), [HEAD /rest/beta/workflows/{workflow\_id}/forms/{form\_id}/responses](/api/forms.md#head-rest-beta-workflows-workflow-id-forms-form-id-responses), [GET /rest/beta/automations/{automation\_id}/webhook](/api/webhook.md#get-rest-beta-automations-automation-id-webhook), [GET /rest/beta/workflows/{workflow\_id}/webhooks](/api/webhook.md#get-rest-beta-workflows-workflow-id-webhooks), [GET /rest/beta/api-destination/{public\_id}](/api/api-destination.md#get-rest-beta-api-destination-public-id), [HEAD /rest/beta/api-destination/{public\_id}](/api/api-destination.md#head-rest-beta-api-destination-public-id), [GET /rest/beta/integrations/{provider}/options](/api/integrations.md#get-rest-beta-integrations-provider-options), [GET /rest/beta/outlook/messages](/api/outlook.md#get-rest-beta-outlook-messages), [POST /rest/beta/outlook/messages/batch](/api/outlook.md#post-rest-beta-outlook-messages-batch), [GET /rest/beta/outlook/messages/{message\_id}](/api/outlook.md#get-rest-beta-outlook-messages-message-id), [GET /rest/beta/outlook/messages/{message\_id}/attachments/{attachment\_id}](/api/outlook.md#get-rest-beta-outlook-messages-message-id-attachments-attachment-id), [POST /rest/beta/outlook/send](/api/outlook.md#post-rest-beta-outlook-send), [GET /rest/beta/gmail/messages](/api/gmail.md#get-rest-beta-gmail-messages), [POST /rest/beta/gmail/messages/batch](/api/gmail.md#post-rest-beta-gmail-messages-batch), [GET /rest/beta/gmail/messages/{message\_id}](/api/gmail.md#get-rest-beta-gmail-messages-message-id), [GET /rest/beta/gmail/messages/{message\_id}/attachments/{attachment\_id}](/api/gmail.md#get-rest-beta-gmail-messages-message-id-attachments-attachment-id), [POST /rest/beta/gmail/send](/api/gmail.md#post-rest-beta-gmail-send), [GET /rest/beta/files/{provider}](/api/files.md#get-rest-beta-files-provider), [GET /rest/beta/files/{provider}/roots](/api/files.md#get-rest-beta-files-provider-roots), [GET /rest/beta/files/{provider}/search](/api/files.md#get-rest-beta-files-provider-search), [GET /rest/beta/files/{provider}/{file\_id}](/api/files.md#get-rest-beta-files-provider-file-id), [GET /rest/beta/bigquery/projects](/api/bigquery.md#get-rest-beta-bigquery-projects), [GET /rest/beta/bigquery/projects/{project}/datasets](/api/bigquery.md#get-rest-beta-bigquery-projects-project-datasets), [GET /rest/beta/bigquery/projects/{project}/datasets/{dataset}/tables](/api/bigquery.md#get-rest-beta-bigquery-projects-project-datasets-dataset-tables), [GET /rest/beta/bigquery/projects/{project}/datasets/{dataset}/tables/{table}](/api/bigquery.md#get-rest-beta-bigquery-projects-project-datasets-dataset-tables-table), [POST /rest/beta/bigquery/projects/{project}/validate-query](/api/bigquery.md#post-rest-beta-bigquery-projects-project-validate-query), [POST /rest/auth/refresh](/api/auth.md#post-rest-auth-refresh), [POST /rest/auth/token](/api/auth.md#post-rest-auth-token)

#### `PaginatedResponse`

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `page` | integer | nullable | Page number Default: `1` |
| `per_page` | integer | nullable | Number of items per page Default: `50` |
| `results` | array | optional | List of results |
| `total` | integer | nullable | Total number of pages Default: `0` |

Used by: [GET /rest/beta/workflows/{workflow\_id}/forms/{form\_id}/responses](/api/forms.md#get-rest-beta-workflows-workflow-id-forms-form-id-responses)

#### `PaginatedResponse_FormModel_`

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `page` | integer | nullable | Page number Default: `1` |
| `per_page` | integer | nullable | Number of items per page Default: `50` |
| `results` | array of [`FormModel`](#model-FormModel) | optional | List of results |
| `total` | integer | nullable | Total number of pages Default: `0` |

Used by: [GET /rest/beta/workflows/{workflow\_id}/forms/](/api/forms.md#get-rest-beta-workflows-workflow-id-forms)

#### `Provider`

**Type:** one of `"drive"`, `"onedrive"`, `"sharepoint"`, `"dropbox"`

Used by: [GET /rest/beta/files/{provider}](/api/files.md#get-rest-beta-files-provider), [GET /rest/beta/files/{provider}/roots](/api/files.md#get-rest-beta-files-provider-roots), [GET /rest/beta/files/{provider}/search](/api/files.md#get-rest-beta-files-provider-search), [GET /rest/beta/files/{provider}/{file\_id}](/api/files.md#get-rest-beta-files-provider-file-id), [GET /rest/beta/files/{provider}/{file\_id}/structure](/api/files.md#get-rest-beta-files-provider-file-id-structure)

#### `SuccessResponse`

The legacy success envelope, returned by the pre-existing CRUD routes.

It always carries HTTP 200; the outcome is in `code`/`type`, not the status
line. Newer endpoints return the resource directly instead.

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `code` | integer | optional | Result code. 1 means the operation succeeded. Default: `1` |
| `message` | string | optional | Human-readable confirmation of what happened. Default: `"OK"` |
| `type` | string | optional | Kind of result — `success` for this envelope. Default: `"success"` |

Used by: [POST /rest/beta/workflows/run/{id}](/api/workflows.md#post-rest-beta-workflows-run-id), [DELETE /rest/beta/workflows/{id}](/api/workflows.md#delete-rest-beta-workflows-id), [POST /rest/beta/workflows/{id}/run](/api/workflows.md#post-rest-beta-workflows-id-run), [POST /rest/beta/automations/run/{id}](/api/automations.md#post-rest-beta-automations-run-id), [DELETE /rest/beta/automations/{id}](/api/automations.md#delete-rest-beta-automations-id), [POST /rest/beta/automations/{id}/run](/api/automations.md#post-rest-beta-automations-id-run), [DELETE /rest/beta/workflows/{workflow\_id}/forms/{form\_id}](/api/forms.md#delete-rest-beta-workflows-workflow-id-forms-form-id)

#### `ValidationError`

| Field | Type |  | Description |
| --- | --- | --- | --- |
| `loc` | array of string or integer | required |  |
| `msg` | string | required |  |
| `type` | string | required |  |
