Attio v2

Provides integration with Attio CRM to read workspace objects, lists and attribute definitions, and to query, create, update, upsert and delete records and list entries in your Workflows. Templates are generated from the objects, lists and attributes in your Attio workspace. The Node is available on Cloud Runtime Clusters.

Revision History

0.0.0.8 - Initial release.

Connection

Use this Connection to store the Attio access token and the workspace definitions used to build templates and validate requests.

Property Type Description
AccessToken Masked Required Attio workspace API key.
TimeoutSeconds Integer Maximum number of seconds for each request to Attio. Defaults to 30 and must be greater than zero.
Metadata String Hidden, automatically maintained Attio API document and workspace object, list and attribute definitions populated by AcquireMetadata.

Setup Notes

  1. Create an access token for your Attio workspace.
  2. Grant the token the permissions required by the operations you plan to use:
    • Records: record_permission:read and object_configuration:read. Writes require record_permission:read-write.
    • List entries: list_entry:read and list_configuration:read. Writes require list_entry:read-write.
  3. Create an Attio Connection in Flowgear and enter the token in AccessToken.
  4. Test the Connection. The test confirms that Attio reports the token as active; a token that Attio reports as inactive fails the test.
  5. Run AcquireMetadata. This downloads the Attio API document and reads the workspace's objects, lists, attributes, select options and statuses, then saves them on the Connection. All templates and Methods require this metadata.
  6. Select a Method and its operation template, then map the fields needed by your Workflow.

Requests use the fixed https://api.attio.com endpoint. Replace the token on the Connection when it is revoked or reissued.

Run AcquireMetadata again after adding or changing objects, lists, attributes, select options or statuses in Attio, and after changing AccessToken. The saved definitions are bound to the token used to acquire them, so changing the token without acquiring metadata again stops the Node with an instruction to run AcquireMetadata. A failed acquisition keeps the previously saved metadata.

Methods

Select an operation template for the Method you want to use. The template supplies OperationId, a GUID identifying that operation, and describes its Options, Items and Response fields. Record and list entry templates are generated per object or list in your workspace, and their names include the object or list slug, such as Create a record — companies or List entries — sales. An OperationId from a different Method is rejected.

Method Supported operations
Query List or get objects and lists. List or get attributes, select options and statuses for an object or list. Query or get records and list entries.
Create Create a record. Add a record to a list as a new entry.
Update Upsert a record by a unique matching attribute. Upsert a list entry by its parent record. Update a record or list entry, either appending multiselect values or overwriting them.
Delete Delete one record or one list entry.

Query

Reads definitions, records or list entries using the selected template. Record and list entry queries retrieve subsequent pages automatically as you consume Response.

Parameter Type Description
Connection Connection Attio Connection used to authenticate the request.
OperationId String GUID supplied by the selected query template.
Options Object Route and query values supported by the selected template, using Attio's names. For example, object and record_id to get a record, list and entry_id to get a list entry, or target, identifier and attribute to read an attribute definition. Record and list entry queries also accept filter, filter_view_id and sorts.
Return Type Description
Response Array One row per returned definition, record or list entry. Response envelopes are removed, while nested IDs, attribute values and actor details remain structured. A successful query with no matching results returns no rows.

Create

Creates one record or list entry for each input item. Supply the item's fields directly through Items; the Node builds the Attio data request envelope.

Parameter Type Description
Connection Connection Attio Connection used to authenticate the request.
OperationId String GUID supplied by the selected create template.
Items Array Required stream of objects matching the selected template. Record items contain values. List entry items contain parent_object, parent_record_id and, optionally, entry_values. An empty connected stream creates nothing.
Options Object Route values for the selected template, such as object or list.
Return Type Description
Response Array One result per input item containing the fields returned by Attio and Flowgear.IsSuccess, Flowgear.Message and Flowgear.Request. The request contains the original item and the supplied Options.

Update

Updates or upserts one record or list entry for each input item. The selected template determines how values are written:

  • Upsert a record creates the record, or updates the existing record whose value for the attribute named in Options.matching_attribute matches. The matching attribute must be a unique attribute in the acquired workspace metadata.
  • Upsert a list entry by parent creates the entry, or updates the existing entry for the same parent record.
  • Update a record (append multiselect values) and Update a list entry (append multiselect values) add new values to multiselect attributes and keep existing values.
  • Update a record (overwrite multiselect values) and Update a list entry (overwrite multiselect values) replace the existing values of multiselect attributes.
Parameter Type Description
Connection Connection Attio Connection used to authenticate the request.
OperationId String GUID supplied by the selected update template.
Items Array Required stream of objects matching the selected template. Record items contain values. List entry items contain entry_values, plus parent_object and parent_record_id for upsert templates. An empty connected stream performs no updates.
Options Object Route values for the selected template, such as object and record_id, list and entry_id, or object and matching_attribute for an upsert.
Return Type Description
Response Array One result per input item containing the fields returned by Attio and Flowgear.IsSuccess, Flowgear.Message and Flowgear.Request. The request contains the original item and the supplied Options.

When an update template for a list entry has no writable fields, supply an Items stream containing an empty object, {}, for each request you intend to make.

Delete

Deletes the record or list entry identified in Options. This Method executes once per invocation and has no Items input. Delete templates never supply a default record or entry ID.

Parameter Type Description
Connection Connection Attio Connection used to authenticate the request.
OperationId String GUID supplied by the selected delete template.
Options Object Required route values: object and record_id for a record, or list and entry_id for a list entry.
Return Type Description
Response Array One result with Flowgear.IsSuccess, Flowgear.Message and Flowgear.Request, including when Attio returns an empty response.

Usage Notes

  • Attribute values are collections of value objects, even for single-valued attributes. For example, a text attribute is written as "name": [{"value": "Example company"}]. Read-only attributes and fields that are not in the selected template are rejected.
  • Reference other records and workspace members by their IDs. The Node does not create referenced records by matching their attributes.
  • Record and list entry filters support text, number, rating and checkbox attributes discovered in your workspace. Use $eq for those attribute types, or $contains for text attributes. Supply either filter or filter_view_id, not both. Template samples illustrate valid inputs and are not applied automatically.
  • Sorts pair a discovered attribute with a direction of asc or desc. Path-based sorts are not supported.
  • Let the Node handle pagination. Do not add limit, offset or cursor to Options.
  • Map string and integer collections as CSV strings, such as the parent_object and allowed_object_ids fields in list and attribute definitions. Quote values containing commas, quotes or line breaks, and double any quotes inside a quoted value. Whitespace is preserved. An empty string represents an empty collection, while "" represents one empty string. Object collections remain structured.
  • Consume the response stream to process all query pages or all create and update items. The first page or write executes when the Node starts; later pages and items are processed as the stream advances.
  • Check Flowgear.IsSuccess for every mutation result. Business errors returned by Attio produce a failed row and allow later input items to continue. Missing required fields or unsupported fields in the first item stop the Node; in later items they produce a failed row. Authentication failures, transport failures and timeouts stop the Node.
  • The Node retries rate-limited requests up to three times, respecting Attio's Retry-After value. Writes that time out or fail with a server error are not retried automatically. Check Attio before repeating a write because the request may already have succeeded.
  • Templates and invocations use the metadata saved on the Connection and make no additional requests to download the API document. Template listing does not contact Attio.

Examples

Query companies by name

Select the Query template List records — companies and supply the following Options object:

{
  "object": "companies",
  "filter": {
    "name": {
      "$eq": "Example company"
    }
  }
}

Each row in Response is one matching company record.

Create a company

Select the Create template Create a record — companies, set Options.object to companies, and supply the following object as an item in Items:

{
  "values": {
    "name": [
      {
        "value": "Example company"
      }
    ]
  }
}

Check the result's Flowgear.IsSuccess before using the returned record ID in later operations.

See also