n8n-nodes-smartlead-v1-9-0
Version:
🚀 SmartLead API v1.10.0 - Complete Email Marketing Automation with Smart Delivery, Webhooks & 40+ Operations - Fixed API Parameters
1,154 lines • 90.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SmartLead = void 0;
const n8n_workflow_1 = require("n8n-workflow");
class SmartLead {
constructor() {
this.description = {
displayName: 'SmartLead',
name: 'smartLead',
icon: 'file:smartlead.svg', // 👈 Make sure this line is added
group: ['transform'],
version: 1,
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
description: 'Comprehensive SmartLead API integration for email marketing automation',
defaults: {
name: 'SmartLead',
},
inputs: ['main'],
outputs: ['main'],
credentials: [
{
name: 'smartLeadApi',
required: true,
},
],
requestDefaults: {
baseURL: 'https://server.smartlead.ai/api/v1',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
},
properties: [
// Resource Selection
{
displayName: 'Resource',
name: 'resource',
type: 'options',
noDataExpression: true,
options: [
{
name: '🎯 Campaign Management',
value: 'campaign',
description: 'Create, manage, and control email campaigns',
},
{
name: '👥 Lead Management',
value: 'lead',
description: 'Manage leads, categories, and communication',
},
{
name: '📧 Email Accounts',
value: 'emailAccount',
description: 'Manage email accounts and warmup settings',
},
{
name: '📊 Analytics & Stats',
value: 'analytics',
description: 'Campaign statistics and performance data',
},
{
name: '🚀 Smart Delivery',
value: 'smartDelivery',
description: 'Email deliverability testing and placement analysis',
},
{
name: '🔗 Webhooks',
value: 'webhooks',
description: 'Manage campaign webhooks and event notifications',
},
{
name: '📨 Smart Senders',
value: 'smartSenders',
description: 'Domain management and mailbox generation services',
},
],
default: 'campaign',
required: true,
},
// Campaign Operations
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['campaign'],
},
},
options: [
{
name: 'Get All',
value: 'getAll',
description: 'Retrieve all campaigns',
action: 'Get all campaigns',
},
{
name: 'Get by ID',
value: 'get',
description: 'Get campaign by ID',
action: 'Get a campaign',
},
{
name: 'Create',
value: 'create',
description: 'Create a new campaign',
action: 'Create a campaign',
},
{
name: 'Update Schedule',
value: 'updateSchedule',
description: 'Update campaign schedule settings',
action: 'Update campaign schedule',
},
{
name: 'Update General Settings',
value: 'updateSettings',
description: 'Update campaign general settings',
action: 'Update campaign settings',
},
{
name: 'Save Sequence',
value: 'saveSequence',
description: 'Save campaign email sequence',
action: 'Save campaign sequence',
},
{
name: 'Update Status',
value: 'updateStatus',
description: 'Start, pause, or stop campaign',
action: 'Update campaign status',
},
{
name: 'Get Sequence',
value: 'getSequence',
description: 'Fetch campaign sequence by ID',
action: 'Get campaign sequence',
},
{
name: 'Export Data',
value: 'export',
description: 'Export campaign data',
action: 'Export campaign data',
},
{
name: 'Delete',
value: 'delete',
description: 'Delete a campaign',
action: 'Delete a campaign',
},
],
default: 'getAll',
required: true,
},
// Lead Operations
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['lead'],
},
},
options: [
{
name: 'Get All by Campaign',
value: 'getAllByCampaign',
description: 'Get all leads from a specific campaign',
action: 'Get all leads by campaign',
},
{
name: 'Get Categories',
value: 'getCategories',
description: 'Fetch all lead categories',
action: 'Get lead categories',
},
{
name: 'Get by Email',
value: 'getByEmail',
description: 'Find lead by email address',
action: 'Get lead by email',
},
{
name: 'Add to Campaign',
value: 'addToCampaign',
description: 'Add leads to a campaign',
action: 'Add leads to campaign',
},
{
name: 'Resume',
value: 'resume',
description: 'Resume lead in campaign',
action: 'Resume lead',
},
{
name: 'Pause',
value: 'pause',
description: 'Pause lead in campaign',
action: 'Pause lead',
},
{
name: 'Delete',
value: 'delete',
description: 'Delete lead from campaign',
action: 'Delete lead',
},
{
name: 'Unsubscribe from Campaign',
value: 'unsubscribeFromCampaign',
description: 'Unsubscribe lead from specific campaign',
action: 'Unsubscribe from campaign',
},
{
name: 'Unsubscribe from All',
value: 'unsubscribeFromAll',
description: 'Unsubscribe lead from all campaigns',
action: 'Unsubscribe from all campaigns',
},
{
name: 'Add to Block List',
value: 'addToBlockList',
description: 'Add lead/domain to global block list',
action: 'Add to block list',
},
{
name: 'Update',
value: 'update',
description: 'Update lead information',
action: 'Update lead',
},
{
name: 'Update Category',
value: 'updateCategory',
description: 'Update lead category',
action: 'Update lead category',
},
{
name: 'Get Message History',
value: 'getMessageHistory',
description: 'Fetch lead message history',
action: 'Get message history',
},
{
name: 'Reply to Lead',
value: 'reply',
description: 'Reply to lead from master inbox',
action: 'Reply to lead',
},
],
default: 'getAllByCampaign',
required: true,
},
// Email Account Operations
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['emailAccount'],
},
},
options: [
{
name: 'Get All for User',
value: 'getAllForUser',
description: 'Get all email accounts for current user',
action: 'Get all email accounts',
},
{
name: 'Get All for Campaign',
value: 'getAllForCampaign',
description: 'Get all email accounts for a campaign',
action: 'Get campaign email accounts',
},
{
name: 'Get by ID',
value: 'get',
description: 'Get email account by ID',
action: 'Get email account',
},
{
name: 'Create',
value: 'create',
description: 'Create new email account',
action: 'Create email account',
},
{
name: 'Update',
value: 'update',
description: 'Update email account settings',
action: 'Update email account',
},
{
name: 'Add to Campaign',
value: 'addToCampaign',
description: 'Add email account to campaign',
action: 'Add to campaign',
},
{
name: 'Remove from Campaign',
value: 'removeFromCampaign',
description: 'Remove email account from campaign',
action: 'Remove from campaign',
},
{
name: 'Update Warmup',
value: 'updateWarmup',
description: 'Update warmup settings',
action: 'Update warmup settings',
},
{
name: 'Reconnect Failed',
value: 'reconnect',
description: 'Reconnect failed email accounts',
action: 'Reconnect email account',
},
],
default: 'getAllForUser',
required: true,
},
// Analytics Operations
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['analytics'],
},
},
options: [
{
name: 'Campaign Stats',
value: 'campaignStats',
description: 'Get campaign statistics by ID',
action: 'Get campaign statistics',
},
{
name: 'Campaign Stats by Date Range',
value: 'campaignStatsByDate',
description: 'Get campaign stats for date range',
action: 'Get campaign stats by date',
},
{
name: 'Warmup Stats',
value: 'warmupStats',
description: 'Get warmup stats by email account ID',
action: 'Get warmup statistics',
},
{
name: 'Top Level Analytics',
value: 'topLevelAnalytics',
description: 'Get campaign top level analytics',
action: 'Get top level analytics',
},
],
default: 'campaignStats',
required: true,
},
// Campaign ID field (used by multiple operations)
{
displayName: 'Campaign ID',
name: 'campaignId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['campaign'],
operation: [
'get',
'updateSchedule',
'updateSettings',
'saveSequence',
'updateStatus',
'getSequence',
'export',
'delete',
],
},
},
default: '',
description: 'The ID of the campaign',
},
{
displayName: 'Campaign ID',
name: 'campaignId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['lead'],
operation: [
'getAllByCampaign',
'addToCampaign',
'resume',
'pause',
'delete',
'unsubscribeFromCampaign',
'updateCategory',
'getMessageHistory',
],
},
},
default: '',
description: 'The ID of the campaign',
},
{
displayName: 'Campaign ID',
name: 'campaignId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['emailAccount'],
operation: [
'getAllForCampaign',
'addToCampaign',
'removeFromCampaign',
],
},
},
default: '',
description: 'The ID of the campaign',
},
{
displayName: 'Campaign ID',
name: 'campaignId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['analytics'],
operation: [
'campaignStats',
'campaignStatsByDate',
'topLevelAnalytics',
],
},
},
default: '',
description: 'The ID of the campaign',
},
// Email Account ID field
{
displayName: 'Email Account ID',
name: 'emailAccountId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['emailAccount'],
operation: ['get', 'update', 'updateWarmup', 'reconnect'],
},
},
default: '',
description: 'The ID of the email account',
},
{
displayName: 'Email Account ID',
name: 'emailAccountId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['analytics'],
operation: ['warmupStats'],
},
},
default: '',
description: 'The ID of the email account',
},
// Lead ID field
{
displayName: 'Lead ID',
name: 'leadId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['lead'],
operation: ['resume', 'pause', 'delete', 'update'],
},
},
default: '',
description: 'The ID of the lead',
},
// Email field for lead lookup
{
displayName: 'Email Address',
name: 'email',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['lead'],
operation: [
'getByEmail',
'unsubscribeFromCampaign',
'unsubscribeFromAll',
'reply',
],
},
},
default: '',
description: 'Email address of the lead',
},
// Lead Data for adding to campaign
{
displayName: 'Lead Data',
name: 'leadData',
type: 'json',
required: true,
displayOptions: {
show: {
resource: ['lead'],
operation: ['addToCampaign'],
},
},
default: '{\n "email": "john@example.com",\n "first_name": "John",\n "last_name": "Doe",\n "company": "Example Corp"\n}',
description: 'Lead information in JSON format. For multiple leads, use an array. Max 350 leads per batch.',
placeholder: 'Single lead: {...} or Multiple leads: [{...}, {...}]',
},
// Lead Update Data
{
displayName: 'Lead Update Data',
name: 'leadUpdateData',
type: 'json',
required: false,
displayOptions: {
show: {
resource: ['lead'],
operation: ['update'],
},
},
default: '{\n "first_name": "John",\n "last_name": "Doe",\n "company": "New Company"\n}',
description: 'Lead information to update in JSON format',
placeholder: 'Fields to update: {"first_name": "John", "company": "New Corp"}',
},
// Additional fields for specific operations
{
displayName: 'Campaign Name',
name: 'campaignName',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['create'],
},
},
default: '',
description: 'Name for the new campaign',
},
{
displayName: 'Start Date',
name: 'startDate',
type: 'dateTime',
required: false,
displayOptions: {
show: {
resource: ['analytics'],
operation: ['campaignStatsByDate'],
},
},
default: '',
description: 'Start date for analytics (YYYY-MM-DD format)',
},
{
displayName: 'End Date',
name: 'endDate',
type: 'dateTime',
required: false,
displayOptions: {
show: {
resource: ['analytics'],
operation: ['campaignStatsByDate'],
},
},
default: '',
description: 'End date for analytics (YYYY-MM-DD format)',
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['campaign'],
operation: ['create'],
},
},
options: [
{
displayName: 'Client ID',
name: 'clientId',
type: 'number',
default: null,
description: 'Client ID to associate with the campaign (leave empty if no client)',
},
],
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
hide: {
resource: ['campaign'],
operation: ['create'],
},
},
options: [
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 100,
description: 'Number of results to return',
},
{
displayName: 'Offset',
name: 'offset',
type: 'number',
default: 0,
description: 'Number of results to skip',
},
{
displayName: 'Status',
name: 'status',
type: 'options',
options: [
{ name: 'Active', value: 'ACTIVE' },
{ name: 'Paused', value: 'PAUSED' },
{ name: 'Stopped', value: 'STOPPED' },
],
default: 'ACTIVE',
description: 'Campaign status',
},
],
},
{
displayName: 'Schedule Type',
name: 'scheduleType',
type: 'options',
required: true,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSchedule'],
},
},
options: [
{ name: 'Daily', value: 'daily' },
{ name: 'Weekly', value: 'weekly' },
{ name: 'Monthly', value: 'monthly' },
],
default: 'daily',
description: 'The type of schedule to set',
},
{
displayName: 'Schedule Time',
name: 'scheduleTime',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSchedule'],
},
},
default: '09:00',
description: 'Time to send emails (24-hour format HH:mm)',
},
{
displayName: 'Schedule Days',
name: 'scheduleDays',
type: 'multiOptions',
required: true,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSchedule'],
scheduleType: ['weekly'],
},
},
options: [
{ name: 'Monday', value: 'monday' },
{ name: 'Tuesday', value: 'tuesday' },
{ name: 'Wednesday', value: 'wednesday' },
{ name: 'Thursday', value: 'thursday' },
{ name: 'Friday', value: 'friday' },
{ name: 'Saturday', value: 'saturday' },
{ name: 'Sunday', value: 'sunday' },
],
default: ['monday', 'wednesday', 'friday'],
description: 'Days of the week to send emails',
},
{
displayName: 'Schedule Date',
name: 'scheduleDate',
type: 'number',
required: true,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSchedule'],
scheduleType: ['monthly'],
},
},
default: 1,
description: 'Day of the month to send emails (1-31)',
},
{
displayName: 'Timezone',
name: 'timezone',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSchedule'],
},
},
default: 'UTC',
description: 'Timezone for the schedule (e.g., UTC, America/New_York)',
},
{
displayName: 'Track Settings',
name: 'trackSettings',
type: 'multiOptions',
required: false,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSettings'],
},
},
options: [
{ name: "Don't Track Email Open", value: 'DONT_TRACK_EMAIL_OPEN' },
{ name: "Don't Track Link Click", value: 'DONT_TRACK_LINK_CLICK' },
{
name: "Don't Track Reply to Email",
value: 'DONT_TRACK_REPLY_TO_AN_EMAIL',
},
],
default: ['DONT_TRACK_EMAIL_OPEN'],
description: 'Tracking settings for the campaign',
},
{
displayName: 'Stop Lead Settings',
name: 'stopLeadSettings',
type: 'options',
required: false,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSettings'],
},
},
options: [
{ name: 'Click on a Link', value: 'CLICK_ON_A_LINK' },
{ name: 'Open an Email', value: 'OPEN_AN_EMAIL' },
{ name: 'Reply to an Email', value: 'REPLY_TO_AN_EMAIL' },
],
default: 'REPLY_TO_AN_EMAIL',
description: 'When to stop sending emails to a lead',
},
{
displayName: 'Unsubscribe Text',
name: 'unsubscribeText',
type: 'string',
required: false,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSettings'],
},
},
default: '',
description: 'Custom unsubscribe text',
},
{
displayName: 'Send as Plain Text',
name: 'sendAsPlainText',
type: 'boolean',
required: false,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSettings'],
},
},
default: false,
description: 'Whether to send emails as plain text',
},
{
displayName: 'Follow Up Percentage',
name: 'followUpPercentage',
type: 'number',
required: false,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSettings'],
},
},
default: 100,
description: 'Percentage of leads to follow up with (0-100)',
},
{
displayName: 'Client ID',
name: 'clientId',
type: 'number',
required: false,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSettings'],
},
},
default: 33,
description: 'Client ID (leave empty if not needed)',
},
{
displayName: 'Enable AI ESP Matching',
name: 'enableAiEspMatching',
type: 'boolean',
required: false,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSettings'],
},
},
default: false,
description: 'Whether to enable AI ESP matching',
},
{
displayName: 'Campaign Name',
name: 'name',
type: 'string',
required: false,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateSettings'],
},
},
default: '',
description: 'New name for the campaign (leave empty to keep current name)',
},
{
displayName: 'Status',
name: 'status',
type: 'options',
required: true,
displayOptions: {
show: {
resource: ['campaign'],
operation: ['updateStatus'],
},
},
options: [
{ name: 'Paused', value: 'PAUSED' },
{ name: 'Stopped', value: 'STOPPED' },
{ name: 'Start', value: 'START' },
],
default: 'PAUSED',
description: 'The new status for the campaign',
},
{
displayName: 'Message',
name: 'message',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['lead'],
operation: ['reply'],
},
},
default: '',
description: 'The message to send to the lead',
},
{
displayName: 'Subject',
name: 'subject',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['lead'],
operation: ['reply'],
},
},
default: '',
description: 'The subject of the email',
},
// Smart Delivery Operations
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['smartDelivery'],
},
},
options: [
{
name: 'Get Region Provider IDs',
value: 'getRegionProviders',
description: 'Get region wise provider IDs',
action: 'Get region provider IDs',
},
{
name: 'Create Manual Placement Test',
value: 'createManualTest',
description: 'Create a manual placement test',
action: 'Create manual placement test',
},
{
name: 'Create Automated Placement Test',
value: 'createAutomatedTest',
description: 'Create an automated placement test',
action: 'Create automated placement test',
},
{
name: 'Get Spam Test Details',
value: 'getSpamTestDetails',
description: 'Get spam test details by ID',
action: 'Get spam test details',
},
{
name: 'Delete Tests in Bulk',
value: 'deleteTestsBulk',
description: 'Delete smart delivery tests in bulk',
action: 'Delete tests in bulk',
},
{
name: 'Stop Automated Test',
value: 'stopAutomatedTest',
description: 'Stop an automated smart delivery test',
action: 'Stop automated test',
},
{
name: 'List All Tests',
value: 'listAllTests',
description: 'List all placement tests',
action: 'List all tests',
},
{
name: 'Get Provider Report',
value: 'getProviderReport',
description: 'Get provider wise report',
action: 'Get provider report',
},
{
name: 'Get Geo Report',
value: 'getGeoReport',
description: 'Get geo wise report',
action: 'Get geo report',
},
{
name: 'Get Sender Account Report',
value: 'getSenderAccountReport',
description: 'Get sender account wise report',
action: 'Get sender account report',
},
{
name: 'Get Spam Filter Report',
value: 'getSpamFilterReport',
description: 'Get spam filter report',
action: 'Get spam filter report',
},
{
name: 'Get DKIM Details',
value: 'getDkimDetails',
description: 'Get DKIM authentication details',
action: 'Get DKIM details',
},
{
name: 'Get SPF Details',
value: 'getSpfDetails',
description: 'Get SPF authentication details',
action: 'Get SPF details',
},
{
name: 'Get rDNS Report',
value: 'getRdnsReport',
description: 'Get reverse DNS report',
action: 'Get rDNS report',
},
{
name: 'Get Sender Account List',
value: 'getSenderAccountList',
description: 'Get list of sender accounts',
action: 'Get sender account list',
},
{
name: 'Get Blacklists',
value: 'getBlacklists',
description: 'Get blacklist information',
action: 'Get blacklists',
},
{
name: 'Get Domain Blacklist',
value: 'getDomainBlacklist',
description: 'Get domain blacklist information',
action: 'Get domain blacklist',
},
{
name: 'Get Spam Test Email Content',
value: 'getSpamTestEmailContent',
description: 'Get spam test email content',
action: 'Get spam test email content',
},
{
name: 'Get Email Reply Headers',
value: 'getEmailReplyHeaders',
description: 'Get email reply headers',
action: 'Get email reply headers',
},
{
name: 'Get Schedule History',
value: 'getScheduleHistory',
description: 'Get schedule history for automated tests',
action: 'Get schedule history',
},
{
name: 'Get IP Details',
value: 'getIpDetails',
description: 'Get IP address details',
action: 'Get IP details',
},
{
name: 'Get Mailbox Summary',
value: 'getMailboxSummary',
description: 'Get mailbox summary information',
action: 'Get mailbox summary',
},
{
name: 'Get Mailbox Count',
value: 'getMailboxCount',
description: 'Get mailbox count statistics',
action: 'Get mailbox count',
},
{
name: 'Get All Folders',
value: 'getAllFolders',
description: 'Get all folders',
action: 'Get all folders',
},
{
name: 'Create Folder',
value: 'createFolder',
description: 'Create a new folder',
action: 'Create folder',
},
{
name: 'Get Folder by ID',
value: 'getFolderById',
description: 'Get folder by ID',
action: 'Get folder by ID',
},
{
name: 'Delete Folder',
value: 'deleteFolder',
description: 'Delete a folder',
action: 'Delete folder',
},
],
default: 'getRegionProviders',
required: true,
},
// Smart Delivery Test ID field
{
displayName: 'Test ID',
name: 'testId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: ['smartDelivery'],
operation: ['getSpamTestDetails', 'stopAutomatedTest'],
},
},
default: '',
description: 'The ID of the spam/placement test',
},
// Manual Test Data
{
displayName: 'Manual Test Data',
name: 'manualTestData',
type: 'json',
required: true,
displayOptions: {
show: {
resource: ['smartDelivery'],
operation: ['createManualTest'],
},
},
default: '{\n "subject": "Test Subject",\n "content": "Test email content",\n "from_email": "sender@example.com",\n "from_name": "Test Sender"\n}',
description: 'Manual test configuration in JSON format',
placeholder: '{ "subject": "...", "content": "...", "from_email": "...", "from_name": "..." }',
},
// Automated Test Data
{
displayName: 'Automated Test Data',
name: 'automatedTestData',
type: 'json',
required: true,
displayOptions: {
show: {
resource: ['smartDelivery'],
operation: ['createAutomatedTest'],
},
},
default: '{\n "subject": "Test Subject",\n "content": "Test email content",\n "from_email": "sender@example.com",\n "from_name": "Test Sender",\n "schedule": "daily"\n}',
description: 'Automated test configuration in JSON format',
placeholder: '{ "subject": "...", "content": "...", "schedule": "..." }',
},
// Test Filter Data
{
displayName: 'Test Filter Data',
name: 'testFilterData',
type: 'json',
required: true,
displayOptions: {
show: {
resource: ['smartDelivery'],
operation: ['listAllTests', 'getProviderReport', 'getGeoReport'],
},
},
default: '{\n "limit": 10,\n "offset": 0\n}',
description: 'Filter and pagination options in JSON format',
placeholder: '{ "limit": 10, "offset": 0, "date_from": "...", "date_to": "..." }',
},
// Delete Test IDs
{
displayName: 'Test IDs to Delete',
name: 'testIdsToDelete',
typ