import type { IDataObject, IExecuteFunctions, INodeProperties } from 'n8n-workflow'; import { microsoftApiRequest } from '../../transport'; import { calendarRLC } from '../../descriptions'; import { updateDisplayOptions } from '@utils/utilities'; export const properties: INodeProperties[] = [ calendarRLC, { displayName: 'Update Fields', name: 'updateFields', type: 'collection', placeholder: 'Add Field', default: {}, options: [ { displayName: 'Color', name: 'color', type: 'options', default: 'lightBlue', options: [ { name: 'Light Blue', value: 'lightBlue', }, { name: 'Light Brown', value: 'lightBrown', }, { name: 'Light Gray', value: 'lightGray', }, { name: 'Light Green', value: 'lightGreen', }, { name: 'Light Orange', value: 'lightOrange', }, { name: 'Light Pink', value: 'lightPink', }, { name: 'Light Red', value: 'lightRed', }, { name: 'Light Teal', value: 'lightTeal', }, { name: 'Light Yellow', value: 'lightYellow', }, ], description: 'Specify the color to distinguish the calendar from the others', }, { displayName: 'Default Calendar', name: 'isDefaultCalendar', type: 'boolean', default: false, }, { displayName: 'Name', name: 'name', type: 'string', default: '', placeholder: 'e.g. My Calendar', description: 'The name of the calendar', }, ], }, ]; const displayOptions = { show: { resource: ['calendar'], operation: ['update'], }, }; export const description = updateDisplayOptions(displayOptions, properties); export async function execute(this: IExecuteFunctions, index: number) { const updateFields = this.getNodeParameter('updateFields', index); const calendarId = this.getNodeParameter('calendarId', index, undefined, { extractValue: true, }) as string; const endpoint = `/calendars/${calendarId}`; const body: IDataObject = { ...updateFields, }; const responseData = await microsoftApiRequest.call(this, 'PATCH', endpoint, body); const executionData = this.helpers.constructExecutionMetaData( this.helpers.returnJsonArray(responseData as IDataObject), { itemData: { item: index } }, ); return executionData; }