From 972d68d937b4fbf0be5e3f337aa09a881325787d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 30 Jun 2026 09:12:15 +0000 Subject: [PATCH] Add latest published document version ID node Co-authored-by: Sacha Al Himdani Signed-off-by: Cursor Agent --- .../getLatestPublishedVersionId.operation.ts | 69 +++++++++++++++++++ .../nodes/Probo/actions/document/index.ts | 9 +++ 2 files changed, 78 insertions(+) create mode 100644 packages/n8n-node/nodes/Probo/actions/document/getLatestPublishedVersionId.operation.ts diff --git a/packages/n8n-node/nodes/Probo/actions/document/getLatestPublishedVersionId.operation.ts b/packages/n8n-node/nodes/Probo/actions/document/getLatestPublishedVersionId.operation.ts new file mode 100644 index 000000000..5527e2754 --- /dev/null +++ b/packages/n8n-node/nodes/Probo/actions/document/getLatestPublishedVersionId.operation.ts @@ -0,0 +1,69 @@ +// 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 { proboApiRequest } from '../../GenericFunctions'; + +export const description: INodeProperties[] = [ + { + displayName: 'Document ID', + name: 'documentId', + type: 'string', + displayOptions: { + show: { + resource: ['document'], + operation: ['getLatestPublishedVersionId'], + }, + }, + default: '', + description: 'The ID of the document whose latest published version ID should be returned', + required: true, + }, +]; + +export async function execute( + this: IExecuteFunctions, + itemIndex: number, +): Promise { + const documentId = this.getNodeParameter('documentId', itemIndex) as string; + + const query = ` + query GetLatestPublishedDocumentVersionId($documentId: ID!) { + node(id: $documentId) { + ... on Document { + versions(first: 1, orderBy: { field: CREATED_AT, direction: DESC }, filter: { statuses: [PUBLISHED] }) { + edges { + node { + id + } + } + } + } + } + } + `; + + const responseData = await proboApiRequest.call(this, query, { documentId }); + const data = responseData.data as IDataObject | undefined; + const node = data?.node as IDataObject | undefined; + const versions = node?.versions as IDataObject | undefined; + const edges = versions?.edges as Array<{ node?: IDataObject }> | undefined; + + return { + json: { + documentVersionId: edges?.[0]?.node?.id ?? null, + }, + pairedItem: { item: itemIndex }, + }; +} diff --git a/packages/n8n-node/nodes/Probo/actions/document/index.ts b/packages/n8n-node/nodes/Probo/actions/document/index.ts index 8d9201c35..eecf69ad0 100644 --- a/packages/n8n-node/nodes/Probo/actions/document/index.ts +++ b/packages/n8n-node/nodes/Probo/actions/document/index.ts @@ -21,6 +21,7 @@ import * as deleteOp from './delete.operation'; import * as archiveOp from './archive.operation'; import * as unarchiveOp from './unarchive.operation'; import * as getVersionOp from './getVersion.operation'; +import * as getLatestPublishedVersionIdOp from './getLatestPublishedVersionId.operation'; import * as getAllVersionsOp from './getAllVersions.operation'; import * as createDraftVersionOp from './createDraftVersion.operation'; import * as updateVersionOp from './updateVersion.operation'; @@ -102,6 +103,12 @@ export const description: INodeProperties[] = [ description: 'Get an approval quorum', action: 'Get an approval quorum', }, + { + name: 'Get Latest Published Version ID', + value: 'getLatestPublishedVersionId', + description: 'Get the latest published document version ID', + action: 'Get the latest published document version ID', + }, { name: 'Get Many', value: 'getAll', @@ -191,6 +198,7 @@ export const description: INodeProperties[] = [ ...archiveOp.description, ...unarchiveOp.description, ...getVersionOp.description, + ...getLatestPublishedVersionIdOp.description, ...getAllVersionsOp.description, ...createDraftVersionOp.description, ...updateVersionOp.description, @@ -216,6 +224,7 @@ export { archiveOp as archive, unarchiveOp as unarchive, getVersionOp as getVersion, + getLatestPublishedVersionIdOp as getLatestPublishedVersionId, getAllVersionsOp as getAllVersions, createDraftVersionOp as createDraftVersion, updateVersionOp as updateVersion,