// Copyright (c) 2025-2026 Probo Inc . // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above // copyright notice and this permission notice appear in all copies. // // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH // REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY // AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, // INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM // LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR // OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR // PERFORMANCE OF THIS SOFTWARE. import type { INodeProperties, IExecuteFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow'; import { proboApiRequestAllItems } from '../../GenericFunctions'; export const description: INodeProperties[] = [ { displayName: 'Organization ID', name: 'organizationId', type: 'string', displayOptions: { show: { resource: ['processingActivity'], operation: ['getAll'], }, }, default: '', description: 'The ID of the organization', required: true, }, { displayName: 'Return All', name: 'returnAll', type: 'boolean', displayOptions: { show: { resource: ['processingActivity'], operation: ['getAll'], }, }, default: false, description: 'Whether to return all results or only up to a given limit', }, { displayName: 'Limit', name: 'limit', type: 'number', displayOptions: { show: { resource: ['processingActivity'], operation: ['getAll'], returnAll: [false], }, }, typeOptions: { minValue: 1, }, default: 50, description: 'Max number of results to return', }, ]; export async function execute( this: IExecuteFunctions, itemIndex: number, ): Promise { const organizationId = this.getNodeParameter('organizationId', itemIndex) as string; const returnAll = this.getNodeParameter('returnAll', itemIndex) as boolean; const limit = this.getNodeParameter('limit', itemIndex, 50) as number; const query = ` query GetProcessingActivities($organizationId: ID!, $first: Int, $after: CursorKey) { node(id: $organizationId) { ... on Organization { processingActivities(first: $first, after: $after) { edges { node { id name purpose role lawfulBasis createdAt updatedAt } } pageInfo { hasNextPage endCursor } } } } } `; const processingActivities = await proboApiRequestAllItems.call( this, query, { organizationId }, (response) => { const data = response?.data as IDataObject | undefined; const node = data?.node as IDataObject | undefined; return node?.processingActivities as IDataObject | undefined; }, returnAll, limit, ); return { json: { processingActivities }, pairedItem: { item: itemIndex }, }; }