integrations/ticketing/kustomer/dist/manifest¶
Variables¶
kustomerHostClientSupportSlice¶
const kustomerHostClientSupportSlice: {
allowedOperations: readonly [{
alias: "ticket.create";
id: "conversations.create";
source: "provider-rest-adapter";
target: "restAdapter.createConversation";
}, {
alias: "ticket.read";
id: "conversations.read";
source: "provider-rest-adapter";
target: "restAdapter.getConversation";
}, {
alias: "ticket.update";
id: "conversations.update";
source: "provider-rest-adapter";
target: "restAdapter.updateConversation";
}, {
alias: "ticket.search";
id: "conversations.list";
source: "provider-rest-adapter";
target: "restAdapter.listConversations";
}, {
alias: "kustomer.message.list";
id: "messages.list";
source: "provider-rest-adapter";
target: "restAdapter.listMessages";
}, {
alias: "ticket.comment.create";
id: "messages.create";
source: "provider-rest-adapter";
target: "restAdapter.createMessage";
}, {
alias: "kustomer.customerDraft.create";
id: "customer_drafts.create";
source: "provider-rest-adapter";
target: "restAdapter.createCustomerDraft";
}, {
alias: "kustomer.readiness";
id: "readiness";
source: "provider-rest-adapter";
target: "restAdapter.readiness";
}];
implementationStrategy: "provider-rest-adapter";
sdkDecision: {
candidates: (
| "@kustomer/apps-server"
| "@kustomer/apps-client"
| "@kustomer/apps-server-sdk"
| "@kustomer/chat-react-native")[];
checkedAt: "2026-06-25";
reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package.";
rejectedSdkPackages: readonly [{
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-server";
reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client.";
}, {
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-client";
reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations.";
}, {
checkedVersion: "0.0.60";
license: "not-declared";
packageName: "@kustomer/apps-server-sdk";
reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface.";
}, {
checkedVersion: "5.3.4";
license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/";
packageName: "@kustomer/chat-react-native";
reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client.";
}];
result: "no-official-maintained-ticketing-rest-sdk";
verdict: "no-official-sdk-rest-adapter";
};
};
Type Declaration¶
kustomerProviderRestAdapterException¶
const kustomerProviderRestAdapterException: {
checkedAt: "2026-06-25";
defaultClientPolicy: "built-in-kustomer-rest-adapter-with-access-token";
reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package.";
rejectedSdkPackages: readonly [{
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-server";
reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client.";
}, {
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-client";
reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations.";
}, {
checkedVersion: "0.0.60";
license: "not-declared";
packageName: "@kustomer/apps-server-sdk";
reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface.";
}, {
checkedVersion: "5.3.4";
license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/";
packageName: "@kustomer/chat-react-native";
reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client.";
}];
result: "no-official-maintained-ticketing-rest-sdk";
typedClientOverride: "KustomerTicketingProviderClient";
};
Type Declaration¶
kustomerRejectedSdkPackages¶
const kustomerRejectedSdkPackages: readonly [{
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-server";
reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client.";
}, {
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-client";
reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations.";
}, {
checkedVersion: "0.0.60";
license: "not-declared";
packageName: "@kustomer/apps-server-sdk";
reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface.";
}, {
checkedVersion: "5.3.4";
license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/";
packageName: "@kustomer/chat-react-native";
reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client.";
}];
kustomerSdkDecision¶
const kustomerSdkDecision: {
candidates: (
| "@kustomer/apps-server"
| "@kustomer/apps-client"
| "@kustomer/apps-server-sdk"
| "@kustomer/chat-react-native")[];
checkedAt: "2026-06-25";
reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package.";
rejectedSdkPackages: readonly [{
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-server";
reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client.";
}, {
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-client";
reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations.";
}, {
checkedVersion: "0.0.60";
license: "not-declared";
packageName: "@kustomer/apps-server-sdk";
reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface.";
}, {
checkedVersion: "5.3.4";
license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/";
packageName: "@kustomer/chat-react-native";
reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client.";
}];
result: "no-official-maintained-ticketing-rest-sdk";
verdict: "no-official-sdk-rest-adapter";
};
Type Declaration¶
kustomerTicketingProviderManifest¶
const kustomerTicketingProviderManifest: {
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: "create-provider-object";
changesWorkflow: true;
exposesSensitiveData: true;
providerObjects: [{
kind: "kustomerConversation";
label: "Kustomer Conversation";
}, {
kind: "kustomerMessage";
label: "Kustomer Message";
}, {
kind: "kustomerDraft";
label: "Kustomer Draft";
}];
requiresCredential: true;
sideEffect: true;
}, {
capability: "read-provider-object";
exposesSensitiveData: true;
providerObjects: [{
kind: "kustomerConversation";
label: "Kustomer Conversation";
}, {
kind: "kustomerMessage";
label: "Kustomer Message";
}];
requiresCredential: true;
}, {
capability: "update-provider-object";
changesWorkflow: true;
exposesSensitiveData: true;
providerObjects: [{
kind: "kustomerConversation";
label: "Kustomer Conversation";
}];
requiresCredential: true;
sideEffect: true;
}, {
capability: "search-provider-object";
exposesSensitiveData: true;
providerObjects: [{
kind: "kustomerConversation";
label: "Kustomer Conversation";
}];
requiresCredential: true;
}, {
capability: "handoff";
changesWorkflow: true;
exposesSensitiveData: true;
providerObjects: [{
kind: "kustomerConversation";
label: "Kustomer Conversation";
}, {
kind: "kustomerMessage";
label: "Kustomer Message";
}, {
kind: "kustomerDraft";
label: "Kustomer Draft";
}];
requiresCredential: true;
sideEffect: true;
}];
category: "ticketing";
channelAudiences: ["customer-facing", "internal-support", "mixed"];
coverage: {
evidence: [{
label: "Kustomer developer portal";
url: "https://developer.kustomer.com/";
}, {
label: "Kustomer REST APIs portal";
url: "https://developer.kustomer.com/kustomer-api-docs/reference";
}, {
label: "@kustomer/apps-server npm package";
url: "https://www.npmjs.com/package/@kustomer/apps-server";
}, {
label: "@kustomer/apps-server-sdk npm package";
url: "https://www.npmjs.com/package/@kustomer/apps-server-sdk";
}, {
label: "@kustomer/chat-react-native npm package";
url: "https://www.npmjs.com/package/@kustomer/chat-react-native";
}, {
label: "Kustomer API keys";
url: "https://help.kustomer.com/api-keys-SJs5YTIWX";
}, {
label: "Kustomer create message";
url: "https://developer.kustomer.com/kustomer-api-docs/reference/createmessage";
}];
notes: ["Kustomer's developer surface separates REST APIs for backend systems from Apps Platform and Chat SDK packages.", "Support workflow calls use the built-in Kustomer REST adapter when baseUrl and accessToken/apiKey are configured.", "A host-provided KustomerTicketingProviderClient can still override the built-in REST adapter.", "The package declares an explicit REST-adapter exception because the checked Kustomer npm SDK packages do not provide a suitable backend support/ticketing REST client.", "Coverage is limited to Kustomer conversation create/read/update/list, message list/create, customer draft creation, and org readiness for support workflows.", "This package intentionally does not copy the old generated full Kustomer public API clone."];
scope: "support-workflow-subset";
};
credentialRequirements: [{
id: "kustomer-base-url";
label: "Kustomer API base URL";
required: false;
}, {
id: "kustomer-api-access";
label: "Kustomer API access token or API key";
metadata: {
defaultClientPolicy: "built-in-rest-adapter";
};
required: true;
}, {
id: "kustomer-api-permissions";
label: "Kustomer API permissions";
metadata: {
privilegeGuidance: "Kustomer API keys are governed by roles and API permissions; these strings are provider permission labels, not OAuth scopes.";
scopeKind: "provider-permission-labels";
};
required: true;
scopes: ["org.user.conversation.read", "org.user.conversation.write", "org.permission.conversation.create", "org.user.message.read", "org.user.message.write", "org.permission.message.create", "org.permission.draft.create", "org.admin.user.read"];
}];
directions: ["bidirectional"];
id: "ticketing.kustomer";
limitations: ["REST-adapter or host-client configuration owns auth, tenancy, pagination, retries, rate limits, and provider response normalization policy.", "Conversation model, queues, teams, custom objects, and message visibility are host-client configuration."];
maintainers: [{
name: "Cognidesk";
type: "official";
}];
metadata: {
implementation: {
allowedOperations: readonly [{
alias: "ticket.create";
id: "conversations.create";
source: "provider-rest-adapter";
target: "restAdapter.createConversation";
}, {
alias: "ticket.read";
id: "conversations.read";
source: "provider-rest-adapter";
target: "restAdapter.getConversation";
}, {
alias: "ticket.update";
id: "conversations.update";
source: "provider-rest-adapter";
target: "restAdapter.updateConversation";
}, {
alias: "ticket.search";
id: "conversations.list";
source: "provider-rest-adapter";
target: "restAdapter.listConversations";
}, {
alias: "kustomer.message.list";
id: "messages.list";
source: "provider-rest-adapter";
target: "restAdapter.listMessages";
}, {
alias: "ticket.comment.create";
id: "messages.create";
source: "provider-rest-adapter";
target: "restAdapter.createMessage";
}, {
alias: "kustomer.customerDraft.create";
id: "customer_drafts.create";
source: "provider-rest-adapter";
target: "restAdapter.createCustomerDraft";
}, {
alias: "kustomer.readiness";
id: "readiness";
source: "provider-rest-adapter";
target: "restAdapter.readiness";
}];
implementationStrategy: "provider-rest-adapter";
sdkDecision: {
candidates: (
| "@kustomer/apps-server"
| "@kustomer/apps-client"
| "@kustomer/apps-server-sdk"
| "@kustomer/chat-react-native")[];
checkedAt: "2026-06-25";
reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package.";
rejectedSdkPackages: readonly [{
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-server";
reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client.";
}, {
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-client";
reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations.";
}, {
checkedVersion: "0.0.60";
license: "not-declared";
packageName: "@kustomer/apps-server-sdk";
reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface.";
}, {
checkedVersion: "5.3.4";
license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/";
packageName: "@kustomer/chat-react-native";
reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client.";
}];
result: "no-official-maintained-ticketing-rest-sdk";
verdict: "no-official-sdk-rest-adapter";
};
};
implementationStrategy: "provider-rest-adapter";
issue: 35;
manifestOnlySafe: true;
providerClient: {
defaultClientPolicy: "built-in-rest-adapter";
importPolicy: "runtime-override";
interface: "KustomerTicketingProviderClient";
package: "optional-override";
};
providerRestAdapterException: {
checkedAt: "2026-06-25";
defaultClientPolicy: "built-in-kustomer-rest-adapter-with-access-token";
reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package.";
rejectedSdkPackages: readonly [{
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-server";
reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client.";
}, {
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-client";
reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations.";
}, {
checkedVersion: "0.0.60";
license: "not-declared";
packageName: "@kustomer/apps-server-sdk";
reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface.";
}, {
checkedVersion: "5.3.4";
license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/";
packageName: "@kustomer/chat-react-native";
reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client.";
}];
result: "no-official-maintained-ticketing-rest-sdk";
typedClientOverride: "KustomerTicketingProviderClient";
};
sdkDecision: {
candidates: (
| "@kustomer/apps-server"
| "@kustomer/apps-client"
| "@kustomer/apps-server-sdk"
| "@kustomer/chat-react-native")[];
checkedAt: "2026-06-25";
reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package.";
rejectedSdkPackages: readonly [{
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-server";
reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client.";
}, {
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-client";
reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations.";
}, {
checkedVersion: "0.0.60";
license: "not-declared";
packageName: "@kustomer/apps-server-sdk";
reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface.";
}, {
checkedVersion: "5.3.4";
license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/";
packageName: "@kustomer/chat-react-native";
reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client.";
}];
result: "no-official-maintained-ticketing-rest-sdk";
verdict: "no-official-sdk-rest-adapter";
};
};
name: "Kustomer";
operations: [{
alias: "ticket.create";
capability: "create-provider-object";
changesWorkflow: true;
exposesSensitiveData: true;
providerObject: "ticket";
providerOperation: "POST /v1/conversations";
sideEffect: true;
}, {
alias: "ticket.read";
capability: "read-provider-object";
exposesSensitiveData: true;
providerObject: "ticket";
providerOperation: "GET /v1/conversations/{conversation_id}";
}, {
alias: "ticket.update";
capability: "update-provider-object";
changesWorkflow: true;
exposesSensitiveData: true;
providerObject: "ticket";
providerOperation: "PATCH /v1/conversations/{conversation_id}";
sideEffect: true;
}, {
alias: "ticket.search";
capability: "search-provider-object";
exposesSensitiveData: true;
providerObject: "ticket";
providerOperation: "GET /v1/conversations";
}, {
alias: "ticket.comment.create";
capability: "send";
exposesSensitiveData: true;
externallyVisible: true;
providerObject: "ticketComment";
providerOperation: "POST /v1/messages";
sideEffect: true;
}, {
alias: "kustomer.message.list";
capability: "read-provider-object";
exposesSensitiveData: true;
extension: true;
providerObject: "kustomerMessage";
providerOperation: "GET /v1/messages";
}, {
alias: "kustomer.customerDraft.create";
capability: "draft";
exposesSensitiveData: true;
extension: true;
providerObject: "kustomerDraft";
providerOperation: "POST /v1/customers/{customer_id}/drafts";
sideEffect: true;
}, {
alias: "kustomer.readiness";
capability: "read-provider-object";
exposesSensitiveData: true;
extension: true;
providerObject: "kustomerUser";
providerOperation: "GET /v1/users/current";
}];
packageName: "@cognidesk/integration-ticketing-kustomer";
privacyNotes: ["Kustomer conversations can include customer timeline data, messages, notes, tags, queue status, and custom objects."];
provider: "kustomer";
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: "create-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObjects: [{ kind: "kustomerConversation"; label: "Kustomer Conversation"; }, { kind: "kustomerMessage"; label: "Kustomer Message"; }, { kind: "kustomerDraft"; label: "Kustomer Draft"; }]; requiresCredential: true; sideEffect: true; }, { capability: "read-provider-object"; exposesSensitiveData: true; providerObjects: [{ kind: "kustomerConversation"; label: "Kustomer Conversation"; }, { kind: "kustomerMessage"; label: "Kustomer Message"; }]; requiresCredential: true; }, { capability: "update-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObjects: [{ kind: "kustomerConversation"; label: "Kustomer Conversation"; }]; requiresCredential: true; sideEffect: true; }, { capability: "search-provider-object"; exposesSensitiveData: true; providerObjects: [{ kind: "kustomerConversation"; label: "Kustomer Conversation"; }]; requiresCredential: true; }, { capability: "handoff"; changesWorkflow: true; exposesSensitiveData: true; providerObjects: [{ kind: "kustomerConversation"; label: "Kustomer Conversation"; }, { kind: "kustomerMessage"; label: "Kustomer Message"; }, { kind: "kustomerDraft"; label: "Kustomer Draft"; }]; requiresCredential: true; sideEffect: true; }] |
category |
"ticketing" |
channelAudiences |
["customer-facing", "internal-support", "mixed"] |
coverage |
{ evidence: [{ label: "Kustomer developer portal"; url: "https://developer.kustomer.com/"; }, { label: "Kustomer REST APIs portal"; url: "https://developer.kustomer.com/kustomer-api-docs/reference"; }, { label: "@kustomer/apps-server npm package"; url: "https://www.npmjs.com/package/@kustomer/apps-server"; }, { label: "@kustomer/apps-server-sdk npm package"; url: "https://www.npmjs.com/package/@kustomer/apps-server-sdk"; }, { label: "@kustomer/chat-react-native npm package"; url: "https://www.npmjs.com/package/@kustomer/chat-react-native"; }, { label: "Kustomer API keys"; url: "https://help.kustomer.com/api-keys-SJs5YTIWX"; }, { label: "Kustomer create message"; url: "https://developer.kustomer.com/kustomer-api-docs/reference/createmessage"; }]; notes: ["Kustomer's developer surface separates REST APIs for backend systems from Apps Platform and Chat SDK packages.", "Support workflow calls use the built-in Kustomer REST adapter when baseUrl and accessToken/apiKey are configured.", "A host-provided KustomerTicketingProviderClient can still override the built-in REST adapter.", "The package declares an explicit REST-adapter exception because the checked Kustomer npm SDK packages do not provide a suitable backend support/ticketing REST client.", "Coverage is limited to Kustomer conversation create/read/update/list, message list/create, customer draft creation, and org readiness for support workflows.", "This package intentionally does not copy the old generated full Kustomer public API clone."]; scope: "support-workflow-subset"; } |
coverage.evidence |
[{ label: "Kustomer developer portal"; url: "https://developer.kustomer.com/"; }, { label: "Kustomer REST APIs portal"; url: "https://developer.kustomer.com/kustomer-api-docs/reference"; }, { label: "@kustomer/apps-server npm package"; url: "https://www.npmjs.com/package/@kustomer/apps-server"; }, { label: "@kustomer/apps-server-sdk npm package"; url: "https://www.npmjs.com/package/@kustomer/apps-server-sdk"; }, { label: "@kustomer/chat-react-native npm package"; url: "https://www.npmjs.com/package/@kustomer/chat-react-native"; }, { label: "Kustomer API keys"; url: "https://help.kustomer.com/api-keys-SJs5YTIWX"; }, { label: "Kustomer create message"; url: "https://developer.kustomer.com/kustomer-api-docs/reference/createmessage"; }] |
coverage.notes |
["Kustomer's developer surface separates REST APIs for backend systems from Apps Platform and Chat SDK packages.", "Support workflow calls use the built-in Kustomer REST adapter when baseUrl and accessToken/apiKey are configured.", "A host-provided KustomerTicketingProviderClient can still override the built-in REST adapter.", "The package declares an explicit REST-adapter exception because the checked Kustomer npm SDK packages do not provide a suitable backend support/ticketing REST client.", "Coverage is limited to Kustomer conversation create/read/update/list, message list/create, customer draft creation, and org readiness for support workflows.", "This package intentionally does not copy the old generated full Kustomer public API clone."] |
coverage.scope |
"support-workflow-subset" |
credentialRequirements |
[{ id: "kustomer-base-url"; label: "Kustomer API base URL"; required: false; }, { id: "kustomer-api-access"; label: "Kustomer API access token or API key"; metadata: { defaultClientPolicy: "built-in-rest-adapter"; }; required: true; }, { id: "kustomer-api-permissions"; label: "Kustomer API permissions"; metadata: { privilegeGuidance: "Kustomer API keys are governed by roles and API permissions; these strings are provider permission labels, not OAuth scopes."; scopeKind: "provider-permission-labels"; }; required: true; scopes: ["org.user.conversation.read", "org.user.conversation.write", "org.permission.conversation.create", "org.user.message.read", "org.user.message.write", "org.permission.message.create", "org.permission.draft.create", "org.admin.user.read"]; }] |
directions |
["bidirectional"] |
id |
"ticketing.kustomer" |
limitations |
["REST-adapter or host-client configuration owns auth, tenancy, pagination, retries, rate limits, and provider response normalization policy.", "Conversation model, queues, teams, custom objects, and message visibility are host-client configuration."] |
maintainers |
[{ name: "Cognidesk"; type: "official"; }] |
metadata |
{ implementation: { allowedOperations: readonly [{ alias: "ticket.create"; id: "conversations.create"; source: "provider-rest-adapter"; target: "restAdapter.createConversation"; }, { alias: "ticket.read"; id: "conversations.read"; source: "provider-rest-adapter"; target: "restAdapter.getConversation"; }, { alias: "ticket.update"; id: "conversations.update"; source: "provider-rest-adapter"; target: "restAdapter.updateConversation"; }, { alias: "ticket.search"; id: "conversations.list"; source: "provider-rest-adapter"; target: "restAdapter.listConversations"; }, { alias: "kustomer.message.list"; id: "messages.list"; source: "provider-rest-adapter"; target: "restAdapter.listMessages"; }, { alias: "ticket.comment.create"; id: "messages.create"; source: "provider-rest-adapter"; target: "restAdapter.createMessage"; }, { alias: "kustomer.customerDraft.create"; id: "customer_drafts.create"; source: "provider-rest-adapter"; target: "restAdapter.createCustomerDraft"; }, { alias: "kustomer.readiness"; id: "readiness"; source: "provider-rest-adapter"; target: "restAdapter.readiness"; }]; implementationStrategy: "provider-rest-adapter"; sdkDecision: { candidates: ( | "@kustomer/apps-server" | "@kustomer/apps-client" | "@kustomer/apps-server-sdk" | "@kustomer/chat-react-native")[]; checkedAt: "2026-06-25"; reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package."; rejectedSdkPackages: readonly [{ checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-server"; reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client."; }, { checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-client"; reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations."; }, { checkedVersion: "0.0.60"; license: "not-declared"; packageName: "@kustomer/apps-server-sdk"; reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface."; }, { checkedVersion: "5.3.4"; license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/"; packageName: "@kustomer/chat-react-native"; reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client."; }]; result: "no-official-maintained-ticketing-rest-sdk"; verdict: "no-official-sdk-rest-adapter"; }; }; implementationStrategy: "provider-rest-adapter"; issue: 35; manifestOnlySafe: true; providerClient: { defaultClientPolicy: "built-in-rest-adapter"; importPolicy: "runtime-override"; interface: "KustomerTicketingProviderClient"; package: "optional-override"; }; providerRestAdapterException: { checkedAt: "2026-06-25"; defaultClientPolicy: "built-in-kustomer-rest-adapter-with-access-token"; reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package."; rejectedSdkPackages: readonly [{ checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-server"; reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client."; }, { checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-client"; reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations."; }, { checkedVersion: "0.0.60"; license: "not-declared"; packageName: "@kustomer/apps-server-sdk"; reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface."; }, { checkedVersion: "5.3.4"; license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/"; packageName: "@kustomer/chat-react-native"; reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client."; }]; result: "no-official-maintained-ticketing-rest-sdk"; typedClientOverride: "KustomerTicketingProviderClient"; }; sdkDecision: { candidates: ( | "@kustomer/apps-server" | "@kustomer/apps-client" | "@kustomer/apps-server-sdk" | "@kustomer/chat-react-native")[]; checkedAt: "2026-06-25"; reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package."; rejectedSdkPackages: readonly [{ checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-server"; reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client."; }, { checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-client"; reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations."; }, { checkedVersion: "0.0.60"; license: "not-declared"; packageName: "@kustomer/apps-server-sdk"; reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface."; }, { checkedVersion: "5.3.4"; license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/"; packageName: "@kustomer/chat-react-native"; reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client."; }]; result: "no-official-maintained-ticketing-rest-sdk"; verdict: "no-official-sdk-rest-adapter"; }; } |
metadata.implementation |
{ allowedOperations: readonly [{ alias: "ticket.create"; id: "conversations.create"; source: "provider-rest-adapter"; target: "restAdapter.createConversation"; }, { alias: "ticket.read"; id: "conversations.read"; source: "provider-rest-adapter"; target: "restAdapter.getConversation"; }, { alias: "ticket.update"; id: "conversations.update"; source: "provider-rest-adapter"; target: "restAdapter.updateConversation"; }, { alias: "ticket.search"; id: "conversations.list"; source: "provider-rest-adapter"; target: "restAdapter.listConversations"; }, { alias: "kustomer.message.list"; id: "messages.list"; source: "provider-rest-adapter"; target: "restAdapter.listMessages"; }, { alias: "ticket.comment.create"; id: "messages.create"; source: "provider-rest-adapter"; target: "restAdapter.createMessage"; }, { alias: "kustomer.customerDraft.create"; id: "customer_drafts.create"; source: "provider-rest-adapter"; target: "restAdapter.createCustomerDraft"; }, { alias: "kustomer.readiness"; id: "readiness"; source: "provider-rest-adapter"; target: "restAdapter.readiness"; }]; implementationStrategy: "provider-rest-adapter"; sdkDecision: { candidates: ( | "@kustomer/apps-server" | "@kustomer/apps-client" | "@kustomer/apps-server-sdk" | "@kustomer/chat-react-native")[]; checkedAt: "2026-06-25"; reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package."; rejectedSdkPackages: readonly [{ checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-server"; reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client."; }, { checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-client"; reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations."; }, { checkedVersion: "0.0.60"; license: "not-declared"; packageName: "@kustomer/apps-server-sdk"; reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface."; }, { checkedVersion: "5.3.4"; license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/"; packageName: "@kustomer/chat-react-native"; reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client."; }]; result: "no-official-maintained-ticketing-rest-sdk"; verdict: "no-official-sdk-rest-adapter"; }; } |
metadata.implementation.allowedOperations |
readonly [{ alias: "ticket.create"; id: "conversations.create"; source: "provider-rest-adapter"; target: "restAdapter.createConversation"; }, { alias: "ticket.read"; id: "conversations.read"; source: "provider-rest-adapter"; target: "restAdapter.getConversation"; }, { alias: "ticket.update"; id: "conversations.update"; source: "provider-rest-adapter"; target: "restAdapter.updateConversation"; }, { alias: "ticket.search"; id: "conversations.list"; source: "provider-rest-adapter"; target: "restAdapter.listConversations"; }, { alias: "kustomer.message.list"; id: "messages.list"; source: "provider-rest-adapter"; target: "restAdapter.listMessages"; }, { alias: "ticket.comment.create"; id: "messages.create"; source: "provider-rest-adapter"; target: "restAdapter.createMessage"; }, { alias: "kustomer.customerDraft.create"; id: "customer_drafts.create"; source: "provider-rest-adapter"; target: "restAdapter.createCustomerDraft"; }, { alias: "kustomer.readiness"; id: "readiness"; source: "provider-rest-adapter"; target: "restAdapter.readiness"; }] |
metadata.implementation.implementationStrategy |
"provider-rest-adapter" |
metadata.implementation.sdkDecision |
{ candidates: ( | "@kustomer/apps-server" | "@kustomer/apps-client" | "@kustomer/apps-server-sdk" | "@kustomer/chat-react-native")[]; checkedAt: "2026-06-25"; reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package."; rejectedSdkPackages: readonly [{ checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-server"; reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client."; }, { checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-client"; reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations."; }, { checkedVersion: "0.0.60"; license: "not-declared"; packageName: "@kustomer/apps-server-sdk"; reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface."; }, { checkedVersion: "5.3.4"; license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/"; packageName: "@kustomer/chat-react-native"; reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client."; }]; result: "no-official-maintained-ticketing-rest-sdk"; verdict: "no-official-sdk-rest-adapter"; } |
metadata.implementation.sdkDecision.candidates |
( | "@kustomer/apps-server" | "@kustomer/apps-client" | "@kustomer/apps-server-sdk" | "@kustomer/chat-react-native")[] |
metadata.implementation.sdkDecision.checkedAt |
"2026-06-25" |
metadata.implementation.sdkDecision.reason |
"Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package." |
metadata.implementation.sdkDecision.rejectedSdkPackages |
readonly [{ checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-server"; reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client."; }, { checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-client"; reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations."; }, { checkedVersion: "0.0.60"; license: "not-declared"; packageName: "@kustomer/apps-server-sdk"; reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface."; }, { checkedVersion: "5.3.4"; license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/"; packageName: "@kustomer/chat-react-native"; reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client."; }] |
metadata.implementation.sdkDecision.result |
"no-official-maintained-ticketing-rest-sdk" |
metadata.implementation.sdkDecision.verdict |
"no-official-sdk-rest-adapter" |
metadata.implementationStrategy |
"provider-rest-adapter" |
metadata.issue |
35 |
metadata.manifestOnlySafe |
true |
metadata.providerClient |
{ defaultClientPolicy: "built-in-rest-adapter"; importPolicy: "runtime-override"; interface: "KustomerTicketingProviderClient"; package: "optional-override"; } |
metadata.providerClient.defaultClientPolicy |
"built-in-rest-adapter" |
metadata.providerClient.importPolicy |
"runtime-override" |
metadata.providerClient.interface |
"KustomerTicketingProviderClient" |
metadata.providerClient.package |
"optional-override" |
metadata.providerRestAdapterException |
{ checkedAt: "2026-06-25"; defaultClientPolicy: "built-in-kustomer-rest-adapter-with-access-token"; reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package."; rejectedSdkPackages: readonly [{ checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-server"; reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client."; }, { checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-client"; reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations."; }, { checkedVersion: "0.0.60"; license: "not-declared"; packageName: "@kustomer/apps-server-sdk"; reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface."; }, { checkedVersion: "5.3.4"; license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/"; packageName: "@kustomer/chat-react-native"; reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client."; }]; result: "no-official-maintained-ticketing-rest-sdk"; typedClientOverride: "KustomerTicketingProviderClient"; } |
metadata.providerRestAdapterException.checkedAt |
"2026-06-25" |
metadata.providerRestAdapterException.defaultClientPolicy |
"built-in-kustomer-rest-adapter-with-access-token" |
metadata.providerRestAdapterException.reason |
"Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package." |
metadata.providerRestAdapterException.rejectedSdkPackages |
readonly [{ checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-server"; reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client."; }, { checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-client"; reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations."; }, { checkedVersion: "0.0.60"; license: "not-declared"; packageName: "@kustomer/apps-server-sdk"; reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface."; }, { checkedVersion: "5.3.4"; license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/"; packageName: "@kustomer/chat-react-native"; reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client."; }] |
metadata.providerRestAdapterException.result |
"no-official-maintained-ticketing-rest-sdk" |
metadata.providerRestAdapterException.typedClientOverride |
"KustomerTicketingProviderClient" |
metadata.sdkDecision |
{ candidates: ( | "@kustomer/apps-server" | "@kustomer/apps-client" | "@kustomer/apps-server-sdk" | "@kustomer/chat-react-native")[]; checkedAt: "2026-06-25"; reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package."; rejectedSdkPackages: readonly [{ checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-server"; reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client."; }, { checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-client"; reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations."; }, { checkedVersion: "0.0.60"; license: "not-declared"; packageName: "@kustomer/apps-server-sdk"; reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface."; }, { checkedVersion: "5.3.4"; license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/"; packageName: "@kustomer/chat-react-native"; reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client."; }]; result: "no-official-maintained-ticketing-rest-sdk"; verdict: "no-official-sdk-rest-adapter"; } |
metadata.sdkDecision.candidates |
( | "@kustomer/apps-server" | "@kustomer/apps-client" | "@kustomer/apps-server-sdk" | "@kustomer/chat-react-native")[] |
metadata.sdkDecision.checkedAt |
"2026-06-25" |
metadata.sdkDecision.reason |
"Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package." |
metadata.sdkDecision.rejectedSdkPackages |
readonly [{ checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-server"; reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client."; }, { checkedVersion: "3.0.5"; license: "MIT"; packageName: "@kustomer/apps-client"; reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations."; }, { checkedVersion: "0.0.60"; license: "not-declared"; packageName: "@kustomer/apps-server-sdk"; reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface."; }, { checkedVersion: "5.3.4"; license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/"; packageName: "@kustomer/chat-react-native"; reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client."; }] |
metadata.sdkDecision.result |
"no-official-maintained-ticketing-rest-sdk" |
metadata.sdkDecision.verdict |
"no-official-sdk-rest-adapter" |
name |
"Kustomer" |
operations |
[{ alias: "ticket.create"; capability: "create-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "POST /v1/conversations"; sideEffect: true; }, { alias: "ticket.read"; capability: "read-provider-object"; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "GET /v1/conversations/{conversation_id}"; }, { alias: "ticket.update"; capability: "update-provider-object"; changesWorkflow: true; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "PATCH /v1/conversations/{conversation_id}"; sideEffect: true; }, { alias: "ticket.search"; capability: "search-provider-object"; exposesSensitiveData: true; providerObject: "ticket"; providerOperation: "GET /v1/conversations"; }, { alias: "ticket.comment.create"; capability: "send"; exposesSensitiveData: true; externallyVisible: true; providerObject: "ticketComment"; providerOperation: "POST /v1/messages"; sideEffect: true; }, { alias: "kustomer.message.list"; capability: "read-provider-object"; exposesSensitiveData: true; extension: true; providerObject: "kustomerMessage"; providerOperation: "GET /v1/messages"; }, { alias: "kustomer.customerDraft.create"; capability: "draft"; exposesSensitiveData: true; extension: true; providerObject: "kustomerDraft"; providerOperation: "POST /v1/customers/{customer_id}/drafts"; sideEffect: true; }, { alias: "kustomer.readiness"; capability: "read-provider-object"; exposesSensitiveData: true; extension: true; providerObject: "kustomerUser"; providerOperation: "GET /v1/users/current"; }] |
packageName |
"@cognidesk/integration-ticketing-kustomer" |
privacyNotes |
["Kustomer conversations can include customer timeline data, messages, notes, tags, queue status, and custom objects."] |
provider |
"kustomer" |
trustLevel |
"official" |
kustomerTicketingProviderManifestInput¶
const kustomerTicketingProviderManifestInput: {
capabilities: [{
capability: "create-provider-object";
changesWorkflow: true;
exposesSensitiveData: true;
providerObjects: [{
kind: "kustomerConversation";
label: "Kustomer Conversation";
}, {
kind: "kustomerMessage";
label: "Kustomer Message";
}, {
kind: "kustomerDraft";
label: "Kustomer Draft";
}];
requiresCredential: true;
sideEffect: true;
}, {
capability: "read-provider-object";
exposesSensitiveData: true;
providerObjects: [{
kind: "kustomerConversation";
label: "Kustomer Conversation";
}, {
kind: "kustomerMessage";
label: "Kustomer Message";
}];
requiresCredential: true;
}, {
capability: "update-provider-object";
changesWorkflow: true;
exposesSensitiveData: true;
providerObjects: [{
kind: "kustomerConversation";
label: "Kustomer Conversation";
}];
requiresCredential: true;
sideEffect: true;
}, {
capability: "search-provider-object";
exposesSensitiveData: true;
providerObjects: [{
kind: "kustomerConversation";
label: "Kustomer Conversation";
}];
requiresCredential: true;
}, {
capability: "handoff";
changesWorkflow: true;
exposesSensitiveData: true;
providerObjects: [{
kind: "kustomerConversation";
label: "Kustomer Conversation";
}, {
kind: "kustomerMessage";
label: "Kustomer Message";
}, {
kind: "kustomerDraft";
label: "Kustomer Draft";
}];
requiresCredential: true;
sideEffect: true;
}];
category: "ticketing";
channelAudiences: ["customer-facing", "internal-support", "mixed"];
coverage: {
evidence: [{
label: "Kustomer developer portal";
url: "https://developer.kustomer.com/";
}, {
label: "Kustomer REST APIs portal";
url: "https://developer.kustomer.com/kustomer-api-docs/reference";
}, {
label: "@kustomer/apps-server npm package";
url: "https://www.npmjs.com/package/@kustomer/apps-server";
}, {
label: "@kustomer/apps-server-sdk npm package";
url: "https://www.npmjs.com/package/@kustomer/apps-server-sdk";
}, {
label: "@kustomer/chat-react-native npm package";
url: "https://www.npmjs.com/package/@kustomer/chat-react-native";
}, {
label: "Kustomer API keys";
url: "https://help.kustomer.com/api-keys-SJs5YTIWX";
}, {
label: "Kustomer create message";
url: "https://developer.kustomer.com/kustomer-api-docs/reference/createmessage";
}];
notes: ["Kustomer's developer surface separates REST APIs for backend systems from Apps Platform and Chat SDK packages.", "Support workflow calls use the built-in Kustomer REST adapter when baseUrl and accessToken/apiKey are configured.", "A host-provided KustomerTicketingProviderClient can still override the built-in REST adapter.", "The package declares an explicit REST-adapter exception because the checked Kustomer npm SDK packages do not provide a suitable backend support/ticketing REST client.", "Coverage is limited to Kustomer conversation create/read/update/list, message list/create, customer draft creation, and org readiness for support workflows.", "This package intentionally does not copy the old generated full Kustomer public API clone."];
scope: "support-workflow-subset";
};
credentialRequirements: [{
id: "kustomer-base-url";
label: "Kustomer API base URL";
required: false;
}, {
id: "kustomer-api-access";
label: "Kustomer API access token or API key";
metadata: {
defaultClientPolicy: "built-in-rest-adapter";
};
required: true;
}, {
id: "kustomer-api-permissions";
label: "Kustomer API permissions";
metadata: {
privilegeGuidance: "Kustomer API keys are governed by roles and API permissions; these strings are provider permission labels, not OAuth scopes.";
scopeKind: "provider-permission-labels";
};
required: true;
scopes: ["org.user.conversation.read", "org.user.conversation.write", "org.permission.conversation.create", "org.user.message.read", "org.user.message.write", "org.permission.message.create", "org.permission.draft.create", "org.admin.user.read"];
}];
directions: ["bidirectional"];
id: "ticketing.kustomer";
limitations: ["REST-adapter or host-client configuration owns auth, tenancy, pagination, retries, rate limits, and provider response normalization policy.", "Conversation model, queues, teams, custom objects, and message visibility are host-client configuration."];
maintainers: [{
name: "Cognidesk";
type: "official";
}];
metadata: {
implementation: {
allowedOperations: readonly [{
alias: "ticket.create";
id: "conversations.create";
source: "provider-rest-adapter";
target: "restAdapter.createConversation";
}, {
alias: "ticket.read";
id: "conversations.read";
source: "provider-rest-adapter";
target: "restAdapter.getConversation";
}, {
alias: "ticket.update";
id: "conversations.update";
source: "provider-rest-adapter";
target: "restAdapter.updateConversation";
}, {
alias: "ticket.search";
id: "conversations.list";
source: "provider-rest-adapter";
target: "restAdapter.listConversations";
}, {
alias: "kustomer.message.list";
id: "messages.list";
source: "provider-rest-adapter";
target: "restAdapter.listMessages";
}, {
alias: "ticket.comment.create";
id: "messages.create";
source: "provider-rest-adapter";
target: "restAdapter.createMessage";
}, {
alias: "kustomer.customerDraft.create";
id: "customer_drafts.create";
source: "provider-rest-adapter";
target: "restAdapter.createCustomerDraft";
}, {
alias: "kustomer.readiness";
id: "readiness";
source: "provider-rest-adapter";
target: "restAdapter.readiness";
}];
implementationStrategy: "provider-rest-adapter";
sdkDecision: {
candidates: (
| "@kustomer/apps-server"
| "@kustomer/apps-client"
| "@kustomer/apps-server-sdk"
| "@kustomer/chat-react-native")[];
checkedAt: "2026-06-25";
reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package.";
rejectedSdkPackages: readonly [{
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-server";
reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client.";
}, {
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-client";
reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations.";
}, {
checkedVersion: "0.0.60";
license: "not-declared";
packageName: "@kustomer/apps-server-sdk";
reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface.";
}, {
checkedVersion: "5.3.4";
license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/";
packageName: "@kustomer/chat-react-native";
reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client.";
}];
result: "no-official-maintained-ticketing-rest-sdk";
verdict: "no-official-sdk-rest-adapter";
};
};
implementationStrategy: "provider-rest-adapter";
issue: 35;
manifestOnlySafe: true;
providerClient: {
defaultClientPolicy: "built-in-rest-adapter";
importPolicy: "runtime-override";
interface: "KustomerTicketingProviderClient";
package: "optional-override";
};
providerRestAdapterException: {
checkedAt: "2026-06-25";
defaultClientPolicy: "built-in-kustomer-rest-adapter-with-access-token";
reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package.";
rejectedSdkPackages: readonly [{
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-server";
reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client.";
}, {
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-client";
reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations.";
}, {
checkedVersion: "0.0.60";
license: "not-declared";
packageName: "@kustomer/apps-server-sdk";
reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface.";
}, {
checkedVersion: "5.3.4";
license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/";
packageName: "@kustomer/chat-react-native";
reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client.";
}];
result: "no-official-maintained-ticketing-rest-sdk";
typedClientOverride: "KustomerTicketingProviderClient";
};
sdkDecision: {
candidates: (
| "@kustomer/apps-server"
| "@kustomer/apps-client"
| "@kustomer/apps-server-sdk"
| "@kustomer/chat-react-native")[];
checkedAt: "2026-06-25";
reason: "Kustomer's maintained JavaScript packages cover Apps Platform and Chat SDK runtimes, but do not provide a backend support/ticketing REST client for the conversation, message, customer draft, and readiness operations exposed by this package.";
rejectedSdkPackages: readonly [{
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-server";
reason: "Official Apps Platform server SDK for building Kustomer apps, not a backend public REST ticketing client.";
}, {
checkedVersion: "3.0.5";
license: "MIT";
packageName: "@kustomer/apps-client";
reason: "Official Apps Platform client SDK for Kustomer app UI/runtime behavior, not backend support ticketing operations.";
}, {
checkedVersion: "0.0.60";
license: "not-declared";
packageName: "@kustomer/apps-server-sdk";
reason: "Legacy app-building SDK with limited app API helpers, not a maintained public REST ticketing client for this support surface.";
}, {
checkedVersion: "5.3.4";
license: "SEE LICENSE AT https://www.kustomer.com/legal/supplemental-terms/";
packageName: "@kustomer/chat-react-native";
reason: "React Native Chat SDK for customer-facing chat UI, not a server-side support ticketing REST client.";
}];
result: "no-official-maintained-ticketing-rest-sdk";
verdict: "no-official-sdk-rest-adapter";
};
};
name: "Kustomer";
operations: [{
alias: "ticket.create";
capability: "create-provider-object";
changesWorkflow: true;
exposesSensitiveData: true;
providerObject: "ticket";
providerOperation: "POST /v1/conversations";
sideEffect: true;
}, {
alias: "ticket.read";
capability: "read-provider-object";
exposesSensitiveData: true;
providerObject: "ticket";
providerOperation: "GET /v1/conversations/{conversation_id}";
}, {
alias: "ticket.update";
capability: "update-provider-object";
changesWorkflow: true;
exposesSensitiveData: true;
providerObject: "ticket";
providerOperation: "PATCH /v1/conversations/{conversation_id}";
sideEffect: true;
}, {
alias: "ticket.search";
capability: "search-provider-object";
exposesSensitiveData: true;
providerObject: "ticket";
providerOperation: "GET /v1/conversations";
}, {
alias: "ticket.comment.create";
capability: "send";
exposesSensitiveData: true;
externallyVisible: true;
providerObject: "ticketComment";
providerOperation: "POST /v1/messages";
sideEffect: true;
}, {
alias: "kustomer.message.list";
capability: "read-provider-object";
exposesSensitiveData: true;
extension: true;
providerObject: "kustomerMessage";
providerOperation: "GET /v1/messages";
}, {
alias: "kustomer.customerDraft.create";
capability: "draft";
exposesSensitiveData: true;
extension: true;
providerObject: "kustomerDraft";
providerOperation: "POST /v1/customers/{customer_id}/drafts";
sideEffect: true;
}, {
alias: "kustomer.readiness";
capability: "read-provider-object";
exposesSensitiveData: true;
extension: true;
providerObject: "kustomerUser";
providerOperation: "GET /v1/users/current";
}];
packageName: "@cognidesk/integration-ticketing-kustomer";
privacyNotes: ["Kustomer conversations can include customer timeline data, messages, notes, tags, queue status, and custom objects."];
provider: "kustomer";
trustLevel: "official";
};