Skip to content

integrations/ticketing/freshdesk/dist/manifest

Variables

freshdeskTicketingProviderManifest

const freshdeskTicketingProviderManifest: {
  capabilities: {
     audiences?: ("customer-facing" | "internal-support" | "mixed")[];
     capability: string;
     changesWorkflow?: boolean;
     description?: string;
     exposesSensitiveData?: boolean;
     extension?: boolean;
     label?: string;
     metadata?: Record<string, unknown>;
     providerObjects?: {
        description?: string;
        kind: string;
        label?: string;
        metadata?: Record<string, unknown>;
        schemaName?: string;
     }[];
     requiresCredential?: boolean;
     sideEffect?: boolean;
  }[];
  category: string;
  channelAudiences: ("customer-facing" | "internal-support" | "mixed")[];
  coverage: {
     evidence: {
        label: string;
        url?: string;
     }[];
     notes: string[];
     scope:   | "support-workflow-subset"
        | "provider-api-subset"
        | "connector-required"
        | "local-protocol"
        | "full-provider-api";
  };
  credentialRequirements: {
     description?: string;
     id: string;
     label?: string;
     metadata?: Record<string, unknown>;
     required: boolean;
     scopes: string[];
  }[];
  directions: (
     | "receive-only"
     | "send-only"
     | "inbound-only"
     | "outbound-only"
    | "bidirectional")[];
  id: string;
  limitations: string[];
  maintainers: {
     name: string;
     type: "community" | "official" | "unknown" | "partner";
     url?: string;
  }[];
  metadata?: Record<string, unknown>;
  name: string;
  operations: {
     alias: string;
     audience?: "customer-facing" | "internal-support" | "mixed";
     audiences?: ("customer-facing" | "internal-support" | "mixed")[];
     capability: string;
     changesWorkflow?: boolean;
     description?: string;
     exposesSensitiveData?: boolean;
     extension: boolean;
     externallyVisible?: boolean;
     inputSchema?: unknown;
     inputSchemaName?: string;
     inputSchemaRef?: string;
     label?: string;
     metadata?: Record<string, unknown>;
     outputSchema?: unknown;
     outputSchemaName?: string;
     outputSchemaRef?: string;
     providerObject?: string;
     providerObjects?: {
        description?: string;
        kind: string;
        label?: string;
        metadata?: Record<string, unknown>;
        schemaName?: string;
     }[];
     providerOperation?: string;
     requiredPolicyIds?: string[];
     requiresApproval?: boolean;
     requiresCredential?: boolean;
     sideEffect?: boolean;
  }[];
  packageName: string;
  privacyNotes: string[];
  provider: string;
  trustLevel: "community" | "official" | "verified" | "experimental";
} & {
  capabilities: [{
     capability: "receive";
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskWebhookEvent";
        label: "Freshdesk Webhook Event";
     }];
     requiresCredential: true;
   }, {
     capability: "create-provider-object";
     changesWorkflow: true;
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskTicket";
        label: "Freshdesk Ticket";
      }, {
        kind: "freshdeskContact";
        label: "Freshdesk Contact";
      }, {
        kind: "freshdeskConversation";
        label: "Freshdesk Ticket Conversation";
     }];
     requiresCredential: true;
     sideEffect: true;
   }, {
     capability: "read-provider-object";
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskTicket";
        label: "Freshdesk Ticket";
      }, {
        kind: "freshdeskContact";
        label: "Freshdesk Contact";
      }, {
        kind: "freshdeskAgent";
        label: "Freshdesk Agent";
      }, {
        kind: "freshdeskGroup";
        label: "Freshdesk Group";
     }];
     requiresCredential: true;
   }, {
     capability: "update-provider-object";
     changesWorkflow: true;
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskTicket";
        label: "Freshdesk Ticket";
      }, {
        kind: "freshdeskContact";
        label: "Freshdesk Contact";
     }];
     requiresCredential: true;
     sideEffect: true;
   }, {
     capability: "search-provider-object";
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskTicket";
        label: "Freshdesk Ticket";
      }, {
        kind: "freshdeskContact";
        label: "Freshdesk Contact";
     }];
     requiresCredential: true;
   }, {
     capability: "handoff";
     changesWorkflow: true;
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskTicket";
        label: "Freshdesk Ticket";
      }, {
        kind: "freshdeskConversation";
        label: "Freshdesk Ticket Conversation";
     }];
     requiresCredential: true;
     sideEffect: true;
  }];
  category: "ticketing";
  channelAudiences: ["customer-facing", "internal-support", "mixed"];
  coverage: {
     evidence: [{
        label: "Freshdesk API v2 reference";
        url: "https://developers.freshdesk.com/api/";
      }, {
        label: "Freshworks Freshdesk SDK";
        url: "https://www.npmjs.com/package/@freshworks/freshdesk";
      }, {
        label: "Freshworks API SDK";
        url: "https://www.npmjs.com/package/@freshworks/api-sdk";
      }, {
        label: "Freshworks API SDK repository";
        url: "https://github.com/freshworks/freshworks-api-sdk";
      }, {
        label: "Freshworks API SDK announcement";
        url: "https://community.freshworks.dev/t/freshworks-api-sdk-for-node-js/5232";
     }];
     notes: ["Implementation uses the official @freshworks/freshdesk JavaScript SDK by default when domain and apiKey are configured.", "Operations not exposed by the official SDK, such as agents, groups, and current-agent readiness, require an injected FreshdeskTicketingProviderClient instead of a package-owned REST fallback.", "Coverage is limited to Freshdesk v2 tickets, contacts, conversations, replies, notes, handoff updates, agents, groups, current-agent readiness, and SDK-user shared-secret webhook validation."];
     scope: "provider-api-subset";
  };
  credentialRequirements: [{
     id: "freshdesk-domain";
     label: "Freshdesk domain";
     required: true;
   }, {
     id: "freshdesk-api-key";
     label: "Freshdesk API key";
     metadata: {
        privilegeGuidance: "Freshdesk API keys are governed by the authenticated agent's Freshdesk role and ticket permissions.";
        scopeKind: "internal-capability-labels";
     };
     required: true;
     scopes: ["read", "write"];
   }, {
     id: "freshdesk-webhook-secret";
     label: "Freshdesk webhook shared secret";
     required: false;
  }];
  directions: ["receive-only", "send-only", "bidirectional"];
  id: "ticketing.freshdesk";
  limitations: ["Ticket forms, required fields, statuses, products, groups, SLAs, automations, and agent permissions are SDK-user configuration."];
  maintainers: [{
     name: "Cognidesk";
     type: "official";
  }];
  metadata: {
     freshdeskV2Coverage: {
        allowlistedOperations: readonly ["tickets.create", "tickets.read", "tickets.update", "tickets.search", "reply.create", "note.create", "contacts.read", "contacts.search", "agents.read", "groups.read", "agents.me", "automation_webhook.parse"];
        source: "Freshdesk API v2";
     };
     implementation: {
        defaultClientPolicy: "use-official-freshworks-freshdesk-sdk-when-domain-and-apiKey-are-configured";
        delegatedOperationTarget: "official Freshdesk SDK for covered operations or injected Freshdesk provider client for SDK gaps";
        packageOwnedRestClient: false;
        packageOwnedRestFallback: false;
        providerClient: "FreshdeskTicketingProviderClient";
        providerClientInterface: "FreshdeskTicketingProviderClient";
        providerClientOverride: true;
        providerSdkPackage: "@freshworks/freshdesk";
        rawClientEscapeHatch: "FreshdeskTicketingClient.providerClient";
        rawClientOverride: true;
        runtimePackage: "@cognidesk/integration-ticketing-freshdesk";
        sdkDecision: {
           checkedAt: "2026-06-25";
           checkedVersion: "0.0.1";
           license: "freshdesk";
           notes: readonly ["@freshworks/freshdesk 0.0.1 exposes tickets.createTicket/getTicket/updateTicket/searchTicket/replyTicket/addNotes and contacts.getContact/searchContacts.", "The package does not expose agents/groups/readiness helpers; those operations fail closed unless a host FreshdeskTicketingProviderClient is injected."];
           package: "@freshworks/freshdesk";
           packageChecked: "@freshworks/freshdesk";
           reason: "@freshworks/freshdesk exposes Freshdesk tickets, contacts, and conversations runtime clients. Agents, groups, and current-agent readiness are not exposed by that package and require FreshdeskTicketingProviderClient injection.";
           result: "accepted-runtime-sdk";
        };
        strategy: "provider-sdk-adapter";
     };
     issue: 35;
     sdkDecision: {
        checkedAt: "2026-06-25";
        checkedVersion: "0.0.1";
        license: "freshdesk";
        package: "@freshworks/freshdesk";
        reason: "@freshworks/freshdesk is the official Freshdesk JavaScript SDK and is used for the ticket/contact operations it exposes.";
        result: "accepted-runtime-sdk";
     };
  };
  name: "Freshdesk Ticketing";
  operations: [{
     alias: "ticket.create";
     capability: "create-provider-object";
     changesWorkflow: true;
     exposesSensitiveData: true;
     providerObject: "ticket";
     providerOperation: "POST /api/v2/tickets";
     sideEffect: true;
   }, {
     alias: "ticket.read";
     capability: "read-provider-object";
     exposesSensitiveData: true;
     providerObject: "ticket";
     providerOperation: "GET /api/v2/tickets/{ticket_id}";
   }, {
     alias: "ticket.update";
     capability: "update-provider-object";
     changesWorkflow: true;
     exposesSensitiveData: true;
     providerObject: "ticket";
     providerOperation: "PUT /api/v2/tickets/{ticket_id}";
     sideEffect: true;
   }, {
     alias: "ticket.search";
     capability: "search-provider-object";
     exposesSensitiveData: true;
     providerObject: "ticket";
     providerOperation: "GET /api/v2/search/tickets";
   }, {
     alias: "ticket.comment.create";
     capability: "send";
     exposesSensitiveData: true;
     externallyVisible: true;
     providerObject: "ticketComment";
     providerOperation: "POST /api/v2/tickets/{ticket_id}/reply";
     sideEffect: true;
   }, {
     alias: "ticket.internalNote.create";
     capability: "draft";
     exposesSensitiveData: true;
     providerObject: "internalNote";
     providerOperation: "POST /api/v2/tickets/{ticket_id}/notes";
     sideEffect: true;
   }, {
     alias: "customer.read";
     capability: "read-provider-object";
     exposesSensitiveData: true;
     providerObject: "customer";
     providerOperation: "GET /api/v2/contacts/{contact_id}";
   }, {
     alias: "customer.search";
     capability: "search-provider-object";
     exposesSensitiveData: true;
     providerObject: "customer";
     providerOperation: "GET /api/v2/search/contacts";
   }, {
     alias: "freshdesk.agent.read";
     capability: "read-provider-object";
     exposesSensitiveData: true;
     extension: true;
     providerObject: "freshdeskAgent";
     providerOperation: "GET /api/v2/agents/{agent_id}";
   }, {
     alias: "freshdesk.group.read";
     capability: "read-provider-object";
     extension: true;
     providerObject: "freshdeskGroup";
     providerOperation: "GET /api/v2/groups/{group_id}";
   }, {
     alias: "freshdesk.readiness";
     capability: "read-provider-object";
     exposesSensitiveData: true;
     extension: true;
     providerObject: "freshdeskAgent";
     providerOperation: "GET /api/v2/agents/me";
   }, {
     alias: "freshdesk.webhook.parse";
     capability: "receive";
     exposesSensitiveData: true;
     extension: true;
     providerObject: "freshdeskWebhookEvent";
     providerOperation: "SDK-user configured automation webhook";
  }];
  packageName: "@cognidesk/integration-ticketing-freshdesk";
  privacyNotes: ["Freshdesk tickets, conversations, notes, contacts, assignments, tags, custom fields, and automation webhook payloads can contain customer data."];
  provider: "freshdesk";
  trustLevel: "official";
};

Type Declaration

Name Type
capabilities { audiences?: ("customer-facing" | "internal-support" | "mixed")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension?: boolean; label?: string; metadata?: Record\<string, unknown>; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; requiresCredential?: boolean; sideEffect?: boolean; }[]
category string
channelAudiences ("customer-facing" | "internal-support" | "mixed")[]
coverage { evidence: { label: string; url?: string; }[]; notes: string[]; scope: | "support-workflow-subset" | "provider-api-subset" | "connector-required" | "local-protocol" | "full-provider-api"; }
coverage.evidence { label: string; url?: string; }[]
coverage.notes string[]
coverage.scope | "support-workflow-subset" | "provider-api-subset" | "connector-required" | "local-protocol" | "full-provider-api"
credentialRequirements { description?: string; id: string; label?: string; metadata?: Record\<string, unknown>; required: boolean; scopes: string[]; }[]
directions ( | "receive-only" | "send-only" | "inbound-only" | "outbound-only" | "bidirectional")[]
id string
limitations string[]
maintainers { name: string; type: "community" | "official" | "unknown" | "partner"; url?: string; }[]
metadata? Record\<string, unknown>
name string
operations { alias: string; audience?: "customer-facing" | "internal-support" | "mixed"; audiences?: ("customer-facing" | "internal-support" | "mixed")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension: boolean; externallyVisible?: boolean; inputSchema?: unknown; inputSchemaName?: string; inputSchemaRef?: string; label?: string; metadata?: Record\<string, unknown>; outputSchema?: unknown; outputSchemaName?: string; outputSchemaRef?: string; providerObject?: string; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; providerOperation?: string; requiredPolicyIds?: string[]; requiresApproval?: boolean; requiresCredential?: boolean; sideEffect?: boolean; }[]
packageName string
privacyNotes string[]
provider string
trustLevel "community" | "official" | "verified" | "experimental"

Type Declaration

Name Type
capabilities [{ capability: "receive"; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskWebhookEvent"; label: "Freshdesk Webhook Event"; }]; requiresCredential: true; }, { capability: "create-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskTicket"; label: "Freshdesk Ticket"; }, { kind: "freshdeskContact"; label: "Freshdesk Contact"; }, { kind: "freshdeskConversation"; label: "Freshdesk Ticket Conversation"; }]; requiresCredential: true; sideEffect: true; }, { capability: "read-provider-object"; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskTicket"; label: "Freshdesk Ticket"; }, { kind: "freshdeskContact"; label: "Freshdesk Contact"; }, { kind: "freshdeskAgent"; label: "Freshdesk Agent"; }, { kind: "freshdeskGroup"; label: "Freshdesk Group"; }]; requiresCredential: true; }, { capability: "update-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskTicket"; label: "Freshdesk Ticket"; }, { kind: "freshdeskContact"; label: "Freshdesk Contact"; }]; requiresCredential: true; sideEffect: true; }, { capability: "search-provider-object"; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskTicket"; label: "Freshdesk Ticket"; }, { kind: "freshdeskContact"; label: "Freshdesk Contact"; }]; requiresCredential: true; }, { capability: "handoff"; changesWorkflow: true; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskTicket"; label: "Freshdesk Ticket"; }, { kind: "freshdeskConversation"; label: "Freshdesk Ticket Conversation"; }]; requiresCredential: true; sideEffect: true; }]
category "ticketing"
channelAudiences ["customer-facing", "internal-support", "mixed"]
coverage { evidence: [{ label: "Freshdesk API v2 reference"; url: "https://developers.freshdesk.com/api/"; }, { label: "Freshworks Freshdesk SDK"; url: "https://www.npmjs.com/package/@freshworks/freshdesk"; }, { label: "Freshworks API SDK"; url: "https://www.npmjs.com/package/@freshworks/api-sdk"; }, { label: "Freshworks API SDK repository"; url: "https://github.com/freshworks/freshworks-api-sdk"; }, { label: "Freshworks API SDK announcement"; url: "https://community.freshworks.dev/t/freshworks-api-sdk-for-node-js/5232"; }]; notes: ["Implementation uses the official @freshworks/freshdesk JavaScript SDK by default when domain and apiKey are configured.", "Operations not exposed by the official SDK, such as agents, groups, and current-agent readiness, require an injected FreshdeskTicketingProviderClient instead of a package-owned REST fallback.", "Coverage is limited to Freshdesk v2 tickets, contacts, conversations, replies, notes, handoff updates, agents, groups, current-agent readiness, and SDK-user shared-secret webhook validation."]; scope: "provider-api-subset"; }
coverage.evidence [{ label: "Freshdesk API v2 reference"; url: "https://developers.freshdesk.com/api/"; }, { label: "Freshworks Freshdesk SDK"; url: "https://www.npmjs.com/package/@freshworks/freshdesk"; }, { label: "Freshworks API SDK"; url: "https://www.npmjs.com/package/@freshworks/api-sdk"; }, { label: "Freshworks API SDK repository"; url: "https://github.com/freshworks/freshworks-api-sdk"; }, { label: "Freshworks API SDK announcement"; url: "https://community.freshworks.dev/t/freshworks-api-sdk-for-node-js/5232"; }]
coverage.notes ["Implementation uses the official @freshworks/freshdesk JavaScript SDK by default when domain and apiKey are configured.", "Operations not exposed by the official SDK, such as agents, groups, and current-agent readiness, require an injected FreshdeskTicketingProviderClient instead of a package-owned REST fallback.", "Coverage is limited to Freshdesk v2 tickets, contacts, conversations, replies, notes, handoff updates, agents, groups, current-agent readiness, and SDK-user shared-secret webhook validation."]
coverage.scope "provider-api-subset"
credentialRequirements [{ id: "freshdesk-domain"; label: "Freshdesk domain"; required: true; }, { id: "freshdesk-api-key"; label: "Freshdesk API key"; metadata: { privilegeGuidance: "Freshdesk API keys are governed by the authenticated agent's Freshdesk role and ticket permissions."; scopeKind: "internal-capability-labels"; }; required: true; scopes: ["read", "write"]; }, { id: "freshdesk-webhook-secret"; label: "Freshdesk webhook shared secret"; required: false; }]
directions ["receive-only", "send-only", "bidirectional"]
id "ticketing.freshdesk"
limitations ["Ticket forms, required fields, statuses, products, groups, SLAs, automations, and agent permissions are SDK-user configuration."]
maintainers [{ name: "Cognidesk"; type: "official"; }]
metadata { freshdeskV2Coverage: { allowlistedOperations: readonly ["tickets.create", "tickets.read", "tickets.update", "tickets.search", "reply.create", "note.create", "contacts.read", "contacts.search", "agents.read", "groups.read", "agents.me", "automation_webhook.parse"]; source: "Freshdesk API v2"; }; implementation: { defaultClientPolicy: "use-official-freshworks-freshdesk-sdk-when-domain-and-apiKey-are-configured"; delegatedOperationTarget: "official Freshdesk SDK for covered operations or injected Freshdesk provider client for SDK gaps"; packageOwnedRestClient: false; packageOwnedRestFallback: false; providerClient: "FreshdeskTicketingProviderClient"; providerClientInterface: "FreshdeskTicketingProviderClient"; providerClientOverride: true; providerSdkPackage: "@freshworks/freshdesk"; rawClientEscapeHatch: "FreshdeskTicketingClient.providerClient"; rawClientOverride: true; runtimePackage: "@cognidesk/integration-ticketing-freshdesk"; sdkDecision: { checkedAt: "2026-06-25"; checkedVersion: "0.0.1"; license: "freshdesk"; notes: readonly ["@freshworks/freshdesk 0.0.1 exposes tickets.createTicket/getTicket/updateTicket/searchTicket/replyTicket/addNotes and contacts.getContact/searchContacts.", "The package does not expose agents/groups/readiness helpers; those operations fail closed unless a host FreshdeskTicketingProviderClient is injected."]; package: "@freshworks/freshdesk"; packageChecked: "@freshworks/freshdesk"; reason: "@freshworks/freshdesk exposes Freshdesk tickets, contacts, and conversations runtime clients. Agents, groups, and current-agent readiness are not exposed by that package and require FreshdeskTicketingProviderClient injection."; result: "accepted-runtime-sdk"; }; strategy: "provider-sdk-adapter"; }; issue: 35; sdkDecision: { checkedAt: "2026-06-25"; checkedVersion: "0.0.1"; license: "freshdesk"; package: "@freshworks/freshdesk"; reason: "@freshworks/freshdesk is the official Freshdesk JavaScript SDK and is used for the ticket/contact operations it exposes."; result: "accepted-runtime-sdk"; }; }
metadata.freshdeskV2Coverage { allowlistedOperations: readonly ["tickets.create", "tickets.read", "tickets.update", "tickets.search", "reply.create", "note.create", "contacts.read", "contacts.search", "agents.read", "groups.read", "agents.me", "automation_webhook.parse"]; source: "Freshdesk API v2"; }
metadata.freshdeskV2Coverage.allowlistedOperations readonly ["tickets.create", "tickets.read", "tickets.update", "tickets.search", "reply.create", "note.create", "contacts.read", "contacts.search", "agents.read", "groups.read", "agents.me", "automation_webhook.parse"]
metadata.freshdeskV2Coverage.source "Freshdesk API v2"
metadata.implementation { defaultClientPolicy: "use-official-freshworks-freshdesk-sdk-when-domain-and-apiKey-are-configured"; delegatedOperationTarget: "official Freshdesk SDK for covered operations or injected Freshdesk provider client for SDK gaps"; packageOwnedRestClient: false; packageOwnedRestFallback: false; providerClient: "FreshdeskTicketingProviderClient"; providerClientInterface: "FreshdeskTicketingProviderClient"; providerClientOverride: true; providerSdkPackage: "@freshworks/freshdesk"; rawClientEscapeHatch: "FreshdeskTicketingClient.providerClient"; rawClientOverride: true; runtimePackage: "@cognidesk/integration-ticketing-freshdesk"; sdkDecision: { checkedAt: "2026-06-25"; checkedVersion: "0.0.1"; license: "freshdesk"; notes: readonly ["@freshworks/freshdesk 0.0.1 exposes tickets.createTicket/getTicket/updateTicket/searchTicket/replyTicket/addNotes and contacts.getContact/searchContacts.", "The package does not expose agents/groups/readiness helpers; those operations fail closed unless a host FreshdeskTicketingProviderClient is injected."]; package: "@freshworks/freshdesk"; packageChecked: "@freshworks/freshdesk"; reason: "@freshworks/freshdesk exposes Freshdesk tickets, contacts, and conversations runtime clients. Agents, groups, and current-agent readiness are not exposed by that package and require FreshdeskTicketingProviderClient injection."; result: "accepted-runtime-sdk"; }; strategy: "provider-sdk-adapter"; }
metadata.implementation.defaultClientPolicy "use-official-freshworks-freshdesk-sdk-when-domain-and-apiKey-are-configured"
metadata.implementation.delegatedOperationTarget "official Freshdesk SDK for covered operations or injected Freshdesk provider client for SDK gaps"
metadata.implementation.packageOwnedRestClient false
metadata.implementation.packageOwnedRestFallback false
metadata.implementation.providerClient "FreshdeskTicketingProviderClient"
metadata.implementation.providerClientInterface "FreshdeskTicketingProviderClient"
metadata.implementation.providerClientOverride true
metadata.implementation.providerSdkPackage "@freshworks/freshdesk"
metadata.implementation.rawClientEscapeHatch "FreshdeskTicketingClient.providerClient"
metadata.implementation.rawClientOverride true
metadata.implementation.runtimePackage "@cognidesk/integration-ticketing-freshdesk"
metadata.implementation.sdkDecision { checkedAt: "2026-06-25"; checkedVersion: "0.0.1"; license: "freshdesk"; notes: readonly ["@freshworks/freshdesk 0.0.1 exposes tickets.createTicket/getTicket/updateTicket/searchTicket/replyTicket/addNotes and contacts.getContact/searchContacts.", "The package does not expose agents/groups/readiness helpers; those operations fail closed unless a host FreshdeskTicketingProviderClient is injected."]; package: "@freshworks/freshdesk"; packageChecked: "@freshworks/freshdesk"; reason: "@freshworks/freshdesk exposes Freshdesk tickets, contacts, and conversations runtime clients. Agents, groups, and current-agent readiness are not exposed by that package and require FreshdeskTicketingProviderClient injection."; result: "accepted-runtime-sdk"; }
metadata.implementation.sdkDecision.checkedAt "2026-06-25"
metadata.implementation.sdkDecision.checkedVersion "0.0.1"
metadata.implementation.sdkDecision.license "freshdesk"
metadata.implementation.sdkDecision.notes readonly ["@freshworks/freshdesk 0.0.1 exposes tickets.createTicket/getTicket/updateTicket/searchTicket/replyTicket/addNotes and contacts.getContact/searchContacts.", "The package does not expose agents/groups/readiness helpers; those operations fail closed unless a host FreshdeskTicketingProviderClient is injected."]
metadata.implementation.sdkDecision.package "@freshworks/freshdesk"
metadata.implementation.sdkDecision.packageChecked "@freshworks/freshdesk"
metadata.implementation.sdkDecision.reason "@freshworks/freshdesk exposes Freshdesk tickets, contacts, and conversations runtime clients. Agents, groups, and current-agent readiness are not exposed by that package and require FreshdeskTicketingProviderClient injection."
metadata.implementation.sdkDecision.result "accepted-runtime-sdk"
metadata.implementation.strategy "provider-sdk-adapter"
metadata.issue 35
metadata.sdkDecision { checkedAt: "2026-06-25"; checkedVersion: "0.0.1"; license: "freshdesk"; package: "@freshworks/freshdesk"; reason: "@freshworks/freshdesk is the official Freshdesk JavaScript SDK and is used for the ticket/contact operations it exposes."; result: "accepted-runtime-sdk"; }
metadata.sdkDecision.checkedAt "2026-06-25"
metadata.sdkDecision.checkedVersion "0.0.1"
metadata.sdkDecision.license "freshdesk"
metadata.sdkDecision.package "@freshworks/freshdesk"
metadata.sdkDecision.reason "@freshworks/freshdesk is the official Freshdesk JavaScript SDK and is used for the ticket/contact operations it exposes."
metadata.sdkDecision.result "accepted-runtime-sdk"
name "Freshdesk Ticketing"
operations [{ alias: "ticket.create"; capability: "create-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "POST /api/v2/tickets"; sideEffect: true; }, { alias: "ticket.read"; capability: "read-provider-object"; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "GET /api/v2/tickets/{ticket_id}"; }, { alias: "ticket.update"; capability: "update-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "PUT /api/v2/tickets/{ticket_id}"; sideEffect: true; }, { alias: "ticket.search"; capability: "search-provider-object"; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "GET /api/v2/search/tickets"; }, { alias: "ticket.comment.create"; capability: "send"; exposesSensitiveData: true; externallyVisible: true; providerObject: "ticketComment"; providerOperation: "POST /api/v2/tickets/{ticket_id}/reply"; sideEffect: true; }, { alias: "ticket.internalNote.create"; capability: "draft"; exposesSensitiveData: true; providerObject: "internalNote"; providerOperation: "POST /api/v2/tickets/{ticket_id}/notes"; sideEffect: true; }, { alias: "customer.read"; capability: "read-provider-object"; exposesSensitiveData: true; providerObject: "customer"; providerOperation: "GET /api/v2/contacts/{contact_id}"; }, { alias: "customer.search"; capability: "search-provider-object"; exposesSensitiveData: true; providerObject: "customer"; providerOperation: "GET /api/v2/search/contacts"; }, { alias: "freshdesk.agent.read"; capability: "read-provider-object"; exposesSensitiveData: true; extension: true; providerObject: "freshdeskAgent"; providerOperation: "GET /api/v2/agents/{agent_id}"; }, { alias: "freshdesk.group.read"; capability: "read-provider-object"; extension: true; providerObject: "freshdeskGroup"; providerOperation: "GET /api/v2/groups/{group_id}"; }, { alias: "freshdesk.readiness"; capability: "read-provider-object"; exposesSensitiveData: true; extension: true; providerObject: "freshdeskAgent"; providerOperation: "GET /api/v2/agents/me"; }, { alias: "freshdesk.webhook.parse"; capability: "receive"; exposesSensitiveData: true; extension: true; providerObject: "freshdeskWebhookEvent"; providerOperation: "SDK-user configured automation webhook"; }]
packageName "@cognidesk/integration-ticketing-freshdesk"
privacyNotes ["Freshdesk tickets, conversations, notes, contacts, assignments, tags, custom fields, and automation webhook payloads can contain customer data."]
provider "freshdesk"
trustLevel "official"

freshdeskTicketingProviderManifestInput

const freshdeskTicketingProviderManifestInput: {
  capabilities: [{
     capability: "receive";
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskWebhookEvent";
        label: "Freshdesk Webhook Event";
     }];
     requiresCredential: true;
   }, {
     capability: "create-provider-object";
     changesWorkflow: true;
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskTicket";
        label: "Freshdesk Ticket";
      }, {
        kind: "freshdeskContact";
        label: "Freshdesk Contact";
      }, {
        kind: "freshdeskConversation";
        label: "Freshdesk Ticket Conversation";
     }];
     requiresCredential: true;
     sideEffect: true;
   }, {
     capability: "read-provider-object";
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskTicket";
        label: "Freshdesk Ticket";
      }, {
        kind: "freshdeskContact";
        label: "Freshdesk Contact";
      }, {
        kind: "freshdeskAgent";
        label: "Freshdesk Agent";
      }, {
        kind: "freshdeskGroup";
        label: "Freshdesk Group";
     }];
     requiresCredential: true;
   }, {
     capability: "update-provider-object";
     changesWorkflow: true;
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskTicket";
        label: "Freshdesk Ticket";
      }, {
        kind: "freshdeskContact";
        label: "Freshdesk Contact";
     }];
     requiresCredential: true;
     sideEffect: true;
   }, {
     capability: "search-provider-object";
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskTicket";
        label: "Freshdesk Ticket";
      }, {
        kind: "freshdeskContact";
        label: "Freshdesk Contact";
     }];
     requiresCredential: true;
   }, {
     capability: "handoff";
     changesWorkflow: true;
     exposesSensitiveData: true;
     providerObjects: [{
        kind: "freshdeskTicket";
        label: "Freshdesk Ticket";
      }, {
        kind: "freshdeskConversation";
        label: "Freshdesk Ticket Conversation";
     }];
     requiresCredential: true;
     sideEffect: true;
  }];
  category: "ticketing";
  channelAudiences: ["customer-facing", "internal-support", "mixed"];
  coverage: {
     evidence: [{
        label: "Freshdesk API v2 reference";
        url: "https://developers.freshdesk.com/api/";
      }, {
        label: "Freshworks Freshdesk SDK";
        url: "https://www.npmjs.com/package/@freshworks/freshdesk";
      }, {
        label: "Freshworks API SDK";
        url: "https://www.npmjs.com/package/@freshworks/api-sdk";
      }, {
        label: "Freshworks API SDK repository";
        url: "https://github.com/freshworks/freshworks-api-sdk";
      }, {
        label: "Freshworks API SDK announcement";
        url: "https://community.freshworks.dev/t/freshworks-api-sdk-for-node-js/5232";
     }];
     notes: ["Implementation uses the official @freshworks/freshdesk JavaScript SDK by default when domain and apiKey are configured.", "Operations not exposed by the official SDK, such as agents, groups, and current-agent readiness, require an injected FreshdeskTicketingProviderClient instead of a package-owned REST fallback.", "Coverage is limited to Freshdesk v2 tickets, contacts, conversations, replies, notes, handoff updates, agents, groups, current-agent readiness, and SDK-user shared-secret webhook validation."];
     scope: "provider-api-subset";
  };
  credentialRequirements: [{
     id: "freshdesk-domain";
     label: "Freshdesk domain";
     required: true;
   }, {
     id: "freshdesk-api-key";
     label: "Freshdesk API key";
     metadata: {
        privilegeGuidance: "Freshdesk API keys are governed by the authenticated agent's Freshdesk role and ticket permissions.";
        scopeKind: "internal-capability-labels";
     };
     required: true;
     scopes: ["read", "write"];
   }, {
     id: "freshdesk-webhook-secret";
     label: "Freshdesk webhook shared secret";
     required: false;
  }];
  directions: ["receive-only", "send-only", "bidirectional"];
  id: "ticketing.freshdesk";
  limitations: ["Ticket forms, required fields, statuses, products, groups, SLAs, automations, and agent permissions are SDK-user configuration."];
  maintainers: [{
     name: "Cognidesk";
     type: "official";
  }];
  metadata: {
     freshdeskV2Coverage: {
        allowlistedOperations: readonly ["tickets.create", "tickets.read", "tickets.update", "tickets.search", "reply.create", "note.create", "contacts.read", "contacts.search", "agents.read", "groups.read", "agents.me", "automation_webhook.parse"];
        source: "Freshdesk API v2";
     };
     implementation: {
        defaultClientPolicy: "use-official-freshworks-freshdesk-sdk-when-domain-and-apiKey-are-configured";
        delegatedOperationTarget: "official Freshdesk SDK for covered operations or injected Freshdesk provider client for SDK gaps";
        packageOwnedRestClient: false;
        packageOwnedRestFallback: false;
        providerClient: "FreshdeskTicketingProviderClient";
        providerClientInterface: "FreshdeskTicketingProviderClient";
        providerClientOverride: true;
        providerSdkPackage: "@freshworks/freshdesk";
        rawClientEscapeHatch: "FreshdeskTicketingClient.providerClient";
        rawClientOverride: true;
        runtimePackage: "@cognidesk/integration-ticketing-freshdesk";
        sdkDecision: {
           checkedAt: "2026-06-25";
           checkedVersion: "0.0.1";
           license: "freshdesk";
           notes: readonly ["@freshworks/freshdesk 0.0.1 exposes tickets.createTicket/getTicket/updateTicket/searchTicket/replyTicket/addNotes and contacts.getContact/searchContacts.", "The package does not expose agents/groups/readiness helpers; those operations fail closed unless a host FreshdeskTicketingProviderClient is injected."];
           package: "@freshworks/freshdesk";
           packageChecked: "@freshworks/freshdesk";
           reason: "@freshworks/freshdesk exposes Freshdesk tickets, contacts, and conversations runtime clients. Agents, groups, and current-agent readiness are not exposed by that package and require FreshdeskTicketingProviderClient injection.";
           result: "accepted-runtime-sdk";
        };
        strategy: "provider-sdk-adapter";
     };
     issue: 35;
     sdkDecision: {
        checkedAt: "2026-06-25";
        checkedVersion: "0.0.1";
        license: "freshdesk";
        package: "@freshworks/freshdesk";
        reason: "@freshworks/freshdesk is the official Freshdesk JavaScript SDK and is used for the ticket/contact operations it exposes.";
        result: "accepted-runtime-sdk";
     };
  };
  name: "Freshdesk Ticketing";
  operations: [{
     alias: "ticket.create";
     capability: "create-provider-object";
     changesWorkflow: true;
     exposesSensitiveData: true;
     providerObject: "ticket";
     providerOperation: "POST /api/v2/tickets";
     sideEffect: true;
   }, {
     alias: "ticket.read";
     capability: "read-provider-object";
     exposesSensitiveData: true;
     providerObject: "ticket";
     providerOperation: "GET /api/v2/tickets/{ticket_id}";
   }, {
     alias: "ticket.update";
     capability: "update-provider-object";
     changesWorkflow: true;
     exposesSensitiveData: true;
     providerObject: "ticket";
     providerOperation: "PUT /api/v2/tickets/{ticket_id}";
     sideEffect: true;
   }, {
     alias: "ticket.search";
     capability: "search-provider-object";
     exposesSensitiveData: true;
     providerObject: "ticket";
     providerOperation: "GET /api/v2/search/tickets";
   }, {
     alias: "ticket.comment.create";
     capability: "send";
     exposesSensitiveData: true;
     externallyVisible: true;
     providerObject: "ticketComment";
     providerOperation: "POST /api/v2/tickets/{ticket_id}/reply";
     sideEffect: true;
   }, {
     alias: "ticket.internalNote.create";
     capability: "draft";
     exposesSensitiveData: true;
     providerObject: "internalNote";
     providerOperation: "POST /api/v2/tickets/{ticket_id}/notes";
     sideEffect: true;
   }, {
     alias: "customer.read";
     capability: "read-provider-object";
     exposesSensitiveData: true;
     providerObject: "customer";
     providerOperation: "GET /api/v2/contacts/{contact_id}";
   }, {
     alias: "customer.search";
     capability: "search-provider-object";
     exposesSensitiveData: true;
     providerObject: "customer";
     providerOperation: "GET /api/v2/search/contacts";
   }, {
     alias: "freshdesk.agent.read";
     capability: "read-provider-object";
     exposesSensitiveData: true;
     extension: true;
     providerObject: "freshdeskAgent";
     providerOperation: "GET /api/v2/agents/{agent_id}";
   }, {
     alias: "freshdesk.group.read";
     capability: "read-provider-object";
     extension: true;
     providerObject: "freshdeskGroup";
     providerOperation: "GET /api/v2/groups/{group_id}";
   }, {
     alias: "freshdesk.readiness";
     capability: "read-provider-object";
     exposesSensitiveData: true;
     extension: true;
     providerObject: "freshdeskAgent";
     providerOperation: "GET /api/v2/agents/me";
   }, {
     alias: "freshdesk.webhook.parse";
     capability: "receive";
     exposesSensitiveData: true;
     extension: true;
     providerObject: "freshdeskWebhookEvent";
     providerOperation: "SDK-user configured automation webhook";
  }];
  packageName: "@cognidesk/integration-ticketing-freshdesk";
  privacyNotes: ["Freshdesk tickets, conversations, notes, contacts, assignments, tags, custom fields, and automation webhook payloads can contain customer data."];
  provider: "freshdesk";
  trustLevel: "official";
};

Type Declaration

Name Type
capabilities [{ capability: "receive"; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskWebhookEvent"; label: "Freshdesk Webhook Event"; }]; requiresCredential: true; }, { capability: "create-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskTicket"; label: "Freshdesk Ticket"; }, { kind: "freshdeskContact"; label: "Freshdesk Contact"; }, { kind: "freshdeskConversation"; label: "Freshdesk Ticket Conversation"; }]; requiresCredential: true; sideEffect: true; }, { capability: "read-provider-object"; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskTicket"; label: "Freshdesk Ticket"; }, { kind: "freshdeskContact"; label: "Freshdesk Contact"; }, { kind: "freshdeskAgent"; label: "Freshdesk Agent"; }, { kind: "freshdeskGroup"; label: "Freshdesk Group"; }]; requiresCredential: true; }, { capability: "update-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskTicket"; label: "Freshdesk Ticket"; }, { kind: "freshdeskContact"; label: "Freshdesk Contact"; }]; requiresCredential: true; sideEffect: true; }, { capability: "search-provider-object"; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskTicket"; label: "Freshdesk Ticket"; }, { kind: "freshdeskContact"; label: "Freshdesk Contact"; }]; requiresCredential: true; }, { capability: "handoff"; changesWorkflow: true; exposesSensitiveData: true; providerObjects: [{ kind: "freshdeskTicket"; label: "Freshdesk Ticket"; }, { kind: "freshdeskConversation"; label: "Freshdesk Ticket Conversation"; }]; requiresCredential: true; sideEffect: true; }]
category "ticketing"
channelAudiences ["customer-facing", "internal-support", "mixed"]
coverage { evidence: [{ label: "Freshdesk API v2 reference"; url: "https://developers.freshdesk.com/api/"; }, { label: "Freshworks Freshdesk SDK"; url: "https://www.npmjs.com/package/@freshworks/freshdesk"; }, { label: "Freshworks API SDK"; url: "https://www.npmjs.com/package/@freshworks/api-sdk"; }, { label: "Freshworks API SDK repository"; url: "https://github.com/freshworks/freshworks-api-sdk"; }, { label: "Freshworks API SDK announcement"; url: "https://community.freshworks.dev/t/freshworks-api-sdk-for-node-js/5232"; }]; notes: ["Implementation uses the official @freshworks/freshdesk JavaScript SDK by default when domain and apiKey are configured.", "Operations not exposed by the official SDK, such as agents, groups, and current-agent readiness, require an injected FreshdeskTicketingProviderClient instead of a package-owned REST fallback.", "Coverage is limited to Freshdesk v2 tickets, contacts, conversations, replies, notes, handoff updates, agents, groups, current-agent readiness, and SDK-user shared-secret webhook validation."]; scope: "provider-api-subset"; }
coverage.evidence [{ label: "Freshdesk API v2 reference"; url: "https://developers.freshdesk.com/api/"; }, { label: "Freshworks Freshdesk SDK"; url: "https://www.npmjs.com/package/@freshworks/freshdesk"; }, { label: "Freshworks API SDK"; url: "https://www.npmjs.com/package/@freshworks/api-sdk"; }, { label: "Freshworks API SDK repository"; url: "https://github.com/freshworks/freshworks-api-sdk"; }, { label: "Freshworks API SDK announcement"; url: "https://community.freshworks.dev/t/freshworks-api-sdk-for-node-js/5232"; }]
coverage.notes ["Implementation uses the official @freshworks/freshdesk JavaScript SDK by default when domain and apiKey are configured.", "Operations not exposed by the official SDK, such as agents, groups, and current-agent readiness, require an injected FreshdeskTicketingProviderClient instead of a package-owned REST fallback.", "Coverage is limited to Freshdesk v2 tickets, contacts, conversations, replies, notes, handoff updates, agents, groups, current-agent readiness, and SDK-user shared-secret webhook validation."]
coverage.scope "provider-api-subset"
credentialRequirements [{ id: "freshdesk-domain"; label: "Freshdesk domain"; required: true; }, { id: "freshdesk-api-key"; label: "Freshdesk API key"; metadata: { privilegeGuidance: "Freshdesk API keys are governed by the authenticated agent's Freshdesk role and ticket permissions."; scopeKind: "internal-capability-labels"; }; required: true; scopes: ["read", "write"]; }, { id: "freshdesk-webhook-secret"; label: "Freshdesk webhook shared secret"; required: false; }]
directions ["receive-only", "send-only", "bidirectional"]
id "ticketing.freshdesk"
limitations ["Ticket forms, required fields, statuses, products, groups, SLAs, automations, and agent permissions are SDK-user configuration."]
maintainers [{ name: "Cognidesk"; type: "official"; }]
metadata { freshdeskV2Coverage: { allowlistedOperations: readonly ["tickets.create", "tickets.read", "tickets.update", "tickets.search", "reply.create", "note.create", "contacts.read", "contacts.search", "agents.read", "groups.read", "agents.me", "automation_webhook.parse"]; source: "Freshdesk API v2"; }; implementation: { defaultClientPolicy: "use-official-freshworks-freshdesk-sdk-when-domain-and-apiKey-are-configured"; delegatedOperationTarget: "official Freshdesk SDK for covered operations or injected Freshdesk provider client for SDK gaps"; packageOwnedRestClient: false; packageOwnedRestFallback: false; providerClient: "FreshdeskTicketingProviderClient"; providerClientInterface: "FreshdeskTicketingProviderClient"; providerClientOverride: true; providerSdkPackage: "@freshworks/freshdesk"; rawClientEscapeHatch: "FreshdeskTicketingClient.providerClient"; rawClientOverride: true; runtimePackage: "@cognidesk/integration-ticketing-freshdesk"; sdkDecision: { checkedAt: "2026-06-25"; checkedVersion: "0.0.1"; license: "freshdesk"; notes: readonly ["@freshworks/freshdesk 0.0.1 exposes tickets.createTicket/getTicket/updateTicket/searchTicket/replyTicket/addNotes and contacts.getContact/searchContacts.", "The package does not expose agents/groups/readiness helpers; those operations fail closed unless a host FreshdeskTicketingProviderClient is injected."]; package: "@freshworks/freshdesk"; packageChecked: "@freshworks/freshdesk"; reason: "@freshworks/freshdesk exposes Freshdesk tickets, contacts, and conversations runtime clients. Agents, groups, and current-agent readiness are not exposed by that package and require FreshdeskTicketingProviderClient injection."; result: "accepted-runtime-sdk"; }; strategy: "provider-sdk-adapter"; }; issue: 35; sdkDecision: { checkedAt: "2026-06-25"; checkedVersion: "0.0.1"; license: "freshdesk"; package: "@freshworks/freshdesk"; reason: "@freshworks/freshdesk is the official Freshdesk JavaScript SDK and is used for the ticket/contact operations it exposes."; result: "accepted-runtime-sdk"; }; }
metadata.freshdeskV2Coverage { allowlistedOperations: readonly ["tickets.create", "tickets.read", "tickets.update", "tickets.search", "reply.create", "note.create", "contacts.read", "contacts.search", "agents.read", "groups.read", "agents.me", "automation_webhook.parse"]; source: "Freshdesk API v2"; }
metadata.freshdeskV2Coverage.allowlistedOperations readonly ["tickets.create", "tickets.read", "tickets.update", "tickets.search", "reply.create", "note.create", "contacts.read", "contacts.search", "agents.read", "groups.read", "agents.me", "automation_webhook.parse"]
metadata.freshdeskV2Coverage.source "Freshdesk API v2"
metadata.implementation { defaultClientPolicy: "use-official-freshworks-freshdesk-sdk-when-domain-and-apiKey-are-configured"; delegatedOperationTarget: "official Freshdesk SDK for covered operations or injected Freshdesk provider client for SDK gaps"; packageOwnedRestClient: false; packageOwnedRestFallback: false; providerClient: "FreshdeskTicketingProviderClient"; providerClientInterface: "FreshdeskTicketingProviderClient"; providerClientOverride: true; providerSdkPackage: "@freshworks/freshdesk"; rawClientEscapeHatch: "FreshdeskTicketingClient.providerClient"; rawClientOverride: true; runtimePackage: "@cognidesk/integration-ticketing-freshdesk"; sdkDecision: { checkedAt: "2026-06-25"; checkedVersion: "0.0.1"; license: "freshdesk"; notes: readonly ["@freshworks/freshdesk 0.0.1 exposes tickets.createTicket/getTicket/updateTicket/searchTicket/replyTicket/addNotes and contacts.getContact/searchContacts.", "The package does not expose agents/groups/readiness helpers; those operations fail closed unless a host FreshdeskTicketingProviderClient is injected."]; package: "@freshworks/freshdesk"; packageChecked: "@freshworks/freshdesk"; reason: "@freshworks/freshdesk exposes Freshdesk tickets, contacts, and conversations runtime clients. Agents, groups, and current-agent readiness are not exposed by that package and require FreshdeskTicketingProviderClient injection."; result: "accepted-runtime-sdk"; }; strategy: "provider-sdk-adapter"; }
metadata.implementation.defaultClientPolicy "use-official-freshworks-freshdesk-sdk-when-domain-and-apiKey-are-configured"
metadata.implementation.delegatedOperationTarget "official Freshdesk SDK for covered operations or injected Freshdesk provider client for SDK gaps"
metadata.implementation.packageOwnedRestClient false
metadata.implementation.packageOwnedRestFallback false
metadata.implementation.providerClient "FreshdeskTicketingProviderClient"
metadata.implementation.providerClientInterface "FreshdeskTicketingProviderClient"
metadata.implementation.providerClientOverride true
metadata.implementation.providerSdkPackage "@freshworks/freshdesk"
metadata.implementation.rawClientEscapeHatch "FreshdeskTicketingClient.providerClient"
metadata.implementation.rawClientOverride true
metadata.implementation.runtimePackage "@cognidesk/integration-ticketing-freshdesk"
metadata.implementation.sdkDecision { checkedAt: "2026-06-25"; checkedVersion: "0.0.1"; license: "freshdesk"; notes: readonly ["@freshworks/freshdesk 0.0.1 exposes tickets.createTicket/getTicket/updateTicket/searchTicket/replyTicket/addNotes and contacts.getContact/searchContacts.", "The package does not expose agents/groups/readiness helpers; those operations fail closed unless a host FreshdeskTicketingProviderClient is injected."]; package: "@freshworks/freshdesk"; packageChecked: "@freshworks/freshdesk"; reason: "@freshworks/freshdesk exposes Freshdesk tickets, contacts, and conversations runtime clients. Agents, groups, and current-agent readiness are not exposed by that package and require FreshdeskTicketingProviderClient injection."; result: "accepted-runtime-sdk"; }
metadata.implementation.sdkDecision.checkedAt "2026-06-25"
metadata.implementation.sdkDecision.checkedVersion "0.0.1"
metadata.implementation.sdkDecision.license "freshdesk"
metadata.implementation.sdkDecision.notes readonly ["@freshworks/freshdesk 0.0.1 exposes tickets.createTicket/getTicket/updateTicket/searchTicket/replyTicket/addNotes and contacts.getContact/searchContacts.", "The package does not expose agents/groups/readiness helpers; those operations fail closed unless a host FreshdeskTicketingProviderClient is injected."]
metadata.implementation.sdkDecision.package "@freshworks/freshdesk"
metadata.implementation.sdkDecision.packageChecked "@freshworks/freshdesk"
metadata.implementation.sdkDecision.reason "@freshworks/freshdesk exposes Freshdesk tickets, contacts, and conversations runtime clients. Agents, groups, and current-agent readiness are not exposed by that package and require FreshdeskTicketingProviderClient injection."
metadata.implementation.sdkDecision.result "accepted-runtime-sdk"
metadata.implementation.strategy "provider-sdk-adapter"
metadata.issue 35
metadata.sdkDecision { checkedAt: "2026-06-25"; checkedVersion: "0.0.1"; license: "freshdesk"; package: "@freshworks/freshdesk"; reason: "@freshworks/freshdesk is the official Freshdesk JavaScript SDK and is used for the ticket/contact operations it exposes."; result: "accepted-runtime-sdk"; }
metadata.sdkDecision.checkedAt "2026-06-25"
metadata.sdkDecision.checkedVersion "0.0.1"
metadata.sdkDecision.license "freshdesk"
metadata.sdkDecision.package "@freshworks/freshdesk"
metadata.sdkDecision.reason "@freshworks/freshdesk is the official Freshdesk JavaScript SDK and is used for the ticket/contact operations it exposes."
metadata.sdkDecision.result "accepted-runtime-sdk"
name "Freshdesk Ticketing"
operations [{ alias: "ticket.create"; capability: "create-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "POST /api/v2/tickets"; sideEffect: true; }, { alias: "ticket.read"; capability: "read-provider-object"; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "GET /api/v2/tickets/{ticket_id}"; }, { alias: "ticket.update"; capability: "update-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "PUT /api/v2/tickets/{ticket_id}"; sideEffect: true; }, { alias: "ticket.search"; capability: "search-provider-object"; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "GET /api/v2/search/tickets"; }, { alias: "ticket.comment.create"; capability: "send"; exposesSensitiveData: true; externallyVisible: true; providerObject: "ticketComment"; providerOperation: "POST /api/v2/tickets/{ticket_id}/reply"; sideEffect: true; }, { alias: "ticket.internalNote.create"; capability: "draft"; exposesSensitiveData: true; providerObject: "internalNote"; providerOperation: "POST /api/v2/tickets/{ticket_id}/notes"; sideEffect: true; }, { alias: "customer.read"; capability: "read-provider-object"; exposesSensitiveData: true; providerObject: "customer"; providerOperation: "GET /api/v2/contacts/{contact_id}"; }, { alias: "customer.search"; capability: "search-provider-object"; exposesSensitiveData: true; providerObject: "customer"; providerOperation: "GET /api/v2/search/contacts"; }, { alias: "freshdesk.agent.read"; capability: "read-provider-object"; exposesSensitiveData: true; extension: true; providerObject: "freshdeskAgent"; providerOperation: "GET /api/v2/agents/{agent_id}"; }, { alias: "freshdesk.group.read"; capability: "read-provider-object"; extension: true; providerObject: "freshdeskGroup"; providerOperation: "GET /api/v2/groups/{group_id}"; }, { alias: "freshdesk.readiness"; capability: "read-provider-object"; exposesSensitiveData: true; extension: true; providerObject: "freshdeskAgent"; providerOperation: "GET /api/v2/agents/me"; }, { alias: "freshdesk.webhook.parse"; capability: "receive"; exposesSensitiveData: true; extension: true; providerObject: "freshdeskWebhookEvent"; providerOperation: "SDK-user configured automation webhook"; }]
packageName "@cognidesk/integration-ticketing-freshdesk"
privacyNotes ["Freshdesk tickets, conversations, notes, contacts, assignments, tags, custom fields, and automation webhook payloads can contain customer data."]
provider "freshdesk"
trustLevel "official"