openapi: 3.0.0 info: title: Customer Data Pipeline description: | The Customer Data Pipeline (CDP) is a service that allows users to upload data to the platform. It allows users to specify `Destination`s to which the data should be sent, and `Source`s from which the data is sent from the client. Destinations can be of type 'webhook' only currently. The CDP service will send a POST request to the webhook URL with the data in the body of the request. A basic transformation can be specified to transform event data into the format required by the destination. paths: /api/projects/{project_id}/destination-types: get: summary: List destination types description: | List all destination types. operationId: listDestinationTypes parameters: - name: project_id in: path description: ID of the project required: true schema: type: string responses: '200': description: List of destination types content: application/json: schema: type: array items: $ref: '#/components/schemas/DestinationType' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Project not found content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Error' /api/projects/{project_id}/destinations: get: summary: List destinations description: | List all destinations for a project. operationId: listDestinations parameters: - name: project_id in: path description: ID of the project required: true schema: type: string responses: '200': description: List of destinations content: application/json: schema: type: array items: $ref: '#/components/schemas/Destination' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Project not found content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Error' post: summary: Create a destination description: | Create a destination for a project. operationId: createDestination parameters: - name: project_id in: path description: ID of the project required: true schema: type: string requestBody: description: Destination to create required: true content: application/json: schema: $ref: '#/components/schemas/Destination' responses: '201': description: Destination created content: application/json: schema: $ref: '#/components/schemas/Destination' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Project not found content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Error' /api/projects/{project_id}/destinations/{destination_id}: get: summary: Get a destination description: | Get a destination for a project. operationId: getDestination parameters: - name: project_id in: path description: ID of the project required: true schema: type: string - name: destination_id in: path description: ID of the destination required: true schema: type: string responses: '200': description: Destination content: application/json: schema: $ref: '#/components/schemas/Destination' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Project or destination not found content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Error' put: summary: Update a destination description: | Update a destination for a project. operationId: updateDestination parameters: - name: project_id in: path description: ID of the project required: true schema: type: string - name: destination_id in: path description: ID of the destination required: true schema: type: string requestBody: description: Destination to update required: true content: application/json: schema: $ref: '#/components/schemas/Destination' responses: '200': description: Destination updated content: application/json: schema: $ref: '#/components/schemas/Destination' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Project or destination not found content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Error' delete: summary: Delete a destination description: | Delete a destination for a project. operationId: deleteDestination parameters: - name: project_id in: path description: ID of the project required: true schema: type: string - name: destination_id in: path description: ID of the destination required: true schema: type: string responses: '204': description: Destination deleted '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Project or destination not found content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: DestinationType: type: object properties: id: type: string description: ID of the destination type name: type: string description: Name of the destination type description: type: string description: Description of the destination type created_at: type: string format: date-time description: Date and time when the destination type was created updated_at: type: string format: date-time description: Date and time when the destination type was updated Destination: type: object properties: id: type: string description: ID of the destination type: type: string description: Type of the destination name: type: string description: Name of the destination description: type: string description: Description of the destination created_at: type: string format: date-time description: Date and time when the destination was created updated_at: type: string format: date-time description: Date and time when the destination was updated Error: type: object properties: message: type: string description: Error message