UNPKG

n8n-nodes-crisp-api

Version:

n8n community node for Crisp API integration

1,180 lines 95.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Crisp = void 0; class Crisp { constructor() { this.description = { displayName: 'Crisp', name: 'crisp', icon: 'file:crisp.svg', group: ['transform'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Interact with Crisp API - Complete integration with all available endpoints', defaults: { name: 'Crisp', }, inputs: ["main" /* NodeConnectionType.Main */], outputs: ["main" /* NodeConnectionType.Main */], credentials: [ { name: 'crispApi', required: true, }, ], properties: [ { displayName: 'Website ID', name: 'websiteId', type: 'string', default: '', required: true, description: 'The website ID from your Crisp dashboard', }, { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Website', value: 'website', }, { name: 'Conversation', value: 'conversation', }, { name: 'People', value: 'people', }, { name: 'Operator', value: 'operator', }, { name: 'Settings', value: 'settings', }, { name: 'Analytics', value: 'analytics', }, { name: 'Availability', value: 'availability', }, { name: 'Campaign', value: 'campaign', }, { name: 'Helpdesk', value: 'helpdesk', }, { name: 'Visitors', value: 'visitors', }, { name: 'Batch', value: 'batch', }, { name: 'Verify', value: 'verify', }, ], default: 'conversation', }, // Website Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['website'], }, }, options: [ { name: 'Check Exists', value: 'checkExists', description: 'Check if website exists', action: 'Check if website exists', }, { name: 'Create', value: 'create', description: 'Create website', action: 'Create website', }, { name: 'Get', value: 'get', description: 'Get website details', action: 'Get website details', }, { name: 'Delete', value: 'delete', description: 'Delete website', action: 'Delete website', }, { name: 'Abort Deletion', value: 'abortDeletion', description: 'Abort website deletion', action: 'Abort website deletion', }, ], default: 'get', }, // Conversation Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['conversation'], }, }, options: [ { name: 'List', value: 'list', description: 'List conversations', action: 'List conversations', }, { name: 'Get', value: 'get', description: 'Get conversation details', action: 'Get conversation details', }, { name: 'Create', value: 'create', description: 'Create new conversation', action: 'Create new conversation', }, { name: 'Remove', value: 'remove', description: 'Remove conversation', action: 'Remove conversation', }, { name: 'Send Message', value: 'sendMessage', description: 'Send message in conversation', action: 'Send message in conversation', }, { name: 'Get Messages', value: 'getMessages', description: 'Get messages in conversation', action: 'Get messages in conversation', }, { name: 'Update State', value: 'updateState', description: 'Update conversation state', action: 'Update conversation state', }, { name: 'Update Meta', value: 'updateMeta', description: 'Update conversation metadata (email, nickname, phone)', action: 'Update conversation metadata', }, { name: 'Assign Routing', value: 'assignRouting', description: 'Assign conversation routing', action: 'Assign conversation routing', }, { name: 'Block', value: 'block', description: 'Block conversation', action: 'Block conversation', }, { name: 'Widget Button Action', value: 'widgetButtonAction', description: 'Deliver widget button action', action: 'Deliver widget button action', }, { name: 'Process Button Action', value: 'processButtonAction', description: 'Process button action and execute configured response', action: 'Process button action and execute configured response', }, { name: 'Send Private Note', value: 'sendPrivateNote', description: 'Send operator-only note (invisible to customers)', action: 'Send operator-only note (invisible to customers)', }, { name: 'Send AI Review Request', value: 'sendAIReviewRequest', description: 'Send AI-generated response for operator review with action buttons', action: 'Send AI-generated response for operator review with action buttons', }, ], default: 'list', }, // People Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['people'], }, }, options: [ { name: 'List Profiles', value: 'listProfiles', description: 'List people profiles', action: 'List people profiles', }, { name: 'Get Profile', value: 'getProfile', description: 'Get people profile', action: 'Get people profile', }, { name: 'Create Profile', value: 'createProfile', description: 'Create new people profile', action: 'Create new people profile', }, { name: 'Update Profile', value: 'updateProfile', description: 'Update people profile', action: 'Update people profile', }, { name: 'Remove Profile', value: 'removeProfile', description: 'Remove people profile', action: 'Remove people profile', }, { name: 'Get Statistics', value: 'getStatistics', description: 'Get people statistics', action: 'Get people statistics', }, { name: 'List Conversations', value: 'listConversations', description: 'List people conversations', action: 'List people conversations', }, { name: 'Add Event', value: 'addEvent', description: 'Add people event', action: 'Add people event', }, ], default: 'listProfiles', }, // Operator Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['operator'], }, }, options: [ { name: 'List', value: 'list', description: 'List website operators', action: 'List website operators', }, { name: 'Get', value: 'get', description: 'Get website operator', action: 'Get website operator', }, { name: 'Invite', value: 'invite', description: 'Invite website operator', action: 'Invite website operator', }, { name: 'Change Membership', value: 'changeMembership', description: 'Change operator membership', action: 'Change operator membership', }, { name: 'Unlink', value: 'unlink', description: 'Unlink operator from website', action: 'Unlink operator from website', }, ], default: 'list', }, // Settings Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['settings'], }, }, options: [ { name: 'Get', value: 'get', description: 'Get website settings', action: 'Get website settings', }, { name: 'Update', value: 'update', description: 'Update website settings', action: 'Update website settings', }, ], default: 'get', }, // Analytics Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['analytics'], }, }, options: [ { name: 'Generate', value: 'generate', description: 'Generate analytics', action: 'Generate analytics', }, ], default: 'generate', }, // Availability Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['availability'], }, }, options: [ { name: 'Get Status', value: 'getStatus', description: 'Get website availability status', action: 'Get website availability status', }, { name: 'List Operators', value: 'listOperators', description: 'List website operator availabilities', action: 'List website operator availabilities', }, ], default: 'getStatus', }, // Campaign Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['campaign'], }, }, options: [ { name: 'List', value: 'list', description: 'List campaigns', action: 'List campaigns', }, { name: 'Get', value: 'get', description: 'Get campaign', action: 'Get campaign', }, { name: 'Create', value: 'create', description: 'Create new campaign', action: 'Create new campaign', }, { name: 'Update', value: 'update', description: 'Update campaign', action: 'Update campaign', }, { name: 'Remove', value: 'remove', description: 'Remove campaign', action: 'Remove campaign', }, { name: 'Dispatch', value: 'dispatch', description: 'Dispatch campaign', action: 'Dispatch campaign', }, { name: 'Pause', value: 'pause', description: 'Pause campaign', action: 'Pause campaign', }, { name: 'Resume', value: 'resume', description: 'Resume campaign', action: 'Resume campaign', }, ], default: 'list', }, // Helpdesk Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['helpdesk'], }, }, options: [ { name: 'Check Exists', value: 'checkExists', description: 'Check if helpdesk exists', action: 'Check if helpdesk exists', }, { name: 'Get', value: 'get', description: 'Resolve helpdesk', action: 'Resolve helpdesk', }, { name: 'Initialize', value: 'initialize', description: 'Initialize helpdesk', action: 'Initialize helpdesk', }, { name: 'Delete', value: 'delete', description: 'Delete helpdesk', action: 'Delete helpdesk', }, { name: 'List Locales', value: 'listLocales', description: 'List helpdesk locales', action: 'List helpdesk locales', }, ], default: 'checkExists', }, // Visitors Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['visitors'], }, }, options: [ { name: 'Count', value: 'count', description: 'Count visitors', action: 'Count visitors', }, { name: 'List', value: 'list', description: 'List visitors', action: 'List visitors', }, { name: 'Pinpoint on Map', value: 'pinpointOnMap', description: 'Pinpoint visitors on map', action: 'Pinpoint visitors on map', }, { name: 'Count Blocked', value: 'countBlocked', description: 'Count blocked visitors', action: 'Count blocked visitors', }, ], default: 'count', }, // Batch Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['batch'], }, }, options: [ { name: 'Resolve Conversations', value: 'resolveConversations', description: 'Batch resolve conversations', action: 'Batch resolve conversations', }, { name: 'Read Conversations', value: 'readConversations', description: 'Batch read conversations', action: 'Batch read conversations', }, { name: 'Remove Conversations', value: 'removeConversations', description: 'Batch remove conversations', action: 'Batch remove conversations', }, { name: 'Remove People', value: 'removePeople', description: 'Batch remove people', action: 'Batch remove people', }, ], default: 'resolveConversations', }, // Verify Operations { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['verify'], }, }, options: [ { name: 'Get Settings', value: 'getSettings', description: 'Get verify settings', action: 'Get verify settings', }, { name: 'Update Settings', value: 'updateSettings', description: 'Update verify settings', action: 'Update verify settings', }, { name: 'Get Key', value: 'getKey', description: 'Get verify key', action: 'Get verify key', }, { name: 'Roll Key', value: 'rollKey', description: 'Roll verify key', action: 'Roll verify key', }, ], default: 'getSettings', }, // Common Parameters { displayName: 'Session ID', name: 'sessionId', type: 'string', required: true, displayOptions: { show: { resource: ['conversation'], operation: ['get', 'remove', 'sendMessage', 'getMessages', 'updateState', 'assignRouting', 'updateMeta', 'block', 'widgetButtonAction', 'processButtonAction', 'sendPrivateNote', 'sendAIReviewRequest'], }, }, default: '', description: 'The session ID of the conversation', }, { displayName: 'People ID', name: 'peopleId', type: 'string', required: true, displayOptions: { show: { resource: ['people'], operation: ['getProfile', 'updateProfile', 'removeProfile', 'listConversations', 'addEvent'], }, }, default: '', description: 'The ID of the people profile', }, { displayName: 'User ID', name: 'userId', type: 'string', required: true, displayOptions: { show: { resource: ['operator'], operation: ['get', 'changeMembership', 'unlink'], }, }, default: '', description: 'The user ID of the operator', }, { displayName: 'Campaign ID', name: 'campaignId', type: 'string', required: true, displayOptions: { show: { resource: ['campaign'], operation: ['get', 'update', 'remove', 'dispatch', 'pause', 'resume'], }, }, default: '', description: 'The ID of the campaign', }, { displayName: 'Page Number', name: 'pageNumber', type: 'number', displayOptions: { show: { resource: ['conversation', 'people', 'campaign', 'helpdesk', 'visitors'], operation: ['list', 'listProfiles', 'listConversations', 'listLocales'], }, }, default: 1, description: 'The page number for pagination', }, { displayName: 'Message', name: 'message', type: 'string', required: true, displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], }, }, default: '', description: 'The message content to send', }, { displayName: 'Message Type', name: 'messageType', type: 'options', displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], }, }, options: [ { name: 'Text', value: 'text', }, { name: 'Note', value: 'note', }, { name: 'Picker (Button Options)', value: 'picker', }, { name: 'Field (Input)', value: 'field', }, { name: 'Carousel', value: 'carousel', }, { name: 'Event', value: 'event', }, ], default: 'text', description: 'The type of message to send', }, { displayName: 'Picker ID', name: 'pickerId', type: 'string', displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], messageType: ['picker'], }, }, default: '', description: 'Unique identifier for the picker', }, { displayName: 'Picker Text', name: 'pickerText', type: 'string', displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], messageType: ['picker'], }, }, default: '', description: 'Text to display with the picker', }, { displayName: 'Picker Choices', name: 'pickerChoices', type: 'fixedCollection', typeOptions: { multipleValues: true, }, displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], messageType: ['picker'], }, }, default: {}, description: 'Choice options for the picker', options: [ { name: 'choice', displayName: 'Choice', values: [ { displayName: 'Value', name: 'value', type: 'string', default: '', description: 'The value of the choice', }, { displayName: 'Label', name: 'label', type: 'string', default: '', description: 'The display label of the choice', }, { displayName: 'Icon', name: 'icon', type: 'string', default: '', description: 'Icon for the choice (emoji or icon name)', }, { displayName: 'Action Type', name: 'actionType', type: 'options', options: [ { name: 'None (Simple Button)', value: 'none', }, { name: 'Link (External URL)', value: 'link', }, { name: 'Send Message', value: 'sendMessage', }, { name: 'Send Picker', value: 'sendPicker', }, { name: 'Send Field', value: 'sendField', }, { name: 'Send Carousel', value: 'sendCarousel', }, { name: 'Close Conversation', value: 'closeConversation', }, { name: 'Transfer to Agent', value: 'transferAgent', }, { name: 'Custom Webhook', value: 'webhook', }, ], default: 'none', description: 'Type of action when choice is selected', }, { displayName: 'Action Target', name: 'actionTarget', type: 'string', default: '', description: 'URL for link actions or webhook endpoint', }, { displayName: 'Response Message', name: 'responseMessage', type: 'string', default: '', description: 'Message to send when this choice is selected', }, { displayName: 'Response Message Type', name: 'responseMessageType', type: 'options', options: [ { name: 'Text', value: 'text', }, { name: 'Note', value: 'note', }, ], default: 'text', description: 'Type of response message', }, { displayName: 'Follow-up Action', name: 'followUpAction', type: 'json', default: '{}', description: 'JSON configuration for follow-up actions (picker, field, carousel)', }, { displayName: 'Agent ID', name: 'agentId', type: 'string', default: '', description: 'Agent ID for transfer actions', }, { displayName: 'Webhook Data', name: 'webhookData', type: 'json', default: '{}', description: 'Additional data to send with webhook', }, ], }, ], }, { displayName: 'Field ID', name: 'fieldId', type: 'string', displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], messageType: ['field'], }, }, default: '', description: 'Unique identifier for the field', }, { displayName: 'Field Text', name: 'fieldText', type: 'string', displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], messageType: ['field'], }, }, default: '', description: 'Text to display for the field', }, { displayName: 'Field Explanation', name: 'fieldExplain', type: 'string', displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], messageType: ['field'], }, }, default: '', description: 'Additional explanation for the field', }, { displayName: 'Field Required', name: 'fieldRequired', type: 'boolean', displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], messageType: ['field'], }, }, default: false, description: 'Whether the field is required', }, { displayName: 'Carousel Targets', name: 'carouselTargets', type: 'fixedCollection', typeOptions: { multipleValues: true, }, displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], messageType: ['carousel'], }, }, default: {}, description: 'Carousel items', options: [ { name: 'target', displayName: 'Target', values: [ { displayName: 'Title', name: 'title', type: 'string', default: '', description: 'Title of the carousel item', }, { displayName: 'Description', name: 'description', type: 'string', default: '', description: 'Description of the carousel item', }, { displayName: 'Action Type', name: 'actionType', type: 'options', options: [ { name: 'Link', value: 'link', }, { name: 'None', value: 'none', }, ], default: 'none', description: 'Type of action for the carousel item', }, { displayName: 'Action Target', name: 'actionTarget', type: 'string', default: '', description: 'URL for link actions', }, ], }, ], }, { displayName: 'Event Type', name: 'eventType', type: 'string', displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], messageType: ['event'], }, }, default: '', description: 'Type of event to send', }, { displayName: 'Event Data', name: 'eventData', type: 'string', displayOptions: { show: { resource: ['conversation'], operation: ['sendMessage'], messageType: ['event'], }, }, default: '', description: 'Event data as JSON string', }, { displayName: 'Widget Button ID', name: 'widgetButtonId', type: 'string', required: true, displayOptions: { show: { resource: ['conversation'], operation: ['widgetButtonAction'], }, }, default: '', description: 'The ID of the widget button', }, { displayName: 'Widget Button Data', name: 'widgetButtonData', type: 'string', displayOptions: { show: { resource: ['conversation'], operation: ['widgetButtonAction'], }, }, default: '', description: 'Widget button data as JSON string', }, { displayName: 'Button Action Type', name: 'buttonActionType', type: 'options', required: true, displayOptions: { show: { resource: ['conversation'], operation: ['processButtonAction'], }, }, options: [ { name: 'Send Message', value: 'sendMessage', }, { name: 'Send Picker', value: 'sendPicker', }, { name: 'Send Field', value: 'sendField', }, { name: 'Send Carousel', value: 'sendCarousel', }, { name: 'Close Conversation', value: 'closeConversation', }, { name: 'Transfer to Agent', value: 'transferAgent', }, { name: 'Custom Webhook', value: 'webhook', }, ], default: 'sendMessage', description: 'Type of action to execute', }, { displayName: 'Action Configuration', name: 'actionConfiguration', type: 'json', displayOptions: { show: { resource: ['conversation'], operation: ['processButtonAction'], }, }, default: '{}', description: 'JSON configuration for the action (message content, picker options, etc.)', }, { displayName: 'Private Note Content', name: 'privateNoteContent', type: 'string', required: true, displayOptions: { show: { resource: ['conversation'], operation: ['sendPrivateNote'], }, }, default: '', de