Skip to content

integrations/ticketing/dynamics365/dist

Interfaces

Dynamics365AddToQueueInput

Properties

queueId
queueId: string;
queueItemProperties?
optional queueItemProperties?: Dynamics365JsonObject;
sourceQueueId?
optional sourceQueueId?: string;
targetEntitySetName?
optional targetEntitySetName?: string;
targetId
targetId: string;

Dynamics365CaseInput

Properties

additionalFields?
optional additionalFields?: Dynamics365ProviderExtensionFields;
customerId?
optional customerId?: string;
description?
optional description?: string;
priorityCode?
optional priorityCode?: number;
title
title: string;

Dynamics365CreateCaseNoteInput

Properties

additionalFields?
optional additionalFields?: Dynamics365ProviderExtensionFields;
caseId
caseId: string;
documentBody?
optional documentBody?: string;
filename?
optional filename?: string;
mimeType?
optional mimeType?: string;
subject?
optional subject?: string;
text
text: string;

Dynamics365CredentialStatusInput

Properties

apiAccessConfigured?
optional apiAccessConfigured?: boolean;
instanceUrl?
optional instanceUrl?: string;

Dynamics365EntityDefinitionInput

Properties

logicalName
logicalName: string;
select?
optional select?: string[];

Dynamics365JsonObject

Extended by

Indexable

[key: string]: Dynamics365ProviderExtensionValue

Dynamics365LiveCheckOptions

Extends

Properties

accessToken?
optional accessToken?: string;
Inherited from

Dynamics365TicketingClientOptions.accessToken

apiVersion?
optional apiVersion?: string;
Inherited from

Dynamics365TicketingClientOptions.apiVersion

client?
optional client?: Pick<Dynamics365TicketingOperationsClient, "readiness">;
instanceUrl?
optional instanceUrl?: string;
Inherited from

Dynamics365TicketingClientOptions.instanceUrl

rawClient?
optional rawClient?: DynamicsWebApi;
Inherited from

Dynamics365TicketingClientOptions.rawClient


Dynamics365ProviderExtensionFields

Extends

Indexable

[key: string]: Dynamics365ProviderExtensionValue

Dynamics365ProviderResponse

Extends

Indexable

[key: string]: Dynamics365ProviderExtensionValue

Dynamics365SearchInput

Properties

filter?
optional filter?: string;
orderBy?
optional orderBy?: string;
select?
optional select?: string[];
top?
optional top?: number;

Dynamics365TicketingClient

Extends

Properties

integration
integration: DefinedIntegration<ProviderManifestAuthorInput>;
rawClient
rawClient: DynamicsWebApi;

Methods

addToQueue()
addToQueue(input): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input Dynamics365AddToQueueInput
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.addToQueue

createCase()
createCase(input): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input Dynamics365CaseInput
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.createCase

createCaseNote()
createCaseNote(input): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input Dynamics365CreateCaseNoteInput
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.createCaseNote

getCase()
getCase(caseId): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
caseId string
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.getCase

getEntityDefinition()
getEntityDefinition(input): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input Dynamics365EntityDefinitionInput
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.getEntityDefinition

getRawClient()
getRawClient(): DynamicsWebApi;
Returns

DynamicsWebApi

listActivities()
listActivities(input?): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input? Dynamics365SearchInput
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.listActivities

listCaseNotes()
listCaseNotes(caseId, input?): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
caseId string
input? Dynamics365SearchInput
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.listCaseNotes

listQueues()
listQueues(input?): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input? Dynamics365SearchInput
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.listQueues

readiness()
readiness(): Promise<Dynamics365ProviderResponse>;
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.readiness

searchCases()
searchCases(input?): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input? Dynamics365SearchInput
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.searchCases

updateCase()
updateCase(caseId, patch): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
caseId string
patch Dynamics365ProviderPayload
Returns

Promise\<Dynamics365ProviderResponse>

Inherited from

Dynamics365TicketingOperationsClient.updateCase


Dynamics365TicketingClientOptions

Extended by

Properties

accessToken?
optional accessToken?: string;
apiVersion?
optional apiVersion?: string;
instanceUrl?
optional instanceUrl?: string;
rawClient?
optional rawClient?: DynamicsWebApi;

Dynamics365TicketingIntegrationOptions

Extends

Properties

accessToken?
optional accessToken?: string;
Inherited from

Dynamics365TicketingClientOptions.accessToken

apiVersion?
optional apiVersion?: string;
Inherited from

Dynamics365TicketingClientOptions.apiVersion

client?
optional client?: Dynamics365TicketingOperationsClient;
instanceUrl?
optional instanceUrl?: string;
Inherited from

Dynamics365TicketingClientOptions.instanceUrl

rawClient?
optional rawClient?: DynamicsWebApi;
Inherited from

Dynamics365TicketingClientOptions.rawClient


Dynamics365TicketingOperationsClient

Extended by

Methods

addToQueue()
addToQueue(input): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input Dynamics365AddToQueueInput
Returns

Promise\<Dynamics365ProviderResponse>

createCase()
createCase(input): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input Dynamics365CaseInput
Returns

Promise\<Dynamics365ProviderResponse>

createCaseNote()
createCaseNote(input): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input Dynamics365CreateCaseNoteInput
Returns

Promise\<Dynamics365ProviderResponse>

getCase()
getCase(caseId): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
caseId string
Returns

Promise\<Dynamics365ProviderResponse>

getEntityDefinition()
getEntityDefinition(input): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input Dynamics365EntityDefinitionInput
Returns

Promise\<Dynamics365ProviderResponse>

listActivities()
listActivities(input?): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input? Dynamics365SearchInput
Returns

Promise\<Dynamics365ProviderResponse>

listCaseNotes()
listCaseNotes(caseId, input?): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
caseId string
input? Dynamics365SearchInput
Returns

Promise\<Dynamics365ProviderResponse>

listQueues()
listQueues(input?): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input? Dynamics365SearchInput
Returns

Promise\<Dynamics365ProviderResponse>

readiness()
readiness(): Promise<Dynamics365ProviderResponse>;
Returns

Promise\<Dynamics365ProviderResponse>

searchCases()
searchCases(input?): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
input? Dynamics365SearchInput
Returns

Promise\<Dynamics365ProviderResponse>

updateCase()
updateCase(caseId, patch): Promise<Dynamics365ProviderResponse>;
Parameters
Parameter Type
caseId string
patch Dynamics365ProviderPayload
Returns

Promise\<Dynamics365ProviderResponse>

Type Aliases

Dynamics365JsonPrimitive

type Dynamics365JsonPrimitive = string | number | boolean | null;

Dynamics365JsonValue

type Dynamics365JsonValue =
  | Dynamics365JsonPrimitive
  | Dynamics365JsonObject
  | readonly Dynamics365JsonValue[];

Dynamics365ProviderExtensionValue

type Dynamics365ProviderExtensionValue = Dynamics365JsonValue | object | undefined;

Dynamics365ProviderPayload

type Dynamics365ProviderPayload = Dynamics365JsonObject | object;

Dynamics365ProviderQuery

type Dynamics365ProviderQuery = Record<string, Dynamics365ProviderExtensionValue>;

Dynamics365RawClient

type Dynamics365RawClient = DynamicsWebApi;

Dynamics365TicketingOperationAlias

type Dynamics365TicketingOperationAlias = string;

Variables

dynamics365TicketingProviderOperations

const dynamics365TicketingProviderOperations: ProviderOperationDeclarationInput[];

Functions

createDynamics365RawClient()

function createDynamics365RawClient(options): DynamicsWebApi;

Parameters

Parameter Type
options Dynamics365TicketingClientOptions

Returns

DynamicsWebApi


createDynamics365TicketingClient()

function createDynamics365TicketingClient(options?): Dynamics365TicketingClient;

Parameters

Parameter Type
options? Dynamics365TicketingClientOptions

Returns

Dynamics365TicketingClient


createDynamics365TicketingIntegration()

function createDynamics365TicketingIntegration(options?): DefinedIntegration<{
  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: readonly [{
     audiences: readonly ["customer-facing", "internal-support", "mixed"];
     capability: "create-provider-object";
     changesWorkflow: true;
     description: "Creates Dataverse incident records for SDK-user-configured customer-service handoff.";
     exposesSensitiveData: true;
     label: "Create Dynamics cases";
     providerObjects: readonly [{
        kind: "dynamics365Incident";
        label: "Dynamics 365 Case";
        schemaName: "incident";
      }, {
        kind: "dynamics365Annotation";
        label: "Dynamics 365 Annotation";
        schemaName: "annotation";
     }];
     requiresCredential: true;
     sideEffect: true;
   }, {
     audiences: readonly ["internal-support", "mixed"];
     capability: "draft";
     description: "Creates Dataverse annotation records for internal support handoff context.";
     exposesSensitiveData: true;
     label: "Create Dynamics internal notes";
     providerObjects: readonly [{
        kind: "internalNote";
        label: "Internal Note";
        schemaName: "annotation";
     }];
     requiresCredential: true;
     sideEffect: true;
   }, {
     audiences: readonly ["internal-support", "mixed"];
     capability: "read-provider-object";
     description: "Reads Dataverse incident records and readiness metadata.";
     exposesSensitiveData: true;
     label: "Read Dynamics cases";
     providerObjects: readonly [{
        kind: "dynamics365Incident";
        label: "Dynamics 365 Case";
        schemaName: "incident";
      }, {
        kind: "dynamics365Annotation";
        label: "Dynamics 365 Annotation";
        schemaName: "annotation";
      }, {
        kind: "dynamics365Queue";
        label: "Dynamics 365 Queue";
        schemaName: "queue";
      }, {
        kind: "dynamics365Activity";
        label: "Dynamics 365 Activity";
        schemaName: "activitypointer";
      }, {
        kind: "dynamics365EntityDefinition";
        label: "Dynamics 365 Entity Definition";
        schemaName: "EntityDefinition";
      }, {
        kind: "dynamics365WhoAmI";
        label: "Dynamics 365 WhoAmI";
        schemaName: "WhoAmI";
     }];
     requiresCredential: true;
   }, {
     audiences: readonly ["internal-support", "mixed"];
     capability: "update-provider-object";
     changesWorkflow: true;
     description: "Updates Dataverse incident records such as status, title, description, owner, or custom fields.";
     exposesSensitiveData: true;
     label: "Update Dynamics cases";
     providerObjects: readonly [{
        kind: "dynamics365Incident";
        label: "Dynamics 365 Case";
        schemaName: "incident";
     }];
     requiresCredential: true;
     sideEffect: true;
   }, {
     audiences: readonly ["internal-support", "mixed"];
     capability: "search-provider-object";
     description: "Queries Dataverse incident records with SDK-user-supplied OData options.";
     exposesSensitiveData: true;
     label: "Search Dynamics cases";
     providerObjects: readonly [{
        kind: "dynamics365Incident";
        label: "Dynamics 365 Case";
        schemaName: "incident";
      }, {
        kind: "dynamics365Annotation";
        label: "Dynamics 365 Annotation";
        schemaName: "annotation";
      }, {
        kind: "dynamics365Queue";
        label: "Dynamics 365 Queue";
        schemaName: "queue";
      }, {
        kind: "dynamics365Activity";
        label: "Dynamics 365 Activity";
        schemaName: "activitypointer";
     }];
     requiresCredential: true;
   }, {
     audiences: readonly ["customer-facing", "internal-support", "mixed"];
     capability: "handoff";
     changesWorkflow: true;
     description: "Uses Dataverse incident, annotation, and selected queue operations in SDK-user-configured record handoff workflows; this does not imply native Omnichannel conversation transfer or live-work-item mutation.";
     exposesSensitiveData: true;
     label: "Attach handoff to Dynamics";
     providerObjects: readonly [{
        kind: "dynamics365Incident";
        label: "Dynamics 365 Case";
        schemaName: "incident";
      }, {
        kind: "dynamics365Annotation";
        label: "Dynamics 365 Annotation";
        schemaName: "annotation";
      }, {
        kind: "dynamics365Queue";
        label: "Dynamics 365 Queue";
        schemaName: "queue";
     }];
     requiresCredential: true;
     sideEffect: true;
  }];
  category: "ticketing";
  channelAudiences: readonly ["customer-facing", "internal-support", "mixed"];
  coverage: {
     evidence: readonly [{
        label: "Microsoft Dataverse Web API overview";
        url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/overview";
      }, {
        label: "dynamics-web-api Dataverse helper";
        url: "https://github.com/AleksandrRogov/DynamicsWebApi";
      }, {
        label: "Dynamics 365 Customer Service incident table reference";
        url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/entities/incident";
      }, {
        label: "Dataverse EntityDefinitions metadata queries";
        url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query-metadata-web-api";
      }, {
        label: "Dataverse WhoAmI Function";
        url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/whoami?view=dataverse-latest";
      }, {
        label: "Dataverse Note/Annotation table reference";
        url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/annotation";
      }, {
        label: "Dataverse ActivityPointer table reference";
        url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/activitypointer";
      }, {
        label: "Dataverse queue EntityType reference";
        url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/queue";
      }, {
        label: "Dataverse AddToQueue Action";
        url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/addtoqueue?view=dataverse-latest";
      }, {
        label: "Dynamics 365 Omnichannel JavaScript API";
        url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/omnichannel-api-reference";
      }, {
        label: "Dynamics 365 custom messaging channel table";
        url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/entities/msdyn_occustommessagingchannel";
      }, {
        label: "Dynamics 365 getConversations Omnichannel API";
        url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/getconversations";
     }];
     notes: readonly ["Coverage is limited to Dataverse incident CRUD/search, selected metadata/readiness helpers, incident notes via annotations, queue AddToQueue, and queue/activity reads used by Cognidesk support workflows.", "Implementation uses dynamics-web-api 2.5.0; broader Dataverse Web API capabilities remain available through the rawClient escape hatch but are not Cognidesk adapter coverage.", "Annotation note creation supports bounded inline annotation document fields (`filename`, `documentbody`, `mimetype`) on the Dataverse annotation record; this is not a complete file/attachment lifecycle.", "This is not full Microsoft Dataverse, Dynamics 365 Customer Service, activity, annotation attachment, relationship metadata, broader queue routing, or custom action API coverage."];
     scope: "support-workflow-subset";
  };
  credentialRequirements: readonly [{
     id: "dynamics365-instance";
     label: "Dynamics 365 Dataverse environment URL";
     required: true;
   }, {
     id: "dynamics365-api-access";
     label: "Dynamics 365 OAuth access";
     metadata: {
        privilegeGuidance: "Delegated clients request <environment-url>/user_impersonation; confidential clients commonly request <environment-url>/.default. Dataverse security roles still govern incident, annotation, queue, activity, and AddToQueue access.";
        scopeKind: "provider-oauth-scopes";
     };
     required: true;
     scopes: readonly ["user_impersonation"];
  }];
  directions: readonly ["bidirectional"];
  id: "ticketing.dynamics365";
  limitations: readonly ["Dataverse table customizations, required fields, queues, owners, security roles, and routing rules are SDK-user configuration.", "Unified Routing live-work-item mutation is provider-sensitive and must not be inferred from typed AddToQueue support."];
  maintainers: readonly [{
     name: "Cognidesk";
     type: "official";
  }];
  metadata: {
     channelCoverage: {
        activities: "typed-list";
        annotationAttachmentLifecycle: "provider-supported-not-typed";
        annotationInlineDocumentFields: "typed-selected";
        annotationsCaseNotes: "typed-create-list";
        broaderDataverseApi: "provider-supported-raw-client";
        ccaasConversationActions: "provider-supported-not-typed";
        conversationsLiveWorkItems: "provider-supported-not-typed";
        customActions: "not-covered";
        customMessagingChannels: "provider-supported-not-typed";
        incidents: "typed-crud-search";
        linkToConversation: "provider-supported-client-sdk-not-typed";
        messagingApis: "provider-supported-not-typed";
        metadataReadiness: "typed-selected";
        omnichannelLiveChatWidget: "provider-supported-client-sdk-not-typed";
        queueRouting: "typed-selected";
        queues: "typed-list";
        relationshipMetadata: "not-covered";
        transcriptAnnotations: "provider-supported-not-typed";
        unifiedRoutingLiveWorkItemMutation: "provider-supported-not-typed";
     };
     checkedProviderApiCoverage: {
        coverageArtifact: "docs/provider-coverage/dynamics365-checked-dataverse-customer-service-2026-06-18.inventory.json";
        familyCount: 4;
        fullCoverageExportRequirement: "Full environment-specific Dataverse/Dynamics coverage requires the SDK user's $metadata/CSDL, EntityDefinitions, solution customizations, enabled Dynamics 365 Customer Service products, security roles, and custom action/function export.";
        gapFamilyCount: 1;
        implementedFamilyCount: 3;
        implementedOperationCount: 11;
        sourceKind: "checked-endpoint-family-inventory";
        verifiedAt: "2026-06-18";
     };
     implementation: {
        manifestImport: "no-sdk-client-initialization";
        rawClientEscapeHatch: "Dynamics365TicketingClient.rawClient/getRawClient()";
        runtimePackage: "@cognidesk/integration-ticketing-dynamics365";
        sdkPackage: "dynamics-web-api";
        sdkVersionRange: "2.5.0";
        strategy: "sdk-backed";
     };
  };
  name: "Microsoft Dynamics 365 Customer Service";
  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: "@cognidesk/integration-ticketing-dynamics365";
  privacyNotes: readonly ["Dynamics cases can contain customer identity, support summaries, entitlements, queue and owner metadata, and internal notes.", "Dynamics OAuth credentials stay server-side and Studio receives only readiness."];
  provider: "dynamics365";
  trustLevel: "official";
}, Dynamics365JsonObject, IntegrationOperationHandlers>;

Parameters

Parameter Type
options? Dynamics365TicketingIntegrationOptions

Returns

DefinedIntegration\<{ 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: readonly [{ audiences: readonly ["customer-facing", "internal-support", "mixed"]; capability: "create-provider-object"; changesWorkflow: true; description: "Creates Dataverse incident records for SDK-user-configured customer-service handoff."; exposesSensitiveData: true; label: "Create Dynamics cases"; providerObjects: readonly [{ kind: "dynamics365Incident"; label: "Dynamics 365 Case"; schemaName: "incident"; }, { kind: "dynamics365Annotation"; label: "Dynamics 365 Annotation"; schemaName: "annotation"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["internal-support", "mixed"]; capability: "draft"; description: "Creates Dataverse annotation records for internal support handoff context."; exposesSensitiveData: true; label: "Create Dynamics internal notes"; providerObjects: readonly [{ kind: "internalNote"; label: "Internal Note"; schemaName: "annotation"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["internal-support", "mixed"]; capability: "read-provider-object"; description: "Reads Dataverse incident records and readiness metadata."; exposesSensitiveData: true; label: "Read Dynamics cases"; providerObjects: readonly [{ kind: "dynamics365Incident"; label: "Dynamics 365 Case"; schemaName: "incident"; }, { kind: "dynamics365Annotation"; label: "Dynamics 365 Annotation"; schemaName: "annotation"; }, { kind: "dynamics365Queue"; label: "Dynamics 365 Queue"; schemaName: "queue"; }, { kind: "dynamics365Activity"; label: "Dynamics 365 Activity"; schemaName: "activitypointer"; }, { kind: "dynamics365EntityDefinition"; label: "Dynamics 365 Entity Definition"; schemaName: "EntityDefinition"; }, { kind: "dynamics365WhoAmI"; label: "Dynamics 365 WhoAmI"; schemaName: "WhoAmI"; }]; requiresCredential: true; }, { audiences: readonly ["internal-support", "mixed"]; capability: "update-provider-object"; changesWorkflow: true; description: "Updates Dataverse incident records such as status, title, description, owner, or custom fields."; exposesSensitiveData: true; label: "Update Dynamics cases"; providerObjects: readonly [{ kind: "dynamics365Incident"; label: "Dynamics 365 Case"; schemaName: "incident"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["internal-support", "mixed"]; capability: "search-provider-object"; description: "Queries Dataverse incident records with SDK-user-supplied OData options."; exposesSensitiveData: true; label: "Search Dynamics cases"; providerObjects: readonly [{ kind: "dynamics365Incident"; label: "Dynamics 365 Case"; schemaName: "incident"; }, { kind: "dynamics365Annotation"; label: "Dynamics 365 Annotation"; schemaName: "annotation"; }, { kind: "dynamics365Queue"; label: "Dynamics 365 Queue"; schemaName: "queue"; }, { kind: "dynamics365Activity"; label: "Dynamics 365 Activity"; schemaName: "activitypointer"; }]; requiresCredential: true; }, { audiences: readonly ["customer-facing", "internal-support", "mixed"]; capability: "handoff"; changesWorkflow: true; description: "Uses Dataverse incident, annotation, and selected queue operations in SDK-user-configured record handoff workflows; this does not imply native Omnichannel conversation transfer or live-work-item mutation."; exposesSensitiveData: true; label: "Attach handoff to Dynamics"; providerObjects: readonly [{ kind: "dynamics365Incident"; label: "Dynamics 365 Case"; schemaName: "incident"; }, { kind: "dynamics365Annotation"; label: "Dynamics 365 Annotation"; schemaName: "annotation"; }, { kind: "dynamics365Queue"; label: "Dynamics 365 Queue"; schemaName: "queue"; }]; requiresCredential: true; sideEffect: true; }]; category: "ticketing"; channelAudiences: readonly ["customer-facing", "internal-support", "mixed"]; coverage: { evidence: readonly [{ label: "Microsoft Dataverse Web API overview"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/overview"; }, { label: "dynamics-web-api Dataverse helper"; url: "https://github.com/AleksandrRogov/DynamicsWebApi"; }, { label: "Dynamics 365 Customer Service incident table reference"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/entities/incident"; }, { label: "Dataverse EntityDefinitions metadata queries"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query-metadata-web-api"; }, { label: "Dataverse WhoAmI Function"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/whoami?view=dataverse-latest"; }, { label: "Dataverse Note/Annotation table reference"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/annotation"; }, { label: "Dataverse ActivityPointer table reference"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/activitypointer"; }, { label: "Dataverse queue EntityType reference"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/queue"; }, { label: "Dataverse AddToQueue Action"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/addtoqueue?view=dataverse-latest"; }, { label: "Dynamics 365 Omnichannel JavaScript API"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/omnichannel-api-reference"; }, { label: "Dynamics 365 custom messaging channel table"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/entities/msdyn_occustommessagingchannel"; }, { label: "Dynamics 365 getConversations Omnichannel API"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/getconversations"; }]; notes: readonly ["Coverage is limited to Dataverse incident CRUD/search, selected metadata/readiness helpers, incident notes via annotations, queue AddToQueue, and queue/activity reads used by Cognidesk support workflows.", "Implementation uses dynamics-web-api 2.5.0; broader Dataverse Web API capabilities remain available through the rawClient escape hatch but are not Cognidesk adapter coverage.", "Annotation note creation supports bounded inline annotation document fields (`filename`, `documentbody`, `mimetype`) on the Dataverse annotation record; this is not a complete file/attachment lifecycle.", "This is not full Microsoft Dataverse, Dynamics 365 Customer Service, activity, annotation attachment, relationship metadata, broader queue routing, or custom action API coverage."]; scope: "support-workflow-subset"; }; credentialRequirements: readonly [{ id: "dynamics365-instance"; label: "Dynamics 365 Dataverse environment URL"; required: true; }, { id: "dynamics365-api-access"; label: "Dynamics 365 OAuth access"; metadata: { privilegeGuidance: "Delegated clients request <environment-url>/user_impersonation; confidential clients commonly request <environment-url>/.default. Dataverse security roles still govern incident, annotation, queue, activity, and AddToQueue access."; scopeKind: "provider-oauth-scopes"; }; required: true; scopes: readonly ["user_impersonation"]; }]; directions: readonly ["bidirectional"]; id: "ticketing.dynamics365"; limitations: readonly ["Dataverse table customizations, required fields, queues, owners, security roles, and routing rules are SDK-user configuration.", "Unified Routing live-work-item mutation is provider-sensitive and must not be inferred from typed AddToQueue support."]; maintainers: readonly [{ name: "Cognidesk"; type: "official"; }]; metadata: { channelCoverage: { activities: "typed-list"; annotationAttachmentLifecycle: "provider-supported-not-typed"; annotationInlineDocumentFields: "typed-selected"; annotationsCaseNotes: "typed-create-list"; broaderDataverseApi: "provider-supported-raw-client"; ccaasConversationActions: "provider-supported-not-typed"; conversationsLiveWorkItems: "provider-supported-not-typed"; customActions: "not-covered"; customMessagingChannels: "provider-supported-not-typed"; incidents: "typed-crud-search"; linkToConversation: "provider-supported-client-sdk-not-typed"; messagingApis: "provider-supported-not-typed"; metadataReadiness: "typed-selected"; omnichannelLiveChatWidget: "provider-supported-client-sdk-not-typed"; queueRouting: "typed-selected"; queues: "typed-list"; relationshipMetadata: "not-covered"; transcriptAnnotations: "provider-supported-not-typed"; unifiedRoutingLiveWorkItemMutation: "provider-supported-not-typed"; }; checkedProviderApiCoverage: { coverageArtifact: "docs/provider-coverage/dynamics365-checked-dataverse-customer-service-2026-06-18.inventory.json"; familyCount: 4; fullCoverageExportRequirement: "Full environment-specific Dataverse/Dynamics coverage requires the SDK user's $metadata/CSDL, EntityDefinitions, solution customizations, enabled Dynamics 365 Customer Service products, security roles, and custom action/function export."; gapFamilyCount: 1; implementedFamilyCount: 3; implementedOperationCount: 11; sourceKind: "checked-endpoint-family-inventory"; verifiedAt: "2026-06-18"; }; implementation: { manifestImport: "no-sdk-client-initialization"; rawClientEscapeHatch: "Dynamics365TicketingClient.rawClient/getRawClient()"; runtimePackage: "@cognidesk/integration-ticketing-dynamics365"; sdkPackage: "dynamics-web-api"; sdkVersionRange: "2.5.0"; strategy: "sdk-backed"; }; }; name: "Microsoft Dynamics 365 Customer Service"; 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: "@cognidesk/integration-ticketing-dynamics365"; privacyNotes: readonly ["Dynamics cases can contain customer identity, support summaries, entitlements, queue and owner metadata, and internal notes.", "Dynamics OAuth credentials stay server-side and Studio receives only readiness."]; provider: "dynamics365"; trustLevel: "official"; }, Dynamics365JsonObject, IntegrationOperationHandlers>


createDynamics365TicketingLiveChecks()

function createDynamics365TicketingLiveChecks(options): {
  description: string;
  id: string;
  requiredCredentialIds: string[];
  run: Promise<{
     details: {
        ok: boolean;
     };
  }>;
}[];

Parameters

Parameter Type
options Dynamics365LiveCheckOptions

Returns

{ description: string; id: string; requiredCredentialIds: string[]; run: Promise\<{ details: { ok: boolean; }; }>; }[]


createDynamics365TicketingOperationHandlers()

function createDynamics365TicketingOperationHandlers(client): IntegrationOperationHandlers;

Parameters

Parameter Type
client Dynamics365TicketingOperationsClient

Returns

IntegrationOperationHandlers


dynamics365TicketingCredentialStatuses()

function dynamics365TicketingCredentialStatuses(input): {
  expiresAt?: string;
  message?: string;
  providerPackageId?: string;
  requirementId: string;
  scopes?: string[];
  state:   | "required"
     | "configured"
     | "permission-blocked"
     | "not-required"
     | "missing"
     | "expired"
     | "insufficient-scope"
     | "unavailable";
}[];

Parameters

Parameter Type
input Dynamics365CredentialStatusInput

Returns

{ expiresAt?: string; message?: string; providerPackageId?: string; requirementId: string; scopes?: string[]; state: | "required" | "configured" | "permission-blocked" | "not-required" | "missing" | "expired" | "insufficient-scope" | "unavailable"; }[]

References

dynamics365TicketingProviderManifest

Re-exports dynamics365TicketingProviderManifest