Freshworks Freshdesk API

The Freshdesk API v2 is a RESTful API that provides programmatic access to Freshdesk helpdesk functionality. It allows developers to manage tickets, contacts, companies, agents, groups, and other helpdesk resources through standard CRUD operations. The API uses JSON for data exchange, supports API key authentication, and enables integration of Freshdesk customer support workflows into third-party applications and automation pipelines.

OpenAPI Specification

freshworks-freshdesk-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Freshworks Freshdesk API
  description: >-
    The Freshdesk API v2 is a RESTful API that provides programmatic access to
    Freshdesk helpdesk functionality. It allows developers to manage tickets,
    contacts, companies, agents, groups, and other helpdesk resources through
    standard CRUD operations. The API uses JSON for data exchange, supports
    API key authentication, and enables integration of Freshdesk customer
    support workflows into third-party applications and automation pipelines.
  version: '2.0'
  contact:
    name: Freshworks Support
    url: https://support.freshdesk.com/
  termsOfService: https://www.freshworks.com/terms/
externalDocs:
  description: Freshdesk API Documentation
  url: https://developers.freshdesk.com/api/
servers:
  - url: https://{domain}.freshdesk.com/api/v2
    description: Freshdesk Production Server
    variables:
      domain:
        default: yourdomain
        description: Your Freshdesk subdomain
tags:
  - name: Agents
    description: >-
      Manage helpdesk agents and their properties.
  - name: Business Hours
    description: >-
      Manage business hours configurations.
  - name: Companies
    description: >-
      Manage company records associated with contacts.
  - name: Contacts
    description: >-
      Manage customer contacts including creation, updates, merging,
      and deactivation.
  - name: Conversations
    description: >-
      Manage ticket conversations including replies, notes, and forwards.
  - name: Email Configs
    description: >-
      Manage email configuration settings for the helpdesk.
  - name: Groups
    description: >-
      Manage agent groups for ticket assignment and routing.
  - name: Products
    description: >-
      Manage products associated with the helpdesk.
  - name: Roles
    description: >-
      Manage agent roles and permissions.
  - name: SLA Policies
    description: >-
      Manage SLA policies for ticket response and resolution targets.
  - name: Surveys
    description: >-
      Manage customer satisfaction surveys.
  - name: Tickets
    description: >-
      Manage helpdesk tickets including creation, updates, assignment,
      and resolution workflows.
  - name: Time Entries
    description: >-
      Track time spent on tickets.
security:
  - basicAuth: []
paths:
  /tickets:
    get:
      operationId: listTickets
      summary: List all tickets
      description: >-
        Retrieves a list of all tickets in the helpdesk. Results can be
        filtered by various criteria including status, priority, and
        requester. Supports pagination with a default page size of 30.
      tags:
        - Tickets
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PerPageParam'
        - name: filter
          in: query
          description: >-
            Pre-defined filter to apply. Options include new_and_my_open,
            watching, spam, deleted.
          schema:
            type: string
        - name: requester_id
          in: query
          description: Filter tickets by requester ID.
          schema:
            type: integer
        - name: email
          in: query
          description: Filter tickets by requester email.
          schema:
            type: string
            format: email
        - name: updated_since
          in: query
          description: >-
            Return tickets updated after this timestamp in UTC format.
          schema:
            type: string
            format: date-time
        - name: order_by
          in: query
          description: Field to sort by.
          schema:
            type: string
            enum:
              - created_at
              - due_by
              - updated_at
              - status
        - name: order_type
          in: query
          description: Sort order direction.
          schema:
            type: string
            enum:
              - asc
              - desc
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Ticket'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createTicket
      summary: Create a ticket
      description: >-
        Creates a new ticket in the helpdesk. Requires at least a subject,
        description, and requester identification (email, phone, or
        requester_id). Supports attachments and custom fields.
      tags:
        - Tickets
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TicketCreate'
      responses:
        '201':
          description: Ticket created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /tickets/{ticket_id}:
    get:
      operationId: getTicket
      summary: View a ticket
      description: >-
        Retrieves the details of a specific ticket by its ID, including
        all ticket properties and custom fields.
      tags:
        - Tickets
      parameters:
        - $ref: '#/components/parameters/TicketIdParam'
        - name: include
          in: query
          description: >-
            Include additional information in the response. Comma-separated
            values from conversations, requester, company, stats.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateTicket
      summary: Update a ticket
      description: >-
        Updates the properties of an existing ticket. Only the fields
        included in the request body will be updated.
      tags:
        - Tickets
      parameters:
        - $ref: '#/components/parameters/TicketIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TicketUpdate'
      responses:
        '200':
          description: Ticket updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteTicket
      summary: Delete a ticket
      description: >-
        Soft-deletes a ticket by moving it to the trash. The ticket can
        be restored later using the restore endpoint.
      tags:
        - Tickets
      parameters:
        - $ref: '#/components/parameters/TicketIdParam'
      responses:
        '204':
          description: Ticket deleted successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /tickets/{ticket_id}/restore:
    put:
      operationId: restoreTicket
      summary: Restore a deleted ticket
      description: >-
        Restores a previously deleted ticket from the trash.
      tags:
        - Tickets
      parameters:
        - $ref: '#/components/parameters/TicketIdParam'
      responses:
        '204':
          description: Ticket restored successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /tickets/{ticket_id}/conversations:
    get:
      operationId: listTicketConversations
      summary: List all conversations of a ticket
      description: >-
        Retrieves all conversations (replies and notes) associated with
        a specific ticket.
      tags:
        - Conversations
      parameters:
        - $ref: '#/components/parameters/TicketIdParam'
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PerPageParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Conversation'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /tickets/{ticket_id}/reply:
    post:
      operationId: replyToTicket
      summary: Reply to a ticket
      description: >-
        Adds a public reply to a ticket. The reply is sent to all
        recipients associated with the ticket.
      tags:
        - Conversations
      parameters:
        - $ref: '#/components/parameters/TicketIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReplyCreate'
      responses:
        '201':
          description: Reply created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conversation'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /tickets/{ticket_id}/notes:
    post:
      operationId: createNote
      summary: Create a note on a ticket
      description: >-
        Adds a private or public note to a ticket. Notes are used for
        internal communication or additional context.
      tags:
        - Conversations
      parameters:
        - $ref: '#/components/parameters/TicketIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NoteCreate'
      responses:
        '201':
          description: Note created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conversation'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /contacts:
    get:
      operationId: listContacts
      summary: List all contacts
      description: >-
        Retrieves a paginated list of all contacts in the helpdesk.
        Supports filtering by email, phone, mobile, and company.
      tags:
        - Contacts
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PerPageParam'
        - name: email
          in: query
          description: Filter contacts by email address.
          schema:
            type: string
            format: email
        - name: phone
          in: query
          description: Filter contacts by phone number.
          schema:
            type: string
        - name: company_id
          in: query
          description: Filter contacts by company ID.
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Contact'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createContact
      summary: Create a contact
      description: >-
        Creates a new contact in the helpdesk. At least one of name, email,
        phone, or mobile is required.
      tags:
        - Contacts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactCreate'
      responses:
        '201':
          description: Contact created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /contacts/{contact_id}:
    get:
      operationId: getContact
      summary: View a contact
      description: >-
        Retrieves the details of a specific contact by their ID.
      tags:
        - Contacts
      parameters:
        - $ref: '#/components/parameters/ContactIdParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateContact
      summary: Update a contact
      description: >-
        Updates the properties of an existing contact.
      tags:
        - Contacts
      parameters:
        - $ref: '#/components/parameters/ContactIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactCreate'
      responses:
        '200':
          description: Contact updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteContact
      summary: Delete a contact
      description: >-
        Soft-deletes a contact from the helpdesk.
      tags:
        - Contacts
      parameters:
        - $ref: '#/components/parameters/ContactIdParam'
      responses:
        '204':
          description: Contact deleted successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /contacts/{contact_id}/merge:
    put:
      operationId: mergeContacts
      summary: Merge contacts
      description: >-
        Merges secondary contacts into the primary contact specified by
        the contact_id path parameter.
      tags:
        - Contacts
      parameters:
        - $ref: '#/components/parameters/ContactIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - secondary_contact_ids
              properties:
                secondary_contact_ids:
                  type: array
                  description: >-
                    Array of contact IDs to merge into the primary contact.
                  items:
                    type: integer
      responses:
        '200':
          description: Contacts merged successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /companies:
    get:
      operationId: listCompanies
      summary: List all companies
      description: >-
        Retrieves a paginated list of all companies in the helpdesk.
      tags:
        - Companies
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PerPageParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Company'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createCompany
      summary: Create a company
      description: >-
        Creates a new company record in the helpdesk.
      tags:
        - Companies
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyCreate'
      responses:
        '201':
          description: Company created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Company'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /companies/{company_id}:
    get:
      operationId: getCompany
      summary: View a company
      description: >-
        Retrieves the details of a specific company by its ID.
      tags:
        - Companies
      parameters:
        - $ref: '#/components/parameters/CompanyIdParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Company'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateCompany
      summary: Update a company
      description: >-
        Updates the properties of an existing company record.
      tags:
        - Companies
      parameters:
        - $ref: '#/components/parameters/CompanyIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyCreate'
      responses:
        '200':
          description: Company updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Company'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteCompany
      summary: Delete a company
      description: >-
        Deletes a company record from the helpdesk.
      tags:
        - Companies
      parameters:
        - $ref: '#/components/parameters/CompanyIdParam'
      responses:
        '204':
          description: Company deleted successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /agents:
    get:
      operationId: listAgents
      summary: List all agents
      description: >-
        Retrieves a paginated list of all agents in the helpdesk.
        Supports filtering by email and state.
      tags:
        - Agents
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PerPageParam'
        - name: email
          in: query
          description: Filter agents by email address.
          schema:
            type: string
            format: email
        - name: state
          in: query
          description: Filter agents by state.
          schema:
            type: string
            enum:
              - fulltime
              - occasional
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Agent'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /agents/{agent_id}:
    get:
      operationId: getAgent
      summary: View an agent
      description: >-
        Retrieves the details of a specific agent by their ID.
      tags:
        - Agents
      parameters:
        - $ref: '#/components/parameters/AgentIdParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateAgent
      summary: Update an agent
      description: >-
        Updates the properties of an existing agent.
      tags:
        - Agents
      parameters:
        - $ref: '#/components/parameters/AgentIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentUpdate'
      responses:
        '200':
          description: Agent updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /groups:
    get:
      operationId: listGroups
      summary: List all groups
      description: >-
        Retrieves a list of all agent groups in the helpdesk.
      tags:
        - Groups
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PerPageParam'
      responses:
        '200':
          description: Success
          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 agent group by its ID.
      tags:
        - Groups
      parameters:
        - $ref: '#/components/parameters/GroupIdParam'
      responses:
        '200':
          description: Success
          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 agent group.
      tags:
        - Groups
      parameters:
        - $ref: '#/components/parameters/GroupIdParam'
      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 an agent group from the helpdesk.
      tags:
        - Groups
      parameters:
        - $ref: '#/components/parameters/GroupIdParam'
      responses:
        '204':
          description: Group deleted successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /roles:
    get:
      operationId: listRoles
      summary: List all roles
      description: >-
        Retrieves a list of all agent roles configured in the helpdesk.
      tags:
        - Roles
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Role'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /roles/{role_id}:
    get:
      operationId: getRole
      summary: View a role
      description: >-
        Retrieves the details of a specific agent role by its ID.
      tags:
        - Roles
      parameters:
        - name: role_id
          in: path
          required: true
          description: The ID of the role to retrieve.
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /products:
    get:
      operationId: listProducts
      summary: List all products
      description: >-
        Retrieves a list of all products configured in the helpdesk.
      tags:
        - Products
      responses:
        '200':
          description: Success
          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 its ID.
      tags:
        - Products
      parameters:
        - name: product_id
          in: path
          required: true
          description: The ID of the product to retrieve.
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /email_configs:
    get:
      operationId: listEmailConfigs
      summary: List all email configurations
      description: >-
        Retrieves a list of all email configurations for the helpdesk.
      tags:
        - Email Configs
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EmailConfig'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /sla_policies:
    get:
      operationId: listSLAPolicies
      summary: List all SLA policies
      description: >-
        Retrieves a list of all SLA policies configured in the helpdesk.
      tags:
        - SLA Policies
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SLAPolicy'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /business_hours:
    get:
      operationId: listBusinessHours
      summary: List all business hours
      description: >-
        Retrieves a list of all business hours configurations in the
        helpdesk.
      tags:
        - Business Hours
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BusinessHours'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /surveys/satisfaction_ratings:
    get:
      operationId: listSatisfactionRatings
      summary: List all satisfaction ratings
      description: >-
        Retrieves a list of all customer satisfaction ratings received
        for helpdesk tickets.
      tags:
        - Surveys
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PerPageParam'
        - name: created_since
          in: query
          description: Filter ratings created since this timestamp.
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SatisfactionRating'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /tickets/{ticket_id}/time_entries:
    get:
      operationId: listTicketTimeEntries
      summary: List all time entries for a ticket
      description: >-
        Retrieves all time entries logged against a specific ticket.
      tags:
        - Time Entries
      parameters:
        - $ref: '#/components/parameters/TicketIdParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TimeEntry'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: createTicketTimeEntry
      summary: Create a time entry for a ticket
      description: >-
        Logs a new time entry against a specific ticket for tracking
        time spent on support activities.
      tags:
        - Time Entries
      parameters:
        - $ref: '#/components/parameters/TicketIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TimeEntryCreate'
      responses:
        '201':
          description: Time entry created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeEntry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Use your API key as the username and X as the password. The API
        key can be found in your Freshdesk profile settings.
  parameters:
    PageParam:
      name: page
      in: query
      description: Page number for pagination.
      schema:
        type: integer
        minimum: 1
        default: 1
    PerPageParam:
      name: per_page
      in: query
      description: Number of results per page (max 100).
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 30
    TicketIdParam:
      name: ticket_id
      in: path
      required: true
      description: The ID of the ticket.
      schema:
        type: integer
    ContactIdParam:
      name: contact_id
      in: path
      required: true
      description: The ID of the contact.
      schema:
        type: integer
    CompanyIdParam:
      name: company_id
      in: path
      required: true
      description: The ID of the company.
      schema:
        type: integer
    AgentIdParam:
      name: agent_id
      in: path
      required: true
      description: The ID of the agent.
      schema:
        type: integer
    GroupIdParam:
      name: group_id
      in: path
      required: true
      description: The ID of the group.
      schema:
        type: integer
  responses:
    BadRequest:
      description: The request body or parameters are invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication credentials are missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      descri

# --- truncated at 32 KB (56 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/freshworks/refs/heads/main/openapi/freshworks-freshdesk-api-openapi.yml