SheetgoDevelopers

Developers › REST API › Forms & Integrations

REST API · 2 endpoints

integrations

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, so you do not need another page to build a request. Base URL https://dev-api.sheetgo.com; send Authorization: Bearer sg_…. Latest version: https://dev-api.sheetgo.com/rest/reference/integrations (Markdown).

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.

Python recipes. API client helper.

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.

Operations

GET/rest/beta/integrationsList integrations and connected accounts

Every integration, whether or not you have authorized it.

accounts[].account is what an automation's sources[].account expects. With exactly one account for a provider you can omit that field and Sheetgo resolves it; with several, naming one is required.

Authorization itself happens in the Sheetgo web app — it is a browser OAuth flow and cannot be driven from an API key.

Responses
StatusMeaningBody
200Providers and your authorized accountsIntegrationListResponse
401Authentication failed or token is invalid—
Example request
curl -s -X GET "https://dev-api.sheetgo.com/rest/beta/integrations" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"
GET/rest/beta/integrations/{provider}/optionsList a provider's data sources

What you can ask this provider for.

Static per provider and identical for every account, so this answers even before you have authorized one — useful for exploring first. id is what sources[].data_source expects; parameters is what sources[].parameters accepts, and only QuickBooks reports declare any.

Retired data sources are omitted: they would raise mid-run rather than return data.

Parameters
NameInTypeDescription
providerpathIntegrationProviderrequiredIntegration provider: shopify or quickbooks
Responses
StatusMeaningBody
200Selectable data sourcesIntegrationOptionsResponse
401Authentication failed or token is invalid—
422Validation ErrorHTTPValidationError
Example request
curl -s -X GET "https://dev-api.sheetgo.com/rest/beta/integrations/PROVIDER/options" \
  -H "Authorization: Bearer $SHEETGO_API_KEY"

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.

FieldTypeDescription
descriptionstringoptionalWhat it returns
Default: ""
idstringrequiredPass this back as sources[].data_source
kindstringrequiredquery for records, report for a report
namestringrequiredDisplay name
parametersobject (map of string → DataSourceParameter)optionalParameters 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.

FieldTypeDescription
descriptionstringnullableWhat it controls
formatstringnullableExpected format when the type is date
namestringnullableDisplay name
optional_forarray of stringnullableAdvisory: supplying this parameter makes those alternatives unnecessary. Nothing is enforced as required.
optionsarray of stringnullableAccepted values. When present, the only accepted values.
typestringnullabledate or string

HTTPValidationError

FieldTypeDescription
detailarray of ValidationErroroptional

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.

FieldTypeDescription
accountstringrequiredPass this back as sources[].account. The shop domain for Shopify, the realm (company) id for QuickBooks.
connected_atstring (date-time)nullableWhen the account was authorized
may_be_revokedbooleanoptionalTrue 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.

FieldTypeDescription
pageintegernullablePage number
Default: 1
per_pageintegernullableNumber of items per page
Default: 50
resultsarray of IntegrationOutoptionalList of results
totalintegernullableTotal number of pages
Default: 0

Used by: GET /rest/beta/integrations

IntegrationOptionsResponse

Everything selectable for one provider.

FieldTypeDescription
data_sourcesarray of DataSourceOutoptionalEvery data source this provider exposes. Use a key from here as an integration source's data_source.
providerstringrequiredThe 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.

FieldTypeDescription
accountsarray of IntegrationAccountoptionalAuthorized accounts. Empty when not connected — authorization happens in the Sheetgo web app, not here.
connectedbooleanrequiredTrue when at least one account is authorized
namestringrequiredDisplay name
providerstringrequiredPass 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

FieldTypeDescription
locarray of string or integerrequired
msgstringrequired
typestringrequired