openapi: 3.1.0 info: title: Freshdesk REST Agents Products API description: The Freshdesk REST API (v2) provides programmatic access to helpdesk data and operations within Freshdesk, a customer support platform by Freshworks. It exposes endpoints for managing tickets, contacts, companies, agents, groups, conversations, products, email configurations, SLA policies, business hours, time entries, satisfaction ratings, solution categories, solution folders, solution articles, and more. The API uses JSON for request and response payloads, supports API key-based authentication, and follows RESTful conventions for CRUD operations. version: '2.0' contact: name: Freshdesk Support url: https://support.freshdesk.com/ termsOfService: https://www.freshworks.com/terms/ servers: - url: https://{domain}.freshdesk.com/api/v2 description: Freshdesk Production Server variables: domain: default: yourdomain description: Your Freshdesk subdomain, e.g. if your helpdesk URL is acme.freshdesk.com, use acme. security: - basicAuth: [] tags: - name: Products description: Manage products to categorize tickets by product line. paths: /products: get: operationId: listProducts summary: List all products description: Retrieves a paginated list of products. tags: - Products parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' responses: '200': description: Successfully retrieved list of products. content: application/json: schema: type: array items: $ref: '#/components/schemas/Product' '401': $ref: '#/components/responses/Unauthorized' /products/{product_id}: get: operationId: getProduct summary: View a product description: Retrieves the details of a specific product by ID. tags: - Products parameters: - $ref: '#/components/parameters/productId' responses: '200': description: Successfully retrieved product details. content: application/json: schema: $ref: '#/components/schemas/Product' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: updateProduct summary: Update a product description: Updates the properties of an existing product. tags: - Products parameters: - $ref: '#/components/parameters/productId' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Name of the product. description: type: string description: Description of the product. responses: '200': description: Product updated successfully. content: application/json: schema: $ref: '#/components/schemas/Product' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' post: operationId: createProduct summary: Create a product description: Creates a new product in the helpdesk. tags: - Products parameters: - $ref: '#/components/parameters/productId' requestBody: required: true content: application/json: schema: type: object required: - name properties: name: type: string description: Name of the product. description: type: string description: Description of the product. responses: '201': description: Product created successfully. content: application/json: schema: $ref: '#/components/schemas/Product' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' components: responses: Unauthorized: description: Authentication failed or credentials were not provided. content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: The request is invalid or malformed. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' parameters: productId: name: product_id in: path required: true description: Unique identifier of the product. schema: type: integer format: int64 perPage: name: per_page in: query description: Number of results per page (max 100). schema: type: integer minimum: 1 maximum: 100 default: 30 page: name: page in: query description: Page number for paginated results. schema: type: integer minimum: 1 default: 1 schemas: Error: type: object properties: description: type: string description: Human-readable error description. errors: type: array items: type: object properties: field: type: string description: Field that caused the error. message: type: string description: Error message for the field. code: type: string description: Error code. Product: type: object properties: id: type: integer format: int64 description: Unique identifier of the product. name: type: string description: Name of the product. description: type: string nullable: true description: Description of the product. created_at: type: string format: date-time description: Timestamp when the product was created. updated_at: type: string format: date-time description: Timestamp when the product was last updated. securitySchemes: basicAuth: type: http scheme: basic description: Freshdesk uses API key-based authentication. Pass your API key as the username with any string (e.g. X) as the password using HTTP Basic Authentication. externalDocs: description: Freshdesk API Documentation url: https://developers.freshdesk.com/api/