UNPKG

@azure-utils/durable-functions

Version:
359 lines (358 loc) 15.7 kB
/** * @module * Helper utils to interact with Azure Functions Orchestrations. */ import { type RequestAzureFunctionsDurableTaskWebhookOptions } from "./durable-webhook.js"; /** * An object that contains all the functions for interacting with Azure Functions Durable Orchestrations. * * @throws Each method can throw an error if the operation fails. */ export declare const durableOrchestrations: { /** Starts executing a new instance of the specified orchestrator function. */ start: typeof startAzureFunctionsOrchestrationOrThrow; /** List Azure Functions Orchestration Instances. */ list: typeof listAzureFunctionsOrchestrationInstancesOrThrow; /** Gets the status of a specified orchestration instance. */ get: typeof getAzureFunctionsOrchestrationInstanceOrThrow; /** Deletes the history and related artifacts for a specified orchestration instance. */ purge: typeof purgeAzureFunctionsOrchestrationInstanceOrThrow; /** Delete the history and related artifacts for multiple instances within a task hub. */ purgeAll: typeof purgeAzureFunctionsOrchestrationInstancesOrThrow; /** ends an event notification message to a running orchestration instance. */ raiseEvent: typeof raiseAzureFunctionsOrchestrationInstanceEventOrThrow; /** Terminates a running orchestration instance. */ terminate: typeof terminateAzureFunctionsOrchestrationInstanceOrThrow; /** Suspend/pause Azure Functions Orchestration Instance . */ suspend: typeof suspendAzureFunctionsOrchestrationInstanceOrThrow; /** Resume Azure Functions Orchestration Instance. */ resume: typeof resumeAzureFunctionsOrchestrationInstanceOrThrow; /** Restores a failed orchestration instance into a running state by replaying the most recent failed operations. */ rewind: typeof rewindAzureFunctionsOrchestrationInstanceOrThrow; }; /** * Options for Starting an Azure Functions Orchestration. */ export type StartAzureFunctionsOrchestrationOptions = { /** * The name of the orchestrator function to start. */ functionName: string; /** * Optional parameter. The ID of the orchestration instance. * If not specified, the orchestrator function will start with a random instance ID. */ instanceId?: string; /** * Optional. The JSON-formatted orchestrator function input. */ input: unknown; }; export type StartAzureFunctionsOrchestrationResult = { /** The ID of the orchestration instance. */ id: string; /** The status URL of the orchestration instance. */ statusQueryGetUri: string; /** The "raise event" URL of the orchestration instance. */ sendEventPostUri: string; /** The "terminate" URL of the orchestration instance. */ terminatePostUri: string; /** The "purge history" URL of the orchestration instance. */ purgeHistoryDeleteUri: string; /** (preview) The "rewind" URL of the orchestration instance. */ rewindPostUri?: string; /** The "suspend" URL of the orchestration instance. */ suspendPostUri: string; /** The "resume" URL of the orchestration instance. */ resumePostUri: string; }; /** * Starts executing a new instance of the specified orchestrator function. * * @see https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-http-api#start-orchestration * * The HTTP response is intended to be compatible with the Polling Consumer Pattern. It also includes the following notable response headers: * Location (The URL of the status endpoint) and Retry-After (The number of seconds to wait before polling again). */ export declare function startAzureFunctionsOrchestrationOrThrow(options: StartAzureFunctionsOrchestrationOptions, requestOptions: RequestAzureFunctionsDurableTaskWebhookOptions): Promise<{ status: number; result: StartAzureFunctionsOrchestrationResult; headers: Headers; }>; /** * Options for listing Azure Functions Orchestration Instances. */ export type ListAzureFunctionsOrchestrationInstancesOptions = { /** * Optional parameter. When specified, filters the list of returned instances that were created at or after the given ISO8601 timestamp. */ createdTimeFrom?: Date; /** * Optional parameter. When specified, filters the list of returned instances that were created at or before the given ISO8601 timestamp. */ createdTimeTo?: Date; /** * Optional parameter. When specified, filters the list of returned instances based on their runtime status. To see the list of possible runtime status values, see the Querying instances article. */ runtimeStatuses?: AzureFunctionsOrchestrationRuntimeStatus[]; /** * Optional parameter. When specified, filters the list of returned instances to include only instances whose instance ID starts with the specified prefix string. */ instanceIdPrefix?: string; /** * Optional parameter. If set to true, the function outputs will be included in the orchestration execution history. */ showHistoryOutput?: boolean; /** * Optional parameter. If set to false, the function input will not be included in the response payload. * @default true */ showInput?: boolean; /** * Optional parameter. When specified, limits the number of instances returned by the query. */ top?: number; /** * Optional parameter. When specified, the continuation token for the next page of results. * This token is returned in the response headers of the previous page of results. */ continuationToken?: string; }; /** * The result of listing Azure Functions Orchestration Instances. */ export type ListAzureFunctionsOrchestrationInstancesResult = { /** * The number of instances returned by the query. */ top: number | null; /** * The continuation token for the next page of results. * This token is returned in the response headers of the previous page of results. */ continuationToken: string | null; /** * The list of Azure Functions Orchestration Instances. */ instances: AzureFunctionsOrchestrationInstance[]; }; /** * List Azure Functions Orchestration Instances. They can be filtered by * created time, runtime status, instance ID prefix, and other parameters. * * @see https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-http-api#get-all-instances-status */ export declare function listAzureFunctionsOrchestrationInstancesOrThrow(options: ListAzureFunctionsOrchestrationInstancesOptions, requestOptions: RequestAzureFunctionsDurableTaskWebhookOptions): Promise<ListAzureFunctionsOrchestrationInstancesResult>; /** Request options for Query Azure Functions Orchestration Instance by instanceId. */ export type GetAzureFunctionsOrchestrationInstanceOptions = { /** * The ID of the orchestration instance. */ instanceId: string; /** * Optional parameter. If set to true, * the orchestration execution history will be included in the response payload. */ showHistory?: boolean; /** * Optional parameter. If set to true, * the function outputs will be included in the orchestration execution history. */ showHistoryOutput?: boolean; /** * Optional parameter. If set to false, * the function input will not be included in the response payload. * @default true */ showInput?: boolean; /** * Optional parameter. If set to true, this API will return an HTTP 500 * response instead of a 200 if the instance is in a failure state. * This parameter is intended for automated status polling scenarios. */ returnInternalServerErrorOnFailure?: boolean; }; /** * Gets the status of a specified orchestration instance. * * @see https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-http-api#get-instance-status */ export declare function getAzureFunctionsOrchestrationInstanceOrThrow(options: GetAzureFunctionsOrchestrationInstanceOptions, requestOptions: RequestAzureFunctionsDurableTaskWebhookOptions): Promise<{ instance: AzureFunctionsOrchestrationInstance; status: number; headers: Headers; }>; /** * Deletes the history and related artifacts for a specified orchestration instance. */ export declare function purgeAzureFunctionsOrchestrationInstanceOrThrow(options: { /** The ID of the orchestration instance. */ instanceId: string; }, requestOptions: RequestAzureFunctionsDurableTaskWebhookOptions): Promise<boolean>; /** * Delete the history and related artifacts for multiple instances within a task hub * * @see https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-http-api#purge-multiple-instance-histories * * @returns The number of instances deleted. */ export declare function purgeAzureFunctionsOrchestrationInstancesOrThrow(options: { /** Filters the list of purged instances that were created at or after the given ISO8601 timestamp. */ createdTimeFrom: Date; /** Optional parameter. When specified, filters the list of purged instances that were created at or before the given ISO8601 timestamp. */ createdTimeTo?: Date; /** Optional parameter. When specified, filters the list of purged instances based on their runtime status. */ runtimeStatuses?: AzureFunctionsOrchestrationRuntimeStatus[]; }, requestOptions: RequestAzureFunctionsDurableTaskWebhookOptions): Promise<number>; /** * Sends an event notification message to a running orchestration instance. * Does not return a response. * * @see https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-http-api#raise-event */ export declare function raiseAzureFunctionsOrchestrationInstanceEventOrThrow(options: { /** The ID of the orchestration instance. */ instanceId: string; /** The name of the event that the target orchestration instance is waiting on. */ eventName: string; /** The JSON-formatted event payload. */ eventBody?: object; }, requestOptions: RequestAzureFunctionsDurableTaskWebhookOptions): Promise<void>; /** * Terminates a running orchestration instance. * Does not return a response. * * @see https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-http-api#terminate-instance */ export declare function terminateAzureFunctionsOrchestrationInstanceOrThrow(options: AzureFunctionsOrchestrationInstanceActionOptions, requestOptions: RequestAzureFunctionsDurableTaskWebhookOptions): Promise<void>; /** * Suspend/pause Azure Functions Orchestration Instance . * Does not return a response. * * @see https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-http-api#suspend-instance */ export declare function suspendAzureFunctionsOrchestrationInstanceOrThrow(options: AzureFunctionsOrchestrationInstanceActionOptions, requestOptions: RequestAzureFunctionsDurableTaskWebhookOptions): Promise<void>; /** * Resume Azure Functions Orchestration Instance. * Does not return a response. * * @see https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-http-api#resume-instance */ export declare function resumeAzureFunctionsOrchestrationInstanceOrThrow(options: AzureFunctionsOrchestrationInstanceActionOptions, requestOptions: RequestAzureFunctionsDurableTaskWebhookOptions): Promise<void>; /** * Restores a failed orchestration instance into a running state by replaying the most recent failed operations. * Does not return a response. * * @see https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-http-api#rewind-instance-preview */ export declare function rewindAzureFunctionsOrchestrationInstanceOrThrow(options: AzureFunctionsOrchestrationInstanceActionOptions, requestOptions: RequestAzureFunctionsDurableTaskWebhookOptions): Promise<void>; export type AzureFunctionsOrchestrationInstanceActionOptions = { /** The ID of the orchestration instance. */ instanceId: string; /** The reason for performing action the orchestration instance. */ reason: string; }; /** * The Azure Functions Orchestration Instance. */ export type AzureFunctionsOrchestrationInstance<T = unknown> = { /** * The instance ID of the orchestration. */ instanceId: string; /** * The name of the orchestration function. */ name: string; /** * The current runtime status of the orchestration instance. */ runtimeStatus: AzureFunctionsOrchestrationRuntimeStatus; /** * The input to the orchestration instance. * This is the input that was passed to the orchestrator function when it was started. */ input: null | object; /** * The output of the orchestration instance. * This is the output that was returned by the orchestrator function when it completed. */ output: T; /** * A field that can be used by orchestrator functions to store custom status information. */ customStatus?: unknown; /** * ISO Timestamp of when the orchestration instance was created. */ createdTime: string; /** * ISO Timestamp of when the orchestration instance was last updated. */ lastUpdatedTime: string; /** * History events of the orchestration instance. * Only available if `showHistory` is set to true in the query. */ historyEvents?: AzureFunctionsOrchestrationInstanceHistoryEvent[]; }; /** * The history events of an orchestration instance. */ export type AzureFunctionsOrchestrationInstanceHistoryEvent = { EventType: "ExecutionStarted"; Timestamp: string; FunctionName: string; Correlation?: null; ParentTraceContext?: null; ScheduledStartTime?: string | null; Generation?: number; } | { EventType: "TaskCompleted"; Timestamp: string; FunctionName: string; Result?: unknown; ScheduledTime?: string | null; } | { EventType: "TaskFailed"; Timestamp: string; FunctionName: string; Reason?: string; Details?: string | null; FailureDetails?: string | null; ScheduledTime?: string | null; } | { EventType: "ExecutionCompleted"; Timestamp: string; FunctionName: string | undefined; OrchestrationStatus: AzureFunctionsOrchestrationRuntimeStatus; Result?: unknown; FailureDetails?: null | string; }; /** * The runtime status of an orchestration instance (type). */ export type AzureFunctionsOrchestrationRuntimeStatus = Values<typeof AzureFunctionsOrchestrationRuntimeStatuses>; /** * The runtime status of an orchestration instance. */ export declare const AzureFunctionsOrchestrationRuntimeStatuses: { /** The orchestration instance has started running.*/ readonly Running: "Running"; /** The orchestration instance has completed normally.*/ readonly Completed: "Completed"; /** The orchestration instance has restarted itself with a new history. This is a transient state.*/ readonly ContinuedAsNew: "ContinuedAsNew"; /** The orchestration instance failed with an error.*/ readonly Failed: "Failed"; /** The orchestration was canceled gracefully.*/ readonly Canceled: "Canceled"; /** The orchestration instance was stopped abruptly.*/ readonly Terminated: "Terminated"; /** The orchestration instance has been scheduled but has not yet started running.*/ readonly Pending: "Pending"; /** The orchestration instance has been suspended and may be resumed to running later.*/ readonly Suspended: "Suspended"; }; type Values<T> = T extends Record<string, unknown> ? T[keyof T] : never; export {};