Schemas
PaginatedWorkspaceList
countNumber of workspaces
nextURL to the next page
previousURL to the previous page
Dashboard
dashboard_idDashboard ID
titleDashboard title
data_nameDashboard Data Type
DataSource
namestring identifier of datasource
titleData source title
categoriesList of categories that the data source belongs to
PaginatedDataSourceList
countNumber of datasources
nextURL to the next page
previousURL to the previous page
Connection
idConnection ID
uidConnection UID
titleConnection title
datasource_nameData source name
statusConnection status
created_atConnection creation date
updated_atConnection update date
accounts_numberTotal number of accounts available on this connection (excluding accounts disabled on the data source side).
enabled_for_extraction_accounts_numberNumber of accounts on this connection that are selected for extraction. Use this to detect connections that have no accounts enabled and prompt the user to select at least one before setting up extractions or loads.
accounts_statusAccounts status
update_accounts_last_successedLast successful accounts update date
update_accounts_was_successfullWas the last accounts update successful
PaginatedConnectionsList
countNumber of connections
nextURL to the next page
previousURL to the previous page
Account
idAccount ID
account_idRemote account ID
titleAccount title
currencyAccount currency
connection_idConnection ID
datasource_nameData source name
created_atAccount creation date
updated_atAccount update date
is_activeIs the account active
enabled_for_embedded_extractionIs the account enabled for embedded extraction
Data source-specific account item information
PaginatedAccountList
countNumber of accounts
nextURL to the next page
previousURL to the previous page
ExtractTemplateCreateRequest
parent_idID of the parent (global) extraction template to base this template on
titleTitle for the new template (must be unique within the agency)
descriptionDescription of the template (can be empty)
fieldsList of field names to include in the template
Extraction schedule configuration
additional_paramsAdditional parameters for the template (e.g. time_granularity)
hashed_fieldsList of field names to hash (optional)
historical_data_depth_limitLimit on historical data depth in days (optional, null for no limit)
connection_idConnection ID, required for wide report templates (parent has allow_to_select_dimensions or is_created_from_wide)
ExtractTemplate
idExtract Template ID
titleExtract Template title
descriptionExtract Template description
data_classData class
datasource_nameData source name
is_wide_templateWhether the template is a wide report template
schedules_limitSchedules limit
PaginatedExtractTemplateList
countNumber of extract templates
nextURL to the next page
previousURL to the previous page
Scheduling
daysDay offset within the interval, starting from 0. The valid range depends on interval:
hour,day— must be 0week— 0–6 (day of week)month— 0–30 (day of month)
hoursHour at which the run will start (0–23)
minutesMinute of hour at which the run will start (0–59)
intervalFrequency at which the run will be performed:
hour— every hourday— once per dayweek— once per weekmonth— once per month
timezoneIANA timezone name (e.g. UTC, America/New_York) the schedule is interpreted in.
recurrenceHow often the schedule repeats within the interval. Defaults to 1.
Defines the period data will be extracted for. Applies to extract schedules only — ignored for load schedules.
Field
titleField title
nameField name
user_kindField kind
user_typeField type
selectedIs the field selected
can_editCan the field be edited
sql_nameSql Name of a Field
formatHint on how the value is meant to be rendered — not a storage contract. Metrics fall back to float whenever a data source does not declare a format explicitly, so float does not imply the value is fractional, and no decimal precision is guaranteed: values are passed through exactly as the data source returns them, without rounding. New formats may be added over time, so treat an unrecognised value as an unformatted string rather than failing.
is_dynamicIs the field dynamic
AdditionalParams
typeAdditional Params type
nameAdditional Params name
requiredIs the Additional Params required
titleAdditional Params title
descriptionAdditional Params description
paramsAdditional Params params
initial_valueAdditional Params initial value
Extract
idExtract ID
titleExtract title
connection_idConnection ID
account_idAccount ID
account_nameAccount name
account_entity_idInternal Improvado account entity ID.
account_embedded_idEmbedded account ID. Null if the account is not linked to an embedded account.
created_atExtract creation date
last_syncLast sync date
statusExtract status
error_textError text
schedules_limitSchedules limit
sync_historical_dataStart date for historical data backfill (ISO date format, e.g. "2025-02-25"). Null if not set.
PaginatedExtractList
countNumber of extracts
nextURL to the next page
previousURL to the previous page
Destination
namestring identifier of destination
titleDestination title
infoDestination info
PaginatedDestinationList
countNumber of destinations
nextURL to the next page
previousURL to the previous page
DestinationConnection
idDestination Connection ID
Destination object
titleDestination Connection title
updated_atDestination Connection update date
statusDestination Connection status
error_textDestination Connection error text
is_editableIs the Destination Connection editable
create_load_for_new_tablesCreate load for new tables
PaginatedDestinationConnectionList
countNumber of destination connections
nextURL to the next page
previousURL to the previous page
DataTable
idData Table ID
titleData Table title
datasource_nameData source name
TableField
kindField kind
titleField title
sql_nameSQL name
field_typeField type
formatHint on how the value is meant to be rendered — not a storage contract. Metrics fall back to float whenever a data source does not declare a format explicitly, so float does not imply the value is fractional, and no decimal precision is guaranteed: values are passed through exactly as the data source returns them, without rounding. New formats may be added over time, so treat an unrecognised value as an unformatted string rather than failing.
is_dynamicIs the field dynamic
is_selectedIs the field selected
DataTableDetail
titleData Table title
freshnessData Table freshness date
datasource_nameData source name
report_typeReport type
data_classData class
workspaceWorkspace ID
sql_nameSQL name
auto_extract_new_accountsAuto extract new accounts
Fields object
PaginatedDataTableList
countNumber of data tables
nextURL to the next page
previousURL to the previous page
Load
idLoad ID
Data Table object
destination_tableDestination table name
run_policyLoad run policy
statusLoad status
last_updateLast update date
error_textError text
uploaded_rows_countNumber of uploaded rows
PaginatedLoadList
countNumber of loads
nextURL to the next page
previousURL to the previous page
List of Loads
ExtractTemplatePreviewRequest
connection_idConnection ID to use for the preview.
Custom settings for the extraction.
fieldsList of fields to include in the preview.
dynamic_fieldsList of dynamic fields to include.
accountsList of account IDs.
custom_filtersCustom filters to apply. Null if no filters.
ExtractTemplateValidationRequest
accountsEmbedded account IDs to validate against the template. Must be non-empty and all accounts must belong to a single connection.
Proposed template settings to validate. Optional.
ExtractTemplateRetrieveResponse
idExtraction template ID.
datasource_nameData source name.
is_wide_templateWhether the template is a wide report template.
ExtractTemplateValidationResponse
detailValidation error details. Empty string if no errors.
Map of incompatible fields to the list of incompatibility reasons. Empty object if all fields are compatible.
MigrateWideExtractRequest
migrated_from_extraction_idID of the source wide report extract being migrated.
Template settings for the new extract. May be an empty object — every omitted field is pre-filled from the source extract.
template_idTemplate ID. Resolved from the source extract when omitted.
accountAccount ID. Resolved from the source extract when omitted.
data_table_titleTitle of the new data table. Generated automatically when empty.
CustomSettingOptionsRequest
template_idExtraction template ID whose custom setting is being resolved.
connection_idConnection ID used to resolve credentials and scope accounts.
account_idsRemote account IDs from the source platform, scoped by connection_id. These are the same string account IDs used by extraction template preview.
custom_setting_nameCustom setting name from the extraction template.
search_queryOptional case-insensitive search query applied to loaded options.
pagePage number for paginated options.
page_sizeNumber of options to return per account.
CustomSettingOption
valueValue that should be submitted as the custom setting value.
labelHuman-readable option label.
descriptionOptional extra text that can be shown in the UI.
CustomSettingOptionsAccountResult
account_idRemote account ID from the request.
countTotal number of options after the search filter is applied.
nextNext page number as a string, or null if this is the last page.
previousPrevious page number as a string, or null if this is the first page.
Page of selectable options for this account.
search_appliedWhether a non-empty search query was applied.
CustomSettingOptionsResponse
custom_setting_nameCustom setting name from the request.
Role
idRole ID
titleRole title (unique within the agency)
descriptionOptional human-readable description
is_systemTrue for built-in Improvado-managed roles. Read-only — cannot be edited or deleted.
is_internalTrue for internal-only roles (impersonation, guest viewers). These are never listed in the API.
Permissions grouped by product layer. Layer codes match code in the permissions catalog.
user_countNumber of users currently assigned to this role across the agency.
RoleListResponse
RoleWriteRequest
titleRole title. Must be non-empty and unique within the agency.
Permissions grouped by product layer. Use codes from GET /api/v3/roles/permissions.
descriptionOptional description.
DeleteRoleResponse
reassigned_users_countNumber of users that were reassigned to the Viewer system role as part of the delete.
CatalogPermission
codePermission code (stable identifier, e.g. view, create, manage_roles).
titleHuman-readable title.
descriptionLonger description suitable for tooltips.
CatalogLayer
codeProduct layer code (stable identifier, e.g. extract, admin).
titleHuman-readable layer name.
descriptionLayer description suitable for headers/tooltips.
PermissionsCatalogResponse
Ordered list of product layers with their valid permissions.
RoleUser
user_idnameDisplay name. Falls back to email if first/last name are blank.
emailworkspace_idworkspace_titleRoleUsersResponse
AutomatedRecipeTemplateDataSource
nameData source identifier
titleData source display name
AutomatedRecipeTemplate
idTemplate ID
titleTemplate title
descriptionTemplate description
List of data sources used by this template
created_atTemplate creation timestamp
updated_atTemplate last update timestamp
PaginatedAutomatedRecipeTemplateList
countTotal number of templates
nextURL to the next page
previousURL to the previous page
AutomatedRecipeTemplateTreeNode
idTemplate ID
titleTemplate title
levelDepth in the tree, 0 for the template you requested
parent_idParent template ID. Present on every node inside children; the root object of the detail response carries no parent_id key at all.
Direct children of this node, nested recursively to any depth
AutomatedRecipeTemplateOutputColumn
nameColumn name in the output table
typePhysical column type
user_kindHow the column is used in reporting. Derived from type: string and datetime are dimensions, number and bool are metrics, date is the date key.
AutomatedRecipeTemplateDetail
idTemplate ID
titleTemplate title
descriptionTemplate description
List of data sources used by this template
levelDepth of this template in its own tree; 0 for a template you can deploy
Templates this one depends on, nested recursively. A recipe created from this template builds every node in the tree.
Schema of the table this template produces, available before you deploy anything. null when the template's output schema cannot be read - treat it as "unknown", not as "no columns".
dependencies_countNumber of dependencies in the template
created_atTemplate creation timestamp
updated_atTemplate last update timestamp
AutomatedRecipe
recipe_idUnique recipe identifier (numeric string)
template_idID of the template this recipe was created from
template_titleTitle of the source template
titleRecipe title
stateCurrent recipe state. Ready to work means the last build was built on the extractions that delivered; extractions that could not deliver on their own or in time were left out, so rows of some accounts can be missing. See Build automated recipe.
workspace_idWorkspace ID
created_atRecipe creation timestamp
updated_atRecipe last update timestamp
PaginatedAutomatedRecipeList
countTotal number of recipes
nextURL to the next page
previousURL to the previous page
AutomatedRecipeCreateResponse
recipe_idUnique recipe identifier (numeric string)
template_idID of the template this recipe was created from
titleRecipe title
stateInitial recipe state, always "Extracting Data". It is the model default written at creation and does not mean that anything is configured or running yet.
datatable_idID of the output data table. Resolve the physical table name with GET /api/v3/data-tables/{data_table_id} rather than deriving it from the recipe title.
AutomatedRecipeCreateError
detailError message
existing_recipe_idsPresent when a recipe from the same template already exists in this workspace (one recipe per template per workspace). Lists the recipes that already exist - the list can hold more than one id. Treat this response as "already deployed" rather than as a failure, and reuse one of the returned recipes. The detail advises calling resetup: that is POST /api/v3/automated-recipes/{recipe_id}/resetup/, which recreates one of these recipes from the current version of the template.
conflicting_recipe_idsPresent when the output table name derived from the template is already taken in this workspace. Lists the recipes holding that name.
AutomatedRecipeConnectionAccount
idInternal account id, required. Resolve it per workspace with GET /api/v3/connections/{connection_id}/accounts - the same platform account has a different id in every workspace. In a request body this must be an object member - sending a bare string in place of the object returns 400 "Invalid data. Expected a dictionary, but got str."
account_idExternal account identifier as the platform knows it, for example "act_500105056677763". Optional, and the only identifier that is stable across workspaces - join on it when you deploy one template to many workspaces.
AutomatedRecipeConnection
connection_idConnection id, scoped to the workspace. The same connector has a different connection_id in every workspace - resolve it per workspace with GET /api/v3/datasources/{datasource_name}/connections.
connection_data_sourceData source name for this connection
List of accounts for this connection. Must not be empty.
AutomatedRecipeBuildError
messageHuman-readable reason, stripped of internal identifiers
stageWhich phase of the build failed. Null on failures recorded without a stage.
data_sourceAlways null today - the public error carries no build context. Reserved.
AutomatedRecipeDetail
recipe_idUnique recipe identifier (numeric string)
template_idID of the template this recipe was created from
datatable_idAssociated data table ID (null if not yet created)
titleRecipe title
stateCurrent recipe state. Ready to work means the last build was built on the extractions that delivered; extractions that could not deliver on their own or in time were left out, so rows of some accounts can be missing. See Build automated recipe.
data_sourcesList of configured data source names
allowed_data_sourcesList of allowed data source names for this recipe
List of configured connections
sync_from_dateStart date for data synchronization
last_build_atLast time the recipe's setup row changed. Despite the name it is not a build stamp: it moves when the configuration is written and on most build state transitions, but not when POST /build/ is accepted and not when a build failure is recorded. Do not use it to decide whether, or when, a build ran.
Why the last build failed. null unless the most recent build failed - the field is cleared when the configuration is written, when a build starts and when a build succeeds. This is the only machine-readable place the failure reason appears: POST /build/ has already returned by the time a build fails.
created_atRecipe creation timestamp
updated_atRecipe last update timestamp
AutomatedRecipeUpdateRequest
data_sourcesList of data source names to include
List of connections with accounts
sync_from_dateStart date for data synchronization (YYYY-MM-DD)
AutomatedRecipeBuildResponse
statusBuild operation status
messageHuman-readable status message
AutomatedRecipeExtractions
readyTrue when every table in sources exists in the destination. Not a sign that every account has delivered - see the recipe state.
One entry per extraction table the recipe reads, sorted by table name. A data source with more than one table appears once per table, so data_source is not unique - key this list by table. Empty when the recipe's cells reference no extraction tables.
AutomatedRecipeSourceExtractions
data_sourceData source name, e.g. facebook
tableName of the extraction table in the workspace destination
table_existsWhether that table exists in the destination right now
extraction_idsExtractions the last build used for this data source - the ones it created and the existing ones it reused, including any it did not wait for. Repeated on every table of the same data source, and empty before the first build.
AutomatedRecipeResetupResponse
statusReset operation status
recipe_idID of the recipe that was reset
ErrorEnvelope
codeMachine-readable error code. Branch on this, never on the message.
messageHuman-readable text. Wording may change; it is not part of the contract.
detailsAlways present, always an object. Its shape depends on the code; codes that carry no extra data return an empty object. See Errors.
RecipeTemplateV31
idTemplate identifier. Pass it as template_id when you create a recipe.
titleTemplate name. It can be changed in the interface, and the name in force when a recipe is created decides the name of that recipe's output table.
descriptionTemplate description, as entered in the interface. Can be empty.
Data sources this template supports. The data_sources you send when you configure a recipe must be taken from this list.
Categories the template is filed under in the interface, in display order. Empty when the template has none.
originWho the template comes from. improvado - a template we provide; agency - a template your agency created by promoting one of its own recipes. Agency templates are the ones the interface shows as custom. New values can be added, so tolerate unknown ones.
build_modeHow a recipe from this template builds when one data source delivers no data. progressive - that data source is left out, the rest is built and the recipe becomes ready_to_work with degraded: true; if every data source fails, the recipe fails. atomic - a single failing data source fails the whole recipe. In both modes individual accounts that did not deliver never fail the recipe on their own. New values can be added, so tolerate unknown ones.
created_atWhen the template was created.
updated_atWhen the template was last changed.
RecipeTemplateDetailV31
idTemplate identifier. Pass it as template_id when you create a recipe.
titleTemplate name. It can be changed in the interface, and the name in force when a recipe is created decides the name of that recipe's output table.
descriptionTemplate description, as entered in the interface. Can be empty.
Data sources this template supports. The data_sources you send when you configure a recipe must be taken from this list.
Categories the template is filed under in the interface, in display order. Empty when the template has none.
originWho the template comes from. improvado - a template we provide; agency - a template your agency created by promoting one of its own recipes. Agency templates are the ones the interface shows as custom. New values can be added, so tolerate unknown ones.
build_modeHow a recipe from this template builds when one data source delivers no data. progressive - that data source is left out, the rest is built and the recipe becomes ready_to_work with degraded: true; if every data source fails, the recipe fails. atomic - a single failing data source fails the whole recipe. In both modes individual accounts that did not deliver never fail the recipe on their own. New values can be added, so tolerate unknown ones.
levelDepth of this template in its own tree; 0 for a template you can deploy.
Templates this one is built on, nested to any depth. A recipe created from this template builds every node of the tree.
dependencies_countHow many templates this one depends on, counted over the whole tree.
Columns of the table a recipe from this template produces, available before you deploy anything. An empty list means the schema could not be read - treat it as unknown, not as "no columns".
created_atWhen the template was created.
updated_atWhen the template was last changed.
RecipeTemplatePageV31
countTotal number of templates matching the request.
nextFull URL of the next page, or null on the last page.
previousFull URL of the previous page, or null on the first page.
Templates on this page.
RecipeBuildErrorV31
codeMachine-readable build error code, for example no_data_delivered or sql_object_not_found. Branch on this, never on the message. New codes can be added, so tolerate unknown ones.
messagePublic human-readable text: a fixed sentence for our own codes, and the cleaned-up message of the database for SQL failures. It never carries raw internal output, and its wording is not part of the contract.
stageWhich phase of the build failed: extraction while data was being collected, transformation_build while an intermediate step was built, final_build while the output table was built. null when the failure was recorded without a phase.
data_sourceThe data source this failure belongs to, or null when it belongs to no single one. Inside sources it always matches that entry's data_source.
occurred_atWhen the failure was recorded, or null when no time was stored with it.
detailsExtra data for this code, always an object; {} for codes that carry none. See Errors for the shape per code.
RecipeSourceV31
data_sourceData source name, for example facebook.
statusHow this data source ended up in the last build. queued - waiting to start; extracting - collecting data; building - building its tables; ready - built; failed - it did not build, see error; not_built - it was not part of the last build, because it was added to the configuration afterwards or because the recipe has never been built. Run a build to include it. New values can be added, so tolerate unknown ones.
errorWhy a build failed. On a recipe this is not null if and only if state is failed; on an entry of sources it is not null if and only if that entry's status is failed. Build error codes are a namespace of their own, separate from the codes of HTTP error responses - a few names appear in both. The catalogue is on the Errors page.
not_delivered_countHow many extractions of this data source did not make it into the last build. This is the full number; not_delivered lists at most 100 of them.
The extractions that did not make it into the last build, ordered by account_id and capped at 100 entries per data source. An empty list means everything this data source was waiting for delivered.
RecipeListItemV31
recipe_idRecipe identifier. A string, even though it is made of digits.
template_idThe template this recipe was created from.
template_titleCurrent name of that template.
titleRecipe name. When you create a recipe without a title, the template supplies the default.
workspace_idThe workspace this recipe lives in.
stateWhere the recipe stands. extracting_data - data is being collected; building_dependencies - the tables are being built; ready_to_work - the last build finished and the output table can be queried; failed - the last build failed, see error. ready_to_work means built, not built completely: it is built from the extractions that delivered, and how complete that is shown by degraded and sources. New values can be added, so tolerate unknown ones.
degradedWhether the last build was incomplete. Only meaningful while state is ready_to_work: in every other state, a failed recipe and a running build included, it is false. true - the build left something out, either a whole data source or some extractions; see not_delivered_reasons and sources. false - everything in the build delivered. null - the completeness of the last build is unknown because that build ran before version 3.1.
not_delivered_reasonsThe distinct reasons behind an incomplete last build, sorted and deduplicated across all data sources, so that you can triage a fleet of recipes from the list alone. Empty when degraded is false or null.
errorWhy a build failed. On a recipe this is not null if and only if state is failed; on an entry of sources it is not null if and only if that entry's status is failed. Build error codes are a namespace of their own, separate from the codes of HTTP error responses - a few names appear in both. The catalogue is on the Errors page.
datatable_idThe recipe's output data table, or null while none is registered. Resolve the physical table name with GET /api/v3/data-tables/{data_table_id} instead of deriving it from a title.
last_build_atWhen the last build of this recipe was started, no matter what started it. null means the recipe has never been built. For recipes last built before version 3.1 this is an approximation: the time the recipe record last changed, which is often the end of that build rather than its start.
created_atWhen the recipe was created.
updated_atWhen the recipe itself last changed. It says nothing about builds - for those use last_build_at and state.
RecipeV31
recipe_idRecipe identifier. A string, even though it is made of digits.
template_idThe template this recipe was created from.
template_titleCurrent name of that template.
titleRecipe name. When you create a recipe without a title, the template supplies the default.
workspace_idThe workspace this recipe lives in.
stateWhere the recipe stands. extracting_data - data is being collected; building_dependencies - the tables are being built; ready_to_work - the last build finished and the output table can be queried; failed - the last build failed, see error. ready_to_work means built, not built completely: it is built from the extractions that delivered, and how complete that is shown by degraded and sources. New values can be added, so tolerate unknown ones.
degradedWhether the last build was incomplete. Only meaningful while state is ready_to_work: in every other state, a failed recipe and a running build included, it is false. true - the build left something out, either a whole data source or some extractions; see not_delivered_reasons and sources. false - everything in the build delivered. null - the completeness of the last build is unknown because that build ran before version 3.1.
not_delivered_reasonsThe distinct reasons behind an incomplete last build, sorted and deduplicated across all data sources. Empty when degraded is false or null.
errorWhy a build failed. On a recipe this is not null if and only if state is failed; on an entry of sources it is not null if and only if that entry's status is failed. Build error codes are a namespace of their own, separate from the codes of HTTP error responses - a few names appear in both. The catalogue is on the Errors page.
datatable_idThe recipe's output data table, or null while none is registered. Resolve the physical table name with GET /api/v3/data-tables/{data_table_id} instead of deriving it from a title.
last_build_atWhen the last build of this recipe was started, no matter what started it. null means the recipe has never been built. For recipes last built before version 3.1 this is an approximation: the time the recipe record last changed, which is often the end of that build rather than its start.
created_atWhen the recipe was created.
updated_atWhen the recipe itself last changed. It says nothing about builds - for those use last_build_at and state.
data_sourcesData source names the recipe is configured for, sorted. Empty on a recipe that has been created but not configured yet.
allowed_data_sourcesData source names the template allows, sorted. Everything in data_sources has to come from this list.
The connections and accounts the recipe reads. This is the full set the recipe holds; configuring a recipe always sends the full set, and nothing can be taken away from it.
sync_from_dateThe date the recipe collects data from. Always set in a response, even though it may be omitted from a configuration request.
What the last build did with each configured data source. One entry per name in data_sources.
RecipePageV31
countTotal number of recipes matching the request.
nextFull URL of the next page, or null on the last page.
previousFull URL of the previous page, or null on the first page.
Recipes on this page.
RecipeExtractionTablesV31
all_tables_existtrue only when tables is not empty and every table in it exists right now. It does not mean the data is complete: for that read the recipe's state, degraded and sources.
One entry per extraction table the recipe reads. A data source with more than one table appears once per table, so key this list by table, not by data_source. Empty when the recipe reads no extraction tables yet.
ConnectionAccountV31
idAccount identifier. This is the only identifier a v3.1 recipe accepts in connections[].accounts[].id, and it is specific to this workspace.
titleAccount name.
connection_idThe connection this account belongs to.
datasource_nameData source of the connection, for example facebook.
is_activeWhether the account is switched on. Only accounts with is_active: true can be put in a recipe; the rest are rejected when you configure one.
enabled_for_embedded_extractionWhether this account is enabled for extraction through the embedded API.
currencyCurrency of the account, or null when it has none.
additional_paramsExtra account settings, as set through the accounts update operation. {} when there are none.
created_atWhen the account was created.
updated_atWhen the account was last changed.
ConnectionAccountPageV31
countTotal number of accounts matching the request.
nextFull URL of the next page, or null on the last page.
previousFull URL of the previous page, or null on the first page.
Accounts on this page.
WebhookSubscription
idSubscription ID
event_type_nameName of the event type this subscription receives
is_activeWhether the subscription is active
created_atWhen the subscription was created
WebhookEndpointListItem
idWebhook endpoint ID
urlReceiver URL
statusEndpoint lifecycle status. unverified endpoints do not receive event deliveries.
consecutive_failuresNumber of consecutive failed deliveries since the last successful delivery
subscriptions_countNumber of event types this endpoint is subscribed to
created_atupdated_atWebhookEndpointDetail
idurlsecret64-character hex signing secret
statusconsecutive_failurescreated_atupdated_atWebhookEndpointCreateRequest
urlHTTPS URL of the receiver that will accept event deliveries.
event_typesEvent types this endpoint will subscribe to. See GET /api/v3/webhook_event_types/ for the list of
available event names. Duplicates are deduplicated server-side. May be empty.
WebhookEndpointUpdateRequest
urlevent_typesWebhookEventType
event_nameIdentifier of the event type (used in event_types when creating subscriptions)
ExternalAuthLinksCreateRequest
to_emailsEmail addresses of the external users to generate links for. One link is generated per email; the email identifies the external user.
send_emailWhen true (default), Improvado also emails the generated link to each recipient.
Set to false to deliver the links yourself.
requested_byEmail of the user the links are sent on behalf of. Must be an active user of your agency
who is a member of the workspace or an owner of the agency; any other value is rejected
with 400. The user is shown as the sender on the link page and in the invitation email,
and receives the confirmation email once the connection is created. The confirmation is
skipped if the user has lost access to the workspace by then.
When omitted, the link page and the invitation show your whitelabel title instead of a person, and no confirmation email is sent.
ExternalAuthLink
emailEmail of the external user the link was generated for
linkOne-time authentication link to share with the external user
expires_atTimestamp when the link expires (14 days after creation)
ExternalAuthLinkListItem
idExternal authentication link ID
data_sourceData source name
data_source_titleHuman-readable data source title
statusCurrent status of the link
created_atWhen the link was generated
sent_to_emailEmail of the external user the link was generated for
senderEmail of the user who generated the link
revoked_atWhen the link was revoked, if it was
revoked_byEmail of the user who revoked the link; empty string if not revoked
PaginatedExternalAuthLinkList
countNumber of external authentication links
nextURL to the next page
previousURL to the previous page
ExternalAuthLinksCreateResponse
Generated links, one per successfully processed email
failed_emailsEmails for which link creation failed

