openapi: 3.0.3 info: title: Tapfiliate REST Affiliate Groups Conversions API description: Tapfiliate is an affiliate tracking and management platform. This REST API allows you to create and manage affiliate programs, track conversions, manage affiliates, handle commission payouts, and record clicks. The API is versioned at V1.6 and uses API key authentication via the X-Api-Key header. version: '1.6' contact: name: Tapfiliate Support url: https://tapfiliate.com/docs/rest/ termsOfService: https://tapfiliate.com/terms/ servers: - url: https://api.tapfiliate.com/1.6 description: Tapfiliate REST API v1.6 security: - ApiKeyAuth: [] tags: - name: Conversions description: Track and manage conversions and commissions paths: /conversions/{conversion_id}/: get: operationId: getConversion summary: Retrieve a Conversion description: Retrieve a single conversion by its ID. tags: - Conversions parameters: - $ref: '#/components/parameters/conversionId' responses: '200': description: Conversion retrieved content: application/json: schema: $ref: '#/components/schemas/Conversion' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateConversion summary: Update a Conversion description: Update an existing conversion record. tags: - Conversions parameters: - $ref: '#/components/parameters/conversionId' requestBody: required: true content: application/json: schema: type: object properties: amount: type: number format: float external_id: type: string meta_data: type: object additionalProperties: true responses: '200': description: Conversion updated content: application/json: schema: $ref: '#/components/schemas/Conversion' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteConversion summary: Delete a Conversion description: Delete a conversion record. tags: - Conversions parameters: - $ref: '#/components/parameters/conversionId' responses: '204': description: Conversion deleted '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /conversions/: get: operationId: listConversions summary: List all conversions description: Retrieve a paginated list of all conversions. tags: - Conversions parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/limit' - name: date_from in: query schema: type: string format: date description: Filter conversions from this date (YYYY-MM-DD) - name: date_to in: query schema: type: string format: date description: Filter conversions to this date (YYYY-MM-DD) - name: affiliate_id in: query schema: type: string description: Filter by affiliate ID - name: program_id in: query schema: type: string description: Filter by program ID responses: '200': description: List of conversions headers: Link: $ref: '#/components/headers/PaginationLink' content: application/json: schema: type: array items: $ref: '#/components/schemas/Conversion' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createConversion summary: Create a conversion description: Record a new conversion event. tags: - Conversions requestBody: required: true content: application/json: schema: type: object required: - program_id properties: program_id: type: string description: The ID of the program for this conversion external_id: type: string description: Your unique reference for this conversion amount: type: number format: float description: The conversion amount (for revenue-based commissions) click_id: type: string description: The click ID to attribute this conversion to customer_id: type: string description: The external customer identifier commission_type: type: string description: The commission type to apply meta_data: type: object additionalProperties: true responses: '201': description: Conversion created content: application/json: schema: $ref: '#/components/schemas/Conversion' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' /conversions/{conversion_id}/commissions/: post: operationId: addCommissionsToConversion summary: Add commissions to a conversion description: Add additional commission entries to an existing conversion. tags: - Conversions parameters: - $ref: '#/components/parameters/conversionId' requestBody: required: true content: application/json: schema: type: array items: type: object properties: affiliate_id: type: string commission_type: type: string amount: type: number format: float responses: '200': description: Commissions added content: application/json: schema: $ref: '#/components/schemas/Conversion' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /conversions/{conversion_id}/meta-data/: get: operationId: getConversionMetaData summary: Retrieve meta data for a Conversion description: Retrieve all metadata for a given conversion. tags: - Conversions parameters: - $ref: '#/components/parameters/conversionId' responses: '200': description: Conversion metadata content: application/json: schema: type: object additionalProperties: true '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: replaceConversionMetaData summary: Update (replace) meta data for a Conversion description: Replace all metadata for a conversion. tags: - Conversions parameters: - $ref: '#/components/parameters/conversionId' requestBody: required: true content: application/json: schema: type: object additionalProperties: true responses: '200': description: Metadata replaced content: application/json: schema: type: object additionalProperties: true '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /conversions/{conversion_id}/meta-data/{key}/: get: operationId: getConversionMetaDataByKey summary: Retrieve meta data by key for a Conversion description: Retrieve a specific metadata key for a conversion. tags: - Conversions parameters: - $ref: '#/components/parameters/conversionId' - $ref: '#/components/parameters/metaDataKey' responses: '200': description: Metadata value content: application/json: schema: type: object '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: setConversionMetaDataByKey summary: Set meta data by key for a Conversion description: Set a specific metadata key for a conversion. tags: - Conversions parameters: - $ref: '#/components/parameters/conversionId' - $ref: '#/components/parameters/metaDataKey' requestBody: required: true content: application/json: schema: type: object responses: '200': description: Metadata set content: application/json: schema: type: object '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteConversionMetaDataByKey summary: Delete meta data by key for a Conversion description: Delete a specific metadata key for a conversion. tags: - Conversions parameters: - $ref: '#/components/parameters/conversionId' - $ref: '#/components/parameters/metaDataKey' responses: '204': description: Metadata deleted '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: CommissionType: type: object properties: id: type: string name: type: string type: type: string enum: - percentage - fixed percentage: type: number format: float nullable: true amount: type: number format: float nullable: true Commission: type: object properties: id: type: string description: Commission ID amount: type: number format: float description: Commission amount approved: type: boolean description: Whether this commission has been approved commission_type: $ref: '#/components/schemas/CommissionType' affiliate: $ref: '#/components/schemas/AffiliateRef' conversion_id: type: string description: The conversion this commission is for created_at: type: string format: date-time Conversion: type: object properties: id: type: string description: Conversion ID external_id: type: string description: Your external identifier for this conversion amount: type: number format: float description: The conversion amount program_id: type: string description: The program this conversion belongs to affiliate: $ref: '#/components/schemas/AffiliateRef' commissions: type: array items: $ref: '#/components/schemas/Commission' created_at: type: string format: date-time meta_data: type: object additionalProperties: true AffiliateRef: type: object properties: id: type: string email: type: string format: email firstname: type: string lastname: type: string Error: type: object properties: message: type: string description: Human-readable error message responses: Unauthorized: description: Authentication failed — missing or invalid API key content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' UnprocessableEntity: description: Validation error — request body is invalid content: application/json: schema: $ref: '#/components/schemas/Error' parameters: page: name: page in: query schema: type: integer default: 1 minimum: 1 description: Page number for pagination conversionId: name: conversion_id in: path required: true schema: type: string description: Conversion ID limit: name: limit in: query schema: type: integer default: 50 minimum: 1 maximum: 100 description: Number of results per page metaDataKey: name: key in: path required: true schema: type: string description: Metadata key headers: PaginationLink: description: Links to navigate between pages. Contains rel="next", rel="prev", rel="first", and rel="last" links as per RFC 5988. schema: type: string example: ; rel="next", ; rel="last" securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-Api-Key