Hightouch Sources API

Warehouse and database sources Hightouch reads from.

OpenAPI Specification

hightouch-sources-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Hightouch Sources API
  description: Hightouch Public Rest API to access syncs, models, sources and destinations
  version: 1.0.0
  contact:
    name: Hightouch
    url: https://hightouch.com
  x-harvested-from: https://api.hightouch.io/api/swagger.json
  x-harvested-on: '2026-08-13'
  x-source-document: openapi/_original/hightouch-api-openapi.json
servers:
- url: https://api.hightouch.com/api/v1
tags:
- name: Sources
paths:
  /sources/{sourceId}:
    get:
      operationId: GetSource
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Source'
              examples:
                Example 1:
                  value:
                    id: 1
                    name: testSource
                    slug: testSource
                    workspaceId: 1
                    createdAt: '2022-02-16T21:37:58.510Z'
                    updatedAt: '2022-02-16T21:37:58.510Z'
                    type: snowflake
                    configuration:
                      hostname: foo
                      region: bar
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '422':
          description: Validation Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
      description: Retrieve source from source ID
      summary: Get Source
      security:
      - bearerAuth: []
      parameters:
      - description: The id of the source
        in: path
        name: sourceId
        required: true
        schema:
          format: double
          type: number
      tags:
      - Sources
    patch:
      operationId: UpdateSource
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/Source'
                - $ref: '#/components/schemas/ValidateErrorJSON'
                - $ref: '#/components/schemas/InternalServerError'
              examples:
                Example 1:
                  value:
                    id: 426
                    name: postgres-connection2
                    slug: postgres-connection2
                    workspaceId: 1
                    createdAt: '2022-12-12T22:46:57.618Z'
                    updatedAt: '2022-12-15T20:23:22.319Z'
                    type: postgres
                    configuration:
                      host: example.example.us-east-1.rds.amazonaws.com
                      port: '5555'
                      user: dbUserName
                      database: dbName
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '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 source


        Patch a source based on its Hightouch ID'
      summary: Update Source
      security:
      - bearerAuth: []
      parameters:
      - description: The source's ID
        in: path
        name: sourceId
        required: true
        schema:
          format: double
          type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceUpdate'
            example:
              name: postgres-connection2
              configuration:
                port: '5555'
      tags:
      - Sources
  /sources:
    get:
      operationId: ListSource
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/Source'
                    type: array
                required:
                - data
                type: object
              examples:
                Example 1:
                  value:
                    data:
                    - id: 1
                      name: testSource1
                      slug: testSource1
                      workspaceId: 1
                      createdAt: '2022-02-16T21:37:58.510Z'
                      updatedAt: '2022-02-16T21:37:58.510Z'
                      type: snowflake
                      configuration:
                        hostname: foo
                        region: bar
                    - id: 2
                      name: testSource2
                      slug: testSource2
                      workspaceId: 1
                      createdAt: '2022-02-16T21:37:58.510Z'
                      updatedAt: '2022-02-16T21:37:58.510Z'
                      type: googlesheet
                      configuration:
                        hostname: foo
                        region: bar
                    hasMore: false
        '400':
          description: Bad request
        '401':
          description: Unauthorized
      description: List all the sources in the current workspace
      summary: List Sources
      security:
      - bearerAuth: []
      parameters:
      - description: filter based on name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: filter based on slug
        in: query
        name: slug
        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
          - slug
          - createdAt
          - updatedAt
      tags:
      - Sources
    post:
      operationId: CreateSource
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/Source'
                - $ref: '#/components/schemas/ValidateErrorJSON'
                - $ref: '#/components/schemas/InternalServerError'
              examples:
                Example 1:
                  value:
                    id: 426
                    name: postgres-connection2
                    slug: postgres-connection2
                    workspaceId: 1
                    createdAt: '2022-12-12T22:46:57.618Z'
                    updatedAt: '2022-12-12T22:46:57.618Z'
                    type: postgres
                    configuration:
                      host: example.example.us-east-1.rds.amazonaws.com
                      port: '5432'
                      user: dbUserName
                      database: dbName
        '401':
          description: Unauthorized
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
        '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 source
      summary: Create Source
      security:
      - bearerAuth: []
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceCreate'
            example:
              name: postgres-connection2
              slug: postgres-connection2
              type: postgres
              configuration:
                host: example.example.us-east-1.rds.amazonaws.com
                port: '5432'
                user: dbUserName
                database: dbName
                password: password!123
      tags:
      - Sources
components:
  schemas:
    InternalServerError:
      type: string
      enum:
      - Internal Server Error
      nullable: false
    Source:
      description: 'The database or warehouse where your data is stored. The starting point for

        a Hightouch data pipeline.'
      properties:
        id:
          type: number
          format: double
          description: The source's id
        name:
          type: string
          description: The source's name
        slug:
          type: string
          description: The source's slug
        workspaceId:
          type: number
          format: double
          description: The id of the workspace that the source belongs to
        createdAt:
          type: string
          format: date-time
          description: The timestamp when the source was created
        updatedAt:
          type: string
          format: date-time
          description: The timestamp when the source was last updated
        configuration:
          properties: {}
          additionalProperties: {}
          type: object
          description: 'The source''s configuration. This specifies general metadata about sources, like
            connection details

            Hightouch will use this configuration to connect to underlying source.


            The schema depends on the source type.


            Consumers should NOT make assumptions on the contents of the

            configuration. It may change as Hightouch updates its internal code.'
        type:
          type: string
          description: The source's type (e.g. snowflake or postgres).
      required:
      - id
      - name
      - slug
      - workspaceId
      - createdAt
      - updatedAt
      - configuration
      - type
      type: object
      additionalProperties: false
    SourceCreate:
      description: The input for creating a Source
      properties:
        name:
          type: string
          description: The source's name
        slug:
          type: string
          description: The source's slug
        type:
          type: string
          description: The source's type (e.g. snowflake or postgres).
        configuration:
          properties: {}
          additionalProperties: {}
          type: object
          description: 'The source''s configuration. This specifies general metadata about sources, like
            connection details

            Hightouch will use this configuration to connect to underlying source.


            The schema depends on the source type.


            Consumers should NOT make assumptions on the contents of the

            configuration. It may change as Hightouch updates its internal code.'
      required:
      - name
      - slug
      - type
      - configuration
      type: object
      additionalProperties: false
    SourceUpdate:
      description: The input for updating a Source
      properties:
        name:
          type: string
          description: The source's name
        configuration:
          properties: {}
          additionalProperties: {}
          type: object
          description: 'The source''s configuration. This specifies general metadata about sources, like
            connection details

            Hightouch will use this configuration to connect to underlying source.


            The schema depends on the source type.


            Consumers should NOT make assumptions on the contents of the

            configuration. It may change as Hightouch updates its internal code.'
      type: object
      additionalProperties: false
    ValidateErrorJSON:
      properties:
        message:
          type: string
          enum:
          - Validation failed
          nullable: false
        details:
          properties: {}
          additionalProperties: {}
          type: object
      required:
      - message
      - details
      type: object
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Bearer
security:
- bearerAuth: []