The EventClient manages event handlers and event processing in Conductor. Event handlers allow you to automatically trigger actions (like starting workflows) when events are received.
Creates a new EventClient.
Parameters:
client(Client): An instance ofClient.
Gets all event handlers registered in Conductor.
Returns:
Promise<EventHandler[]>: An array of all event handlers.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Get all event handlers
const handlers = await eventClient.getAllEventHandlers();
console.log(`Found ${handlers.length} event handlers`);Adds a single event handler.
Parameters:
eventHandler(EventHandler): The event handler to add.
Returns:
Promise<void>
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Add an event handler that starts a workflow when an event is received
await eventClient.addEventHandler({
name: "order_created_handler",
event: "order.created",
active: true,
description: "Starts fulfillment workflow when order is created",
actions: [
{
action: "start_workflow",
start_workflow: {
name: "fulfill_order",
version: 1,
input: {
orderId: "${event.orderId}",
},
},
},
],
});Adds multiple event handlers at once.
Parameters:
eventHandlers(EventHandler[]): An array of event handlers to add.
Returns:
Promise<void>
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Add multiple event handlers
await eventClient.addEventHandlers([
{
name: "order_created_handler",
event: "order.created",
active: true,
actions: [
{
action: "start_workflow",
start_workflow: {
name: "fulfill_order",
version: 1,
},
},
],
},
{
name: "order_cancelled_handler",
event: "order.cancelled",
active: true,
actions: [
{
action: "start_workflow",
start_workflow: {
name: "cancel_order",
version: 1,
},
},
],
},
]);Updates an existing event handler.
Parameters:
eventHandler(EventHandler): The updated event handler (must include thenamefield).
Returns:
Promise<void>
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Update an existing handler
await eventClient.updateEventHandler({
name: "order_created_handler",
event: "order.created",
active: false, // Deactivate the handler
description: "Updated description",
actions: [
{
action: "start_workflow",
start_workflow: {
name: "fulfill_order_v2", // Updated workflow name
version: 2,
},
},
],
});Gets a specific event handler by name.
Parameters:
eventHandlerName(string): The name of the event handler.
Returns:
Promise<EventHandler>: The event handler.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Get a specific handler
const handler = await eventClient.getEventHandlerByName("order_created_handler");
console.log(`Handler is ${handler.active ? "active" : "inactive"}`);Gets all event handlers registered for a specific event.
Parameters:
event(string): The event name.activeOnly(boolean, optional): Iftrue, only returns active handlers. Defaults tofalse.
Returns:
Promise<EventHandler[]>: An array of event handlers for the specified event.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Get all handlers for an event
const handlers = await eventClient.getEventHandlersForEvent("order.created");
// Get only active handlers
const activeHandlers = await eventClient.getEventHandlersForEvent(
"order.created",
true
);Removes an event handler by name.
Parameters:
name(string): The name of the event handler to remove.
Returns:
Promise<void>
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Remove an event handler
await eventClient.removeEventHandler("order_created_handler");Handles an incoming event. This triggers all active event handlers registered for the event.
Parameters:
data(Record<string, string>): The event data. Must include aneventfield specifying the event name.
Returns:
Promise<void>
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Publish an event
await eventClient.handleIncomingEvent({
event: "order.created",
orderId: "ORDER-123",
customerId: "CUST-456",
amount: "99.99",
timestamp: Date.now().toString(),
});Gets all tags associated with an event handler.
Parameters:
name(string): The name of the event handler.
Returns:
Promise<Tag[]>: An array of tags.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Get tags for a handler
const tags = await eventClient.getTagsForEventHandler("order_created_handler");
console.log(`Handler has ${tags.length} tags`);Sets tags for an event handler (replaces existing tags).
Parameters:
name(string): The name of the event handler.tags(Tag[]): An array of tags to set.
Returns:
Promise<void>
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Set tags for a handler
await eventClient.putTagForEventHandler("order_created_handler", [
{ key: "environment", value: "production" },
{ key: "team", value: "fulfillment" },
{ key: "priority", value: "high" },
]);Deletes a specific tag from an event handler.
Parameters:
name(string): The name of the event handler.tag(Tag): The tag to delete (must match bothkeyandvalue).
Returns:
Promise<void>
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Delete a specific tag
await eventClient.deleteTagForEventHandler("order_created_handler", {
key: "priority",
value: "high",
});Deletes multiple tags from an event handler.
Parameters:
name(string): The name of the event handler.tags(Tag[]): An array of tags to delete.
Returns:
Promise<void>
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Delete multiple tags
await eventClient.deleteTagsForEventHandler("order_created_handler", [
{ key: "priority", value: "high" },
{ key: "team", value: "fulfillment" },
]);Gets all active event handlers with execution information (execution view).
Returns:
Promise<SearchResultHandledEventResponse>: A search result containing active event handlers with execution data.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Get all active handlers with execution info
const result = await eventClient.getAllActiveEventHandlers();
console.log(`Found ${result.totalHits} active handlers`);
result.results?.forEach((handler) => {
console.log(`${handler.name}: ${handler.numberOfActions} actions`);
});Gets execution history for a specific event handler.
Parameters:
eventHandlerName(string): The name of the event handler.from(number, optional): Pagination cursor for retrieving more results.
Returns:
Promise<ExtendedEventExecution[]>: An array of event executions.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Get execution history for a handler
const executions = await eventClient.getEventExecutions("order_created_handler");
executions.forEach((exec) => {
console.log(`Execution ${exec.id}: ${exec.status}`);
});Gets all event handlers with statistics (messages view).
Parameters:
from(number, optional): Pagination cursor for retrieving more results.
Returns:
Promise<SearchResultHandledEventResponse>: A search result containing event handlers with statistics.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Get handlers with statistics
const result = await eventClient.getEventHandlersWithStats();
result.results?.forEach((handler) => {
console.log(
`${handler.name}: ${handler.numberOfMessages} messages, ${handler.numberOfActions} actions`
);
});Gets all messages for a specific event.
Parameters:
event(string): The event name.from(number, optional): Pagination cursor for retrieving more results.
Returns:
Promise<EventMessage[]>: An array of event messages.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Get all messages for an event
const messages = await eventClient.getEventMessages("order.created");
messages.forEach((msg) => {
console.log(`Message ${msg.id}: ${msg.status}`);
console.log(`Payload:`, msg.fullPayload);
});Tests connectivity for a queue using a workflow with an EVENT task and an EventHandler.
Parameters:
input(ConnectivityTestInput): The connectivity test configuration.
Returns:
Promise<ConnectivityTestResult>: The test result.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Test connectivity
const result = await eventClient.testConnectivity({
sink: "sqs:my-queue",
input: {
testKey: "testValue",
},
});
console.log(`Test ${result.successful ? "passed" : "failed"}`);
if (!result.successful) {
console.log(`Reason: ${result.reason}`);
}Tests the event endpoint (as exposed by API).
Returns:
Promise<EventHandler>: A test event handler response.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Test the endpoint
const result = await eventClient.test();
console.log("Test endpoint response:", result);Gets all queue configurations.
Returns:
Promise<{ [key: string]: string }>: A record of queue names.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Get all queue configs
const queues = await eventClient.getAllQueueConfigs();
console.log(`Found ${Object.keys(queues).length} queues`);Gets the configuration for a specific queue.
Parameters:
queueType(string): The type of queue (e.g.,"sqs","kafka").queueName(string): The name of the queue.
Returns:
Promise<Record<string, unknown>>: The queue configuration.
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Get queue config
const config = await eventClient.getQueueConfig("sqs", "my-queue");
console.log("Queue config:", config);Creates or updates a queue configuration by name.
Deprecated: Prefer server's newer endpoints if available.
Parameters:
queueType(string): The type of queue.queueName(string): The name of the queue.config(string): The queue configuration as a string.
Returns:
Promise<void>
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Set queue config
await eventClient.putQueueConfig("sqs", "my-queue", '{"region": "us-east-1"}');Deletes a queue configuration.
Parameters:
queueType(string): The type of queue.queueName(string): The name of the queue.
Returns:
Promise<void>
Example:
import { EventClient } from "@io-orkes/conductor-javascript";
const eventClient = new EventClient(client);
// Delete queue config
await eventClient.deleteQueueConfig("sqs", "my-queue");export type EventHandler = {
actions?: Array<Action>;
active?: boolean;
condition?: string;
createdBy?: string;
description?: string;
evaluatorType?: string;
event?: string;
name?: string;
orgId?: string;
tags?: Array<Tag>;
};export type Action = {
action?: "start_workflow" | "complete_task" | "fail_task" | "terminate_workflow" | "update_workflow_variables";
complete_task?: TaskDetails;
expandInlineJSON?: boolean;
fail_task?: TaskDetails;
start_workflow?: StartWorkflowRequest;
terminate_workflow?: TerminateWorkflow;
update_workflow_variables?: UpdateWorkflowVariables;
};export type Tag = {
key?: string;
/**
* @deprecated
*/
type?: string;
value?: string;
};export type ConnectivityTestInput = {
input?: {
[key: string]: unknown;
};
sink: string;
};export type ConnectivityTestResult = {
reason?: string;
successful?: boolean;
workflowId?: string;
};export type ExtendedEventExecution = {
action?: "start_workflow" | "complete_task" | "fail_task" | "terminate_workflow" | "update_workflow_variables";
created?: number;
event?: string;
eventHandler?: EventHandler;
fullMessagePayload?: {
[key: string]: unknown;
};
id?: string;
messageId?: string;
name?: string;
orgId?: string;
output?: {
[key: string]: unknown;
};
payload?: {
[key: string]: unknown;
};
status?: "IN_PROGRESS" | "COMPLETED" | "FAILED" | "SKIPPED";
statusDescription?: string;
};export type EventMessage = {
createdAt?: number;
eventExecutions?: Array<ExtendedEventExecution>;
eventTarget?: string;
eventType?: "WEBHOOK" | "MESSAGE";
fullPayload?: {
[key: string]: unknown;
};
id?: string;
orgId?: string;
payload?: string;
status?: "RECEIVED" | "HANDLED" | "REJECTED";
statusDescription?: string;
};export type SearchResultHandledEventResponse = {
results?: Array<HandledEventResponse>;
totalHits?: number;
};export type HandledEventResponse = {
active?: boolean;
event?: string;
name?: string;
numberOfActions?: number;
numberOfMessages?: number;
};