openapi: 3.0.3
info:
version: 0.25.7
title: Unified CRM 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
paths:
/accounts:
post:
operationId: createAccount
summary: Create account
tags:
- Accounts
parameters: []
security:
- x-api-key: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_account'
required:
- record
responses:
'201':
description: Account 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: listAccounts
summary: List accounts
tags:
- Accounts
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'
- $ref: '#/components/parameters/associations_to_fetch'
responses:
'200':
description: Paginated Accounts
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/account'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/accounts/_upsert:
post:
operationId: upsertAccount
summary: Upsert account
description: 'Upsert an account. If the account does not exist, it will be created.
If the account does exist, it will be updated.
Only supported for Salesforce and Hubspot.
'
tags:
- Accounts
parameters: []
security:
- x-api-key: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_account'
upsert_on:
type: object
properties:
key:
type: string
enum:
- domain
- website
description: The key to upsert on. Only `website` is supported
for Salesforce, while both `domain` and `website` are supported
for Hubspot.
values:
type: array
description: The values to upsert on. If more than one value
is provided, it will act as a logical OR. If more than one
account is found that matches, then an error will be thrown.
items:
type: string
example: mydomain.com
required:
- key
- values
required:
- record
- upsert_on
responses:
'201':
description: Account upserted
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/accounts/{account_id}:
get:
operationId: getAccount
summary: Get account
tags:
- Accounts
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/include_raw_data'
- $ref: '#/components/parameters/associations_to_fetch'
responses:
'200':
description: Account
content:
application/json:
schema:
$ref: '#/components/schemas/account'
examples:
Example:
value:
addresses:
- address_type: BILLING
city: San Francisco
country: CX
postal_code: '94107'
state: CA
street1: 525 Brannan
street2: null
- address_type: BILLING
city: San Francisco
country: US
postal_code: '94107'
state: CA
street1: 525 Brannan
street2: null
description: Integration API
id: 1234
industry: API's
last_activity_at: '2022-02-10T00:00:00Z'
name: Supaglue
number_of_employees: 276000
owner_id: 9377fd4d-d420-4e0b-93ea-789078a3eab4
phone_numbers:
- phone_number: '+14151234567'
phone_number_type: mobile
created_at: '2023-02-27T00:00:00Z'
updated_at: '2023-02-27T00:00:00Z'
website: https://supaglue.com/
'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'
patch:
operationId: updateAccount
summary: Update account
tags:
- Accounts
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_account'
required:
- record
responses:
'200':
description: Account updated
content:
application/json:
schema:
type: object
properties:
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- name: account_id
in: path
required: true
schema:
type: string
example: 0258cbc6-6020-430a-848e-aafacbadf4ae
/contacts:
post:
operationId: createContact
summary: Create contact
tags:
- Contacts
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_contact'
required:
- record
example:
record:
first_name: George
last_activity_at: '2022-02-10T00:00:00Z'
last_name: Xing
account_id: 64571bff-48ea-4469-9fa0-ee1a0bab38bd
responses:
'201':
description: Contact created
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
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: listContacts
summary: List contacts
tags:
- Contacts
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'
- $ref: '#/components/parameters/associations_to_fetch'
responses:
'200':
description: Paginated Contacts
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/contact'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/contacts/_search:
post:
operationId: searchContacts
summary: Search contacts
description: 'Search contacts by a filter.
Support:
| Provider | Search By |
| ----------- | --------------- |
| Hubspot | Email |
| Salesforce | Email |
| Pipedrive | (Not Supported) |
| MS Dynamics | (Not Supported) |
'
tags:
- Contacts
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/include_raw_data'
- $ref: '#/components/parameters/page_size'
- $ref: '#/components/parameters/cursor'
- $ref: '#/components/parameters/associations_to_fetch'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
filter:
type: object
properties:
email:
type: string
description: The email to search on.
example: hello@example.com
required:
- email
required:
- filter
responses:
'200':
description: Paginated Contacts
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/contact'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/contacts/_upsert:
post:
operationId: upsertContact
summary: Upsert contact
description: 'Upsert a contact. If the contact does not exist, it will be created.
If the contact does exist, it will be updated.
Only supported for Salesforce, Hubspot, and Pipedrive.
'
tags:
- Contacts
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_contact'
upsert_on:
type: object
properties:
key:
type: string
enum:
- email
description: The key to upsert on. Only `email` is supported
for all providers.
values:
type: array
description: The values to upsert on. If more than one value
is provided, it will act as a logical OR. If more than one
account is found that matches, then an error will be thrown.
items:
type: string
example: hello@example.com
required:
- key
- values
required:
- record
- upsert_on
responses:
'201':
description: Contact upserted
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/contacts/{contact_id}:
get:
operationId: getContact
summary: Get contact
tags:
- Contacts
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/include_raw_data'
- $ref: '#/components/parameters/associations_to_fetch'
responses:
'200':
description: Contact
content:
application/json:
schema:
$ref: '#/components/schemas/contact'
'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'
patch:
operationId: updateContact
summary: Update contact
tags:
- Contacts
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_contact'
required:
- record
examples:
Example:
value:
record:
first_name: George
last_name: Xing
account_id: 0ce05511-adbc-4144-a049-6631c7ea3b04
responses:
'200':
description: Contact updated
content:
application/json:
schema:
type: object
properties:
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- name: contact_id
in: path
required: true
schema:
type: string
example: 0258cbc6-6020-430a-848e-aafacbadf4ae
/leads:
post:
operationId: createLead
summary: Create lead
tags:
- Leads
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_lead'
required:
- record
example:
record:
company: Supaglue
first_name: George
last_name: Xing
lead_source: API Blogger
title: Co-Founder
responses:
'201':
description: Lead 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: listLeads
summary: List leads
tags:
- Leads
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 Leads
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/lead'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/leads/_upsert:
post:
operationId: upsertLead
summary: Upsert lead
description: 'Upsert a lead. If the lead does not exist, it will be created.
If the lead does exist, it will be updated.
Only supported for Salesforce.
'
tags:
- Leads
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_lead'
upsert_on:
type: object
properties:
key:
type: string
enum:
- email
description: The key to upsert on. Only `email` is supported.
values:
type: array
description: The values to upsert on. If more than one value
is provided, it will act as a logical OR. If more than one
account is found that matches, then an error will be thrown.
items:
type: string
example: hello@example.com
required:
- key
- values
required:
- record
- upsert_on
responses:
'201':
description: Lead upserted
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/leads/_search:
post:
operationId: searchLeads
summary: Search leads
description: 'Search leads by a filter.
Support:
| Provider | Search By |
| ----------- | --------------- |
| Hubspot | Email |
| Salesforce | Email |
| Pipedrive | (Not Supported) |
| MS Dynamics | (Not Supported) |
'
tags:
- Leads
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/include_raw_data'
- $ref: '#/components/parameters/page_size'
- $ref: '#/components/parameters/cursor'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
filter:
type: object
properties:
email:
type: string
description: The email to search on.
example: hello@example.com
required:
- email
required:
- filter
responses:
'200':
description: Paginated Leads
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/lead'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/leads/{lead_id}:
get:
operationId: getLead
summary: Get lead
tags:
- Leads
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/include_raw_data'
responses:
'200':
description: Lead
content:
application/json:
schema:
$ref: '#/components/schemas/lead'
patch:
operationId: updateLead
summary: Update lead
tags:
- Leads
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_lead'
required:
- record
examples:
Example:
value:
record:
company: Supaglue
first_name: George
last_name: Xing
lead_source: API Blogger
title: Co-Founder
responses:
'200':
description: Lead updated
content:
application/json:
schema:
type: object
properties:
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- name: lead_id
in: path
required: true
schema:
type: string
example: 82de27cb-6f8c-4278-b783-82d1d916eddc
/opportunities:
post:
operationId: createOpportunity
summary: Create opportunity
tags:
- Opportunities
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_opportunity'
required:
- record
example:
record:
amount: 100000
close_date: '2023-02-27T00:00:00Z'
description: Wants to use open source unified API for third-party
integrations
name: Needs Integrations
stage: Closed Won
account_id: 109c88c0-7bf4-4cd8-afbc-b51f9432ca0b
responses:
'201':
description: Opportunity 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: listOpportunities
summary: List opportunities
tags:
- Opportunities
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'
- $ref: '#/components/parameters/associations_to_fetch'
responses:
'200':
description: Paginated Leads
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/opportunity'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/opportunities/{opportunity_id}:
get:
operationId: getOpportunity
summary: Get opportunity
tags:
- Opportunities
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/include_raw_data'
- $ref: '#/components/parameters/associations_to_fetch'
responses:
'200':
description: Opportunity
content:
application/json:
schema:
$ref: '#/components/schemas/opportunity'
examples:
Example:
value:
account:
id: a329053d-bf86-4b82-8356-9e897aa7dacc
amount: 100000
close_date: '2023-02-27T00:00:00Z'
description: Wants to use open source unified API for third-party
integrations
id: 1234
last_activity_at: '2023-02-27T00:00:00Z'
name: Needs third-party integrations
owner: 93b0c2b5-26a8-4b92-b4e5-05d764eb1119
created_at: '2023-02-27T00:00:00Z'
updated_at: '2023-02-27T00:00:00Z'
stage: Closed Won
'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'
patch:
operationId: updateOpportunity
summary: Update opportunity
tags:
- Opportunities
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_opportunity'
required:
- record
responses:
'200':
description: Opportunity updated
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- name: opportunity_id
in: path
required: true
schema:
type: string
example: c9f58083-a370-47b5-ad02-99160ea20372
/users:
get:
operationId: listUsers
summary: List users
tags:
- Users
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 Leads
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/user'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/users/{user_id}:
get:
operationId: getUser
summary: Get user
description: 'The common schema User maps to the following 3rd-party provider
objects:
| Provider | Remote object ID |
| --------- | ----------------- |
| Hubspot | V3 Owner |
| Dynamics | Azure System User |
| Intercom | Admin |
'
tags:
- Users
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/include_raw_data'
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
'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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- name: user_id
in: path
required: true
schema:
type: string
example: 0258cbc6-6020-430a-848e-aafacbadf4ae
/custom_objects/{object_name}/records:
post:
operationId: createCustomObjectRecord
summary: Create custom object record
tags:
- CustomObjects
security:
- x-api-key: []
description: 'Create custom object record
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_custom_object_record'
required:
- record
responses:
'201':
description: Custom Object Record 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: listCustomObjectRecords
summary: List custom object records
tags:
- CustomObjects
description: 'List custom object records
Note: This endpoint will only work if a Sync is setup with the Supaglue managed
destination.
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/read_from_cache'
- $ref: '#/components/parameters/modified_after'
- $ref: '#/components/parameters/page_size'
- $ref: '#/components/parameters/cursor'
responses:
'200':
description: Paginated Custom Objects
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/custom_object_record'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- $ref: '#/components/parameters/object_name'
/custom_objects/{object_name}/records/{record_id}:
patch:
operationId: updateCustomObjectRecord
summary: Update custom object record
tags:
- CustomObjects
security:
- x-api-key: []
description: 'Update custom object record
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_custom_object_record'
required:
- record
responses:
'200':
description: Custom Object Record 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: getCustomObjectRecord
summary: Get custom object record
tags:
- CustomObjects
security:
- x-api-key: []
description: 'Get custom object record
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
responses:
'200':
description: Custom Object Record
content:
application/json:
schema:
$ref: '#/components/schemas/custom_object_record'
'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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- $ref: '#/components/parameters/object_name'
- name: record_id
in: path
required: true
description: The ID of the record to retrieve or update
schema:
type: string
example: 82de27cb-6f8c-4278-b783-82d1d916eddc
/standard_objects/{object_name}/records:
post:
operationId: createStandardObjectRecord
summary: Create standard object record
tags:
- StandardObjects
security:
- x-api-key: []
description: 'Create standard object record
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_standard_object_record'
required:
- record
responses:
'201':
description: Standard Object Record 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: listStandardObjectRecords
summary: List standard object records
tags:
- StandardObjects
description: 'List standard object records
Note: This endpoint will only work if a Sync is setup with the Supaglue managed
destination.
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/read_from_cache'
- $ref: '#/components/parameters/modified_after'
- $ref: '#/components/parameters/page_size'
- $ref: '#/components/parameters/cursor'
responses:
'200':
description: Paginated Standard Objects
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/standard_object_record'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- $ref: '#/components/parameters/object_name'
/standard_objects/{object_name}/records/{record_id}:
patch:
operationId: updateStandardObjectRecord
summary: Update standard object record
tags:
- StandardObjects
security:
- x-api-key: []
description: 'Update standard object record
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
record:
$ref: '#/components/schemas/create_update_standard_object_record'
required:
- record
responses:
'201':
description: Standard Object Record 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: getStandardObjectRecord
summary: Get standard object record
tags:
- StandardObjects
security:
- x-api-key: []
description: 'Get standard object record
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
responses:
'200':
description: Standard Object Record
content:
application/json:
schema:
$ref: '#/components/schemas/standard_object_record'
'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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- $ref: '#/components/parameters/object_name'
- name: record_id
in: path
required: true
description: The ID of the record to retrieve or update
schema:
type: string
example: 82de27cb-6f8c-4278-b783-82d1d916eddc
/associations:
get:
operationId: listAssociations
tags:
- Associations
security:
- x-api-key: []
summary: List associations for a record and target object
description: 'Get a list of associations
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
parameters:
- name: source_record_id
in: query
schema:
type: string
required: true
- name: source_object
in: query
schema:
type: string
required: true
- name: target_object
in: query
schema:
type: string
required: true
responses:
'200':
description: Associations
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/association'
'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'
put:
operationId: upsertAssociation
summary: Upsert association
tags:
- Associations
parameters: []
description: 'Upsert association
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
security:
- x-api-key: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/create_update_association'
responses:
'201':
description: Association created
content:
application/json:
schema:
type: object
properties:
association:
$ref: '#/components/schemas/association'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/metadata/associations:
get:
operationId: listAssociationSchemas
tags:
- AssociationSchemas
security:
- x-api-key: []
summary: List association schemas
description: 'Get a list of Association Schemas
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
parameters:
- name: source_object
in: query
schema:
type: string
required: true
- name: target_object
in: query
schema:
type: string
required: true
responses:
'200':
description: List of Association Schemas
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/association_schema'
'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'
post:
operationId: createAssociationSchema
summary: Create association schema
tags:
- AssociationSchemas
description: 'Create an association schema
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
Note: When creating a new association schema for Hubspot, Hubspot will also
create a default association schema (with an empty name). Either can be used
to create associations.
'
parameters: []
security:
- x-api-key: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/create_update_association_schema'
responses:
'201':
description: Association Schema created
content:
application/json:
schema:
type: object
properties:
association_schema:
$ref: '#/components/schemas/association_schema'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/metadata/custom_objects:
get:
operationId: listCustomObjectSchemas
summary: List custom object schemas
tags:
- CustomObjectSchemas
security:
- x-api-key: []
description: 'List custom object schemas
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
parameters: []
responses:
'200':
description: An array containing the names and labels of Custom Objects
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/simple_custom_object_schema'
'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'
post:
operationId: createCustomObjectSchema
summary: Create custom object schema
tags:
- CustomObjectSchemas
parameters: []
description: 'Create custom object schema
Support:
| Provider | Supported | Notes |
| ----------- | --------- | -------------------------------------------------------
|
| Hubspot | Yes | All field types supported except picklist/multipicklist
|
| Salesforce | Yes | All field types supported except picklist/multipicklist
|
| Pipedrive | No | |
| MS Dynamics | No | |
'
security:
- x-api-key: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
object:
$ref: '#/components/schemas/create_custom_object_schema'
required:
- object
responses:
'201':
description: Custom Object Schema created
content:
application/json:
schema:
type: object
properties:
object:
type: object
properties:
name:
type: string
required:
- name
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/metadata/standard_objects:
get:
operationId: listStandardObjectSchemas
summary: List standard object schemas
tags:
- StandardObjectSchemas
security:
- x-api-key: []
description: 'List standard object schemas
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
parameters: []
responses:
'200':
description: An array containing the names of Standard Objects
content:
application/json:
schema:
type: array
items:
type: string
'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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/metadata/properties/{object_name}:
get:
operationId: listPropertiesPreview
summary: List properties
tags:
- Properties
security:
- x-api-key: []
responses:
'200':
description: List properties
content:
application/json:
schema:
type: object
properties:
properties:
type: array
items:
$ref: '#/components/schemas/property_unified'
required:
- properties
'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'
post:
operationId: createProperty
summary: Create property
description: 'Creates a custom property in the provider and registers it in
Supaglue.
:::note
This endpoint is only supported for Salesforce and Hubspot currently.
:::
'
tags:
- Properties
security:
- x-api-key: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/create_property'
responses:
'201':
description: Create a property
content:
application/json:
schema:
$ref: '#/components/schemas/property_unified'
'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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- name: object_name
in: path
required: true
schema:
type: string
example: contact
/metadata/properties/{object_name}/{property_name}:
get:
operationId: getProperty
summary: Get property (preview)
description: ':::note
This feature is only available in Preview to select customers on our Enterprise
plan. [Contact us](mailto:team@supaglue.com) for more information.
:::
'
tags:
- Properties
security:
- x-api-key: []
responses:
'200':
description: Get property
content:
application/json:
schema:
$ref: '#/components/schemas/property_unified'
'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'
patch:
operationId: updateProperty
summary: Update property (preview)
description: ':::note
This feature is only available in Preview to select customers on our Enterprise
plan. [Contact us](mailto:team@supaglue.com) for more information.
:::
:::note
This endpoint is only supported for Salesforce and Hubspot currently.
:::
'
tags:
- Properties
security:
- x-api-key: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/update_property'
responses:
'200':
description: Create a property
content:
application/json:
schema:
$ref: '#/components/schemas/property_unified'
'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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- name: object_name
in: path
required: true
schema:
type: string
description: The name of the object.
example: contact
- name: property_name
in: path
required: true
schema:
type: string
description: The name of the property.
example: email
/metadata/properties/{object_name}/register:
post:
operationId: registerProperty
summary: Register Property (preview)
description: ':::note
This feature is only available in Preview to select customers on our Enterprise
plan. [Contact us](mailto:team@supaglue.com) for more information.
:::
Registers a custom property in Supaglue.
This may be useful for custom properties that were already created in the
Customer''s provider.
E.g. a custom field has some machine ID for a particular customer that you
want to map to `my_custom_field`.
'
tags:
- Properties
security:
- x-api-key: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/register_property'
responses:
'200':
description: Register a property
content:
application/json:
schema:
$ref: '#/components/schemas/property_unified'
'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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- name: object_name
in: path
required: true
schema:
type: string
description: The name of the object.
example: contact
/metadata/custom_objects/{object_name}:
get:
operationId: getCustomObjectSchema
summary: Get custom object schema details
tags:
- CustomObjectSchemas
security:
- x-api-key: []
description: 'Get custom object schema details
Support:
| Provider | Supported |
| ----------- | --------- |
| Hubspot | Yes |
| Salesforce | Yes |
| Pipedrive | No |
| MS Dynamics | No |
'
responses:
'200':
description: CustomObject
content:
application/json:
schema:
$ref: '#/components/schemas/custom_object_schema'
'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'
put:
operationId: updateCustomObjectSchema
summary: Update custom object schema
tags:
- CustomObjectSchemas
description: 'Update custom object schema
Support:
| Provider | Supported | Notes |
| ----------- | --------- | -------------------------------------------------------
|
| Hubspot | Yes | All field types supported except picklist/multipicklist
|
| Salesforce | Yes | All field types supported except picklist/multipicklist
|
| Pipedrive | No | |
| MS Dynamics | No | |
'
security:
- x-api-key: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
object:
$ref: '#/components/schemas/update_custom_object_schema'
required:
- object
responses:
'200':
description: Custom Object Schema updated
content:
application/json:
schema:
type: object
properties:
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- $ref: '#/components/parameters/object_name'
/lists:
get:
operationId: listLists
summary: List lists
tags:
- Lists
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/remote_provider_page_size'
- $ref: '#/components/parameters/cursor'
- $ref: '#/components/parameters/object_type'
responses:
'200':
description: List Lists
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/list_metadata'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
/lists/{list_id}:
get:
operationId: listListMemberships
summary: List list memberships
description: 'Support:
| Provider | Object | Common Schema
support | Notes |
| ---------- | ------------------------------------------- | ---------------------
| ------------------------------------- |
| Hubspot | `contact`, `account` | Yes |
Raw data response from V3 API |
| Salesforce | `contact`, `account`, `lead`, `opportunity` | Yes |
Raw data response from V57.0 REST API |
'
tags:
- Lists
security:
- x-api-key: []
parameters:
- $ref: '#/components/parameters/remote_provider_page_size'
- $ref: '#/components/parameters/cursor'
- $ref: '#/components/parameters/object_type'
responses:
'200':
description: List membership
content:
application/json:
schema:
type: object
properties:
pagination:
$ref: '#/components/schemas/pagination'
records:
type: array
items:
$ref: '#/components/schemas/list_membership'
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'
parameters:
- $ref: '#/components/parameters/x-customer-id'
- $ref: '#/components/parameters/x-provider-name'
- name: list_id
in: path
required: true
schema:
type: string
example: 220e715a-0cbc-4d2d-8420-cd729f12f094
tags:
- name: Accounts
description: The `Account` Common Object represents a "company" in CRMs.
- name: Contacts
description: The `Contact` Common Object represents a "contact" in CRMs.
- name: Leads
description: The `Lead` Common Object represents a "potential customer" in CRMs.
- name: Opportunities
description: The `Opportunity` Common Object represents a "deal opportunity" in
CRMs.
- name: Users
description: The `User` Common Object represents a "user" that can log in to CRMs.
- name: Lists
description: The `List` Object represents a collection of CRM records.
- name: CustomObjectSchemas
description: A `Custom Object Schema` is an object schema defined by the user.
- name: StandardObjectSchemas
description: A `Standard Object Schema` is an object schema of a standard object
type supported by the provider.
- name: CustomObjects
description: A `Custom Object` is an instance of a `Custom Object Schema`.
- name: AssociationSchemas
description: An `Association Schema` is an object describing an association between
two entities.
- name: Association
description: An `Association` is an instance of a relationship between two entities.
- name: Properties
description: A `Property` is a field in a Provider Object.
components:
securitySchemes:
x-api-key:
type: apiKey
name: x-api-key
in: header
description: API key to allow developers to access the API
schemas:
account:
type: object
properties:
addresses:
$ref: '#/components/schemas/addresses'
description:
type: string
nullable: true
example: Integration API
id:
type: string
example: 1234
industry:
type: string
nullable: true
example: API's
last_activity_at:
type: string
nullable: true
format: date-time
example: '2022-02-27T00:00:00Z'
name:
type: string
nullable: true
example: Sample Customer
number_of_employees:
type: integer
nullable: true
example: 276000
owner_id:
type: string
nullable: true
example: d8ceb3ff-8b7f-4fa7-b8de-849292f6ca69
phone_numbers:
$ref: '#/components/schemas/phone_numbers'
lifecycle_stage:
$ref: '#/components/schemas/lifecycle_stage'
website:
type: string
nullable: true
example: https://supaglue.com/
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:
- addresses
- description
- id
- industry
- last_activity_at
- name
- number_of_employees
- owner_id
- phone_numbers
- website
- lifecycle_stage
- created_at
- updated_at
- is_deleted
- last_modified_at
create_update_account:
type: object
properties:
description:
type: string
nullable: true
example: Integration API
industry:
type: string
nullable: true
example: API's
name:
type: string
nullable: true
example: Sample Customer
number_of_employees:
type: integer
nullable: true
example: 276000
website:
type: string
nullable: true
example: https://supaglue.com/
addresses:
$ref: '#/components/schemas/addresses'
phone_numbers:
$ref: '#/components/schemas/phone_numbers'
owner_id:
type: string
nullable: true
example: 9f3e97fd-4d5d-4efc-959d-bbebfac079f5
lifecycle_stage:
$ref: '#/components/schemas/lifecycle_stage'
custom_fields:
$ref: '#/components/schemas/custom_fields'
contact:
type: object
properties:
account_id:
type: string
nullable: true
example: fd089246-09b1-4e3b-a60a-7a76314bbcce
owner_id:
type: string
nullable: true
example: 23e640fe-6105-4a11-a636-3aa6b6c6e762
addresses:
$ref: '#/components/schemas/addresses'
email_addresses:
$ref: '#/components/schemas/email_addresses'
first_name:
type: string
nullable: true
example: George
id:
type: string
example: 54312
last_activity_at:
type: string
nullable: true
format: date-time
example: '2022-02-27T00:00:00Z'
last_name:
type: string
nullable: true
example: Xing
phone_numbers:
$ref: '#/components/schemas/phone_numbers'
lifecycle_stage:
$ref: '#/components/schemas/lifecycle_stage'
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'
raw_data:
type: object
additionalProperties: true
required:
- account_id
- owner_id
- description
- id
- addresses
- email_addresses
- first_name
- last_activity_at
- last_name
- phone_numbers
- lifecycle_stage
- created_at
- updated_at
- is_deleted
- last_modified_at
create_update_contact:
type: object
properties:
first_name:
type: string
nullable: true
example: George
last_name:
type: string
nullable: true
example: Xing
account_id:
type: string
nullable: true
example: 64571bff-48ea-4469-9fa0-ee1a0bab38bd
addresses:
$ref: '#/components/schemas/addresses'
email_addresses:
$ref: '#/components/schemas/email_addresses'
phone_numbers:
$ref: '#/components/schemas/phone_numbers'
owner_id:
type: string
nullable: true
example: 9f3e97fd-4d5d-4efc-959d-bbebfac079f5
lifecycle_stage:
$ref: '#/components/schemas/lifecycle_stage'
custom_fields:
$ref: '#/components/schemas/custom_fields'
lead:
type: object
properties:
addresses:
$ref: '#/components/schemas/addresses'
company:
type: string
nullable: true
example: Supaglue
converted_account_id:
type: string
nullable: true
example: 88cc44ca-7a34-4e8b-b0da-51c3aae34daf
converted_account:
$ref: '#/components/schemas/account'
converted_contact_id:
type: string
nullable: true
example: 8c8de778-a219-4d6c-848c-1d57b52149f6
converted_contact:
$ref: '#/components/schemas/contact'
converted_date:
type: string
nullable: true
format: date-time
example: '2023-02-27T00:00:00Z'
email_addresses:
$ref: '#/components/schemas/email_addresses'
first_name:
type: string
nullable: true
example: George
id:
type: string
example: 54312
last_name:
type: string
nullable: true
example: Xing
lead_source:
type: string
nullable: true
example: API Blogger
owner_id:
type: string
nullable: true
example: 62e5e0f7-becd-4ae2-be82-8b4e1d5ed8a2
phone_numbers:
$ref: '#/components/schemas/phone_numbers'
title:
type: string
nullable: true
example: Co-Founder
created_at:
type: string
nullable: true
format: date-time
example: '2023-02-10T00:00:00Z'
updated_at:
type: string
nullable: true
format: date-time
example: '2023-02-10T00:00:00Z'
is_deleted:
type: boolean
example: false
last_modified_at:
type: string
format: date-time
example: '2022-02-27T00:00:00Z'
required:
- addresses
- company
- converted_account_id
- converted_contact_id
- converted_date
- id
- last_name
- lead_source
- owner_id
- phone_numbers
- title
- created_at
- updated_at
- is_deleted
- last_modified_at
create_update_lead:
type: object
properties:
company:
type: string
nullable: true
example: Supaglue
first_name:
type: string
nullable: true
example: George
last_name:
type: string
nullable: true
example: Xing
lead_source:
type: string
nullable: true
example: API Blogger
title:
type: string
example: Co-Founder
email_addresses:
$ref: '#/components/schemas/email_addresses'
addresses:
$ref: '#/components/schemas/addresses'
owner_id:
type: string
nullable: true
example: 9f3e97fd-4d5d-4efc-959d-bbebfac079f5
converted_contact_id:
type: string
nullable: true
example: ad43955d-2b27-4ec3-b38a-0ca07a76d43b
converted_account_id:
type: string
nullable: true
example: 2e1e6813-0459-47f5-ad4c-3d137c0e1fdd
custom_fields:
$ref: '#/components/schemas/custom_fields'
opportunity:
type: object
properties:
account_id:
type: string
nullable: true
example: fd089246-09b1-4e3b-a60a-7a76314bbcce
amount:
type: integer
nullable: true
example: 100000
close_date:
type: string
nullable: true
format: date-time
example: '2023-02-27T00:00:00Z'
description:
type: string
nullable: true
example: Wants to use open source unified API for third-party integrations
id:
type: string
example: 54312
last_activity_at:
type: string
nullable: true
format: date-time
example: '2023-02-27T00:00:00Z'
name:
type: string
nullable: true
example: Needs third-party integrations
owner_id:
type: string
nullable: true
example: d8ceb3ff-8b7f-4fa7-b8de-849292f6ca69
pipeline:
type: string
nullable: true
stage:
type: string
nullable: true
example: Closed Won
status:
type: string
nullable: true
example: OPEN
created_at:
type: string
nullable: true
format: date-time
example: '2023-02-27T00:00:00Z'
updated_at:
type: string
nullable: true
format: date-time
example: '2023-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:
- account_id
- amount
- description
- id
- last_activity_at
- name
- owner_id
- stage
- status
- pipeline
- created_at
- updated_at
- is_deleted
- last_modified_at
user:
type: object
properties:
id:
type: string
example: 54312
name:
type: string
nullable: true
example: George Xing
email:
type: string
nullable: true
example: george@supaglue.com
is_active:
type: boolean
nullable: true
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
- name
- email
- is_active
- created_at
- updated_at
- is_deleted
- last_modified_at
property_unified:
type: object
properties:
id:
type: string
description: The machine name of the property as it appears in the third-party
Provider.
example: FirstName
custom_name:
type: string
description: Only applicable for custom properties. This represents the
unique identifier that can be used to refer to this property across all
customers.
label:
type: string
description: The human-readable name of the property as provided by the
third-party Provider.
example: First Name
description:
type: string
description: A description of the field.
is_required:
type: boolean
description: Whether or not this field is required. Must be false for Salesforce
boolean fields.
example: false
default_value:
description: The default value for the property. Only supported for Salesforce.
oneOf:
- type: string
- type: number
- type: boolean
group_name:
type: string
example: supaglue
description: Only applicable for Hubspot. If specified, Supaglue will attempt
to attach the field to this group if it exists, or create it if it doesn't.
type:
$ref: '#/components/schemas/property_type'
precision:
type: number
description: Only applicable in Salesforce. If not given, will default to
18.
scale:
type: number
description: Only applicable in Salesforce. If not given, will default to
0.
options:
type: array
description: The list of options for a picklist/multipicklist field.
items:
$ref: '#/components/schemas/picklist_option'
raw_details:
type: object
description: The raw details of the property as provided by the third-party
Provider, if available.
additionalProperties: true
example: {}
required:
- id
- label
- type
create_property:
type: object
properties:
name:
type: string
description: 'The unique identifier to be used to refer to this property
across all customers. Supaglue will use this to appropriately map to the
provider field ID.
'
example: ticketId
label:
type: string
description: The human-readable name of the property as provided by the
third-party Provider.
example: First Name
description:
type: string
description: A description of the field.
is_required:
type: boolean
description: Defaults to false.
example: false
group_name:
type: string
example: supaglue
description: Only applicable for Hubspot. If specified, Supaglue will attempt
to attach the field to this group if it exists, or create it if it doesn't.
If not specified, Supaglue will create the field in the 'custom_properties'
group.
type:
$ref: '#/components/schemas/property_type'
precision:
type: number
description: Only applicable in Salesforce. If not given, will default to
18.
scale:
type: number
description: Only applicable in Salesforce. If not given, will default to
0.
options:
type: array
description: The list of options for a picklist/multipicklist field.
items:
$ref: '#/components/schemas/picklist_option'
required:
- name
- label
- type
register_property:
type: object
properties:
id:
type: string
description: The machine name of the property as it appears in the third-party
Provider.
example: 1234523
name:
type: string
description: 'The unique identifier to be used to refer to this property
across all customers. Supaglue will use this to appropriately map to the
provider field ID.
'
example: ticketId
required:
- name
- id
update_property:
type: object
properties:
label:
type: string
description: The human-readable name of the property as provided by the
third-party Provider.
example: First Name
description:
type: string
description: A description of the field.
is_required:
type: boolean
description: Defaults to false.
example: false
group_name:
type: string
example: supaglue
description: Only applicable for Hubspot. If specified, Supaglue will attempt
to attach the field to this group if it exists, or create it if it doesn't.
type:
$ref: '#/components/schemas/property_type'
precision:
type: number
description: Only applicable in Salesforce. If not given, will default to
18.
scale:
type: number
description: Only applicable in Salesforce. If not given, will default to
0.
options:
type: array
description: The list of options for a picklist/multipicklist field.
items:
$ref: '#/components/schemas/picklist_option'
property_type:
type: string
enum:
- text
- textarea
- number
- picklist
- multipicklist
- date
- datetime
- boolean
- url
- other
description: "Type of the field.\n\n:::note\n`picklist` and `multipicklist`\
\ property types are currently only supported in Salesforce and Hubspot\n\
:::\n\n:::note\n`url` property type currently is only natively supported in\
\ Salesforce.\n:::\n\nSupport:\n\n
\n \n \n | Type | \n\
\ Hubspot (type-fieldType) | \n Salesforce | \n \
\ Pipedrive | \n
\n \n \n \n | text | \n\
\ string-text | \n Text | \n varchar_auto | \n\
\
\n \n | textarea | \n string-textarea | \n\
\ Textarea | \n text | \n
\n \n \
\ | number | \n number-number | \n Int/Double (depending\
\ on scale) | \n double | \n
\n \n | picklist | \n\
\ enumeration-select | \n Picklist | \n enum | \n\
\
\n \n | multipicklist | \n enumeration-checkbox | \n\
\ Multipicklist | \n set | \n
\n \n \
\ | date | \n date-date | \n Date | \n \
\ date | \n
\n \n | datetime | \n datetime-date | \n\
\ Datetime | \n date | \n
\n \n \
\ | boolean | \n bool-booleancheckbox | \n Checkbox | \n\
\ enum | \n
\n \n | url | \n Not\
\ Supported | \n Url | \n Not Supported | \n
\n\
\ \n
\n"
picklist_option:
type: object
properties:
label:
type: string
example: Option 1
value:
type: string
example: option_1
description:
type: string
description: A description of this option.
hidden:
type: boolean
description: Defaults to false.
required:
- label
- value
list_metadata:
type: object
properties:
id:
type: string
example: 00BDn00000RHS32MAH
description: The provider-specific unique identifier for this list.
object_type:
type: string
enum:
- contact
- account
- lead
- opportunity
name:
type: string
example: RecentlyViewedContacts
description: The developer name of this list.
label:
type: string
example: Recently Viewed Contacts
description: The label for this list.
raw_data:
type: object
description: The raw data from the provider for this list.
additionalProperties: true
example:
attributes:
type: ListView
url: /services/data/v57.0/sobjects/ListView/00BDn00000RHS32MAH
Id: 00BDn00000RHS32MAH
Name: Recently Viewed Contacts
DeveloperName: RecentlyViewedContacts
NamespacePrefix: null
SobjectType: Contact
IsSoqlCompatible: true
CreatedDate: 2023-05-26T22:25:47.000+0000
CreatedById: 005Dn0000079fN6IAI
LastModifiedDate: 2023-05-26T22:25:47.000+0000
LastModifiedById: 005Dn0000079fN6IAI
SystemModstamp: 2023-05-26T22:25:47.000+0000
LastViewedDate: null
LastReferencedDate: null
required:
- id
- object_type
- name
- label
- raw_data
list_membership:
oneOf:
- $ref: '#/components/schemas/contact'
- $ref: '#/components/schemas/account'
- $ref: '#/components/schemas/lead'
- $ref: '#/components/schemas/opportunity'
create_update_opportunity:
type: object
properties:
amount:
type: integer
nullable: true
example: 100000
close_date:
type: string
nullable: true
example: '2022-02-10T00:00:00Z'
description:
type: string
nullable: true
example: Wants to use open source unified API for third-party integrations
name:
type: string
nullable: true
example: Needs Integrations
stage:
type: string
example: Closed Won
account_id:
type: string
nullable: true
example: 64571bff-48ea-4469-9fa0-ee1a0bab38bd
owner_id:
type: string
nullable: true
example: 9f3e97fd-4d5d-4efc-959d-bbebfac079f5
pipeline:
type: string
nullable: true
custom_fields:
$ref: '#/components/schemas/custom_fields'
custom_object_schema:
type: object
properties:
name:
type: string
example: ticket
description:
type: string
nullable: true
example: Ticket object
labels:
type: object
properties:
singular:
type: string
example: Ticket
plural:
type: string
example: Tickets
required:
- singular
- plural
fields:
type: array
items:
$ref: '#/components/schemas/custom_object_field'
required:
- name
- description
- labels
- fields
custom_object_field:
type: object
properties:
id:
type: string
description: The machine name of the property as it appears in the third-party
Provider. In Salesforce, this must end with `__c`.
example: FirstName
label:
type: string
description: The human-readable name of the property as provided by the
third-party Provider.
example: First Name
description:
type: string
description: A description of the field.
is_required:
type: boolean
description: Whether or not this field is required. Must be false for Salesforce
boolean fields.
example: false
default_value:
description: The default value for the property. Only supported for Salesforce.
oneOf:
- type: string
- type: number
- type: boolean
group_name:
type: string
example: supaglue
description: Only applicable for Hubspot. If specified, Supaglue will attempt
to attach the field to this group if it exists, or create it if it doesn't.
type:
$ref: '#/components/schemas/property_type'
precision:
type: number
description: Only applicable in Salesforce. If not given, will default to
18.
scale:
type: number
description: Only applicable in Salesforce. If not given, will default to
0.
options:
type: array
description: The list of options for a picklist/multipicklist field.
items:
$ref: '#/components/schemas/picklist_option'
raw_details:
type: object
description: The raw details of the property as provided by the third-party
Provider, if available.
additionalProperties: true
example: {}
required:
- id
- label
- type
custom_object_record:
type: object
properties:
id:
type: string
custom_object_name:
type: string
data:
type: object
additionalProperties: true
is_deleted:
type: boolean
last_modified_at:
type: string
format: date-time
required:
- id
- custom_object_name
- data
- is_deleted
- last_modified_at
example:
id: 001Fn00023f8oYYIA0
custom_object_name: MyCustomObject__c
data:
Name: Acme Corp
Description: We create the best embedded integration platforms.
is_deleted: false
last_modified_at: '2021-01-01T00:00:00Z'
standard_object_record:
type: object
properties:
id:
type: string
object_name:
type: string
data:
type: object
additionalProperties: true
is_deleted:
type: boolean
last_modified_at:
type: string
format: date-time
required:
- id
- object_name
- data
- is_deleted
- last_modified_at
example:
id: 001Fn00023f8oYYIA0
object_name: Account
data:
Name: Acme Corp
Description: We create the best embedded integration platforms.
is_deleted: false
last_modified_at: '2021-01-01T00:00:00Z'
simple_custom_object_schema:
type: object
properties:
name:
type: string
example: ticket
labels:
type: object
properties:
singular:
type: string
example: Ticket
plural:
type: string
example: Tickets
required:
- singular
- plural
required:
- name
- label
association:
type: object
description: An instance of an association between two records.
properties:
association_schema_id:
type: string
source_object:
type: string
description: The name of the object that the source record belongs to.
example: company
source_record_id:
type: string
example: 45636a40-87e3-4707-b43c-39fecf9a8f4b
target_object:
type: string
description: The name of the object that the target record belongs to.
example: contact
target_record_id:
type: string
example: ad204784-a71b-440a-8482-c3d5ab64110f
required:
- association_schema_id
- source_record_id
- target_record_id
- source_object
- target_object
association_schema:
type: object
properties:
id:
type: string
source_object:
type: string
example: contact
target_object:
type: string
example: my_custom_object
display_name:
type: string
required:
- id
- source_object
- target_object
- display_name
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
warnings:
type: array
items:
type: object
properties:
detail:
type: string
problem_type:
type: string
title:
type: string
created_record:
type: object
properties:
id:
type: string
required:
- id
addresses:
type: array
items:
type: object
properties:
address_type:
type: string
enum:
- primary
- mailing
- other
- billing
- shipping
city:
type: string
nullable: true
example: San Francisco
country:
type: string
nullable: true
example: USA
postal_code:
type: string
nullable: true
example: '94107'
state:
type: string
nullable: true
example: CA
street_1:
type: string
nullable: true
example: 525 Brannan
street_2:
type: string
nullable: true
example: null
required:
- address_type
- city
- country
- postal_code
- state
- street_1
- street_2
example:
- address_type: shipping
city: San Francisco
country: US
postal_code: '94107'
state: CA
street_1: 525 Brannan
street_2: null
email_addresses:
type: array
items:
type: object
properties:
email_address:
type: string
example: hello@supaglue.com
email_address_type:
type: string
enum:
- primary
- work
- other
required:
- email_address
- email_address_type
example:
- email_address: hello@supaglue.com
email_address_type: work
phone_numbers:
type: array
items:
type: object
properties:
phone_number:
type: string
nullable: true
example: '+14151234567'
phone_number_type:
type: string
enum:
- primary
- mobile
- fax
- other
required:
- phone_number
- phone_number_type
example:
- phone_number: '+14151234567'
phone_number_type: primary
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
custom_fields:
type: object
additionalProperties: true
description: Custom properties to be inserted that are not covered by the common
object. Object keys must match exactly to the corresponding provider API.
equals_filter:
type: object
additionalProperties: false
properties:
type:
type: string
enum:
- equals
value:
type: string
required:
- type
- value
contains_filter:
type: object
additionalProperties: false
properties:
type:
type: string
enum:
- contains
value:
type: string
required:
- type
- value
filter:
oneOf:
- $ref: '#/components/schemas/equals_filter'
- $ref: '#/components/schemas/contains_filter'
lifecycle_stage:
type: string
nullable: true
enum:
- subscriber
- lead
- marketingqualifiedlead
- salesqualifiedlead
- opportunity
- customer
- evangelist
- other
create_update_association_schema:
type: object
properties:
source_object:
type: string
target_object:
type: string
suggested_key_name:
type: string
description: The underlying provider may change this (e.g. adding `__c`
for Salesforce).
display_name:
type: string
required:
- source_object
- target_object
- suggested_key_name
- display_name
create_update_association:
type: object
properties:
association_schema_id:
type: string
source_object:
type: string
description: The name of the object that the source record belongs to.
example: company
source_record_id:
type: string
example: 45636a40-87e3-4707-b43c-39fecf9a8f4b
target_object:
type: string
description: The name of the object that the target record belongs to.
example: contact
target_record_id:
type: string
example: ad204784-a71b-440a-8482-c3d5ab64110f
required:
- association_schema_id
- source_record_id
- target_record_id
- source_object
- target_object
create_update_custom_object_record:
type: object
additionalProperties: true
create_update_standard_object_record:
type: object
additionalProperties: true
create_custom_object_schema:
type: object
properties:
name:
type: string
example: ticket
description: The name you'd like to use for the custom object. For Salesforce,
we will append `__c` if necessary. For HubSpot, it will pass through as-is.
description:
type: string
nullable: true
example: Ticket object
labels:
type: object
properties:
singular:
type: string
example: Ticket
plural:
type: string
example: Tickets
required:
- singular
- plural
primary_field_id:
type: string
description: The key name of the "primary" field. For example, in HubSpot,
this is the field that will be displayed for a record in the UI by default.
For Salesforce, this will be referenced as the "Name" field.
example: ticket_id
fields:
type: array
items:
$ref: '#/components/schemas/custom_object_field'
required:
- name
- description
- labels
- primary_field_id
- fields
update_custom_object_schema:
type: object
properties:
description:
type: string
nullable: true
example: Ticket object
labels:
type: object
properties:
singular:
type: string
example: Ticket
plural:
type: string
example: Tickets
required:
- singular
- plural
primary_field_id:
type: string
description: The key name of the "primary" field. For example, in HubSpot,
this is the field that will be displayed for a record in the UI by default.
For Salesforce, this will be referenced as the "Name" field.
example: ticket_id
fields:
type: array
items:
$ref: '#/components/schemas/custom_object_field'
required:
- description
- labels
- primary_field_id
- fields
created_custom_object_record:
type: object
properties:
id:
type: string
custom_object_id:
type: string
required:
- id
- custom_object_id
parameters:
include_deleted_data:
name: include_deleted_data
in: query
schema:
type: boolean
example: true
description: Whether to include data that was deleted in providers.
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
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"
created_after:
name: created_after
in: query
schema:
type: string
format: date-time
example: '2023-02-23T00:00:00Z'
description: If provided, will only return objects created after this datetime.
Datetime must be in ISO 8601 format and URI encoded.
created_before:
name: created_before
in: query
schema:
type: string
format: date-time
example: '2023-02-23T00:00:00Z'
description: If provided, will only return objects created before this datetime.
Datetime must be in ISO 8601 format and URI encoded.
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'
modified_before:
name: modified_before
in: query
schema:
type: string
format: date-time
example: '2023-02-23T00:00:00Z'
description: If provided, will only return objects modified before this datetime.
Datetime must be in ISO 8601 format and URI encoded.
cursor:
name: cursor
in: query
schema:
type: string
example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
description: The pagination cursor value
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
object_type:
name: object_type
in: query
schema:
type: string
enum:
- contact
- account
- opportunity
- lead
example: contact
description: "The Supaglue common object type to fetch a list for.\n\nSupport:\n\
\n\n \n \n | Provider | \n Object Type | \n\
\
\n \n \n \n | Salesforce | \n \
\ countact, account, opportunity, lead | \n
\n \n\
\ | Hubspot | \n contact, account | \n
\n \n\
\
\n"
required: true
object_name:
name: object_name
in: path
schema:
type: string
example: MyCustomObject__c
description: The unique name of the custom object. For Salesforce, this should
end with __c. For Hubspot, this will typically be the singular form of the
object.
required: true
associations_to_fetch:
name: associations_to_fetch
in: query
schema:
type: array
items:
type: string
example: contact
description: 'List of associated objects to attempt to fetch associations for.
Only relevant for hubspot and when `read_from_cache` is false.
'
responses:
badRequest:
description: Bad request
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
conflict:
description: Conflict
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'
internalServerError:
description: Internal server error
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'
notImplemented:
description: Not implemented
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'
unauthorized:
description: Unauthorized
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'