Freshdesk Ticketing — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Freshdesk Ticketing (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Tickets are the core unit of service delivery in Freshdesk. Every customer request, incident, and task flows through the ticketing system. This skill covers listing, getting, searching, creating, updating, replying, adding notes, and reading conversation threads via the Freshdesk REST API v2, surfaced through tools named freshdesk_tickets_<action>.
Freshdesk encodes these fields as integers in both the API payloads and the search query language.
| Value | Status | Business Logic |
|---|---|---|
| 2 | Open | Default for new tickets; needs action |
| 3 | Pending | Waiting on customer or third party; clock may pause |
| 4 | Resolved | Issue addressed; awaiting confirmation |
| 5 | Closed | Ticket complete; no further action |
| Value | Priority | Typical Response |
|---|---|---|
| 1 | Low | Next business day |
| 2 | Medium | Same business day |
| 3 | High | 1-2 hours |
| 4 | Urgent | Immediate response |
| Value | Source |
|---|---|
| 1 | |
| 2 | Portal |
| 3 | Phone |
(Additional source codes exist for chat, feedback widget, and other channels.)
| Field | Type | Required | Description |
|---|---|---|---|
id | Integer | System | Auto-generated unique identifier |
subject | String | Yes | Brief issue summary |
description | String (HTML) | Yes (on create) | Detailed description |
status | Integer | No | 2 Open, 3 Pending, 4 Resolved, 5 Closed |
priority | Integer | No | 1 Low, 2 Medium, 3 High, 4 Urgent |
source | Integer | No | 1 Email, 2 Portal, 3 Phone |
type | String | No | Ticket type (e.g. Incident, Service Request) |
tags | Array | No | Free-form labels |
| Field | Type | Required | Description |
|---|---|---|---|
requester_id | Integer | One of requester fields | Contact ID of the requester |
email | String | One of requester fields | Requester email (creates a contact if new) |
responder_id | Integer | No | Assigned agent ID |
group_id | Integer | No | Assigned group ID |
company_id | Integer | No | Associated company ID |
| Field | Type | Description |
|---|---|---|
due_by | Timestamp | Resolution-due deadline (driven by SLA policy + business hours) |
fr_due_by | Timestamp | First-response-due deadline |
When creating a ticket you must supply subject, description, and a requester (requester_id or email). Status defaults to Open (2) and priority to Low (1) if omitted.
GET /api/v2/tickets?per_page=100&page=1Common query params: filter (e.g. new_and_my_open, watching, spam, deleted), updated_since, order_by, order_type. Use include=requester,stats to embed related data.
GET /api/v2/tickets/{id}?include=conversations,requester,company,statsinclude=conversations embeds the reply/note thread; include=stats adds resolution and first-response timestamps useful for SLA checks.
GET /api/v2/search/tickets?query="status:2 AND priority:4"The query language wraps the whole expression in double quotes, combines clauses with AND / OR, and supports fields such as status, priority, agent_id, group_id, type, tag, created_at, and updated_at. Search returns up to 30 results per page and a maximum of 10 pages (300 records) — narrow the query when a result set would exceed that.
# Unresolved urgent tickets
"status:2 AND priority:4"
# A group's high/urgent backlog created this month
"group_id:7 AND (priority:3 OR priority:4) AND created_at:>'2024-02-01'"POST /api/v2/tickets{
"subject": "Unable to access email - Outlook disconnected",
"description": "User reports Outlook showing disconnected since 9am. Webmail works fine.",
"email": "[email protected]",
"priority": 3,
"status": 2,
"source": 1,
"group_id": 7
}PUT /api/v2/tickets/{id}Assign and re-prioritize:
{
"responder_id": 42,
"status": 2,
"priority": 4
}Resolve:
{
"status": 4
}POST /api/v2/tickets/{id}/reply{
"body": "<p>We've identified the cause and a technician is working on the fix. We'll update you within the hour.</p>"
}A reply is added to the conversation thread and emailed to the requester.
POST /api/v2/tickets/{id}/notesInternal note (private to agents):
{
"body": "<p>Event logs show KB5034441 correlation. Known Outlook cache issue.</p>",
"private": true
}Public note (visible to requester):
{
"body": "<p>Thanks for the additional screenshots — they confirm the cache issue.</p>",
"private": false
}GET /api/v2/tickets/{id}/conversationsReturns the ordered thread of replies and notes. Each entry indicates whether it is private (internal note), incoming (from the requester), or an outgoing agent reply. Use this to reconstruct the full history of a ticket before summarizing or responding.
passing email on create will auto-create the contact.
requester/subject.
POST /tickets with subject, description, requester."status:2 OR status:3", ordered by priority descending.
responder_id.include=stats and comparedue_by / fr_due_by against now to flag breached and at-risk tickets.
group_id / responder_id by category and skillset.priority where impact warrants it.PUT /api/v2/tickets/{id}{
"priority": 4,
"group_id": 9
}Add an internal note capturing the escalation reason alongside the update.
| Error | Cause | Resolution |
|---|---|---|
| 400 Validation failed | Missing subject/description/requester, or bad encoding | Supply required fields; use integer status/priority |
| 404 Not found | Unknown ticket ID | Re-list or re-search to confirm the ID |
| 403 Forbidden | API key lacks scope for the action | Check the agent's permissions |
| 429 Rate limited | Over per-minute limit | Read Retry-After and back off |
emailauto-creation deliberately.
customer-appropriate.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.