Supaglue Syncs API

A `Sync` is a way for a Customer to sync data from a Provider to a Destination on a schedule.

OpenAPI Specification

supaglue-syncs-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  version: 0.25.7
  title: Unified CRM Accounts Syncs 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: Syncs
  description: A `Sync` is a way for a Customer to sync data from a Provider to a Destination on a schedule.
paths:
  /syncs:
    get:
      operationId: getSyncs
      tags:
      - Syncs
      security:
      - x-api-key: []
      summary: Get Syncs
      description: Get a list of Syncs.
      parameters:
      - name: cursor
        in: query
        schema:
          type: string
        example: cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw
        description: The pagination cursor value
      - name: page_size
        in: query
        schema:
          type: string
        example: '100'
        description: Number of results to return per page
      - name: customer_id
        in: query
        schema:
          type: string
        example: my-customer-1
        description: The customer ID that uniquely identifies the customer in your application
      - name: provider_name
        in: query
        schema:
          type: string
        example: salesforce
        description: The provider name
      - name: object_type
        in: query
        schema:
          type: string
          enum:
          - common
          - standard
          - custom
        example: standard
        description: The object type to filter by
      - name: object
        in: query
        schema:
          type: string
        example: contact
        description: The object to filter by
      - name: entity_id
        deprecated: true
        in: query
        schema:
          type: string
        example: e74b5a4f-f252-4a6c-940c-f35873498543
        description: The entity id to filter by
      responses:
        '200':
          description: Sync
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/pagination'
                - type: object
                  properties:
                    results:
                      type: array
                      items:
                        $ref: '#/components/schemas/sync_with_provider_and_customer'
        '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'
  /syncs/_pause:
    parameters:
    - $ref: '#/components/parameters/x-customer-id'
    - $ref: '#/components/parameters/x-provider-name'
    post:
      operationId: pauseSync
      summary: Pause sync
      tags:
      - Syncs
      security:
      - x-api-key: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - type: object
                title: 'Data model: Objects'
                properties:
                  object_type:
                    type: string
                    enum:
                    - common
                    - standard
                    - custom
                    example: standard
                    description: The object type to filter by
                  object:
                    type: string
                    example: Contact
                    description: The Provider object to filter by (case sensitive)
                required:
                - object_type
                - object
              - type: object
                title: 'Data model: Common Schema'
                properties:
                  object_type:
                    type: string
                    enum:
                    - common
                    example: common
                    description: The object type to filter by
                  object:
                    type: string
                    example: contact
                    description: The Supaglue object to filter by
                required:
                - object_type
                - object
              - type: object
                title: 'Data model: Entities'
                deprecated: true
                properties:
                  entity_id:
                    type: string
                    description: The entity id to filter by
                required:
                - entity_id
      responses:
        '200':
          description: Sync paused
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sync'
        '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'
  /syncs/_resume:
    parameters:
    - $ref: '#/components/parameters/x-customer-id'
    - $ref: '#/components/parameters/x-provider-name'
    post:
      operationId: resumeSync
      summary: Resume sync
      tags:
      - Syncs
      security:
      - x-api-key: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - type: object
                title: 'Data model: Objects'
                properties:
                  object_type:
                    type: string
                    enum:
                    - common
                    - standard
                    - custom
                    example: standard
                    description: The object type to filter by
                  object:
                    type: string
                    example: contact
                    description: The object to filter by
                required:
                - object_type
                - object
              - type: object
                title: 'Data model: Entities'
                deprecated: true
                properties:
                  entity_id:
                    type: string
                    example: cfba6060-c43a-4a63-8a8c-501c6099f8b0
                    description: The entity id to filter by
                required:
                - entity_id
      responses:
        '200':
          description: Sync resumed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sync'
              example:
                id: 2caab904-3c7c-4894-8c82-4c28913b3419
                type: entity
                entity_id: db602f88-7a8c-44f0-8932-c92f1e033494
                connection_id: da732713-2ff7-4f3b-8728-257a026177cd
                sync_config_id: f2b3ea2a-6a1e-4983-91f1-92a4db4d7abd
                paused: false
        '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'
  /syncs/_trigger:
    parameters:
    - $ref: '#/components/parameters/x-customer-id'
    - $ref: '#/components/parameters/x-provider-name'
    post:
      operationId: triggerSync
      summary: Trigger sync
      tags:
      - Syncs
      security:
      - x-api-key: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - type: object
                title: 'Data model: Objects'
                properties:
                  object_type:
                    type: string
                    enum:
                    - standard
                    - custom
                    description: The object type to filter by
                    example: standard
                  object:
                    type: string
                    example: contact
                    description: The Provider object to filter by (case sensitive)
                  perform_full_refresh:
                    type: boolean
                    example: true
                required:
                - object_type
                - object
              - type: object
                title: 'Data model: Common Schema'
                properties:
                  object_type:
                    type: string
                    enum:
                    - common
                    description: The object type to filter by
                    example: common
                  object:
                    type: string
                    example: contact
                    description: The Supaglue object to filter by
                  perform_full_refresh:
                    type: boolean
                    example: true
                required:
                - object_type
                - object
              - type: object
                title: 'Data model: Entities'
                deprecated: true
                properties:
                  entity_id:
                    type: string
                    description: The entity id to filter by
                  perform_full_refresh:
                    type: boolean
                    example: true
                required:
                - entity_id
      responses:
        '200':
          description: Sync triggered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sync'
        '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:
    errors:
      type: array
      items:
        type: object
        properties:
          id:
            type: string
            description: A unique identifier for the instance of the error. Provide this to support when contacting Supaglue.
            example: 9366efb4-8fb1-4a28-bfb0-8d6f9cc6b5c5
          detail:
            type: string
            description: A detailed description of the error.
            example: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
          problem_type:
            type: string
            description: The Supaglue error code associated with the error.
            example: MISSING_REQUIRED_FIELD
            deprecated: true
          title:
            type: string
            description: A brief description of the error. The schema and type of message will vary by Provider.
            example: 'Property values were not valid

              '
          code:
            type: string
            description: The Supaglue error code associated with the error.
            example: MISSING_REQUIRED_FIELD
          status:
            type: string
            description: The HTTP status code associated with the error.
            example: '400'
          meta:
            type: object
            description: Additional metadata about the error.
            properties:
              cause:
                type: object
                description: The cause of the error. Usually the underlying error from the remote Provider.
                example:
                  code: 400
                  body:
                    status: error
                    message: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
                    correlationId: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
                    category: VALIDATION_ERROR
                  headers:
                    access-control-allow-credentials: 'false'
                    cf-cache-status: DYNAMIC
                    cf-ray: 8053d17b9dae9664-SJC
                    connection: close
                    content-length: '361'
                    content-type: application/json;charset=utf-8
                    date: Mon, 11 Sep 2023 23:51:22 GMT
                    nel: '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
                    report-to: '{"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v3?s=FgwuXObO%2Fz6ahUJKsxjDLaXTWjooJ8tB0w4%2B%2BKaulGStx0FGkn1PoJoOx2KrFMfihzNdfAqikq7CmgbdlmwKB8hkmp3eTb68qpg10LXFlRgiSqRhbWM7yYSfo8CXmPBc"}],"group":"cf-nel","max_age":604800}'
                    server: cloudflare
                    strict-transport-security: max-age=31536000; includeSubDomains; preload
                    vary: origin, Accept-Encoding
                    x-content-type-options: nosniff
                    x-envoy-upstream-service-time: '91'
                    x-evy-trace-listener: listener_https
                    x-evy-trace-route-configuration: listener_https/all
                    x-evy-trace-route-service-name: envoyset-translator
                    x-evy-trace-served-by-pod: iad02/hubapi-td/envoy-proxy-6c94986c56-9xsh2
                    x-evy-trace-virtual-host: all
                    x-hubspot-correlation-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
                    x-hubspot-ratelimit-interval-milliseconds: '10000'
                    x-hubspot-ratelimit-max: '100'
                    x-hubspot-ratelimit-remaining: '99'
                    x-hubspot-ratelimit-secondly: '10'
                    x-hubspot-ratelimit-secondly-remaining: '9'
                    x-request-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
                    x-trace: 2B1B4386362759B6A4C34802AD168B803DDC1BE770000000000000000000
              origin:
                type: string
                enum:
                - remote-provider
                - supaglue
                description: The origin of the error.
                example: remote-provider
              application_name:
                type: string
                description: The name of the application that generated the error.
                example: MyCompany Production
            required:
            - origin
            additionalProperties: true
        required:
        - id
        - detail
        - problem_type
        - title
        - code
        - status
        - meta
        example:
        - meta:
            cause:
              code: 400
              body:
                status: error
                message: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
                correlationId: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
                category: VALIDATION_ERROR
              headers:
                access-control-allow-credentials: 'false'
                cf-cache-status: DYNAMIC
                cf-ray: 8053d17b9dae9664-SJC
                connection: close
                content-length: '361'
                content-type: application/json;charset=utf-8
                date: Mon, 11 Sep 2023 23:51:22 GMT
                nel: '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
                report-to: '{"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v3?s=FgwuXObO%2Fz6ahUJKsxjDLaXTWjooJ8tB0w4%2B%2BKaulGStx0FGkn1PoJoOx2KrFMfihzNdfAqikq7CmgbdlmwKB8hkmp3eTb68qpg10LXFlRgiSqRhbWM7yYSfo8CXmPBc"}],"group":"cf-nel","max_age":604800}'
                server: cloudflare
                strict-transport-security: max-age=31536000; includeSubDomains; preload
                vary: origin, Accept-Encoding
                x-content-type-options: nosniff
                x-envoy-upstream-service-time: '91'
                x-evy-trace-listener: listener_https
                x-evy-trace-route-configuration: listener_https/all
                x-evy-trace-route-service-name: envoyset-translator
                x-evy-trace-served-by-pod: iad02/hubapi-td/envoy-proxy-6c94986c56-9xsh2
                x-evy-trace-virtual-host: all
                x-hubspot-correlation-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
                x-hubspot-ratelimit-interval-milliseconds: '10000'
                x-hubspot-ratelimit-max: '100'
                x-hubspot-ratelimit-remaining: '99'
                x-hubspot-ratelimit-secondly: '10'
                x-hubspot-ratelimit-secondly-remaining: '9'
                x-request-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2
                x-trace: 2B1B4386362759B6A4C34802AD168B803DDC1BE770000000000000000000
          detail: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]'
          problem_type: MISSING_REQUIRED_FIELD
          title: 'Property values were not valid

            '
          code: MISSING_REQUIRED_FIELD
          status: '400'
          id: 9366efb4-8fb1-4a28-bfb0-8d6f9cc6b5c5
    pagination:
      type: object
      properties:
        next:
          type: string
          nullable: true
          example: eyJpZCI6IjQyNTc5ZjczLTg1MjQtNDU3MC05YjY3LWVjYmQ3MDJjNmIxNCIsInJldmVyc2UiOmZhbHNlfQ==
        previous:
          type: string
          nullable: true
          example: eyJpZCI6IjBjZDhmYmZkLWU5NmQtNDEwZC05ZjQxLWIwMjU1YjdmNGI4NyIsInJldmVyc2UiOnRydWV9
        total_count:
          type: number
          example: 100
      required:
      - next
      - previous
    sync:
      oneOf:
      - type: object
        title: 'Data model: Objects'
        properties:
          id:
            type: string
            example: 7026e4e8-15d7-48d8-b997-f2592b654619
          type:
            type: string
            enum:
            - object
            example: object
          object_type:
            type: string
            enum:
            - common
            - standard
            - custom
            example: standard
          object:
            type: string
            example: contact
            description: The Provider's object name (case sensitive)
          connection_id:
            type: string
            example: 3217ea51-11c8-43c9-9547-6f197e02e5e4
          sync_config_id:
            type: string
            example: 3217ea51-11c8-43c9-9547-6f197e02e5e5
          paused:
            type: boolean
            example: false
        required:
        - id
        - type
        - object_type
        - object
        - connection_id
        - sync_config_id
        - paused
      - type: object
        title: 'Data model: Common Schema'
        properties:
          id:
            type: string
            example: 7026e4e8-15d7-48d8-b997-f2592b654619
          type:
            type: string
            enum:
            - object
            example: object
          object_type:
            type: string
            enum:
            - common
            example: standard
          object:
            type: string
            example: contact
            description: Supaglue's object name
          connection_id:
            type: string
            example: 3217ea51-11c8-43c9-9547-6f197e02e5e4
          sync_config_id:
            type: string
            example: 3217ea51-11c8-43c9-9547-6f197e02e5e5
          paused:
            type: boolean
            example: false
        required:
        - id
        - type
        - object_type
        - object
        - connection_id
        - sync_config_id
        - paused
      - type: object
        title: 'Data model: Entities'
        deprecated: true
        properties:
          id:
            type: string
            example: 7026e4e8-15d7-48d8-b997-f2592b654619
          type:
            type: string
            enum:
            - entity
            example: entity
          entity_id:
            type: string
            example: 94e6cb6c-0ec8-423f-8873-21054979a6b1
          connection_id:
            type: string
            example: 3217ea51-11c8-43c9-9547-6f197e02e5e4
          sync_config_id:
            type: string
            example: 3217ea51-11c8-43c9-9547-6f197e02e5e5
          paused:
            type: boolean
            example: false
        required:
        - id
        - type
        - entity_id
        - connection_id
        - sync_config_id
        - paused
    sync_with_provider_and_customer:
      oneOf:
      - type: object
        title: 'Data model: Objects'
        properties:
          id:
            type: string
            example: 971cb76d-9558-42fe-8f3b-8a531c32bd5f
          type:
            type: string
            enum:
            - object
            example: object
          object_type:
            type: string
            enum:
            - common
            - standard
            - custom
            example: standard
          object:
            type: string
            example: contact
          connection_id:
            type: string
            example: 3217ea51-11c8-43c9-9547-6f197e02e5e4
          sync_config_id:
            type: string
            example: 3217ea51-11c8-43c9-9547-6f197e02e5e5
          paused:
            type: boolean
            example: false
          provider_name:
            type: string
            example: hubspot
          customer_id:
            type: string
            example: my-customer-1
        required:
        - id
        - type
        - object_type
        - object
        - connection_id
        - sync_config_id
        - paused
        - provider_name
        - customer_id
      - type: object
        title: 'Data model: Entities'
        properties:
          id:
            type: string
            example: 971cb76d-9558-42fe-8f3b-8a531c32bd5f
          type:
            type: string
            enum:
            - entity
            example: entity
          entity_id:
            type: string
            example: 70da3830-b717-49cb-91f0-22fb3f09a97a
          connection_id:
            type: string
            example: 3217ea51-11c8-43c9-9547-6f197e02e5e4
          sync_config_id:
            type: string
            example: 3217ea51-11c8-43c9-9547-6f197e02e5e5
          paused:
            type: boolean
            example: false
          provider_name:
            type: string
            example: hubspot
          customer_id:
            type: string
            example: my-customer-1
        required:
        - id
        - type
        - entity_id
        - connection_id
        - sync_config_id
        - paused
        - provider_name
        - customer_id
  responses:
    conflict:
      description: Conflict
      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'
    internalServerError:
      description: Internal server 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'
    notImplemented:
      description: Not implemented
      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'
    unprocessableEntity:
      description: Unprocessable entity
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                $ref: '#/components/schemas/errors'
    badRequest:
      description: Bad request
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                $ref: '#/components/schemas/errors'
  parameters:
    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
  securitySchemes:
    x-api-key:
      type: apiKey
      name: x-api-key
      in: header
      description: API key to allow developers to access the API