openapi: 3.1.0 info: title: Freshdesk REST Agents Groups 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: Groups description: Manage agent groups for ticket assignment and routing. paths: /groups: get: operationId: listGroups summary: List all groups description: Retrieves a paginated list of agent groups. tags: - Groups parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' responses: '200': description: Successfully retrieved list of groups. content: application/json: schema: type: array items: $ref: '#/components/schemas/Group' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createGroup summary: Create a group description: Creates a new agent group in the helpdesk. tags: - Groups requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GroupCreate' responses: '201': description: Group created successfully. content: application/json: schema: $ref: '#/components/schemas/Group' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /groups/{group_id}: get: operationId: getGroup summary: View a group description: Retrieves the details of a specific group by ID. tags: - Groups parameters: - $ref: '#/components/parameters/groupId' responses: '200': description: Successfully retrieved group details. content: application/json: schema: $ref: '#/components/schemas/Group' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: updateGroup summary: Update a group description: Updates the properties of an existing group. tags: - Groups parameters: - $ref: '#/components/parameters/groupId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GroupCreate' responses: '200': description: Group updated successfully. content: application/json: schema: $ref: '#/components/schemas/Group' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteGroup summary: Delete a group description: Deletes a group from the helpdesk. tags: - Groups parameters: - $ref: '#/components/parameters/groupId' responses: '204': description: Group deleted successfully. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: Group: type: object properties: id: type: integer format: int64 description: Unique identifier of the group. name: type: string description: Name of the group. description: type: string nullable: true description: Description of the group. escalate_to: type: integer format: int64 nullable: true description: ID of the agent to escalate to. unassigned_for: type: string nullable: true description: Duration after which unassigned tickets are escalated. business_hour_id: type: integer format: int64 nullable: true description: ID of the associated business hour schedule. agent_ids: type: array items: type: integer format: int64 description: IDs of agents in the group. auto_ticket_assign: type: boolean description: Whether tickets are auto-assigned within the group. created_at: type: string format: date-time description: Timestamp when the group was created. updated_at: type: string format: date-time description: Timestamp when the group was last updated. GroupCreate: type: object required: - name properties: name: type: string description: Name of the group. description: type: string description: Description of the group. escalate_to: type: integer format: int64 description: Agent ID to escalate to. unassigned_for: type: string description: Duration for escalation. agent_ids: type: array items: type: integer format: int64 description: Agent IDs to include. auto_ticket_assign: type: boolean description: Enable auto-assignment. 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. parameters: groupId: name: group_id in: path required: true description: Unique identifier of the group. 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 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' 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/