Hightouch Sync Templates API
The Sync Templates API from Hightouch — 2 operation(s) for sync templates.
The Sync Templates API from Hightouch — 2 operation(s) for sync templates.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/hightouch:hightouch-sync-templates-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Hightouch Sync Templates API
version: 1.0.0
description: Hightouch Public Rest API to access syncs, models, sources and destinations
contact:
name: Hightouch
url: https://hightouch.com
servers:
- url: https://api.hightouch.com/api/v1
tags:
- name: Sync Templates
paths:
/sync-templates/{syncTemplateId}:
get:
operationId: GetSyncTemplate
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/SyncTemplate'
examples:
Example 1:
value:
id: 1
name: Salesforce Contacts Template
description: Reusable template for syncing contacts to Salesforce.
workspaceId: 1
createdAt: '2022-02-16T21:37:58.510Z'
updatedAt: '2022-02-16T21:37:58.510Z'
modelId: 42
destinationId: 17
configuration:
mode: upsert
object: Contact
externalIdMapping:
from: email
to: Email
mappings: []
configVersion: 1
schedule: null
schedulePaused: false
tags: {}
overrideConfig:
mappings:
overridable: true
'401':
description: Unauthorized
'404':
description: Not found
'422':
description: Validation Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ValidateErrorJSON'
description: Retrieve a sync template given its ID
summary: Get Sync Template
security:
- bearerAuth: []
parameters:
- description: The id of the sync template
in: path
name: syncTemplateId
required: true
schema:
format: double
type: number
tags:
- Sync Templates
patch:
operationId: UpdateSyncTemplate
responses:
'200':
description: Ok
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/SyncTemplate'
- $ref: '#/components/schemas/ValidateErrorJSON'
- $ref: '#/components/schemas/InternalServerError'
examples:
Example 1:
value:
id: 1
name: Salesforce Contacts Template (v2)
workspaceId: 1
createdAt: '2022-12-12T22:46:57.618Z'
updatedAt: '2022-12-15T20:23:22.319Z'
modelId: 42
destinationId: 17
configuration:
mode: upsert
object: Contact
externalIdMapping:
from: email
to: Email
mappings: []
configVersion: 1
schedule: null
schedulePaused: true
tags: {}
overrideConfig:
mappings:
overridable: true
externalIdMapping:
overridable: true
'401':
description: Unauthorized
'404':
description: Not found
'422':
description: Validation Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ValidateErrorJSON'
'500':
description: Something went wrong
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
description: 'Update an existing sync template
Patch a sync template based on its Hightouch ID. The `destinationId` of a
sync template cannot be changed after creation. Syncs created from the
template pick up a new `configuration` on their next run; a new
`overrideConfig` replaces the previous one and applies to the next write
of each sync''s `syncTemplateOverrides`.'
summary: Update Sync Template
security:
- bearerAuth: []
parameters:
- description: The sync template's ID
in: path
name: syncTemplateId
required: true
schema:
format: double
type: number
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SyncTemplateUpdate'
example:
name: Salesforce Contacts Template (v2)
schedulePaused: true
overrideConfig:
mappings:
overridable: true
externalIdMapping:
overridable: true
tags:
- Sync Templates
/sync-templates:
get:
operationId: ListSyncTemplates
responses:
'200':
description: Ok
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/SyncTemplate'
type: array
required:
- data
type: object
examples:
Example 1:
value:
data:
- id: 1
name: Salesforce Contacts Template
description: Reusable template for syncing contacts to Salesforce.
workspaceId: 1
createdAt: '2022-02-16T21:37:58.510Z'
updatedAt: '2022-02-16T21:37:58.510Z'
modelId: 42
destinationId: 17
configuration:
mode: upsert
object: Contact
externalIdMapping:
from: email
to: Email
mappings: []
configVersion: 1
schedule: null
schedulePaused: false
tags: {}
overrideConfig:
mappings:
overridable: true
hasMore: false
'400':
description: Bad request
'401':
description: Unauthorized
description: List all the sync templates in the current workspace
summary: List Sync Templates
security:
- bearerAuth: []
parameters:
- description: filter based on name
in: query
name: name
required: false
schema:
type: string
- description: set the offset on results (for pagination)
in: query
name: offset
required: false
schema:
default: 0
format: double
type: number
- description: limit the number of objects returned (default is 100)
in: query
name: limit
required: false
schema:
default: 100
format: double
type: number
- description: specify the order
in: query
name: orderBy
required: false
schema:
default: id
type: string
enum:
- id
- name
- createdAt
- updatedAt
tags:
- Sync Templates
post:
operationId: CreateSyncTemplate
responses:
'200':
description: Ok
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/SyncTemplate'
- $ref: '#/components/schemas/ValidateErrorJSON'
- $ref: '#/components/schemas/InternalServerError'
examples:
Example 1:
value:
id: 1
name: Salesforce Contacts Template
workspaceId: 1
createdAt: '2022-12-12T22:46:57.618Z'
updatedAt: '2022-12-12T22:46:57.618Z'
modelId: 42
destinationId: 17
configuration:
mode: upsert
object: Contact
externalIdMapping:
from: email
to: Email
mappings: []
configVersion: 1
schedule: null
schedulePaused: false
tags: {}
overrideConfig:
mappings:
overridable: true
'401':
description: Unauthorized
'422':
description: Validation Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ValidateErrorJSON'
'500':
description: Something went wrong
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
description: 'Create a new sync template
A sync template holds a destination configuration that syncs created from
it share. `overrideConfig` names the configuration fields those syncs may
set for themselves; every other field is locked to the template''s value.
Create a sync from the template with `POST /syncs` and `syncTemplateId`.'
summary: Create Sync Template
security:
- bearerAuth: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SyncTemplateCreate'
example:
name: Salesforce Contacts Template
modelId: 42
destinationId: 17
configuration:
mode: upsert
object: Contact
externalIdMapping:
from: email
to: Email
mappings: []
overrideConfig:
mappings:
overridable: true
tags:
- Sync Templates
components:
schemas:
SyncTemplate:
description: 'A sync template defines a reusable sync configuration that can be shared
across multiple syncs. User Groups can be granted access to
templates so users can create syncs from them without seeing the raw
destination credentials.'
properties:
id:
type: number
format: double
description: The sync template's id
name:
type: string
description: The sync template's name
description:
type:
- string
- 'null'
description: The sync template's description
workspaceId:
type: number
format: double
description: The id of the workspace that the sync template belongs to
createdAt:
type: string
format: date-time
description: The timestamp when the sync template was created
updatedAt:
type: string
format: date-time
description: The timestamp when the sync template was last updated
modelId:
type: number
format: double
description: The id of the parent Model that the sync template is connected to
destinationId:
type: number
format: double
description: 'The id of the Destination that the sync template is connected to.
Cannot be changed after creation.'
configuration:
properties: {}
additionalProperties: {}
type: object
description: 'The sync template''s configuration. The schema depends on the
destination type.
Consumers should NOT make assumptions on the contents of the
configuration. It may change as Hightouch updates its internal code.'
schedule:
properties: {}
additionalProperties: {}
type:
- object
- 'null'
description: 'The sync template''s schedule. May be null if the template does not
impose a schedule on its child syncs.'
schedulePaused:
type: boolean
description: Whether the sync template's schedule is paused
tags:
properties: {}
additionalProperties:
type: string
type: object
description: The tags of the sync template
matchboosterRegion:
type:
- string
- 'null'
description: 'Match Booster region for syncs created from this template.
Null means inherit the model''s single-region default at runtime.'
overrideConfig:
properties: {}
additionalProperties:
$ref: '#/components/schemas/SyncTemplateOverrideOption'
type:
- object
- 'null'
description: 'Which configuration fields syncs created from this template may override,
keyed by configuration field path (for example "externalIdMapping" or
"target.schema"). A field is unlocked when listed with
`overridable: true`; every other field is locked to the template''s value.
Null when no field is overridable.'
required:
- id
- name
- workspaceId
- createdAt
- updatedAt
- modelId
- destinationId
- configuration
- schedule
- schedulePaused
- tags
- overrideConfig
type: object
additionalProperties: false
SyncTemplateOverrideOption:
description: Whether syncs created from a sync template may set a configuration field.
properties:
overridable:
type: boolean
description: 'True when syncs created from the template may set the field through
`syncTemplateOverrides`.'
required:
- overridable
type: object
additionalProperties: false
InternalServerError:
type: string
enum:
- Internal Server Error
ValidateErrorJSON:
properties:
message:
type: string
enum:
- Validation failed
details:
properties: {}
additionalProperties: {}
type: object
required:
- message
- details
type: object
additionalProperties: false
SyncTemplateUpdate:
description: 'The input for updating a Sync Template. `destinationId` cannot be changed
after creation.'
properties:
name:
type: string
description: The sync template's name
configuration:
properties: {}
additionalProperties: {}
type: object
description: 'The sync template''s configuration. The schema depends on the
destination type.
Consumers should NOT make assumptions on the contents of the
configuration. It may change as Hightouch updates its internal code.'
description:
type:
- string
- 'null'
description: The sync template's description
modelId:
type: number
format: double
description: The id of the parent Model that the sync template is connected to
schedule:
properties: {}
additionalProperties: {}
type:
- object
- 'null'
description: 'The sync template''s schedule. May be null if the template does not
impose a schedule on its child syncs.'
schedulePaused:
type: boolean
description: Whether the sync template's schedule is paused
tags:
properties: {}
additionalProperties:
type: string
type: object
description: The tags of the sync template
matchboosterRegion:
type:
- string
- 'null'
description: 'Match Booster region for syncs created from this template.
Null means inherit the model''s single-region default at runtime.'
overrideConfig:
properties: {}
additionalProperties:
$ref: '#/components/schemas/SyncTemplateOverrideOption'
type:
- object
- 'null'
description: 'Which configuration fields syncs created from this template may override,
keyed by configuration field path (for example "externalIdMapping" or
"target.schema"). A field is unlocked when listed with
`overridable: true`; every other field is locked to the template''s value.
Null when no field is overridable.'
type: object
additionalProperties: false
SyncTemplateCreate:
description: 'The input for creating a Sync Template. A `slug` is generated automatically
from the name; it is a legacy column and is no longer accepted on input.'
properties:
name:
type: string
description:
type: string
modelId:
type: number
format: double
destinationId:
type: number
format: double
configuration:
properties: {}
additionalProperties: {}
type: object
schedule:
properties: {}
additionalProperties: {}
type: object
schedulePaused:
type: boolean
matchboosterRegion:
type:
- string
- 'null'
overrideConfig:
properties: {}
additionalProperties:
$ref: '#/components/schemas/SyncTemplateOverrideOption'
type:
- object
- 'null'
required:
- name
- modelId
- destinationId
- configuration
type: object
additionalProperties: false
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: Bearer
x-provenance:
method: harvested
publisher: Hightouch
source: https://api.hightouch.com/api/swagger.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)