openapi: 3.2.0 info: title: FirstPromoter Admin Products API version: 1.0.0 description: Admin API endpoints for managing products in FirstPromoter servers: - url: https://api.firstpromoter.com/api/v2/company description: Staging server security: - BearerAuth: [] tags: - name: Products paths: /products: get: summary: Get available products tags: - Products description: "Get available products \n **HTTP Request**
`GET https://api.firstpromoter.com/api/v2/company/products`
" parameters: - $ref: '#/components/parameters/AccountId' - in: query name: q schema: type: string description: Search params. Searches by name and prices responses: '200': description: List of products content: application/json: schema: type: array items: $ref: '#/components/schemas/Product' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' post: summary: Create product tags: - Products description: "Create product \n **HTTP Request**
`POST https://api.firstpromoter.com/api/v2/company/products`
" parameters: - $ref: '#/components/parameters/AccountId' requestBody: required: true content: application/json: schema: type: object required: - name - prices properties: name: type: string description: Name of the product ext_id: type: string description: External ID of the product prices: type: array description: List of prices for the product items: type: object required: - ext_id properties: ext_id: type: string description: External ID of the price (must be unique within the product) desc: type: - string - 'null' description: Description of the price responses: '201': description: Product created successfully content: application/json: schema: $ref: '#/components/schemas/Product' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/ValidationError' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' /products/{id}: get: summary: Get product tags: - Products description: "Get product based on id \n **HTTP Request**
`GET https://api.firstpromoter.com/api/v2/company/products/{id}`
" parameters: - $ref: '#/components/parameters/AccountId' - in: path name: id required: true schema: type: integer description: ID of the product responses: '200': description: Product details content: application/json: schema: $ref: '#/components/schemas/Product' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Product not found content: application/json: schema: $ref: '#/components/schemas/Error' put: summary: Update product tags: - Products description: "Update product based on id \n **HTTP Request**
`PUT https://api.firstpromoter.com/api/v2/company/products/{id}`
" parameters: - $ref: '#/components/parameters/AccountId' - in: path name: id required: true schema: type: integer description: ID of the product to be updated requestBody: required: true content: application/json: schema: type: object required: - prices properties: name: type: string description: Name of the product ext_id: type: string description: External ID of the product prices: type: array description: List of prices for the product items: type: object properties: ext_id: type: string description: External ID of the price desc: type: - string - 'null' description: Description of the price responses: '200': description: Product updated successfully content: application/json: schema: $ref: '#/components/schemas/Product' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/ValidationError' '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Product not found content: application/json: schema: $ref: '#/components/schemas/Error' delete: summary: Delete product tags: - Products description: "Delete product based on id \n **HTTP Request**
`DELETE https://api.firstpromoter.com/api/v2/company/products/{id}`
" parameters: - $ref: '#/components/parameters/AccountId' - in: path name: id required: true schema: type: integer description: ID of the product to be deleted responses: '200': description: Product deleted successfully '401': description: Unauthorized '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Product not found content: application/json: schema: $ref: '#/components/schemas/Error' components: parameters: AccountId: name: Account-ID in: header required: true description: Account ID. You can find your Account ID on Your FirstPromoter Dashboard. Navigate to Settings → Integrations schema: type: string schemas: Product: type: object properties: id: type: integer description: ID of the product name: type: string description: Name of the product ext_id: type: - string - 'null' description: External ID of the product prices: type: array description: List of prices for the product items: type: object properties: ext_id: type: string description: External ID of the price desc: type: string description: Description of the price created_at: type: string format: date-time description: Date and time when the product was created Error: type: object properties: message: type: string description: Error message code: type: string description: Error code ValidationError: type: object properties: message: type: string description: Error message errors: type: object description: Validation errors additionalProperties: type: array items: type: string code: type: string description: Error code securitySchemes: BearerAuth: type: http scheme: bearer description: API key passed as a Bearer token in the Authorization header. You can find your API Key on Your FirstPromoter Dashboard. Navigate to Settings → Integrations section → Manage API Keys accountId: type: apiKey in: header name: Account-ID description: Account ID required with bearer token