openapi: 3.0.3 info: title: Tapfiliate REST Affiliate Groups Programs 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: Programs description: Manage affiliate programs and program affiliates paths: /programs/{program_id}/: get: operationId: getProgram summary: Retrieve a Program description: Retrieve a single affiliate program by its ID. tags: - Programs parameters: - $ref: '#/components/parameters/programId' responses: '200': description: Program retrieved content: application/json: schema: $ref: '#/components/schemas/Program' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /programs/: get: operationId: listPrograms summary: List all programs description: Retrieve a paginated list of all affiliate programs. tags: - Programs parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/limit' responses: '200': description: List of programs headers: Link: $ref: '#/components/headers/PaginationLink' content: application/json: schema: type: array items: $ref: '#/components/schemas/Program' '401': $ref: '#/components/responses/Unauthorized' /programs/{program_id}/affiliates/: get: operationId: listProgramAffiliates summary: List all affiliates in program description: Retrieve all affiliates enrolled in a program. tags: - Programs parameters: - $ref: '#/components/parameters/programId' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/limit' responses: '200': description: List of affiliates in program headers: Link: $ref: '#/components/headers/PaginationLink' content: application/json: schema: type: array items: $ref: '#/components/schemas/Affiliation' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' post: operationId: addAffiliatToProgram summary: Add an affiliate to a program description: Enroll an affiliate in an affiliate program. tags: - Programs parameters: - $ref: '#/components/parameters/programId' requestBody: required: true content: application/json: schema: type: object required: - affiliate properties: affiliate: type: object required: - id properties: id: type: string description: Affiliate ID approved: type: boolean description: Whether the affiliate is pre-approved responses: '201': description: Affiliate added to program content: application/json: schema: $ref: '#/components/schemas/Affiliation' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' /programs/{program_id}/affiliates/{affiliate_id}/: get: operationId: getProgramAffiliate summary: Retrieve an affiliate in a program description: Retrieve a specific affiliate's enrollment in a program. tags: - Programs parameters: - $ref: '#/components/parameters/programId' - $ref: '#/components/parameters/affiliateId' responses: '200': description: Affiliation retrieved content: application/json: schema: $ref: '#/components/schemas/Affiliation' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateProgramAffiliate summary: Update an affiliate in a program description: Update an affiliate's enrollment details in a program. tags: - Programs parameters: - $ref: '#/components/parameters/programId' - $ref: '#/components/parameters/affiliateId' requestBody: required: true content: application/json: schema: type: object properties: coupon: type: string referral_link: type: string responses: '200': description: Affiliation updated content: application/json: schema: $ref: '#/components/schemas/Affiliation' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /programs/{program_id}/affiliates/{affiliate_id}/approved/: put: operationId: approveAffiliate summary: Approve an affiliate description: Approve an affiliate's enrollment in a program. tags: - Programs parameters: - $ref: '#/components/parameters/programId' - $ref: '#/components/parameters/affiliateId' responses: '200': description: Affiliate approved content: application/json: schema: $ref: '#/components/schemas/Affiliation' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: disapproveAffiliate summary: Disapprove an affiliate description: Disapprove an affiliate's enrollment in a program. tags: - Programs parameters: - $ref: '#/components/parameters/programId' - $ref: '#/components/parameters/affiliateId' responses: '200': description: Affiliate disapproved content: application/json: schema: $ref: '#/components/schemas/Affiliation' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /programs/{program_id}/commission-types/: get: operationId: listProgramCommissionTypes summary: List program commission types description: List all commission types available for a program. tags: - Programs parameters: - $ref: '#/components/parameters/programId' responses: '200': description: Commission types content: application/json: schema: type: array items: $ref: '#/components/schemas/CommissionType' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /programs/{program_id}/levels/: get: operationId: listProgramMLMLevels summary: List program MLM levels description: List multi-level marketing levels for a program. tags: - Programs parameters: - $ref: '#/components/parameters/programId' responses: '200': description: MLM levels content: application/json: schema: type: array items: type: object properties: level: type: integer percentage: type: number format: float '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /programs/{program_id}/bonuses/: get: operationId: listProgramBonuses summary: List program bonuses description: List all bonus tiers for a program. tags: - Programs parameters: - $ref: '#/components/parameters/programId' responses: '200': description: Program bonuses content: application/json: schema: type: array items: type: object properties: id: type: string name: type: string amount: type: number format: float '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: Program: type: object properties: id: type: string title: type: string currency: type: string description: ISO 4217 currency code cookie_time: type: integer description: Cookie lifetime in days default_landing_page_url: type: string format: uri incrementing_conversions: type: boolean recurring_commissions: type: boolean 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 Affiliation: type: object description: An affiliate's enrollment in a program properties: affiliate: $ref: '#/components/schemas/AffiliateRef' program: type: object properties: id: type: string title: type: string approved: type: boolean coupon: type: string nullable: true referral_link: type: string format: uri created_at: type: string format: date-time 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 affiliateId: name: affiliate_id in: path required: true schema: type: string description: Affiliate ID programId: name: program_id in: path required: true schema: type: string description: Program ID limit: name: limit in: query schema: type: integer default: 50 minimum: 1 maximum: 100 description: Number of results per page 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