openapi: 3.2.0 info: title: LeafLink Product Promotions API version: '2022-10-31' description: 'This reference specification outlines all the available HTTP operations of the LeafLink API. See the [LeafLink Developer Hub](/api) for guides, how-to, and general information of the API. ' termsOfService: https://www.leaflink.com/terms-and-conditions/ contact: email: support@leaflink.com servers: - url: https://api.leaflink.com description: LeafLink API production URL. - url: https://staging-api.leaflink.com description: LeafLink API staging URL. security: - bearerAuth: [] tags: - name: product_promotions paths: /product_promotions/{id}: put: operationId: product_promotions_update description: API endpoint to create, view, and edit ProductPromotions for a company. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this product promotion. required: true - name: LeafLink-Version description: '[API version docs](/api/getting-started/#versioning)' required: false in: header schema: type: string format: date tags: - product_promotions requestBody: content: application/json: schema: $ref: '#/components/schemas/ProductPromotionRequest' required: true security: - bearerAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ProductPromotion' description: '' headers: RateLimit-Limit: schema: type: integer description: The requests quota in the time window. RateLimit-Remaining: schema: type: integer description: The remaining requests quota in the current window. RateLimit-Reset: schema: type: integer description: The time remaining in the current window, specified in seconds. RateLimit-Policy: schema: type: string description: The quota policy information. '429': description: Rate Limit Error headers: Retry-After: schema: type: integer description: The time remaining before the rejected request can be tried again, specified in seconds. delete: operationId: product_promotions_destroy description: API endpoint to create, view, and edit ProductPromotions for a company. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this product promotion. required: true - name: LeafLink-Version description: '[API version docs](/api/getting-started/#versioning)' required: false in: header schema: type: string format: date tags: - product_promotions security: - bearerAuth: [] responses: '204': description: No response body headers: RateLimit-Limit: schema: type: integer description: The requests quota in the time window. RateLimit-Remaining: schema: type: integer description: The remaining requests quota in the current window. RateLimit-Reset: schema: type: integer description: The time remaining in the current window, specified in seconds. RateLimit-Policy: schema: type: string description: The quota policy information. '429': description: Rate Limit Error headers: Retry-After: schema: type: integer description: The time remaining before the rejected request can be tried again, specified in seconds. components: schemas: ProductPromotionRequest: type: object properties: moloco_id: type: string minLength: 1 status: $ref: '#/components/schemas/PromotionStatusEnum' period: allOf: - $ref: '#/components/schemas/PeriodEnum' default: Weekly start_date: type: string format: date end_date: type: - string - 'null' format: date max_cpc: type: object properties: amount: type: number currency: type: string max_budget: type: object properties: amount: type: number currency: type: string budget_per_period: type: object properties: amount: type: number currency: type: string approver_email: type: - string - 'null' format: email minLength: 1 brand_id: type: integer writeOnly: true company_id: type: integer writeOnly: true billing_company_id: type: integer writeOnly: true products: type: array items: type: integer required: - brand_id - budget_per_period - company_id - max_budget - max_cpc - products - start_date - status ProductPromotion: type: object properties: id: type: integer readOnly: true moloco_id: type: string status: $ref: '#/components/schemas/PromotionStatusEnum' period: allOf: - $ref: '#/components/schemas/PeriodEnum' default: Weekly start_date: type: string format: date end_date: type: - string - 'null' format: date max_cpc: type: object properties: amount: type: number currency: type: string max_budget: type: object properties: amount: type: number currency: type: string budget_per_period: type: object properties: amount: type: number currency: type: string approver_email: type: - string - 'null' format: email brand: allOf: - $ref: '#/components/schemas/UnifiedBrand' readOnly: true company: allOf: - $ref: '#/components/schemas/UnifiedCompany' readOnly: true billing_company: allOf: - $ref: '#/components/schemas/UnifiedCompany' readOnly: true products: type: array items: type: integer required: - billing_company - brand - budget_per_period - company - id - max_budget - max_cpc - products - start_date - status UnifiedBrand: type: object properties: id: type: integer readOnly: true name: type: string title: Brand Name description: Name of the Brand maxLength: 400 required: - id - name PeriodEnum: enum: - Daily - Weekly - Monthly type: string PromotionStatusEnum: enum: - Pending - Approved - Completed type: string UnifiedCompany: type: object properties: id: type: integer readOnly: true name: type: string description: Name of Company (Note this is not the same as Brand) maxLength: 400 required: - id - name securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: 'Authentication is done via access tokens (JWTs). See the [API authentication doc](/api/getting-started/#authentication) for more information. ' tokenAuth: type: apiKey in: header name: Authorization description: Token-based authentication with required prefix "Token"