import type { INodeProperties } from 'n8n-workflow'; import { TLP } from '../helpers/interfaces'; export const returnAllAndLimit: INodeProperties[] = [ { displayName: 'Return All', name: 'returnAll', type: 'boolean', default: false, description: 'Whether to return all results or only up to a given limit', }, { displayName: 'Limit', name: 'limit', type: 'number', typeOptions: { minValue: 1, }, default: 50, description: 'Max number of results to return', displayOptions: { show: { returnAll: [false], }, }, }, ]; export const responderOptions: INodeProperties = { displayName: 'Responder Name or ID', name: 'responder', type: 'options', description: 'Choose from the list, or specify an ID using an expression', required: true, default: '', typeOptions: { loadOptionsDependsOn: ['id', 'id.value'], loadOptionsMethod: 'loadResponders', }, displayOptions: { hide: { id: [''], }, }, }; export const tlpOptions: INodeProperties = { displayName: 'Traffict Light Protocol (TLP)', name: 'tlp', type: 'options', default: 2, options: [ { name: 'White', value: TLP.white, }, { name: 'Green', value: TLP.green, }, { name: 'Amber', value: TLP.amber, }, { name: 'Red', value: TLP.red, }, ], }; export const severityOptions: INodeProperties = { displayName: 'Severity', name: 'severity', type: 'options', options: [ { name: 'Low', value: 1, }, { name: 'Medium', value: 2, }, { name: 'High', value: 3, }, { name: 'Critical', value: 4, }, ], default: 2, description: 'Severity of the alert. Default=Medium.', }; export const observableTypeOptions: INodeProperties = { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options displayName: 'Data Type', name: 'dataType', type: 'options', default: '', typeOptions: { loadOptionsMethod: 'loadObservableTypes', }, description: 'Type of the observable. Choose from the list, or specify an ID using an expression.', }; export const alertStatusOptions: INodeProperties = { displayName: 'Status', name: 'status', type: 'options', options: [ { name: 'New', value: 'New', }, { name: 'Updated', value: 'Updated', }, { name: 'Ignored', value: 'Ignored', }, { name: 'Imported', value: 'Imported', }, ], default: 'New', description: 'Status of the alert', }; export const caseStatusOptions: INodeProperties = { displayName: 'Status', name: 'status', type: 'options', options: [ { name: 'Open', value: 'Open', }, { name: 'Resolved', value: 'Resolved', }, { name: 'Deleted', value: 'Deleted', }, ], default: 'Open', }; export const observableStatusOptions: INodeProperties = { displayName: 'Status', name: 'status', type: 'options', default: 'Ok', options: [ { name: 'Ok', value: 'Ok', }, { name: 'Deleted', value: 'Deleted', }, ], description: 'Status of the observable. Default=Ok.', }; export const taskStatusOptions: INodeProperties = { displayName: 'Status', name: 'status', type: 'options', default: 'Waiting', options: [ { name: 'Cancel', value: 'Cancel', }, { name: 'Completed', value: 'Completed', }, { name: 'InProgress', value: 'InProgress', }, { name: 'Waiting', value: 'Waiting', }, ], description: 'Status of the task. Default=Waiting.', }; export const searchOptions: INodeProperties = { displayName: 'Options', name: 'options', type: 'collection', placeholder: 'Add Option', default: {}, options: [ { displayName: 'Return Count', name: 'returnCount', type: 'boolean', description: 'Whether to return only the count of results', default: false, displayOptions: { hide: { '/returnAll': [false], }, }, }, { displayName: 'Extra Data', name: 'extraData', type: 'multiOptions', description: 'Additional data to include in the response', options: [ { name: 'isOwner', value: 'isOwner', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'links', value: 'links', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'permissions', value: 'permissions', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'seen', value: 'seen', }, { name: 'shareCount', value: 'shareCount', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'shares', value: 'shares', }, ], default: [], displayOptions: { show: { '/resource': ['observable'], }, hide: { returnCount: [true], }, }, }, { displayName: 'Extra Data', name: 'extraData', type: 'multiOptions', description: 'Additional data to include in the response', options: [ { name: 'actionRequired', value: 'actionRequired', }, { name: 'actionRequiredMap', value: 'actionRequiredMap', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'case', value: 'case', }, { name: 'caseId', value: 'caseId', }, { name: 'caseTemplate', value: 'caseTemplate', }, { name: 'caseTemplateId', value: 'caseTemplateId', }, { name: 'shareCount', value: 'shareCount', }, ], default: [], displayOptions: { show: { '/resource': ['task'], }, hide: { returnCount: [true], }, }, }, { displayName: 'Extra Data', name: 'extraData', type: 'multiOptions', description: 'Additional data to include in the response', options: [ { name: 'caseNumber', value: 'caseNumber', }, { name: 'importDate', value: 'importDate', }, { name: 'procedureCount', value: 'procedureCount', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'status', value: 'status', }, ], default: [], displayOptions: { show: { '/resource': ['alert'], }, hide: { returnCount: [true], }, }, }, { displayName: 'Extra Data', name: 'extraData', type: 'multiOptions', description: 'Additional data to include in the response', options: [ { name: 'actionRequired', value: 'actionRequired', }, { name: 'alertCount', value: 'alertCount', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'alerts', value: 'alerts', }, { name: 'attachmentCount', value: 'attachmentCount', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'contributors', value: 'contributors', }, { name: 'handlingDuration', value: 'computed.handlingDuration', }, { name: 'handlingDurationInDays', value: 'computed.handlingDurationInDays', }, { name: 'handlingDurationInHours', value: 'computed.handlingDurationInHours', }, { name: 'handlingDurationInMinutes', value: 'computed.handlingDurationInMinutes', }, { name: 'handlingDurationInSeconds', value: 'computed.handlingDurationInSeconds', }, { name: 'isOwner', value: 'isOwner', }, { name: 'observableStats', value: 'observableStats', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'permissions', value: 'permissions', }, { name: 'procedureCount', value: 'procedureCount', }, { name: 'shareCount', value: 'shareCount', }, { name: 'similarAlerts', value: 'similarAlerts', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'status', value: 'status', }, { name: 'taskStats', value: 'taskStats', }, ], default: [], displayOptions: { show: { '/resource': ['case'], }, hide: { returnCount: [true], }, }, }, { displayName: 'Extra Data', name: 'extraData', type: 'multiOptions', description: 'Additional data to include in the response', options: [ { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'links', value: 'links', }, ], default: [], displayOptions: { show: { '/resource': ['comment'], }, hide: { returnCount: [true], }, }, }, { displayName: 'Extra Data', name: 'extraData', type: 'multiOptions', description: 'Additional data to include in the response', options: [ { name: 'actionCount', value: 'actionCount', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'case', value: 'case', }, { // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased name: 'task', value: 'task', }, { name: 'taskId', value: 'taskId', }, ], default: [], displayOptions: { show: { '/resource': ['log'], }, hide: { returnCount: [true], }, }, }, { displayName: 'Extra Data', name: 'extraData', type: 'string', description: 'Additional data to include in the response', default: '', requiresDataPath: 'multiple', displayOptions: { show: { '/resource': ['query'], }, hide: { returnCount: [true], }, }, }, ], }; export const attachmentsUi: INodeProperties = { displayName: 'Attachments', name: 'attachmentsUi', placeholder: 'Add Attachment', type: 'fixedCollection', typeOptions: { multipleValues: true, }, options: [ { name: 'values', displayName: 'Values', values: [ { displayName: 'Attachment Field Name', name: 'field', type: 'string', default: 'data', description: 'Add the field name from the input node', hint: 'The name of the field with the attachment in the node input', }, ], }, ], default: {}, description: 'Array of supported attachments to add to the message', };