Developers › REST API › Forms & Integrations
REST API · 2 endpoints
integrations
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: api.html#api-errors.
Integrations are pre-configured sources for third-party services — currently Shopify and QuickBooks. Instead of describing an HTTP request yourself, you pick a data source from a menu and Sheetgo supplies the URL, credentials, pagination and response parsing for the account you authorized.
Use GET /integrations to see which providers you have connected and under which accounts, and GET /integrations/{provider}/options to list the data sources you can pull and the parameters each accepts. Then create an automation with an integration source.
Authorizing a provider is a browser sign-in in the Sheetgo web app and cannot be done through the API — these endpoints report the result.
Models used on this page
Every request and response model referenced above, including nested ones (9). The full catalogue is on api-models.html.
DataSourceOut
One thing you can ask a provider for.
| Field | Type | | Description |
|---|
description | string | optional | What it returns Default: "" |
id | string | required | Pass this back as sources[].data_source |
kind | string | required | query for records, report for a report |
name | string | required | Display name |
parameters | object (map of string → DataSourceParameter) | optional | Parameters this data source accepts, keyed by name. Empty for everything except QuickBooks reports. |
DataSourceParameter
One parameter a data source accepts.
When options is present it is the authority: date_macro declares
type: date but its options are macro strings like "Last Month", so a
value is checked against options first and against type only when no
options are declared.
| Field | Type | | Description |
|---|
description | string | nullable | What it controls |
format | string | nullable | Expected format when the type is date |
name | string | nullable | Display name |
optional_for | array of string | nullable | Advisory: supplying this parameter makes those alternatives unnecessary. Nothing is enforced as required. |
options | array of string | nullable | Accepted values. When present, the only accepted values. |
type | string | nullable | date or string |
HTTPValidationError
Used by: GET /rest/beta/workflows/, POST /rest/beta/workflows/, POST /rest/beta/workflows/run/{id}, GET /rest/beta/workflows/{id}, PATCH /rest/beta/workflows/{id}, DELETE /rest/beta/workflows/{id}, GET /rest/beta/workflows/{id}/collaborators, POST /rest/beta/workflows/{id}/collaborators, DELETE /rest/beta/workflows/{id}/collaborators, PATCH /rest/beta/workflows/{id}/collaborators/{email}, DELETE /rest/beta/workflows/{id}/collaborators/{email}, GET /rest/beta/workflows/{id}/destinations, GET /rest/beta/workflows/{id}/files, GET /rest/beta/workflows/{id}/general-access, PUT /rest/beta/workflows/{id}/general-access, DELETE /rest/beta/workflows/{id}/general-access, POST /rest/beta/workflows/{id}/leave, POST /rest/beta/workflows/{id}/request-access, GET /rest/beta/workflows/{id}/run, POST /rest/beta/workflows/{id}/run, GET /rest/beta/workflows/{id}/sources, GET /rest/beta/automations/, POST /rest/beta/automations/run/{id}, GET /rest/beta/automations/{id}, DELETE /rest/beta/automations/{id}, GET /rest/beta/automations/{id}/destinations, GET /rest/beta/automations/{id}/files, GET /rest/beta/automations/{id}/run, POST /rest/beta/automations/{id}/run, GET /rest/beta/automations/{id}/sources, GET /rest/beta/workflows/{id}/trigger, DELETE /rest/beta/workflows/{id}/trigger, GET /rest/beta/workflows/{id}/dashboard, DELETE /rest/beta/workflows/{id}/dashboard/elements/{element_id}, GET /rest/beta/workflows/{id}/dashboard/elements/{element_id}/data, PUT /rest/beta/workflows/{id}/dashboard/publish, GET /rest/beta/workflows/{workflow_id}/forms/, POST /rest/beta/workflows/{workflow_id}/forms/, GET /rest/beta/workflows/{workflow_id}/forms/{form_id}, PATCH /rest/beta/workflows/{workflow_id}/forms/{form_id}, DELETE /rest/beta/workflows/{workflow_id}/forms/{form_id}, GET /rest/beta/workflows/{workflow_id}/forms/{form_id}/responses, HEAD /rest/beta/workflows/{workflow_id}/forms/{form_id}/responses, GET /rest/beta/automations/{automation_id}/webhook, GET /rest/beta/workflows/{workflow_id}/webhooks, GET /rest/beta/api-destination/{public_id}, HEAD /rest/beta/api-destination/{public_id}, GET /rest/beta/integrations/{provider}/options, GET /rest/beta/outlook/messages, POST /rest/beta/outlook/messages/batch, GET /rest/beta/outlook/messages/{message_id}, GET /rest/beta/outlook/messages/{message_id}/attachments/{attachment_id}, POST /rest/beta/outlook/send, POST /rest/beta/gmail/send, GET /rest/beta/files/{provider}, GET /rest/beta/files/{provider}/roots, GET /rest/beta/files/{provider}/search, GET /rest/beta/files/{provider}/{file_id}, GET /rest/beta/bigquery/projects, GET /rest/beta/bigquery/projects/{project}/datasets, GET /rest/beta/bigquery/projects/{project}/datasets/{dataset}/tables, GET /rest/beta/bigquery/projects/{project}/datasets/{dataset}/tables/{table}, POST /rest/beta/bigquery/projects/{project}/validate-query, POST /rest/auth/refresh, POST /rest/auth/token
IntegrationAccount
One authorized account for a provider.
| Field | Type | | Description |
|---|
account | string | required | Pass this back as sources[].account. The shop domain for Shopify, the realm (company) id for QuickBooks. |
connected_at | string (date-time) | nullable | When the account was authorized |
may_be_revoked | boolean | optional | True when the stored credentials are gone — the account must be re-authorized in the web app before it will run. Default: false |
IntegrationListResponse
Standard envelope. The provider list is fixed and short, so there are no
paging query params -- same as GET /files/{provider}/roots.
| Field | Type | | Description |
|---|
page | integer | nullable | Page number Default: 1 |
per_page | integer | nullable | Number of items per page Default: 50 |
results | array of IntegrationOut | optional | List of results |
total | integer | nullable | Total number of pages Default: 0 |
Used by: GET /rest/beta/integrations
IntegrationOptionsResponse
Everything selectable for one provider.
| Field | Type | | Description |
|---|
data_sources | array of DataSourceOut | optional | Every data source this provider exposes. Use a key from here as an integration source's data_source. |
provider | string | required | The provider these options belong to, e.g. shopify or quickbooks. |
Used by: GET /rest/beta/integrations/{provider}/options
IntegrationOut
One provider, with whatever the caller has authorized for it.
| Field | Type | | Description |
|---|
accounts | array of IntegrationAccount | optional | Authorized accounts. Empty when not connected — authorization happens in the Sheetgo web app, not here. |
connected | boolean | required | True when at least one account is authorized |
name | string | required | Display name |
provider | string | required | Pass this back as sources[].provider |
IntegrationProvider
Third-party services with a pre-configured, server-managed API source.
Distinct from Provider, which lists storage backends. The value is also
the prefix of the compound service_origin a compiled source carries
(shopify:<shop>), which is what makes core-lib's load_provider_manager
pick the provider-specific request manager.
Type: one of "shopify", "quickbooks"
Used by: GET /rest/beta/integrations/{provider}/options
ValidationError
| Field | Type | | Description |
|---|
loc | array of string or integer | required | |
msg | string | required | |
type | string | required | |