Supaglue Destinations API
A `Destination` is a data store where we write data in your infrastructure.
A `Destination` is a data store where we write data in your infrastructure.
openapi: 3.0.3
info:
version: 0.25.7
title: Unified CRM Accounts Destinations API
contact:
name: Supaglue
email: docs@supaglue.com
url: https://supaglue.com
description: '#### Introduction
Welcome to the Unified API (CRM) documentation. You can use this API to write to multiple third-party providers within the CRM category.
[View common schema for CRM](https://docs.supaglue.com/platform/common-schemas/crm)
#### Base API URL
```
https://api.supaglue.io/crm/v2
```
'
servers:
- url: https://api.supaglue.io/crm/v2
description: Supaglue API
tags:
- name: Destinations
description: A `Destination` is a data store where we write data in your infrastructure.
paths:
/destinations:
get:
operationId: getDestinations
tags:
- Destinations
security:
- x-api-key: []
summary: List destinations
description: Get a list of destinations
responses:
'200':
description: Destinations
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/destination'
example:
- id: 92bc3460-a301-4116-8d1f-6e5f8252c2e2
application_id: 9b9a31bb-9fe4-4fa5-ba84-4c035a27f258
name: My Postgres Destination
type: postgres
config:
host: production-db-new.cluster-cdhnnutnlctj.us-west-2.rds.amazonaws.com
port: 5432
database: my_database
schema: public
user: user
password: password
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFound'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
post:
operationId: createDestination
summary: Create destination
tags:
- Destinations
security:
- x-api-key: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/create_destination'
responses:
'201':
description: Destination created
content:
application/json:
schema:
$ref: '#/components/schemas/destination'
'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'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
/destinations/{destination_id}:
parameters:
- name: destination_id
in: path
required: true
schema:
type: string
get:
operationId: getDestination
summary: Get destination
tags:
- Destinations
security:
- x-api-key: []
responses:
'200':
description: Destination
content:
application/json:
schema:
$ref: '#/components/schemas/destination'
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFound'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
put:
operationId: updateDestination
summary: Update destination
tags:
- Destinations
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/update_destination'
responses:
'200':
description: Destination
content:
application/json:
schema:
$ref: '#/components/schemas/destination'
'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'
'500':
$ref: '#/components/responses/internalServerError'
'501':
$ref: '#/components/responses/notImplemented'
components:
schemas:
update_destination:
example:
name: My Postgres Destination
type: postgres
config:
host: production-db-new.cluster-cdhnnutnlctj.us-west-2.rds.amazonaws.com
port: 5432
database: postgres_prod_db
schema: public
user: myuser
password: mysensitivepassword
oneOf:
- type: object
title: postgres
properties:
name:
type: string
example: My Postgres Destination
type:
type: string
enum:
- postgres
example: postgres
config:
$ref: '#/components/schemas/postgres_config_at_least_safe'
version:
type: number
example: number
required:
- name
- type
- config
- version
- type: object
title: bigquery
properties:
name:
type: string
example: My BigQuery Destination
type:
type: string
enum:
- bigquery
example: bigquery
config:
$ref: '#/components/schemas/bigquery_config_at_least_safe'
version:
type: number
example: number
required:
- name
- type
- config
- version
snowflake_config_unsafe:
type: object
properties:
host:
type: string
example: paa05704.us-east-1
role:
type: string
example: supaglue
warehouse:
type: string
example: compute
database:
type: string
example: my_database
schema:
type: string
example: schema
username:
type: string
example: snowflake_user
password:
type: string
example: 12345fakepassword
required:
- host
- role
- warehouse
- database
- schema
- username
- password
postgres_config_at_least_safe:
type: object
properties:
host:
type: string
example: production-db-new.cluster-cdhnnutnlctj.us-west-2.rds.amazonaws.com
port:
type: number
example: 5432
database:
type: string
example: postgres_prod_db
schema:
type: string
example: public
user:
type: string
example: myuser
password:
type: string
example: mysensitivepassword
required:
- host
- port
- database
- schema
- user
s3_config_safe:
type: object
properties:
bucket:
type: string
example: s3://my-bucket-name
region:
type: string
example: us-west-2
access_key_id:
type: string
example: AKIDFIAKFISDKFSI
required:
- bucket
- region
- access_key_id
bigquery_config_safe:
type: object
properties:
project_id:
type: string
example: my-gcp-project-id
dataset:
type: string
example: my_bigquery_dataset
credentials:
type: object
properties:
client_email:
type: string
example: my_bigquery_service_account@my_project.iam.gserviceaccount.com
required:
- client_email
required:
- project_id
- dataset
- credentials
create_destination:
oneOf:
- type: object
title: postgres
properties:
name:
type: string
example: My Postgres Destination
type:
type: string
enum:
- postgres
example: postgres
config:
$ref: '#/components/schemas/postgres_config_unsafe'
required:
- name
- type
- config
- type: object
title: supaglue
description: A Supaglue-hosted Postgres database destination for Listing APIs.
properties:
type:
type: string
enum:
- supaglue
example: supaglue
required:
- type
- type: object
title: bigquery
properties:
name:
type: string
example: My BigQuery Destination
type:
type: string
enum:
- bigquery
example: bigquery
config:
$ref: '#/components/schemas/bigquery_config_unsafe'
required:
- name
- type
- config
- type: object
title: snowflake
properties:
name:
type: string
example: My Snowflake Destination
type:
type: string
enum:
- snowflake
example: snowflake
config:
$ref: '#/components/schemas/snowflake_config_unsafe'
required:
- name
- type
- config
- type: object
title: redshift
properties:
name:
type: string
example: My Redshift Destination
type:
type: string
enum:
- redshift
example: redshift
config:
$ref: '#/components/schemas/redshift_config_unsafe'
required:
- name
- type
- config
postgres_config_unsafe:
type: object
properties:
host:
type: string
example: production-db-new.cluster-cdhnnutnlctj.us-west-2.rds.amazonaws.com
port:
type: number
example: 5432
database:
type: string
example: postgres_prod_db
schema:
type: string
example: public
user:
type: string
example: myuser
ssl_mode:
type: string
enum:
- disable
- no-verify
- prefer
- require
- verify-ca
- verify-full
example: disable
password:
type: string
example: mysensitivepassword
server_ca_cert:
type: string
example: '---BEGIN CERTIFICATE-----'
client_cert:
type: string
example: '---BEGIN CERTIFICATE-----'
client_key:
type: string
example: '---BEGIN RSA PRIVATE KEY-----'
server_name:
type: string
example: 1-dd8643d8-f1ce-420f-a867-66b78a4734be.us-central1.sql.goog
required:
- host
- port
- database
- schema
- user
- password
snowflake_config_safe:
type: object
properties:
host:
type: string
example: paa05704.us-east-1
role:
type: string
example: supaglue
warehouse:
type: string
example: compute
database:
type: string
example: my_database
schema:
type: string
example: schema
username:
type: string
example: snowflake_user
required:
- host
- role
- warehouse
- database
- schema
- username
postgres_config_safe:
type: object
properties:
host:
type: string
example: production-db-new.cluster-cdhnnutnlctj.us-west-2.rds.amazonaws.com
port:
type: number
example: 5432
database:
type: string
example: postgres_prod_db
schema:
type: string
example: public
user:
type: string
example: myuser
ssl_mode:
type: string
enum:
- disable
- no-verify
- prefer
- require
- verify-ca
- verify-full
example: disable
required:
- host
- port
- database
- schema
- user
bigquery_config_unsafe:
type: object
properties:
project_id:
type: string
example: my-gcp-project-id
dataset:
type: string
example: my_bigquery_dataset
credentials:
type: object
properties:
client_email:
type: string
example: my_bigquery_service_account@my_project.iam.gserviceaccount.com
private_key:
type: string
example: '-----BEGIN PRIVATE KEY-----\nMII...'
required:
- client_email
- private_key
required:
- project_id
- dataset
- credentials
redshift_config_unsafe:
type: object
properties:
host:
type: string
example: paa05704.us-east-1
port:
type: number
example: 5439
username:
type: string
example: redshift_user
database:
type: string
example: my_database
schema:
type: string
example: schema
upload_method:
type: string
example: s3_staging
s3_key_id:
type: string
example: AKIDFIAKFISDKFSI
s3_bucket_name:
type: string
example: my_bucket
s3_bucket_region:
type: string
example: us-west-2
s3_access_key:
type: string
example: ASDFKSFSFKSDKFSK
required:
- host
- port
- username
- database
- schema
- upload_method
- s3_key_id
- s3_bucket_name
- s3_bucket_region
- s3_access_key
bigquery_config_at_least_safe:
type: object
properties:
project_id:
type: string
example: my-gcp-project-id
dataset:
type: string
example: my_bigquery_dataset
credentials:
type: object
properties:
client_email:
type: string
example: my_bigquery_service_account@my_project.iam.gserviceaccount.com
private_key:
type: string
example: '-----BEGIN PRIVATE KEY-----\nMII...'
required:
- client_email
- private_key
required:
- project_id
- dataset
- credentials
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
redshift_config_safe:
type: object
properties:
host:
type: string
example: paa05704.us-east-1
port:
type: number
example: 5439
username:
type: string
example: redshift_user
database:
type: string
example: my_database
schema:
type: string
example: schema
upload_method:
type: string
example: s3_staging
s3_key_id:
type: string
example: AKIDFIAKFISDKFSI
s3_bucket_name:
type: string
example: my_bucket
s3_bucket_region:
type: string
example: us-west-2
required:
- host
- port
- username
- database
- schema
- upload_method
- s3_key_id
- s3_bucket_name
- s3_bucket_region
destination:
example:
id: 2cce5aed-e8fc-41b2-bff6-6ddbc1f99285
application_id: e52286c9-3038-4fa2-a2b8-3ec9759d20cb
name: My Postgres Destination
type: postgres
config:
host: production-db-new.cluster-cdhnnutnlctj.us-west-2.rds.amazonaws.com
port: 5432
database: postgres_prod_db
schema: public
user: myuser
oneOf:
- type: object
title: postgres
properties:
id:
type: string
example: d455d20b-f6dc-4bc3-ab14-b4f21c4b4835
application_id:
type: string
example: 726fb798-d854-4c59-9a23-57e3e2f73eae
name:
type: string
example: My Postgres Destination
type:
type: string
enum:
- postgres
example: postgres
config:
$ref: '#/components/schemas/postgres_config_safe'
version:
type: number
example: 1
description: A monotonically increasing version number of the destination configuration
required:
- id
- application_id
- name
- type
- config
- version
- type: object
title: supaglue
description: A Supaglue-hosted Postgres database destination for Listing APIs.
properties:
id:
type: string
example: d455d20b-f6dc-4bc3-ab14-b4f21c4b4835
application_id:
type: string
example: 726fb798-d854-4c59-9a23-57e3e2f73eae
type:
type: string
enum:
- supaglue
example: supaglue
version:
type: number
example: 1
description: A monotonically increasing version number of the destination configuration
required:
- id
- application_id
- type
- version
- type: object
title: bigquery
properties:
id:
type: string
example: e888cedf-e9d0-42c5-9485-2d72984faef2
application_id:
type: string
example: 9572d08b-f19f-48cc-a992-1eb7031d3f6a
name:
type: string
example: My BigQuery Destination
type:
type: string
enum:
- bigquery
example: bigquery
config:
$ref: '#/components/schemas/bigquery_config_safe'
version:
type: number
example: 1
description: A monotonically increasing version number of the destination configuration
required:
- id
- application_id
- name
- type
- config
- version
- type: object
title: snowflake
properties:
id:
type: string
example: e888cedf-e9d0-42c5-9485-2d72984faef2
application_id:
type: string
example: 9572d08b-f19f-48cc-a992-1eb7031d3f6a
name:
type: string
example: My Snowflake Destination
type:
type: string
enum:
- snowflake
example: snowflake
config:
$ref: '#/components/schemas/snowflake_config_safe'
version:
type: number
example: 1
description: A monotonically increasing version number of the destination configuration
required:
- id
- application_id
- name
- type
- config
- version
- type: object
title: redshift
properties:
id:
type: string
example: e888cedf-e9d0-42c5-9485-2d72984faef2
application_id:
type: string
example: 9572d08b-f19f-48cc-a992-1eb7031d3f6a
name:
type: string
example: My Redshift Destination
type:
type: string
enum:
- redshift
example: redshift
config:
$ref: '#/components/schemas/redshift_config_safe'
version:
type: number
example: 1
description: A monotonically increasing version number of the destination configuration
required:
- id
- application_id
- name
- type
- config
- version
- type: object
title: s3
properties:
id:
type: string
example: e888cedf-e9d0-42c5-9485-2d72984faef2
application_id:
type: string
example: 9572d08b-f19f-48cc-a992-1eb7031d3f6a
name:
type: string
example: My S3 Destination
type:
type: string
enum:
- s3
example: s3
config:
$ref: '#/components/schemas/s3_config_safe'
version:
type: number
example: 1
description: A monotonically increasing version number of the destination configuration
required:
- id
- application_id
- name
- type
- config
- version
responses:
conflict:
description: Conflict
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
notImplemented:
description: Not implemented
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
badRequest:
description: Bad request
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'
notFound:
description: Not found
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
forbidden:
description: Forbidden
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
unauthorized:
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
internalServerError:
description: Internal server error
content:
application/json:
schema:
type: object
properties:
errors:
$ref: '#/components/schemas/errors'
securitySchemes:
x-api-key:
type: apiKey
name: x-api-key
in: header
description: API key to allow developers to access the API