> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreflux.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Freshdesk and Freshservice REST API

> Client-mode REST API connector for Freshdesk tickets and Freshservice assets

Technical Preview

## Overview

Client-mode REST API connector for Freshdesk tickets and Freshservice assets. `BASE_ADDRESS` defaults to `https://YOUR_DOMAIN.freshdesk.com`. Auth: **Basic (API key as username, password X) or Bearer**. Pass secrets only at runtime via MQTT JSON placeholders or Hub `GET SECRET` — never commit real credentials.

## Auth

Basic (API key as username, password X) or Bearer. Prefer Hub secrets / `GET SECRET`. Never hard-code tokens into the `.lot`.

## Basic Syntax

```lot wrap theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}

DEFINE ROUTE FreshdeskAndFreshserviceRestApi WITH TYPE REST_API
    ADD REST_API_CONFIG
        WITH BASE_ADDRESS "https://YOUR_DOMAIN.freshdesk.com"
        WITH ENABLE_CLIENT "true"
        WITH USE_SSL "true"
        WITH REQUEST_TIMEOUT '30'
        WITH DEFAULT_CONTENT_TYPE "application/json"
        # Prefer Basic: WITH USERNAME "{value.json.api_key_or_literal}" / WITH PASSWORD "X"
        #   or WITH USERNAME GET SECRET "FRESHDESK_API_KEY" / WITH PASSWORD "X"
        # Or OAuth/Bearer via Authorization header below ({value.json.api_key}).
    ADD EVENT Listtickets
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Listtickets"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Listtickets"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/v2/tickets"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Authorization" "Bearer {value.json.api_key}"
    ADD EVENT Createticket
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Createticket"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Createticket"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/v2/tickets"
        WITH HEADERS
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Bearer {value.json.api_key}"
        WITH BODY "{payload}"
    ADD EVENT Getticket
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Getticket"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Getticket"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/v2/tickets/{value.json.id}"
        WITH HEADERS
            ADD "Accept" "application/json"
    # ... additional EVENTs in package .lot ...
```

## MQTT topics

Request topics under `integrations/freshdesk-and-freshservice/request/...`; responses on `integrations/freshdesk-and-freshservice/response/...`.

## Template reference

Generated from the shipped broker template `freshdesk-and-freshservice` (`-routeCode FRESHDESK_AND_FRESHSERVICE`). It lists every event the template defines.

### Auth

Basic (API key as username, password X) or Bearer

Auth headers used by the template: `Authorization: Bearer {value.json.api_key}`.

### Template parameters

| Placeholder | Type | Description | Required |
| - | - | - | - |
| `RouteName` | string | Name of the Freshdesk and Freshservice connector | no |
| `BaseUrl` | string | Freshdesk and Freshservice base URL without trailing slash (e.g. [https://YOUR\_DOMAIN.freshdesk.com](https://YOUR_DOMAIN.freshdesk.com)) | yes |

`BASE_ADDRESS` default: `https://YOUR_DOMAIN.freshdesk.com`.

### Events

| Event | Method | Endpoint | Request topic | Response topic | Payload fields |
| - | - | - | - | - | - |
| `Listtickets` | GET | `/api/v2/tickets` | `integrations/freshdesk-and-freshservice/request/Listtickets` | `integrations/freshdesk-and-freshservice/response/Listtickets` | `api_key` |
| `Createticket` | POST | `/api/v2/tickets` | `integrations/freshdesk-and-freshservice/request/Createticket` | `integrations/freshdesk-and-freshservice/response/Createticket` | `api_key`, `body` |
| `Getticket` | GET | `/api/v2/tickets/{value.json.id}` | `integrations/freshdesk-and-freshservice/request/Getticket` | `integrations/freshdesk-and-freshservice/response/Getticket` | `api_key`, `id` |
| `Updateticket` | PUT | `/api/v2/tickets/{value.json.id}` | `integrations/freshdesk-and-freshservice/request/Updateticket` | `integrations/freshdesk-and-freshservice/response/Updateticket` | `api_key`, `body`, `id` |
| `Filtertickets` | GET | `/api/v2/tickets?filter={value.json.filter}` | `integrations/freshdesk-and-freshservice/request/Filtertickets` | `integrations/freshdesk-and-freshservice/response/Filtertickets` | `api_key`, `filter` |
| `Listcontacts` | GET | `/api/v2/contacts` | `integrations/freshdesk-and-freshservice/request/Listcontacts` | `integrations/freshdesk-and-freshservice/response/Listcontacts` | `api_key` |
| `Addticketnote` | POST | `/api/v2/tickets/{value.json.id}/notes` | `integrations/freshdesk-and-freshservice/request/Addticketnote` | `integrations/freshdesk-and-freshservice/response/Addticketnote` | `api_key`, `body`, `id` |
| `Createfreshserviceasset` | POST | `/api/v2/assets` | `integrations/freshdesk-and-freshservice/request/Createfreshserviceasset` | `integrations/freshdesk-and-freshservice/response/Createfreshserviceasset` | `api_key`, `body` |

### Deploy

Get the template card (JSON with `template` and `metadata`) from the broker, then deploy the connector:

```bash theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
mosquitto_pub -t '$SYS/Coreflux/Command' -m "-routeCode FRESHDESK_AND_FRESHSERVICE"
```

The deployable connector from the REST API app, with `BASE_ADDRESS` already filled in:

```lot theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
DEFINE ROUTE FreshdeskAndFreshserviceRestApi WITH TYPE REST_API
    ADD REST_API_CONFIG
        WITH BASE_ADDRESS "https://YOUR_DOMAIN.freshdesk.com"
        WITH ENABLE_CLIENT "true"
        WITH USE_SSL "true"
        WITH REQUEST_TIMEOUT '30'
        WITH DEFAULT_CONTENT_TYPE "application/json"
    ADD EVENT Listtickets
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Listtickets"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Listtickets"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/v2/tickets"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Authorization" "Bearer {value.json.api_key}"
    ADD EVENT Createticket
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Createticket"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Createticket"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/v2/tickets"
        WITH HEADERS
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Bearer {value.json.api_key}"
        WITH BODY "{value.json.body}"
    ADD EVENT Getticket
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Getticket"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Getticket"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/v2/tickets/{value.json.id}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Authorization" "Bearer {value.json.api_key}"
    ADD EVENT Updateticket
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Updateticket"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Updateticket"
        WITH METHOD "PUT"
        WITH ENDPOINT "/api/v2/tickets/{value.json.id}"
        WITH HEADERS
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Bearer {value.json.api_key}"
        WITH BODY "{value.json.body}"
    ADD EVENT Filtertickets
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Filtertickets"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Filtertickets"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/v2/tickets?filter={value.json.filter}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Authorization" "Bearer {value.json.api_key}"
    ADD EVENT Listcontacts
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Listcontacts"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Listcontacts"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/v2/contacts"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "Authorization" "Bearer {value.json.api_key}"
    ADD EVENT Addticketnote
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Addticketnote"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Addticketnote"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/v2/tickets/{value.json.id}/notes"
        WITH HEADERS
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Bearer {value.json.api_key}"
        WITH BODY "{value.json.body}"
    ADD EVENT Createfreshserviceasset
        WITH SOURCE_TOPIC "integrations/freshdesk-and-freshservice/request/Createfreshserviceasset"
        WITH DESTINATION_TOPIC "integrations/freshdesk-and-freshservice/response/Createfreshserviceasset"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/v2/assets"
        WITH HEADERS
            ADD "Content-Type" "application/json"
            ADD "Authorization" "Bearer {value.json.api_key}"
        WITH BODY "{value.json.body}"
```

Deploy it with `-addRoute` (do not include `ADD METADATA`).

### Usage example

Call `Listtickets` by publishing a JSON payload to its request topic, and read the reply on the response topic:

```bash theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
mosquitto_sub -t 'integrations/freshdesk-and-freshservice/response/Listtickets' &
mosquitto_pub -t 'integrations/freshdesk-and-freshservice/request/Listtickets' -m '{"api_key": "<api_key>"}'
```

## Related

* [REST API Connectors](/latest/lot-language/routes/rest-api-routes)
* [REST API apps index](/latest/lot-language/routes/rest-api-apps)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.