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.
npm install @memberjunction/core-actionsThe @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.
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.
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/
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:
1. Creating an Action record with Type='Generated' and a UserPrompt describing desired functionality
2. AI automatically generates TypeScript code, parameters, and result codes
3. Generated code is saved to database for review
4. 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)
- ParentID is 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
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.
``
#### CSV Parser Action
Parses CSV data with configurable options for headers, delimiters, and data types.
Class: CSVParserAction "CSV Parser"
Registration Name:
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:
`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 "JSON Transform"
Registration Name:
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:
`typescript`
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 "XML Parser"
Registration Name:
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:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'XML Parser',
Params: [
{ Name: 'XMLData', Value: '
{ Name: 'ParseNumbers', Value: true }
],
ContextUser: currentUser
});
#### Aggregate Data Action
Performs aggregation operations on arrays of data with support for multiple aggregation functions.
Class: AggregateDataAction "Aggregate Data"
Registration Name:
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:
`typescript`
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 "Data Mapper"
Registration Name:
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:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'Data Mapper',
Params: [
{ Name: 'SourceData', Value: { firstName: 'John', lastName: 'Doe' } },
{ Name: 'Mappings', Value: { fullName: '{{firstName}} {{lastName}}' } }
],
ContextUser: currentUser
});
#### PDF Generator Action
Generates PDF documents from HTML or markdown content.
Class: PDFGeneratorAction "PDF Generator"
Registration Name:
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:
` Content heretypescript`
const result = await ActionEngine.RunAction({
ActionName: 'PDF Generator',
Params: [
{ Name: 'Content', Value: 'Report
{ Name: 'Options', Value: { margin: { top: '1in' }, orientation: 'portrait' } }
],
ContextUser: currentUser
});
#### PDF Extractor Action
Extracts text and metadata from PDF files.
Class: PDFExtractorAction "PDF Extractor"
Registration Name:
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:
`typescript`
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 "Excel Reader"
Registration Name:
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:
`typescript`
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 "Excel Writer"
Registration Name:
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:
`typescript`
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 "File Compress"
Registration Name:
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:
`typescript`
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
});
#### HTTP Request Action
Makes HTTP requests with full control over headers, body, and authentication.
Class: HTTPRequestAction "HTTP Request"
Registration Name:
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:
`typescript`
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 "GraphQL Query"
Registration Name:
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:
`typescript`
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 "OAuth Flow"
Registration Name:
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:
`typescript`
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 "API Rate Limiter"
Registration Name:
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:
`typescript`
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
});
#### Password Strength Action
Evaluates password strength and provides improvement suggestions.
Class: PasswordStrengthAction "Password Strength"
Registration Name:
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:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'Password Strength',
Params: [
{ Name: 'Password', Value: 'MyP@ssw0rd' },
{ Name: 'MinLength', Value: 12 }
],
ContextUser: currentUser
});
#### Conditional Action
Executes actions based on conditional logic.
Class: ConditionalAction "Conditional"
Registration Name:
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:
`typescript`
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 "Loop"
Registration Name:
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:
`typescript`
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 "Parallel Execute"
Registration Name:
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:
`typescript`
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 "Retry"
Registration Name:
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:
`typescript`
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 "Delay"
Registration Name:
Parameters:
- DelayMs (number, required): Delay duration in millisecondsJitter
- (number, optional): Random jitter to add (0-1, percentage of delay)
Example Usage:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'Delay',
Params: [
{ Name: 'DelayMs', Value: 5000 },
{ Name: 'Jitter', Value: 0.1 } // 10% jitter
],
ContextUser: currentUser
});
#### Slack Webhook Action
Sends messages to Slack channels via webhooks.
Class: SlackWebhookAction "Slack Webhook"
Registration Name:
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:
`typescript`
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 "Teams Webhook"
Registration Name:
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:
`typescript`
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
});
#### Execute AI Prompt Action
Executes AI prompts using MemberJunction's AI framework with model selection and parameter control.
Class: ExecuteAIPromptAction "Execute AI Prompt"
Registration Name:
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:
`typescript
// 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
});
`
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.
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
- 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
`bash`
npm install @memberjunction/core-actions
#### CSV Parser Action
Parses CSV data with configurable options for headers, delimiters, and data types.
Class: CSVParserAction "CSV Parser"
Registration Name:
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:
`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 "JSON Transform"
Registration Name:
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:
`typescript`
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 "XML Parser"
Registration Name:
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:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'XML Parser',
Params: [
{ Name: 'XMLData', Value: '
{ Name: 'ParseNumbers', Value: true }
],
ContextUser: currentUser
});
#### Aggregate Data Action
Performs aggregation operations on arrays of data with support for multiple aggregation functions.
Class: AggregateDataAction "Aggregate Data"
Registration Name:
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:
`typescript`
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 "Data Mapper"
Registration Name:
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:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'Data Mapper',
Params: [
{ Name: 'SourceData', Value: { firstName: 'John', lastName: 'Doe' } },
{ Name: 'Mappings', Value: { fullName: '{{firstName}} {{lastName}}' } }
],
ContextUser: currentUser
});
#### PDF Generator Action
Generates PDF documents from HTML or markdown content.
Class: PDFGeneratorAction "PDF Generator"
Registration Name:
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:
` Content heretypescript`
const result = await ActionEngine.RunAction({
ActionName: 'PDF Generator',
Params: [
{ Name: 'Content', Value: 'Report
{ Name: 'Options', Value: { margin: { top: '1in' }, orientation: 'portrait' } }
],
ContextUser: currentUser
});
#### PDF Extractor Action
Extracts text and metadata from PDF files.
Class: PDFExtractorAction "PDF Extractor"
Registration Name:
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:
`typescript`
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 "Excel Reader"
Registration Name:
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:
`typescript`
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 "Excel Writer"
Registration Name:
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:
`typescript`
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 "File Compress"
Registration Name:
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:
`typescript`
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
});
#### HTTP Request Action
Makes HTTP requests with full control over headers, body, and authentication.
Class: HTTPRequestAction "HTTP Request"
Registration Name:
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:
`typescript`
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 "GraphQL Query"
Registration Name:
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:
`typescript`
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 "OAuth Flow"
Registration Name:
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:
`typescript`
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 "API Rate Limiter"
Registration Name:
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:
`typescript`
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
});
#### Password Strength Action
Evaluates password strength and provides improvement suggestions.
Class: PasswordStrengthAction "Password Strength"
Registration Name:
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:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'Password Strength',
Params: [
{ Name: 'Password', Value: 'MyP@ssw0rd' },
{ Name: 'MinLength', Value: 12 }
],
ContextUser: currentUser
});
#### Conditional Action
Executes actions based on conditional logic.
Class: ConditionalAction "Conditional"
Registration Name:
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:
`typescript`
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 "Loop"
Registration Name:
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:
`typescript`
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 "Parallel Execute"
Registration Name:
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:
`typescript`
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 "Retry"
Registration Name:
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:
`typescript`
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 "Delay"
Registration Name:
Parameters:
- DelayMs (number, required): Delay duration in millisecondsJitter
- (number, optional): Random jitter to add (0-1, percentage of delay)
Example Usage:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'Delay',
Params: [
{ Name: 'DelayMs', Value: 5000 },
{ Name: 'Jitter', Value: 0.1 } // 10% jitter
],
ContextUser: currentUser
});
#### Slack Webhook Action
Sends messages to Slack channels via webhooks.
Class: SlackWebhookAction "Slack Webhook"
Registration Name:
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:
`typescript`
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 "Teams Webhook"
Registration Name:
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:
`typescript`
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
});
#### Execute AI Prompt Action
Executes AI prompts using MemberJunction's AI framework with model selection and parameter control.
Class: ExecuteAIPromptAction "Execute AI Prompt"
Registration Name:
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:
`typescript
// 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
});
`
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.
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
- 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
`
Provides a simple wrapper around the MemberJunction Communication Framework to send single messages through various communication providers.
Class: SendSingleMessageAction "Send Single Message"
Registration Name:
Parameters:
- Subject (string): The subject of the messageBody
- (string): The body content of the messageTo
- (string): The recipient's addressFrom
- (string): The sender's addressProvider
- (string): The name of the Communication Provider to useMessageType
- (string): The name of the Message Type within the provider
Example Usage:
`
#### CSV Parser Action
Parses CSV data with configurable options for headers, delimiters, and data types.
Class: CSVParserAction "CSV Parser"
Registration Name:
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:
`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 "JSON Transform"
Registration Name:
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:
`typescript`
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 "XML Parser"
Registration Name:
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:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'XML Parser',
Params: [
{ Name: 'XMLData', Value: '
{ Name: 'ParseNumbers', Value: true }
],
ContextUser: currentUser
});
#### Aggregate Data Action
Performs aggregation operations on arrays of data with support for multiple aggregation functions.
Class: AggregateDataAction "Aggregate Data"
Registration Name:
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:
`typescript`
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 "Data Mapper"
Registration Name:
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:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'Data Mapper',
Params: [
{ Name: 'SourceData', Value: { firstName: 'John', lastName: 'Doe' } },
{ Name: 'Mappings', Value: { fullName: '{{firstName}} {{lastName}}' } }
],
ContextUser: currentUser
});
#### PDF Generator Action
Generates PDF documents from HTML or markdown content.
Class: PDFGeneratorAction "PDF Generator"
Registration Name:
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:
` Content heretypescript`
const result = await ActionEngine.RunAction({
ActionName: 'PDF Generator',
Params: [
{ Name: 'Content', Value: 'Report
{ Name: 'Options', Value: { margin: { top: '1in' }, orientation: 'portrait' } }
],
ContextUser: currentUser
});
#### PDF Extractor Action
Extracts text and metadata from PDF files.
Class: PDFExtractorAction "PDF Extractor"
Registration Name:
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:
`typescript`
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 "Excel Reader"
Registration Name:
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:
`typescript`
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 "Excel Writer"
Registration Name:
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:
`typescript`
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 "File Compress"
Registration Name:
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:
`typescript`
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
});
#### HTTP Request Action
Makes HTTP requests with full control over headers, body, and authentication.
Class: HTTPRequestAction "HTTP Request"
Registration Name:
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:
`typescript`
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 "GraphQL Query"
Registration Name:
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:
`typescript`
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 "OAuth Flow"
Registration Name:
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:
`typescript`
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 "API Rate Limiter"
Registration Name:
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:
`typescript`
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
});
#### Password Strength Action
Evaluates password strength and provides improvement suggestions.
Class: PasswordStrengthAction "Password Strength"
Registration Name:
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:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'Password Strength',
Params: [
{ Name: 'Password', Value: 'MyP@ssw0rd' },
{ Name: 'MinLength', Value: 12 }
],
ContextUser: currentUser
});
#### Conditional Action
Executes actions based on conditional logic.
Class: ConditionalAction "Conditional"
Registration Name:
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:
`typescript`
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 "Loop"
Registration Name:
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:
`typescript`
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 "Parallel Execute"
Registration Name:
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:
`typescript`
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 "Retry"
Registration Name:
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:
`typescript`
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 "Delay"
Registration Name:
Parameters:
- DelayMs (number, required): Delay duration in millisecondsJitter
- (number, optional): Random jitter to add (0-1, percentage of delay)
Example Usage:
`typescript`
const result = await ActionEngine.RunAction({
ActionName: 'Delay',
Params: [
{ Name: 'DelayMs', Value: 5000 },
{ Name: 'Jitter', Value: 0.1 } // 10% jitter
],
ContextUser: currentUser
});
#### Slack Webhook Action
Sends messages to Slack channels via webhooks.
Class: SlackWebhookAction "Slack Webhook"
Registration Name:
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:
`typescript`
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 "Teams Webhook"
Registration Name:
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:
`typescript`
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
});
#### Execute AI Prompt Action
Executes AI prompts using MemberJunction's AI framework with model selection and parameter control.
Class: ExecuteAIPromptAction "Execute AI Prompt"
Registration Name:
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
-