Supaglue Sequence States API
The `Sequence State` Common Object represents the state of a contact in a sequence, commonly known as a "sequence membership".
The `Sequence State` Common Object represents the state of a contact in a sequence, commonly known as a "sequence membership".
openapi: 3.0.3
info:
version: 0.25.7
title: Unified CRM Accounts Sequence States API
contact:
name: Supaglue
email: docs@supaglue.com
url: https://supaglue.com
description: '#### Introduction
Welcome to the Unified API (CRM) documentation. You can use this API to write to multiple third-party providers within the CRM category.
[View common schema for CRM](https://docs.supaglue.com/platform/common-schemas/crm)
#### Base API URL
```
https://api.supaglue.io/crm/v2
```
'
servers:
- url: https://api.supaglue.io/crm/v2
description: Supaglue API
tags:
- name: Sequence States
description: The `Sequence State` Common Object represents the state of a contact in a sequence, commonly known as a "sequence membership".
paths:
/sequence_states:
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
post:
operationId: createSequenceState
summary: Create sequence state
description: 'Add a contact to a sequence. If the contact is already in the sequence, it will return the id of the existing sequence state.
'
tags:
- Sequence States
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_sequence_state'
required:
- record
example:
record:
id: 355843a5-c536-4e82-b497-05160bfb7d78
state: active
mailbox_id: a7e860b5-cb8b-400b-812d-921fa526140c
sequencestate_id: 6bdcebc2-f886-4de3-88ed-0b9eb420f7b1
sequence_id: 45e07817-fd59-4ec8-a727-066d2db27c9b
created_at: '2023-02-27T00:00:00Z'
updated_at: '2023-02-27T00:00:00Z'
responses:
'201':
description: Sequence state created
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/created_record'
warnings:
$ref: '#/components/schemas/warnings'
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFound'
'409':
$ref: '#/components/responses/conflict'
'422':
$ref: '#/components/responses/unprocessableEntity'
'499':
$ref: '#/components/responses/remoteProviderError'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
get:
operationId: listSequenceStates
summary: List sequence states
tags:
- Sequence States
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/include_raw_data'
- $ref: '#/components/parameters/read_from_cache'
- $ref: '#/components/parameters/modified_after'
- $ref: '#/components/parameters/page_size'
- $ref: '#/components/parameters/cursor'
responses:
'200':
description: Paginated Sequence States
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/sequence_state'
required:
- pagination
- records
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFound'
'409':
$ref: '#/components/responses/conflict'
'422':
$ref: '#/components/responses/unprocessableEntity'
'499':
$ref: '#/components/responses/remoteProviderError'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
/sequence_states/_search:
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
post:
operationId: searchSequenceStates
summary: Search sequence states
description: 'Search sequence states by contact_id and/or sequence_id. Note: only `read_from_cache=false` is supported at the moment.
Support:
| Provider | Search By |
| --------- | ----------------------- |
| Apollo | contact_id only |
| Salesloft | contact_id, sequence_id |
| Outreach | contact_id, sequence_id |
'
tags:
- Sequence States
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/include_raw_data'
- $ref: '#/components/parameters/read_from_cache'
- $ref: '#/components/parameters/remote_provider_page_size'
- $ref: '#/components/parameters/cursor'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
filter:
type: object
description: If both contact_id and sequence_id are provided, the search will be performed as an AND search.
properties:
contact_id:
type: string
description: The ID of the contact to filter on.
sequence_id:
type: string
description: The ID of the sequence to filter on.
required:
- filter
responses:
'200':
description: Paginated Sequence States
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/sequence_state'
required:
- pagination
- records
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFound'
'499':
$ref: '#/components/responses/remoteProviderError'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
/sequence_states/_batch:
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
post:
operationId: batchCreateSequenceState
summary: Batch create sequence states
description: 'Add multiple contacts to a sequence atomically. You must pass in the same sequenceId, userId and mailboxId for all the contact records.
Support:
| Provider | Supported |
| --------- | --------- |
| Apollo | Yes |
| Outreach | No |
| Salesloft | No |
'
tags:
- Sequence States
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
records:
type: array
description: Will use the batch endpoints when possible (e.g. Apollo)
items:
$ref: '#/components/schemas/create_sequence_state'
required:
- records
responses:
'201':
description: Sequence states created
content:
application/json:
schema:
type: object
properties:
records:
type: array
description: Created records, in order passed in
items:
$ref: '#/components/schemas/created_record'
warnings:
$ref: '#/components/schemas/warnings'
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFound'
'409':
$ref: '#/components/responses/conflict'
'422':
$ref: '#/components/responses/unprocessableEntity'
'499':
$ref: '#/components/responses/remoteProviderError'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
/sequence_states/{sequence_state_id}:
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- name: sequence_state_id
in: path
required: true
schema:
type: string
example: ffb62704-addd-454e-bb86-ed0799703dc6
get:
operationId: getSequenceState
summary: Get sequence state
tags:
- Sequence States
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/include_raw_data'
responses:
'200':
description: Sequence State
content:
application/json:
schema:
$ref: '#/components/schemas/sequence_state'
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFound'
'499':
$ref: '#/components/responses/remoteProviderError'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
components:
schemas:
warnings:
type: array
items:
type: object
properties:
detail:
type: string
problem_type:
type: string
title:
type: string
create_sequence_state:
type: object
properties:
contact_id:
type: string
example: c590dc63-8e43-48a4-8154-1fbb00ac936b
mailbox_id:
type: string
example: 39fd1fe0-094b-4a61-b47f-3e3ac033203d
description: The ID of the mailbox to use for the sequence. Required for Apollo and Outreach. Unused for Salesloft.
sequence_id:
type: string
example: b854e510-1c40-4ef6-ade4-8eb35f49d331
user_id:
type: string
description: The ID of the user who is performing the action. Required for Salesloft, optional for Apollo, unused for Outreach.
required:
- contact_id
- sequence_id
created_record:
type: object
properties:
id:
type: string
required:
- id
sequence_state:
type: object
properties:
id:
type: string
example: 54312
state:
type: string
nullable: true
example: active
contact_id:
type: string
nullable: true
example: c590dc63-8e43-48a4-8154-1fbb00ac936b
mailbox_id:
nullable: true
type: string
example: 39fd1fe0-094b-4a61-b47f-3e3ac033203d
user_id:
nullable: true
type: string
example: ab0530ef-61dd-4a99-b26b-6b5a61c7c62e
sequence_id:
nullable: true
type: string
example: b854e510-1c40-4ef6-ade4-8eb35f49d331
created_at:
type: string
nullable: true
format: date-time
example: '2022-02-27T00:00:00Z'
updated_at:
type: string
nullable: true
format: date-time
example: '2022-02-27T00:00:00Z'
is_deleted:
type: boolean
example: false
last_modified_at:
type: string
format: date-time
example: '2022-02-27T00:00:00Z'
required:
- id
- state
- mailbox_id
- user_id
- contact_id
- sequence_id
- created_at
- updated_at
- is_deleted
- last_modified_at
errors:
type: array
items:
type: object
properties:
id:
type: string
description: A unique identifier for the instance of the error. Provide this to support when contacting Supaglue.
example: 9366efb4-8fb1-4a28-bfb0-8d6f9cc6b5c5
detail:
type: string
description: A detailed description of the error.
example: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
problem_type:
type: string
description: The Supaglue error code associated with the error.
example: MISSING_REQUIRED_FIELD
deprecated: true
title:
type: string
description: A brief description of the error. The schema and type of message will vary by Provider.
example: 'Property values were not valid
'
code:
type: string
description: The Supaglue error code associated with the error.
example: MISSING_REQUIRED_FIELD
status:
type: string
description: The HTTP status code associated with the error.
example: '400'
meta:
type: object
description: Additional metadata about the error.
properties:
cause:
type: object
description: The cause of the error. Usually the underlying error from the remote Provider.
example:
code: 400
body:
status: error
message: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
correlationId: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
category: VALIDATION_ERROR
headers:
access-control-allow-credentials: 'false'
cf-cache-status: DYNAMIC
cf-ray: 8053d17b9dae9664-SJC
connection: close
content-length: '361'
content-type: application/json;charset=utf-8
date: Mon, 11 Sep 2023 23:51:22 GMT
nel: '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
report-to: '{"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v3?s=FgwuXObO%2Fz6ahUJKsxjDLaXTWjooJ8tB0w4%2B%2BKaulGStx0FGkn1PoJoOx2KrFMfihzNdfAqikq7CmgbdlmwKB8hkmp3eTb68qpg10LXFlRgiSqRhbWM7yYSfo8CXmPBc"}],"group":"cf-nel","max_age":604800}'
server: cloudflare
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: origin, Accept-Encoding
x-content-type-options: nosniff
x-envoy-upstream-service-time: '91'
x-evy-trace-listener: listener_https
x-evy-trace-route-configuration: listener_https/all
x-evy-trace-route-service-name: envoyset-translator
x-evy-trace-served-by-pod: iad02/hubapi-td/envoy-proxy-6c94986c56-9xsh2
x-evy-trace-virtual-host: all
x-hubspot-correlation-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
x-hubspot-ratelimit-interval-milliseconds: '10000'
x-hubspot-ratelimit-max: '100'
x-hubspot-ratelimit-remaining: '99'
x-hubspot-ratelimit-secondly: '10'
x-hubspot-ratelimit-secondly-remaining: '9'
x-request-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
x-trace: 2B1B4386362759B6A4C34802AD168B803DDC1BE770000000000000000000
origin:
type: string
enum:
- remote-provider
- supaglue
description: The origin of the error.
example: remote-provider
application_name:
type: string
description: The name of the application that generated the error.
example: MyCompany Production
required:
- origin
additionalProperties: true
required:
- id
- detail
- problem_type
- title
- code
- status
- meta
example:
- meta:
cause:
code: 400
body:
status: error
message: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
correlationId: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
category: VALIDATION_ERROR
headers:
access-control-allow-credentials: 'false'
cf-cache-status: DYNAMIC
cf-ray: 8053d17b9dae9664-SJC
connection: close
content-length: '361'
content-type: application/json;charset=utf-8
date: Mon, 11 Sep 2023 23:51:22 GMT
nel: '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
report-to: '{"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v3?s=FgwuXObO%2Fz6ahUJKsxjDLaXTWjooJ8tB0w4%2B%2BKaulGStx0FGkn1PoJoOx2KrFMfihzNdfAqikq7CmgbdlmwKB8hkmp3eTb68qpg10LXFlRgiSqRhbWM7yYSfo8CXmPBc"}],"group":"cf-nel","max_age":604800}'
server: cloudflare
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: origin, Accept-Encoding
x-content-type-options: nosniff
x-envoy-upstream-service-time: '91'
x-evy-trace-listener: listener_https
x-evy-trace-route-configuration: listener_https/all
x-evy-trace-route-service-name: envoyset-translator
x-evy-trace-served-by-pod: iad02/hubapi-td/envoy-proxy-6c94986c56-9xsh2
x-evy-trace-virtual-host: all
x-hubspot-correlation-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
x-hubspot-ratelimit-interval-milliseconds: '10000'
x-hubspot-ratelimit-max: '100'
x-hubspot-ratelimit-remaining: '99'
x-hubspot-ratelimit-secondly: '10'
x-hubspot-ratelimit-secondly-remaining: '9'
x-request-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
x-trace: 2B1B4386362759B6A4C34802AD168B803DDC1BE770000000000000000000
detail: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
problem_type: MISSING_REQUIRED_FIELD
title: 'Property values were not valid
'
code: MISSING_REQUIRED_FIELD
status: '400'
id: 9366efb4-8fb1-4a28-bfb0-8d6f9cc6b5c5
pagination:
type: object
properties:
next:
type: string
nullable: true
example: eyJpZCI6IjQyNTc5ZjczLTg1MjQtNDU3MC05YjY3LWVjYmQ3MDJjNmIxNCIsInJldmVyc2UiOmZhbHNlfQ==
previous:
type: string
nullable: true
example: eyJpZCI6IjBjZDhmYmZkLWU5NmQtNDEwZC05ZjQxLWIwMjU1YjdmNGI4NyIsInJldmVyc2UiOnRydWV9
total_count:
type: number
example: 100
required:
- next
- previous
responses:
conflict:
description: Conflict
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
notImplemented:
description: Not implemented
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
unprocessableEntity:
description: Unprocessable entity
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
badRequest:
description: Bad request
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
notFound:
description: Not found
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
forbidden:
description: Forbidden
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
unauthorized:
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
internalServerError:
description: Internal server error
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
remoteProviderError:
description: Remote provider error
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
parameters:
read_from_cache:
name: read_from_cache
in: query
schema:
type: boolean
example: true
description: "Whether to read from Supaglue's Managed Destination cache or to read directly from the provider. \n\n\n**NOTE**: `read_from_cache=true` requires you to have the object synced to the Supaglue Managed Destination.\n"
remote_provider_page_size:
name: page_size
in: query
schema:
type: string
example: 100
description: 'Number of results to return per page. (Max: 100)'
page_size:
name: page_size
in: query
schema:
type: string
example: 123
description: 'Number of results to return per page. (Max: 1000)'
x-customer-id:
name: x-customer-id
in: header
schema:
type: string
example: my-customer-1
description: The customer ID that uniquely identifies the customer in your application
required: true
x-provider-name:
name: x-provider-name
in: header
schema:
type: string
example: salesforce
description: The provider name
required: true
include_raw_data:
name: include_raw_data
in: query
schema:
type: boolean
description: Whether to include raw data fetched from the 3rd party provider.
example: true
modified_after:
name: modified_after
in: query
schema:
type: string
format: date-time
description: If provided, will only return objects modified after this datetime. Datetime must be in ISO 8601 format and URI encoded.
example: '2023-02-23T00:00:00Z'
cursor:
name: cursor
in: query
schema:
type: string
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
description: The pagination cursor value
securitySchemes:
x-api-key:
type: apiKey
name: x-api-key
in: header
description: API key to allow developers to access the API