@memberjunction/core-actions
v2.132.0
Published
Library of generated and custom actions for the core MemberJunction framework. This library is maintained by MemberJunction and includes actions for use within the framework itself.
Keywords
Readme
@memberjunction/core-actions
The @memberjunction/core-actions library provides a collection of pre-built actions that are essential to the MemberJunction framework. These actions handle common operations like sending messages, detecting external changes, and vectorizing entities for AI processing.
Overview
This package contains both custom-built and generated actions that extend the MemberJunction Actions framework. It provides ready-to-use implementations for core functionality that many MemberJunction applications require.
Action Types in This Package
1. Custom Actions (/src/custom/)
Manually written TypeScript actions for complex business logic, external integrations, and core functionality. These are hand-crafted implementations that handle sophisticated use cases.
Location: /src/custom/
2. Generated Actions (/src/generated/action_subclasses.ts)
AI-generated action implementations created from natural language descriptions. These are particularly useful for entity-specific CRUD operations and parameter mapping.
Location: /src/generated/action_subclasses.ts
About Generated Actions
Generated actions are created by:
- Creating an Action record with
Type='Generated'and aUserPromptdescribing desired functionality - AI automatically generates TypeScript code, parameters, and result codes
- Generated code is saved to database for review
- After approval (
CodeApprovalStatus='Approved'), this file is generated during build
See: Actions Framework Documentation for complete guide.
Child Actions & Composition Pattern
Many generated actions are "child actions" that wrap generic parent actions (like "Create Record" or "Get Record").
⚠️ Important: Child actions do NOT inherit from their parent action classes. Instead, they use a composition pattern:
- Child action ALWAYS extends
BaseAction(not the parent action class) ParentIDis a database relationship (metadata), not TypeScript inheritance- Child invokes parent via
ActionEngineServer.Instance.RunAction()at runtime
Example:
"Create Conversation Record" (child) wraps "Create Record" (parent):
- Provides entity-specific parameters (UserID, Type, Name, etc.)
- Maps these to parent's generic format (EntityName + Fields object)
- Invokes parent action via ActionEngine
- Extracts and returns entity-specific outputs
See Examples:
- Create Conversation Record - Child action implementation
- Get AI Model Cost - Another child action example
Why Composition?
- ParentID is metadata-only (can change parent without recompiling)
- Child works independently without parent's TypeScript code
- ActionEngine finds parent by ID at runtime (fully dynamic)
- No coupling to parent's implementation details
Important Note
This library should only be imported on the server side. It contains server-specific dependencies and functionality that are not suitable for client-side applications.
Installation
### 5. Data Transformation Actions
#### CSV Parser Action
Parses CSV data with configurable options for headers, delimiters, and data types.
**Class:** `CSVParserAction`
**Registration Name:** `"CSV Parser"`
**Parameters:**
- `CSVData` (string, required): The CSV data to parse
- `HasHeaders` (boolean, optional): Whether the first row contains headers (default: true)
- `Delimiter` (string, optional): Field delimiter (default: ',')
- `QuoteCharacter` (string, optional): Quote character for escaping (default: '"')
- `SkipEmptyRows` (boolean, optional): Skip empty rows (default: true)
**Example Usage:**
```typescript
const result = await ActionEngine.RunAction({
ActionName: 'CSV Parser',
Params: [
{ Name: 'CSVData', Value: 'Name,Age,City\nJohn,30,NYC\nJane,25,LA' },
{ Name: 'HasHeaders', Value: true }
],
ContextUser: currentUser
});JSON Transform Action
Transforms JSON data using JSONPath-style queries with multiple operations support.
Class: JSONTransformAction
Registration Name: "JSON Transform"
Parameters:
InputData(object/string, required): JSON data to transform (supports both JSON object and string)Transformations(string/array, required): JSONPath queries for transformationOutputFormat(string, optional): 'object' or 'array' (default: 'object')DefaultValue(any, optional): Default value for missing paths
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'JSON Transform',
Params: [
{ Name: 'InputData', Value: { users: [{ name: 'John', age: 30 }] } },
{ Name: 'Transformations', Value: ['name:$.users[0].name', 'age:$.users[0].age'] }
],
ContextUser: currentUser
});XML Parser Action
Parses XML data into JSON format with namespace support.
Class: XMLParserAction
Registration Name: "XML Parser"
Parameters:
XMLData(string, required): The XML data to parseRemoveNamespaces(boolean, optional): Strip namespace prefixes (default: false)ParseNumbers(boolean, optional): Convert numeric strings to numbers (default: true)ParseBooleans(boolean, optional): Convert boolean strings to booleans (default: true)AttributePrefix(string, optional): Prefix for attributes (default: '@')
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'XML Parser',
Params: [
{ Name: 'XMLData', Value: '<root><user id="1"><name>John</name></user></root>' },
{ Name: 'ParseNumbers', Value: true }
],
ContextUser: currentUser
});Aggregate Data Action
Performs aggregation operations on arrays of data with support for multiple aggregation functions.
Class: AggregateDataAction
Registration Name: "Aggregate Data"
Parameters:
Data(array, required): Array of objects to aggregateGroupBy(string/array, optional): Field(s) to group byAggregations(object/string, required): Aggregation operations (sum, avg, count, min, max)Having(object, optional): Filter conditions on aggregated results
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Aggregate Data',
Params: [
{ Name: 'Data', Value: [{ category: 'A', value: 10 }, { category: 'A', value: 20 }] },
{ Name: 'GroupBy', Value: 'category' },
{ Name: 'Aggregations', Value: { totalValue: 'sum:value', avgValue: 'avg:value' } }
],
ContextUser: currentUser
});Data Mapper Action
Maps data from one structure to another using field mappings and transformations.
Class: DataMapperAction
Registration Name: "Data Mapper"
Parameters:
SourceData(object/array, required): Data to mapMappings(object/string, required): Field mapping configurationDefaultValues(object, optional): Default values for missing fieldsRemoveUnmapped(boolean, optional): Remove fields not in mapping (default: false)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Data Mapper',
Params: [
{ Name: 'SourceData', Value: { firstName: 'John', lastName: 'Doe' } },
{ Name: 'Mappings', Value: { fullName: '{{firstName}} {{lastName}}' } }
],
ContextUser: currentUser
});6. File Operations Actions
PDF Generator Action
Generates PDF documents from HTML or markdown content.
Class: PDFGeneratorAction
Registration Name: "PDF Generator"
Parameters:
Content(string, required): HTML or markdown contentContentType(string, optional): 'html' or 'markdown' (default: 'html')Options(object/string, optional): PDF options (margins, orientation, etc.)FileName(string, optional): Output filename
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'PDF Generator',
Params: [
{ Name: 'Content', Value: '<h1>Report</h1><p>Content here</p>' },
{ Name: 'Options', Value: { margin: { top: '1in' }, orientation: 'portrait' } }
],
ContextUser: currentUser
});PDF Extractor Action
Extracts text and metadata from PDF files.
Class: PDFExtractorAction
Registration Name: "PDF Extractor"
Parameters:
PDFData(Buffer/string, required): PDF file data or base64 stringExtractText(boolean, optional): Extract text content (default: true)ExtractMetadata(boolean, optional): Extract document metadata (default: true)PageRange(string, optional): Pages to extract (e.g., '1-5,7,9-10')
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'PDF Extractor',
Params: [
{ Name: 'PDFData', Value: pdfBuffer },
{ Name: 'PageRange', Value: '1-10' }
],
ContextUser: currentUser
});Excel Reader Action
Reads data from Excel files with support for multiple sheets.
Class: ExcelReaderAction
Registration Name: "Excel Reader"
Parameters:
ExcelData(Buffer/string, required): Excel file data or base64 stringSheetName(string, optional): Specific sheet to readRange(string, optional): Cell range to read (e.g., 'A1:D10')ParseDates(boolean, optional): Convert Excel dates (default: true)IncludeEmptyRows(boolean, optional): Include empty rows (default: false)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Excel Reader',
Params: [
{ Name: 'ExcelData', Value: excelBuffer },
{ Name: 'SheetName', Value: 'Sales Data' }
],
ContextUser: currentUser
});Excel Writer Action
Creates Excel files from data with formatting options.
Class: ExcelWriterAction
Registration Name: "Excel Writer"
Parameters:
Data(array/object, required): Data to write (array of objects or sheets config)SheetName(string, optional): Sheet name (default: 'Sheet1')IncludeHeaders(boolean, optional): Include column headers (default: true)ColumnWidths(object, optional): Custom column widthsFormatting(object/string, optional): Cell formatting rules
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Excel Writer',
Params: [
{ Name: 'Data', Value: [{ name: 'John', sales: 1000 }, { name: 'Jane', sales: 1500 }] },
{ Name: 'SheetName', Value: 'Sales Report' }
],
ContextUser: currentUser
});File Compress Action
Compresses files into ZIP archives.
Class: FileCompressAction
Registration Name: "File Compress"
Parameters:
Files(array, required): Array of file objects with name and contentCompressionLevel(number, optional): Compression level 0-9 (default: 6)ArchiveName(string, optional): Output archive namePassword(string, optional): Password protection for archive
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'File Compress',
Params: [
{ Name: 'Files', Value: [
{ name: 'report.txt', content: 'Report content' },
{ name: 'data.json', content: JSON.stringify(data) }
]},
{ Name: 'ArchiveName', Value: 'backup.zip' }
],
ContextUser: currentUser
});7. Integration Actions
HTTP Request Action
Makes HTTP requests with full control over headers, body, and authentication.
Class: HTTPRequestAction
Registration Name: "HTTP Request"
Parameters:
URL(string, required): Request URLMethod(string, optional): HTTP method (default: 'GET')Headers(object/string, optional): Request headersBody(any, optional): Request bodyTimeout(number, optional): Request timeout in ms (default: 30000)RetryCount(number, optional): Number of retries (default: 0)BasicAuth(object, optional): Basic authentication credentials
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'HTTP Request',
Params: [
{ Name: 'URL', Value: 'https://api.example.com/data' },
{ Name: 'Method', Value: 'POST' },
{ Name: 'Headers', Value: { 'Content-Type': 'application/json' } },
{ Name: 'Body', Value: { query: 'test' } }
],
ContextUser: currentUser
});GraphQL Query Action
Executes GraphQL queries and mutations with variable support.
Class: GraphQLQueryAction
Registration Name: "GraphQL Query"
Parameters:
Endpoint(string, required): GraphQL endpoint URLQuery(string, required): GraphQL query or mutationVariables(object/string, optional): Query variablesHeaders(object/string, optional): Request headersOperationName(string, optional): Operation name for multi-operation documents
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'GraphQL Query',
Params: [
{ Name: 'Endpoint', Value: 'https://api.example.com/graphql' },
{ Name: 'Query', Value: 'query GetUser($id: ID!) { user(id: $id) { name email } }' },
{ Name: 'Variables', Value: { id: '123' } }
],
ContextUser: currentUser
});OAuth Flow Action
Handles OAuth 2.0 authentication flows.
Class: OAuthFlowAction
Registration Name: "OAuth Flow"
Parameters:
Provider(string, required): OAuth provider nameClientID(string, required): OAuth client IDClientSecret(string, required): OAuth client secretRedirectURI(string, required): Redirect URIScopes(string/array, optional): Required scopesState(string, optional): State parameter for security
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'OAuth Flow',
Params: [
{ Name: 'Provider', Value: 'google' },
{ Name: 'ClientID', Value: 'your-client-id' },
{ Name: 'ClientSecret', Value: 'your-client-secret' },
{ Name: 'RedirectURI', Value: 'https://app.example.com/callback' },
{ Name: 'Scopes', Value: ['email', 'profile'] }
],
ContextUser: currentUser
});API Rate Limiter Action
Manages API rate limiting with queuing and backoff strategies.
Class: APIRateLimiterAction
Registration Name: "API Rate Limiter"
Parameters:
APIName(string, required): API identifierRequestsPerWindow(number, required): Max requests per time windowWindowSizeMs(number, optional): Time window in ms (default: 60000)QueueRequests(boolean, optional): Queue excess requests (default: true)MaxQueueSize(number, optional): Maximum queue size (default: 100)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'API Rate Limiter',
Params: [
{ Name: 'APIName', Value: 'external-api' },
{ Name: 'RequestsPerWindow', Value: 100 },
{ Name: 'WindowSizeMs', Value: 60000 }
],
ContextUser: currentUser
});8. Security Actions
Password Strength Action
Evaluates password strength and provides improvement suggestions.
Class: PasswordStrengthAction
Registration Name: "Password Strength"
Parameters:
Password(string, required): Password to evaluateMinLength(number, optional): Minimum required length (default: 8)RequireUppercase(boolean, optional): Require uppercase letters (default: true)RequireLowercase(boolean, optional): Require lowercase letters (default: true)RequireNumbers(boolean, optional): Require numbers (default: true)RequireSpecial(boolean, optional): Require special characters (default: true)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Password Strength',
Params: [
{ Name: 'Password', Value: 'MyP@ssw0rd' },
{ Name: 'MinLength', Value: 12 }
],
ContextUser: currentUser
});9. Workflow Control Actions
Conditional Action
Executes actions based on conditional logic.
Class: ConditionalAction
Registration Name: "Conditional"
Parameters:
Condition(string, required): JavaScript expression to evaluateThenAction(object, required): Action to run if condition is trueElseAction(object, optional): Action to run if condition is falseContext(object, optional): Variables available in condition
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Conditional',
Params: [
{ Name: 'Condition', Value: 'value > 100' },
{ Name: 'Context', Value: { value: 150 } },
{ Name: 'ThenAction', Value: { name: 'Send Email', params: {...} } }
],
ContextUser: currentUser
});Loop Action
Executes actions repeatedly with iteration support.
Class: LoopAction
Registration Name: "Loop"
Parameters:
Items(array, optional): Array to iterate overCount(number, optional): Number of iterations (if no items)Action(object, required): Action to execute for each iterationParallel(boolean, optional): Run iterations in parallel (default: false)MaxConcurrency(number, optional): Max parallel executions (default: 10)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Loop',
Params: [
{ Name: 'Items', Value: [1, 2, 3, 4, 5] },
{ Name: 'Action', Value: { name: 'Process Item', params: {...} } },
{ Name: 'Parallel', Value: true }
],
ContextUser: currentUser
});Parallel Execute Action
Runs multiple actions concurrently with result aggregation.
Class: ParallelExecuteAction
Registration Name: "Parallel Execute"
Parameters:
Actions(array, required): Array of actions to executeMaxConcurrency(number, optional): Maximum concurrent executions (default: 10)StopOnError(boolean, optional): Stop all if one fails (default: false)Timeout(number, optional): Overall timeout in ms
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Parallel Execute',
Params: [
{ Name: 'Actions', Value: [
{ name: 'Web Search', params: { SearchTerms: 'AI' } },
{ name: 'HTTP Request', params: { URL: 'https://api.example.com' } }
]},
{ Name: 'MaxConcurrency', Value: 2 }
],
ContextUser: currentUser
});Retry Action
Retries failed actions with configurable backoff strategies.
Class: RetryAction
Registration Name: "Retry"
Parameters:
Action(object, required): Action to retryMaxRetries(number, optional): Maximum retry attempts (default: 3)InitialDelay(number, optional): Initial delay in ms (default: 1000)BackoffMultiplier(number, optional): Delay multiplier (default: 2)MaxDelay(number, optional): Maximum delay in ms (default: 30000)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Retry',
Params: [
{ Name: 'Action', Value: { name: 'HTTP Request', params: {...} } },
{ Name: 'MaxRetries', Value: 5 },
{ Name: 'InitialDelay', Value: 2000 }
],
ContextUser: currentUser
});Delay Action
Introduces delays in workflow execution.
Class: DelayAction
Registration Name: "Delay"
Parameters:
DelayMs(number, required): Delay duration in millisecondsJitter(number, optional): Random jitter to add (0-1, percentage of delay)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Delay',
Params: [
{ Name: 'DelayMs', Value: 5000 },
{ Name: 'Jitter', Value: 0.1 } // 10% jitter
],
ContextUser: currentUser
});10. Communication Actions
Slack Webhook Action
Sends messages to Slack channels via webhooks.
Class: SlackWebhookAction
Registration Name: "Slack Webhook"
Parameters:
WebhookURL(string, required): Slack webhook URLMessage(string, required): Message textChannel(string, optional): Override default channelUsername(string, optional): Override default usernameIconEmoji(string, optional): Override default iconAttachments(array/string, optional): Rich message attachments
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Slack Webhook',
Params: [
{ Name: 'WebhookURL', Value: 'https://hooks.slack.com/services/...' },
{ Name: 'Message', Value: 'Deployment completed successfully!' },
{ Name: 'IconEmoji', Value: ':rocket:' }
],
ContextUser: currentUser
});Teams Webhook Action
Sends messages to Microsoft Teams channels via webhooks.
Class: TeamsWebhookAction
Registration Name: "Teams Webhook"
Parameters:
WebhookURL(string, required): Teams webhook URLTitle(string, optional): Message titleText(string, required): Message textThemeColor(string, optional): Message accent colorSections(array/string, optional): Message sectionsActions(array/string, optional): Interactive actions
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Teams Webhook',
Params: [
{ Name: 'WebhookURL', Value: 'https://outlook.office.com/webhook/...' },
{ Name: 'Title', Value: 'Build Status' },
{ Name: 'Text', Value: 'Build #123 completed successfully' },
{ Name: 'ThemeColor', Value: '00FF00' }
],
ContextUser: currentUser
});11. AI Actions
Execute AI Prompt Action
Executes AI prompts using MemberJunction's AI framework with model selection and parameter control.
Class: ExecuteAIPromptAction
Registration Name: "Execute AI Prompt"
Parameters:
PromptID(string, optional): ID of saved prompt templatePromptName(string, optional): Name of saved prompt templatePromptText(string, optional): Direct prompt text (if not using template)ModelID(string, optional): Specific AI model ID to useModelName(string, optional): Specific AI model name to useTemperature(number, optional): Model temperature (0-2)MaxTokens(number, optional): Maximum response tokensVariables(object/string, optional): Variables to inject into prompt template
Example Usage:
// Using a saved prompt template
const templateResult = await ActionEngine.RunAction({
ActionName: 'Execute AI Prompt',
Params: [
{ Name: 'PromptName', Value: 'Summarize Text' },
{ Name: 'Variables', Value: { text: 'Long article text here...' } },
{ Name: 'Temperature', Value: 0.7 }
],
ContextUser: currentUser
});
// Using direct prompt text
const directResult = await ActionEngine.RunAction({
ActionName: 'Execute AI Prompt',
Params: [
{ Name: 'PromptText', Value: 'Explain quantum computing in simple terms' },
{ Name: 'ModelName', Value: 'gpt-4' },
{ Name: 'MaxTokens', Value: 500 }
],
ContextUser: currentUser
});Special Features
Dual JSON Parameter Support
Many actions support both JSON object and string inputs for flexibility:
- JSON Object: Pass JavaScript objects directly
- JSON String: Pass stringified JSON for dynamic content
This applies to actions like JSON Transform, HTTP Request, GraphQL Query, and others with object parameters.
Error Handling and Recovery
Actions implement various error handling strategies:
- Graceful Degradation: Actions continue with partial results when possible
- Detailed Error Messages: Clear explanations of what went wrong
- Retry Logic: Built-in retry mechanisms for transient failures
- Validation: Input validation with helpful error messages
Performance Considerations
- Streaming Support: Large file operations use streaming when possible
- Batch Processing: Actions process data in chunks for memory efficiency
- Parallel Execution: Workflow actions support concurrent processing
- Resource Management: Proper cleanup of resources after execution
npm install @memberjunction/core-actions5. Data Transformation Actions
CSV Parser Action
Parses CSV data with configurable options for headers, delimiters, and data types.
Class: CSVParserAction
Registration Name: "CSV Parser"
Parameters:
CSVData(string, required): The CSV data to parseHasHeaders(boolean, optional): Whether the first row contains headers (default: true)Delimiter(string, optional): Field delimiter (default: ',')QuoteCharacter(string, optional): Quote character for escaping (default: '"')SkipEmptyRows(boolean, optional): Skip empty rows (default: true)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'CSV Parser',
Params: [
{ Name: 'CSVData', Value: 'Name,Age,City\nJohn,30,NYC\nJane,25,LA' },
{ Name: 'HasHeaders', Value: true }
],
ContextUser: currentUser
});JSON Transform Action
Transforms JSON data using JSONPath-style queries with multiple operations support.
Class: JSONTransformAction
Registration Name: "JSON Transform"
Parameters:
InputData(object/string, required): JSON data to transform (supports both JSON object and string)Transformations(string/array, required): JSONPath queries for transformationOutputFormat(string, optional): 'object' or 'array' (default: 'object')DefaultValue(any, optional): Default value for missing paths
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'JSON Transform',
Params: [
{ Name: 'InputData', Value: { users: [{ name: 'John', age: 30 }] } },
{ Name: 'Transformations', Value: ['name:$.users[0].name', 'age:$.users[0].age'] }
],
ContextUser: currentUser
});XML Parser Action
Parses XML data into JSON format with namespace support.
Class: XMLParserAction
Registration Name: "XML Parser"
Parameters:
XMLData(string, required): The XML data to parseRemoveNamespaces(boolean, optional): Strip namespace prefixes (default: false)ParseNumbers(boolean, optional): Convert numeric strings to numbers (default: true)ParseBooleans(boolean, optional): Convert boolean strings to booleans (default: true)AttributePrefix(string, optional): Prefix for attributes (default: '@')
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'XML Parser',
Params: [
{ Name: 'XMLData', Value: '<root><user id="1"><name>John</name></user></root>' },
{ Name: 'ParseNumbers', Value: true }
],
ContextUser: currentUser
});Aggregate Data Action
Performs aggregation operations on arrays of data with support for multiple aggregation functions.
Class: AggregateDataAction
Registration Name: "Aggregate Data"
Parameters:
Data(array, required): Array of objects to aggregateGroupBy(string/array, optional): Field(s) to group byAggregations(object/string, required): Aggregation operations (sum, avg, count, min, max)Having(object, optional): Filter conditions on aggregated results
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Aggregate Data',
Params: [
{ Name: 'Data', Value: [{ category: 'A', value: 10 }, { category: 'A', value: 20 }] },
{ Name: 'GroupBy', Value: 'category' },
{ Name: 'Aggregations', Value: { totalValue: 'sum:value', avgValue: 'avg:value' } }
],
ContextUser: currentUser
});Data Mapper Action
Maps data from one structure to another using field mappings and transformations.
Class: DataMapperAction
Registration Name: "Data Mapper"
Parameters:
SourceData(object/array, required): Data to mapMappings(object/string, required): Field mapping configurationDefaultValues(object, optional): Default values for missing fieldsRemoveUnmapped(boolean, optional): Remove fields not in mapping (default: false)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Data Mapper',
Params: [
{ Name: 'SourceData', Value: { firstName: 'John', lastName: 'Doe' } },
{ Name: 'Mappings', Value: { fullName: '{{firstName}} {{lastName}}' } }
],
ContextUser: currentUser
});6. File Operations Actions
PDF Generator Action
Generates PDF documents from HTML or markdown content.
Class: PDFGeneratorAction
Registration Name: "PDF Generator"
Parameters:
Content(string, required): HTML or markdown contentContentType(string, optional): 'html' or 'markdown' (default: 'html')Options(object/string, optional): PDF options (margins, orientation, etc.)FileName(string, optional): Output filename
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'PDF Generator',
Params: [
{ Name: 'Content', Value: '<h1>Report</h1><p>Content here</p>' },
{ Name: 'Options', Value: { margin: { top: '1in' }, orientation: 'portrait' } }
],
ContextUser: currentUser
});PDF Extractor Action
Extracts text and metadata from PDF files.
Class: PDFExtractorAction
Registration Name: "PDF Extractor"
Parameters:
PDFData(Buffer/string, required): PDF file data or base64 stringExtractText(boolean, optional): Extract text content (default: true)ExtractMetadata(boolean, optional): Extract document metadata (default: true)PageRange(string, optional): Pages to extract (e.g., '1-5,7,9-10')
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'PDF Extractor',
Params: [
{ Name: 'PDFData', Value: pdfBuffer },
{ Name: 'PageRange', Value: '1-10' }
],
ContextUser: currentUser
});Excel Reader Action
Reads data from Excel files with support for multiple sheets.
Class: ExcelReaderAction
Registration Name: "Excel Reader"
Parameters:
ExcelData(Buffer/string, required): Excel file data or base64 stringSheetName(string, optional): Specific sheet to readRange(string, optional): Cell range to read (e.g., 'A1:D10')ParseDates(boolean, optional): Convert Excel dates (default: true)IncludeEmptyRows(boolean, optional): Include empty rows (default: false)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Excel Reader',
Params: [
{ Name: 'ExcelData', Value: excelBuffer },
{ Name: 'SheetName', Value: 'Sales Data' }
],
ContextUser: currentUser
});Excel Writer Action
Creates Excel files from data with formatting options.
Class: ExcelWriterAction
Registration Name: "Excel Writer"
Parameters:
Data(array/object, required): Data to write (array of objects or sheets config)SheetName(string, optional): Sheet name (default: 'Sheet1')IncludeHeaders(boolean, optional): Include column headers (default: true)ColumnWidths(object, optional): Custom column widthsFormatting(object/string, optional): Cell formatting rules
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Excel Writer',
Params: [
{ Name: 'Data', Value: [{ name: 'John', sales: 1000 }, { name: 'Jane', sales: 1500 }] },
{ Name: 'SheetName', Value: 'Sales Report' }
],
ContextUser: currentUser
});File Compress Action
Compresses files into ZIP archives.
Class: FileCompressAction
Registration Name: "File Compress"
Parameters:
Files(array, required): Array of file objects with name and contentCompressionLevel(number, optional): Compression level 0-9 (default: 6)ArchiveName(string, optional): Output archive namePassword(string, optional): Password protection for archive
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'File Compress',
Params: [
{ Name: 'Files', Value: [
{ name: 'report.txt', content: 'Report content' },
{ name: 'data.json', content: JSON.stringify(data) }
]},
{ Name: 'ArchiveName', Value: 'backup.zip' }
],
ContextUser: currentUser
});7. Integration Actions
HTTP Request Action
Makes HTTP requests with full control over headers, body, and authentication.
Class: HTTPRequestAction
Registration Name: "HTTP Request"
Parameters:
URL(string, required): Request URLMethod(string, optional): HTTP method (default: 'GET')Headers(object/string, optional): Request headersBody(any, optional): Request bodyTimeout(number, optional): Request timeout in ms (default: 30000)RetryCount(number, optional): Number of retries (default: 0)BasicAuth(object, optional): Basic authentication credentials
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'HTTP Request',
Params: [
{ Name: 'URL', Value: 'https://api.example.com/data' },
{ Name: 'Method', Value: 'POST' },
{ Name: 'Headers', Value: { 'Content-Type': 'application/json' } },
{ Name: 'Body', Value: { query: 'test' } }
],
ContextUser: currentUser
});GraphQL Query Action
Executes GraphQL queries and mutations with variable support.
Class: GraphQLQueryAction
Registration Name: "GraphQL Query"
Parameters:
Endpoint(string, required): GraphQL endpoint URLQuery(string, required): GraphQL query or mutationVariables(object/string, optional): Query variablesHeaders(object/string, optional): Request headersOperationName(string, optional): Operation name for multi-operation documents
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'GraphQL Query',
Params: [
{ Name: 'Endpoint', Value: 'https://api.example.com/graphql' },
{ Name: 'Query', Value: 'query GetUser($id: ID!) { user(id: $id) { name email } }' },
{ Name: 'Variables', Value: { id: '123' } }
],
ContextUser: currentUser
});OAuth Flow Action
Handles OAuth 2.0 authentication flows.
Class: OAuthFlowAction
Registration Name: "OAuth Flow"
Parameters:
Provider(string, required): OAuth provider nameClientID(string, required): OAuth client IDClientSecret(string, required): OAuth client secretRedirectURI(string, required): Redirect URIScopes(string/array, optional): Required scopesState(string, optional): State parameter for security
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'OAuth Flow',
Params: [
{ Name: 'Provider', Value: 'google' },
{ Name: 'ClientID', Value: 'your-client-id' },
{ Name: 'ClientSecret', Value: 'your-client-secret' },
{ Name: 'RedirectURI', Value: 'https://app.example.com/callback' },
{ Name: 'Scopes', Value: ['email', 'profile'] }
],
ContextUser: currentUser
});API Rate Limiter Action
Manages API rate limiting with queuing and backoff strategies.
Class: APIRateLimiterAction
Registration Name: "API Rate Limiter"
Parameters:
APIName(string, required): API identifierRequestsPerWindow(number, required): Max requests per time windowWindowSizeMs(number, optional): Time window in ms (default: 60000)QueueRequests(boolean, optional): Queue excess requests (default: true)MaxQueueSize(number, optional): Maximum queue size (default: 100)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'API Rate Limiter',
Params: [
{ Name: 'APIName', Value: 'external-api' },
{ Name: 'RequestsPerWindow', Value: 100 },
{ Name: 'WindowSizeMs', Value: 60000 }
],
ContextUser: currentUser
});8. Security Actions
Password Strength Action
Evaluates password strength and provides improvement suggestions.
Class: PasswordStrengthAction
Registration Name: "Password Strength"
Parameters:
Password(string, required): Password to evaluateMinLength(number, optional): Minimum required length (default: 8)RequireUppercase(boolean, optional): Require uppercase letters (default: true)RequireLowercase(boolean, optional): Require lowercase letters (default: true)RequireNumbers(boolean, optional): Require numbers (default: true)RequireSpecial(boolean, optional): Require special characters (default: true)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Password Strength',
Params: [
{ Name: 'Password', Value: 'MyP@ssw0rd' },
{ Name: 'MinLength', Value: 12 }
],
ContextUser: currentUser
});9. Workflow Control Actions
Conditional Action
Executes actions based on conditional logic.
Class: ConditionalAction
Registration Name: "Conditional"
Parameters:
Condition(string, required): JavaScript expression to evaluateThenAction(object, required): Action to run if condition is trueElseAction(object, optional): Action to run if condition is falseContext(object, optional): Variables available in condition
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Conditional',
Params: [
{ Name: 'Condition', Value: 'value > 100' },
{ Name: 'Context', Value: { value: 150 } },
{ Name: 'ThenAction', Value: { name: 'Send Email', params: {...} } }
],
ContextUser: currentUser
});Loop Action
Executes actions repeatedly with iteration support.
Class: LoopAction
Registration Name: "Loop"
Parameters:
Items(array, optional): Array to iterate overCount(number, optional): Number of iterations (if no items)Action(object, required): Action to execute for each iterationParallel(boolean, optional): Run iterations in parallel (default: false)MaxConcurrency(number, optional): Max parallel executions (default: 10)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Loop',
Params: [
{ Name: 'Items', Value: [1, 2, 3, 4, 5] },
{ Name: 'Action', Value: { name: 'Process Item', params: {...} } },
{ Name: 'Parallel', Value: true }
],
ContextUser: currentUser
});Parallel Execute Action
Runs multiple actions concurrently with result aggregation.
Class: ParallelExecuteAction
Registration Name: "Parallel Execute"
Parameters:
Actions(array, required): Array of actions to executeMaxConcurrency(number, optional): Maximum concurrent executions (default: 10)StopOnError(boolean, optional): Stop all if one fails (default: false)Timeout(number, optional): Overall timeout in ms
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Parallel Execute',
Params: [
{ Name: 'Actions', Value: [
{ name: 'Web Search', params: { SearchTerms: 'AI' } },
{ name: 'HTTP Request', params: { URL: 'https://api.example.com' } }
]},
{ Name: 'MaxConcurrency', Value: 2 }
],
ContextUser: currentUser
});Retry Action
Retries failed actions with configurable backoff strategies.
Class: RetryAction
Registration Name: "Retry"
Parameters:
Action(object, required): Action to retryMaxRetries(number, optional): Maximum retry attempts (default: 3)InitialDelay(number, optional): Initial delay in ms (default: 1000)BackoffMultiplier(number, optional): Delay multiplier (default: 2)MaxDelay(number, optional): Maximum delay in ms (default: 30000)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Retry',
Params: [
{ Name: 'Action', Value: { name: 'HTTP Request', params: {...} } },
{ Name: 'MaxRetries', Value: 5 },
{ Name: 'InitialDelay', Value: 2000 }
],
ContextUser: currentUser
});Delay Action
Introduces delays in workflow execution.
Class: DelayAction
Registration Name: "Delay"
Parameters:
DelayMs(number, required): Delay duration in millisecondsJitter(number, optional): Random jitter to add (0-1, percentage of delay)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Delay',
Params: [
{ Name: 'DelayMs', Value: 5000 },
{ Name: 'Jitter', Value: 0.1 } // 10% jitter
],
ContextUser: currentUser
});10. Communication Actions
Slack Webhook Action
Sends messages to Slack channels via webhooks.
Class: SlackWebhookAction
Registration Name: "Slack Webhook"
Parameters:
WebhookURL(string, required): Slack webhook URLMessage(string, required): Message textChannel(string, optional): Override default channelUsername(string, optional): Override default usernameIconEmoji(string, optional): Override default iconAttachments(array/string, optional): Rich message attachments
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Slack Webhook',
Params: [
{ Name: 'WebhookURL', Value: 'https://hooks.slack.com/services/...' },
{ Name: 'Message', Value: 'Deployment completed successfully!' },
{ Name: 'IconEmoji', Value: ':rocket:' }
],
ContextUser: currentUser
});Teams Webhook Action
Sends messages to Microsoft Teams channels via webhooks.
Class: TeamsWebhookAction
Registration Name: "Teams Webhook"
Parameters:
WebhookURL(string, required): Teams webhook URLTitle(string, optional): Message titleText(string, required): Message textThemeColor(string, optional): Message accent colorSections(array/string, optional): Message sectionsActions(array/string, optional): Interactive actions
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Teams Webhook',
Params: [
{ Name: 'WebhookURL', Value: 'https://outlook.office.com/webhook/...' },
{ Name: 'Title', Value: 'Build Status' },
{ Name: 'Text', Value: 'Build #123 completed successfully' },
{ Name: 'ThemeColor', Value: '00FF00' }
],
ContextUser: currentUser
});11. AI Actions
Execute AI Prompt Action
Executes AI prompts using MemberJunction's AI framework with model selection and parameter control.
Class: ExecuteAIPromptAction
Registration Name: "Execute AI Prompt"
Parameters:
PromptID(string, optional): ID of saved prompt templatePromptName(string, optional): Name of saved prompt templatePromptText(string, optional): Direct prompt text (if not using template)ModelID(string, optional): Specific AI model ID to useModelName(string, optional): Specific AI model name to useTemperature(number, optional): Model temperature (0-2)MaxTokens(number, optional): Maximum response tokensVariables(object/string, optional): Variables to inject into prompt template
Example Usage:
// Using a saved prompt template
const templateResult = await ActionEngine.RunAction({
ActionName: 'Execute AI Prompt',
Params: [
{ Name: 'PromptName', Value: 'Summarize Text' },
{ Name: 'Variables', Value: { text: 'Long article text here...' } },
{ Name: 'Temperature', Value: 0.7 }
],
ContextUser: currentUser
});
// Using direct prompt text
const directResult = await ActionEngine.RunAction({
ActionName: 'Execute AI Prompt',
Params: [
{ Name: 'PromptText', Value: 'Explain quantum computing in simple terms' },
{ Name: 'ModelName', Value: 'gpt-4' },
{ Name: 'MaxTokens', Value: 500 }
],
ContextUser: currentUser
});Special Features
Dual JSON Parameter Support
Many actions support both JSON object and string inputs for flexibility:
- JSON Object: Pass JavaScript objects directly
- JSON String: Pass stringified JSON for dynamic content
This applies to actions like JSON Transform, HTTP Request, GraphQL Query, and others with object parameters.
Error Handling and Recovery
Actions implement various error handling strategies:
- Graceful Degradation: Actions continue with partial results when possible
- Detailed Error Messages: Clear explanations of what went wrong
- Retry Logic: Built-in retry mechanisms for transient failures
- Validation: Input validation with helpful error messages
Performance Considerations
- Streaming Support: Large file operations use streaming when possible
- Batch Processing: Actions process data in chunks for memory efficiency
- Parallel Execution: Workflow actions support concurrent processing
- Resource Management: Proper cleanup of resources after execution
## Available Actions
### 1. Send Single Message Action
Provides a simple wrapper around the MemberJunction Communication Framework to send single messages through various communication providers.
**Class:** `SendSingleMessageAction`
**Registration Name:** `"Send Single Message"`
**Parameters:**
- `Subject` (string): The subject of the message
- `Body` (string): The body content of the message
- `To` (string): The recipient's address
- `From` (string): The sender's address
- `Provider` (string): The name of the Communication Provider to use
- `MessageType` (string): The name of the Message Type within the provider
**Example Usage:**
5. Data Transformation Actions
CSV Parser Action
Parses CSV data with configurable options for headers, delimiters, and data types.
Class: CSVParserAction
Registration Name: "CSV Parser"
Parameters:
CSVData(string, required): The CSV data to parseHasHeaders(boolean, optional): Whether the first row contains headers (default: true)Delimiter(string, optional): Field delimiter (default: ',')QuoteCharacter(string, optional): Quote character for escaping (default: '"')SkipEmptyRows(boolean, optional): Skip empty rows (default: true)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'CSV Parser',
Params: [
{ Name: 'CSVData', Value: 'Name,Age,City\nJohn,30,NYC\nJane,25,LA' },
{ Name: 'HasHeaders', Value: true }
],
ContextUser: currentUser
});JSON Transform Action
Transforms JSON data using JSONPath-style queries with multiple operations support.
Class: JSONTransformAction
Registration Name: "JSON Transform"
Parameters:
InputData(object/string, required): JSON data to transform (supports both JSON object and string)Transformations(string/array, required): JSONPath queries for transformationOutputFormat(string, optional): 'object' or 'array' (default: 'object')DefaultValue(any, optional): Default value for missing paths
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'JSON Transform',
Params: [
{ Name: 'InputData', Value: { users: [{ name: 'John', age: 30 }] } },
{ Name: 'Transformations', Value: ['name:$.users[0].name', 'age:$.users[0].age'] }
],
ContextUser: currentUser
});XML Parser Action
Parses XML data into JSON format with namespace support.
Class: XMLParserAction
Registration Name: "XML Parser"
Parameters:
XMLData(string, required): The XML data to parseRemoveNamespaces(boolean, optional): Strip namespace prefixes (default: false)ParseNumbers(boolean, optional): Convert numeric strings to numbers (default: true)ParseBooleans(boolean, optional): Convert boolean strings to booleans (default: true)AttributePrefix(string, optional): Prefix for attributes (default: '@')
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'XML Parser',
Params: [
{ Name: 'XMLData', Value: '<root><user id="1"><name>John</name></user></root>' },
{ Name: 'ParseNumbers', Value: true }
],
ContextUser: currentUser
});Aggregate Data Action
Performs aggregation operations on arrays of data with support for multiple aggregation functions.
Class: AggregateDataAction
Registration Name: "Aggregate Data"
Parameters:
Data(array, required): Array of objects to aggregateGroupBy(string/array, optional): Field(s) to group byAggregations(object/string, required): Aggregation operations (sum, avg, count, min, max)Having(object, optional): Filter conditions on aggregated results
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Aggregate Data',
Params: [
{ Name: 'Data', Value: [{ category: 'A', value: 10 }, { category: 'A', value: 20 }] },
{ Name: 'GroupBy', Value: 'category' },
{ Name: 'Aggregations', Value: { totalValue: 'sum:value', avgValue: 'avg:value' } }
],
ContextUser: currentUser
});Data Mapper Action
Maps data from one structure to another using field mappings and transformations.
Class: DataMapperAction
Registration Name: "Data Mapper"
Parameters:
SourceData(object/array, required): Data to mapMappings(object/string, required): Field mapping configurationDefaultValues(object, optional): Default values for missing fieldsRemoveUnmapped(boolean, optional): Remove fields not in mapping (default: false)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Data Mapper',
Params: [
{ Name: 'SourceData', Value: { firstName: 'John', lastName: 'Doe' } },
{ Name: 'Mappings', Value: { fullName: '{{firstName}} {{lastName}}' } }
],
ContextUser: currentUser
});6. File Operations Actions
PDF Generator Action
Generates PDF documents from HTML or markdown content.
Class: PDFGeneratorAction
Registration Name: "PDF Generator"
Parameters:
Content(string, required): HTML or markdown contentContentType(string, optional): 'html' or 'markdown' (default: 'html')Options(object/string, optional): PDF options (margins, orientation, etc.)FileName(string, optional): Output filename
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'PDF Generator',
Params: [
{ Name: 'Content', Value: '<h1>Report</h1><p>Content here</p>' },
{ Name: 'Options', Value: { margin: { top: '1in' }, orientation: 'portrait' } }
],
ContextUser: currentUser
});PDF Extractor Action
Extracts text and metadata from PDF files.
Class: PDFExtractorAction
Registration Name: "PDF Extractor"
Parameters:
PDFData(Buffer/string, required): PDF file data or base64 stringExtractText(boolean, optional): Extract text content (default: true)ExtractMetadata(boolean, optional): Extract document metadata (default: true)PageRange(string, optional): Pages to extract (e.g., '1-5,7,9-10')
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'PDF Extractor',
Params: [
{ Name: 'PDFData', Value: pdfBuffer },
{ Name: 'PageRange', Value: '1-10' }
],
ContextUser: currentUser
});Excel Reader Action
Reads data from Excel files with support for multiple sheets.
Class: ExcelReaderAction
Registration Name: "Excel Reader"
Parameters:
ExcelData(Buffer/string, required): Excel file data or base64 stringSheetName(string, optional): Specific sheet to readRange(string, optional): Cell range to read (e.g., 'A1:D10')ParseDates(boolean, optional): Convert Excel dates (default: true)IncludeEmptyRows(boolean, optional): Include empty rows (default: false)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Excel Reader',
Params: [
{ Name: 'ExcelData', Value: excelBuffer },
{ Name: 'SheetName', Value: 'Sales Data' }
],
ContextUser: currentUser
});Excel Writer Action
Creates Excel files from data with formatting options.
Class: ExcelWriterAction
Registration Name: "Excel Writer"
Parameters:
Data(array/object, required): Data to write (array of objects or sheets config)SheetName(string, optional): Sheet name (default: 'Sheet1')IncludeHeaders(boolean, optional): Include column headers (default: true)ColumnWidths(object, optional): Custom column widthsFormatting(object/string, optional): Cell formatting rules
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Excel Writer',
Params: [
{ Name: 'Data', Value: [{ name: 'John', sales: 1000 }, { name: 'Jane', sales: 1500 }] },
{ Name: 'SheetName', Value: 'Sales Report' }
],
ContextUser: currentUser
});File Compress Action
Compresses files into ZIP archives.
Class: FileCompressAction
Registration Name: "File Compress"
Parameters:
Files(array, required): Array of file objects with name and contentCompressionLevel(number, optional): Compression level 0-9 (default: 6)ArchiveName(string, optional): Output archive namePassword(string, optional): Password protection for archive
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'File Compress',
Params: [
{ Name: 'Files', Value: [
{ name: 'report.txt', content: 'Report content' },
{ name: 'data.json', content: JSON.stringify(data) }
]},
{ Name: 'ArchiveName', Value: 'backup.zip' }
],
ContextUser: currentUser
});7. Integration Actions
HTTP Request Action
Makes HTTP requests with full control over headers, body, and authentication.
Class: HTTPRequestAction
Registration Name: "HTTP Request"
Parameters:
URL(string, required): Request URLMethod(string, optional): HTTP method (default: 'GET')Headers(object/string, optional): Request headersBody(any, optional): Request bodyTimeout(number, optional): Request timeout in ms (default: 30000)RetryCount(number, optional): Number of retries (default: 0)BasicAuth(object, optional): Basic authentication credentials
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'HTTP Request',
Params: [
{ Name: 'URL', Value: 'https://api.example.com/data' },
{ Name: 'Method', Value: 'POST' },
{ Name: 'Headers', Value: { 'Content-Type': 'application/json' } },
{ Name: 'Body', Value: { query: 'test' } }
],
ContextUser: currentUser
});GraphQL Query Action
Executes GraphQL queries and mutations with variable support.
Class: GraphQLQueryAction
Registration Name: "GraphQL Query"
Parameters:
Endpoint(string, required): GraphQL endpoint URLQuery(string, required): GraphQL query or mutationVariables(object/string, optional): Query variablesHeaders(object/string, optional): Request headersOperationName(string, optional): Operation name for multi-operation documents
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'GraphQL Query',
Params: [
{ Name: 'Endpoint', Value: 'https://api.example.com/graphql' },
{ Name: 'Query', Value: 'query GetUser($id: ID!) { user(id: $id) { name email } }' },
{ Name: 'Variables', Value: { id: '123' } }
],
ContextUser: currentUser
});OAuth Flow Action
Handles OAuth 2.0 authentication flows.
Class: OAuthFlowAction
Registration Name: "OAuth Flow"
Parameters:
Provider(string, required): OAuth provider nameClientID(string, required): OAuth client IDClientSecret(string, required): OAuth client secretRedirectURI(string, required): Redirect URIScopes(string/array, optional): Required scopesState(string, optional): State parameter for security
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'OAuth Flow',
Params: [
{ Name: 'Provider', Value: 'google' },
{ Name: 'ClientID', Value: 'your-client-id' },
{ Name: 'ClientSecret', Value: 'your-client-secret' },
{ Name: 'RedirectURI', Value: 'https://app.example.com/callback' },
{ Name: 'Scopes', Value: ['email', 'profile'] }
],
ContextUser: currentUser
});API Rate Limiter Action
Manages API rate limiting with queuing and backoff strategies.
Class: APIRateLimiterAction
Registration Name: "API Rate Limiter"
Parameters:
APIName(string, required): API identifierRequestsPerWindow(number, required): Max requests per time windowWindowSizeMs(number, optional): Time window in ms (default: 60000)QueueRequests(boolean, optional): Queue excess requests (default: true)MaxQueueSize(number, optional): Maximum queue size (default: 100)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'API Rate Limiter',
Params: [
{ Name: 'APIName', Value: 'external-api' },
{ Name: 'RequestsPerWindow', Value: 100 },
{ Name: 'WindowSizeMs', Value: 60000 }
],
ContextUser: currentUser
});8. Security Actions
Password Strength Action
Evaluates password strength and provides improvement suggestions.
Class: PasswordStrengthAction
Registration Name: "Password Strength"
Parameters:
Password(string, required): Password to evaluateMinLength(number, optional): Minimum required length (default: 8)RequireUppercase(boolean, optional): Require uppercase letters (default: true)RequireLowercase(boolean, optional): Require lowercase letters (default: true)RequireNumbers(boolean, optional): Require numbers (default: true)RequireSpecial(boolean, optional): Require special characters (default: true)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Password Strength',
Params: [
{ Name: 'Password', Value: 'MyP@ssw0rd' },
{ Name: 'MinLength', Value: 12 }
],
ContextUser: currentUser
});9. Workflow Control Actions
Conditional Action
Executes actions based on conditional logic.
Class: ConditionalAction
Registration Name: "Conditional"
Parameters:
Condition(string, required): JavaScript expression to evaluateThenAction(object, required): Action to run if condition is trueElseAction(object, optional): Action to run if condition is falseContext(object, optional): Variables available in condition
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Conditional',
Params: [
{ Name: 'Condition', Value: 'value > 100' },
{ Name: 'Context', Value: { value: 150 } },
{ Name: 'ThenAction', Value: { name: 'Send Email', params: {...} } }
],
ContextUser: currentUser
});Loop Action
Executes actions repeatedly with iteration support.
Class: LoopAction
Registration Name: "Loop"
Parameters:
Items(array, optional): Array to iterate overCount(number, optional): Number of iterations (if no items)Action(object, required): Action to execute for each iterationParallel(boolean, optional): Run iterations in parallel (default: false)MaxConcurrency(number, optional): Max parallel executions (default: 10)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Loop',
Params: [
{ Name: 'Items', Value: [1, 2, 3, 4, 5] },
{ Name: 'Action', Value: { name: 'Process Item', params: {...} } },
{ Name: 'Parallel', Value: true }
],
ContextUser: currentUser
});Parallel Execute Action
Runs multiple actions concurrently with result aggregation.
Class: ParallelExecuteAction
Registration Name: "Parallel Execute"
Parameters:
Actions(array, required): Array of actions to executeMaxConcurrency(number, optional): Maximum concurrent executions (default: 10)StopOnError(boolean, optional): Stop all if one fails (default: false)Timeout(number, optional): Overall timeout in ms
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Parallel Execute',
Params: [
{ Name: 'Actions', Value: [
{ name: 'Web Search', params: { SearchTerms: 'AI' } },
{ name: 'HTTP Request', params: { URL: 'https://api.example.com' } }
]},
{ Name: 'MaxConcurrency', Value: 2 }
],
ContextUser: currentUser
});Retry Action
Retries failed actions with configurable backoff strategies.
Class: RetryAction
Registration Name: "Retry"
Parameters:
Action(object, required): Action to retryMaxRetries(number, optional): Maximum retry attempts (default: 3)InitialDelay(number, optional): Initial delay in ms (default: 1000)BackoffMultiplier(number, optional): Delay multiplier (default: 2)MaxDelay(number, optional): Maximum delay in ms (default: 30000)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Retry',
Params: [
{ Name: 'Action', Value: { name: 'HTTP Request', params: {...} } },
{ Name: 'MaxRetries', Value: 5 },
{ Name: 'InitialDelay', Value: 2000 }
],
ContextUser: currentUser
});Delay Action
Introduces delays in workflow execution.
Class: DelayAction
Registration Name: "Delay"
Parameters:
DelayMs(number, required): Delay duration in millisecondsJitter(number, optional): Random jitter to add (0-1, percentage of delay)
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Delay',
Params: [
{ Name: 'DelayMs', Value: 5000 },
{ Name: 'Jitter', Value: 0.1 } // 10% jitter
],
ContextUser: currentUser
});10. Communication Actions
Slack Webhook Action
Sends messages to Slack channels via webhooks.
Class: SlackWebhookAction
Registration Name: "Slack Webhook"
Parameters:
WebhookURL(string, required): Slack webhook URLMessage(string, required): Message textChannel(string, optional): Override default channelUsername(string, optional): Override default usernameIconEmoji(string, optional): Override default iconAttachments(array/string, optional): Rich message attachments
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Slack Webhook',
Params: [
{ Name: 'WebhookURL', Value: 'https://hooks.slack.com/services/...' },
{ Name: 'Message', Value: 'Deployment completed successfully!' },
{ Name: 'IconEmoji', Value: ':rocket:' }
],
ContextUser: currentUser
});Teams Webhook Action
Sends messages to Microsoft Teams channels via webhooks.
Class: TeamsWebhookAction
Registration Name: "Teams Webhook"
Parameters:
WebhookURL(string, required): Teams webhook URLTitle(string, optional): Message titleText(string, required): Message textThemeColor(string, optional): Message accent colorSections(array/string, optional): Message sectionsActions(array/string, optional): Interactive actions
Example Usage:
const result = await ActionEngine.RunAction({
ActionName: 'Teams Webhook',
Params: [
{ Name: 'WebhookURL', Value: 'https://outlook.office.com/webhook/...' },
{ Name: 'Title', Value: 'Build Status' },
{ Name: 'Text', Value: 'Build #123 completed successfully' },
{ Name: 'ThemeColor', Value: '00FF00' }
],
ContextUser: currentUser
});11. AI Actions
Execute AI Prompt Action
Executes AI prompts using MemberJunction's AI framework with model selection and parameter control.
Class: ExecuteAIPromptAction
Registration Name: "Execute AI Prompt"
Parameters:
PromptID(string, optional): ID of saved prompt templatePromptName(string, optional): Name of saved prompt templatePromptText(string, optional): Direct prompt text (if not using templ
