npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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.

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:

  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:

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 transformation
  • OutputFormat (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 parse
  • RemoveNamespaces (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 aggregate
  • GroupBy (string/array, optional): Field(s) to group by
  • Aggregations (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 map
  • Mappings (object/string, required): Field mapping configuration
  • DefaultValues (object, optional): Default values for missing fields
  • RemoveUnmapped (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 content
  • ContentType (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 string
  • ExtractText (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 string
  • SheetName (string, optional): Specific sheet to read
  • Range (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 widths
  • Formatting (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 content
  • CompressionLevel (number, optional): Compression level 0-9 (default: 6)
  • ArchiveName (string, optional): Output archive name
  • Password (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 URL
  • Method (string, optional): HTTP method (default: 'GET')
  • Headers (object/string, optional): Request headers
  • Body (any, optional): Request body
  • Timeout (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 URL
  • Query (string, required): GraphQL query or mutation
  • Variables (object/string, optional): Query variables
  • Headers (object/string, optional): Request headers
  • OperationName (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 name
  • ClientID (string, required): OAuth client ID
  • ClientSecret (string, required): OAuth client secret
  • RedirectURI (string, required): Redirect URI
  • Scopes (string/array, optional): Required scopes
  • State (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 identifier
  • RequestsPerWindow (number, required): Max requests per time window
  • WindowSizeMs (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 evaluate
  • MinLength (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 evaluate
  • ThenAction (object, required): Action to run if condition is true
  • ElseAction (object, optional): Action to run if condition is false
  • Context (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 over
  • Count (number, optional): Number of iterations (if no items)
  • Action (object, required): Action to execute for each iteration
  • Parallel (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 execute
  • MaxConcurrency (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 retry
  • MaxRetries (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 milliseconds
  • Jitter (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 URL
  • Message (string, required): Message text
  • Channel (string, optional): Override default channel
  • Username (string, optional): Override default username
  • IconEmoji (string, optional): Override default icon
  • Attachments (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 URL
  • Title (string, optional): Message title
  • Text (string, required): Message text
  • ThemeColor (string, optional): Message accent color
  • Sections (array/string, optional): Message sections
  • Actions (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 template
  • PromptName (string, optional): Name of saved prompt template
  • PromptText (string, optional): Direct prompt text (if not using template)
  • ModelID (string, optional): Specific AI model ID to use
  • ModelName (string, optional): Specific AI model name to use
  • Temperature (number, optional): Model temperature (0-2)
  • MaxTokens (number, optional): Maximum response tokens
  • Variables (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-actions

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:

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 transformation
  • OutputFormat (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 parse
  • RemoveNamespaces (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 aggregate
  • GroupBy (string/array, optional): Field(s) to group by
  • Aggregations (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 map
  • Mappings (object/string, required): Field mapping configuration
  • DefaultValues (object, optional): Default values for missing fields
  • RemoveUnmapped (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 content
  • ContentType (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 string
  • ExtractText (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 string
  • SheetName (string, optional): Specific sheet to read
  • Range (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 widths
  • Formatting (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 content
  • CompressionLevel (number, optional): Compression level 0-9 (default: 6)
  • ArchiveName (string, optional): Output archive name
  • Password (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 URL
  • Method (string, optional): HTTP method (default: 'GET')
  • Headers (object/string, optional): Request headers
  • Body (any, optional): Request body
  • Timeout (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 URL
  • Query (string, required): GraphQL query or mutation
  • Variables (object/string, optional): Query variables
  • Headers (object/string, optional): Request headers
  • OperationName (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 name
  • ClientID (string, required): OAuth client ID
  • ClientSecret (string, required): OAuth client secret
  • RedirectURI (string, required): Redirect URI
  • Scopes (string/array, optional): Required scopes
  • State (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 identifier
  • RequestsPerWindow (number, required): Max requests per time window
  • WindowSizeMs (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 evaluate
  • MinLength (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 evaluate
  • ThenAction (object, required): Action to run if condition is true
  • ElseAction (object, optional): Action to run if condition is false
  • Context (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 over
  • Count (number, optional): Number of iterations (if no items)
  • Action (object, required): Action to execute for each iteration
  • Parallel (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 execute
  • MaxConcurrency (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 retry
  • MaxRetries (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 milliseconds
  • Jitter (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 URL
  • Message (string, required): Message text
  • Channel (string, optional): Override default channel
  • Username (string, optional): Override default username
  • IconEmoji (string, optional): Override default icon
  • Attachments (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 URL
  • Title (string, optional): Message title
  • Text (string, required): Message text
  • ThemeColor (string, optional): Message accent color
  • Sections (array/string, optional): Message sections
  • Actions (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 template
  • PromptName (string, optional): Name of saved prompt template
  • PromptText (string, optional): Direct prompt text (if not using template)
  • ModelID (string, optional): Specific AI model ID to use
  • ModelName (string, optional): Specific AI model name to use
  • Temperature (number, optional): Model temperature (0-2)
  • MaxTokens (number, optional): Maximum response tokens
  • Variables (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 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:

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 transformation
  • OutputFormat (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 parse
  • RemoveNamespaces (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 aggregate
  • GroupBy (string/array, optional): Field(s) to group by
  • Aggregations (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 map
  • Mappings (object/string, required): Field mapping configuration
  • DefaultValues (object, optional): Default values for missing fields
  • RemoveUnmapped (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 content
  • ContentType (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 string
  • ExtractText (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 string
  • SheetName (string, optional): Specific sheet to read
  • Range (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 widths
  • Formatting (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 content
  • CompressionLevel (number, optional): Compression level 0-9 (default: 6)
  • ArchiveName (string, optional): Output archive name
  • Password (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 URL
  • Method (string, optional): HTTP method (default: 'GET')
  • Headers (object/string, optional): Request headers
  • Body (any, optional): Request body
  • Timeout (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 URL
  • Query (string, required): GraphQL query or mutation
  • Variables (object/string, optional): Query variables
  • Headers (object/string, optional): Request headers
  • OperationName (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 name
  • ClientID (string, required): OAuth client ID
  • ClientSecret (string, required): OAuth client secret
  • RedirectURI (string, required): Redirect URI
  • Scopes (string/array, optional): Required scopes
  • State (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 identifier
  • RequestsPerWindow (number, required): Max requests per time window
  • WindowSizeMs (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 evaluate
  • MinLength (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 evaluate
  • ThenAction (object, required): Action to run if condition is true
  • ElseAction (object, optional): Action to run if condition is false
  • Context (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 over
  • Count (number, optional): Number of iterations (if no items)
  • Action (object, required): Action to execute for each iteration
  • Parallel (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 execute
  • MaxConcurrency (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 retry
  • MaxRetries (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 milliseconds
  • Jitter (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 URL
  • Message (string, required): Message text
  • Channel (string, optional): Override default channel
  • Username (string, optional): Override default username
  • IconEmoji (string, optional): Override default icon
  • Attachments (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 URL
  • Title (string, optional): Message title
  • Text (string, required): Message text
  • ThemeColor (string, optional): Message accent color
  • Sections (array/string, optional): Message sections
  • Actions (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 template
  • PromptName (string, optional): Name of saved prompt template
  • PromptText (string, optional): Direct prompt text (if not using templ