From 091a2f2416e190ef2f30379e3e89c24c1155cbce Mon Sep 17 00:00:00 2001 From: Vigneshwaran Kannan Date: Thu, 2 Jul 2026 22:16:46 +0530 Subject: [PATCH 1/7] feat(workflowy): add create-node, search-nodes, update-node actions --- .../actions/create-node/create-node.mjs | 64 +++++++++++++++++ .../actions/search-nodes/search-nodes.mjs | 52 ++++++++++++++ .../actions/update-node/update-node.mjs | 64 +++++++++++++++++ components/workflowy/common/constants.mjs | 15 ++++ components/workflowy/package.json | 7 +- components/workflowy/workflowy.app.mjs | 69 +++++++++++++++++-- 6 files changed, 265 insertions(+), 6 deletions(-) create mode 100644 components/workflowy/actions/create-node/create-node.mjs create mode 100644 components/workflowy/actions/search-nodes/search-nodes.mjs create mode 100644 components/workflowy/actions/update-node/update-node.mjs create mode 100644 components/workflowy/common/constants.mjs diff --git a/components/workflowy/actions/create-node/create-node.mjs b/components/workflowy/actions/create-node/create-node.mjs new file mode 100644 index 0000000000000..7e9cf6e0e14aa --- /dev/null +++ b/components/workflowy/actions/create-node/create-node.mjs @@ -0,0 +1,64 @@ +import workflowy from "../../workflowy.app.mjs"; +import { POSITIONS } from "../../common/constants.mjs"; + +export default { + key: "workflowy-create-node", + name: "Create Node", + description: "Creates a new bullet node in WorkFlowy via the beta API (POST /api/v1/nodes). Use this to add a top-level node or a child under an existing parent. To create a child node, first run **Search Nodes** to obtain a valid parent node ID and pass it as `parentNodeId`. Returns the newly created node's ID. [See the documentation](https://beta.workflowy.com/api-reference/).", + version: "0.0.1", + type: "action", + annotations: { + readOnlyHint: false, + destructiveHint: false, + openWorldHint: true, + }, + props: { + workflowy, + name: { + type: "string", + label: "Name", + description: "The main text of the new node.", + }, + note: { + type: "string", + label: "Note", + description: "Optional note (secondary text) for the node.", + optional: true, + }, + parentNodeId: { + type: "string", + label: "Parent Node ID", + description: "Free-form parent node ID under which to create this node. Leave blank to create a top-level node. To find a valid ID, first run **Search Nodes** and copy the `id` of the desired parent. Also accepts special values: `None` (root), `inbox`, `calendar`, `today`, `tomorrow`, `next_week`, or a date like `YYYY-MM-DD`.", + optional: true, + }, + layoutMode: { + propDefinition: [ + workflowy, + "layoutMode", + ], + }, + position: { + type: "string", + label: "Position", + description: "Where to place the node among its siblings. One of `top` (default) or `bottom`.", + options: POSITIONS, + optional: true, + default: "top", + }, + }, + async run({ $ }) { + const response = await this.workflowy.createNode({ + $, + data: { + name: this.name, + note: this.note, + parent_id: this.parentNodeId, + layoutMode: this.layoutMode, + position: this.position, + }, + }); + const nodeId = response?.item_id ?? response?.id ?? "unknown"; + $.export("$summary", `Created node "${this.name}" with ID ${nodeId}`); + return response; + }, +}; diff --git a/components/workflowy/actions/search-nodes/search-nodes.mjs b/components/workflowy/actions/search-nodes/search-nodes.mjs new file mode 100644 index 0000000000000..6120b5fc1bb67 --- /dev/null +++ b/components/workflowy/actions/search-nodes/search-nodes.mjs @@ -0,0 +1,52 @@ +import workflowy from "../../workflowy.app.mjs"; + +export default { + key: "workflowy-search-nodes", + name: "Search Nodes", + description: "Searches all WorkFlowy nodes by keyword. WorkFlowy has no dedicated search endpoint, so this exports all nodes (GET /api/v1/nodes-export) and filters client-side by matching the query against each node's name and note. Use this to discover node IDs before running **Create Node** (as a parent) or **Update Node**. Note: the export endpoint is rate limited to 1 request per minute. Returns matching nodes with their IDs and content. [See the documentation](https://beta.workflowy.com/api-reference/).", + version: "0.0.1", + type: "action", + annotations: { + readOnlyHint: true, + destructiveHint: false, + openWorldHint: true, + }, + props: { + workflowy, + query: { + type: "string", + label: "Query", + description: "Keyword to match (case-insensitive) against each node's name and note.", + }, + maxResults: { + type: "integer", + label: "Max Results", + description: "Maximum number of matching nodes to return. Min 1, max 1000. Defaults to 100.", + min: 1, + max: 1000, + default: 100, + optional: true, + }, + }, + async run({ $ }) { + const response = await this.workflowy.exportNodes({ + $, + }); + const nodes = response?.nodes ?? []; + const lowerQuery = this.query.toLowerCase(); + const maxResults = this.maxResults ?? 100; + + const matches = nodes + .filter((node) => { + const name = (node.name ?? "").toLowerCase(); + const note = (node.note ?? "").toLowerCase(); + return name.includes(lowerQuery) || note.includes(lowerQuery); + }) + .slice(0, maxResults); + + $.export("$summary", `Found ${matches.length} node${matches.length === 1 + ? "" + : "s"} matching "${this.query}"`); + return matches; + }, +}; diff --git a/components/workflowy/actions/update-node/update-node.mjs b/components/workflowy/actions/update-node/update-node.mjs new file mode 100644 index 0000000000000..4e3b93acd8bb1 --- /dev/null +++ b/components/workflowy/actions/update-node/update-node.mjs @@ -0,0 +1,64 @@ +import { ConfigurationError } from "@pipedream/platform"; +import workflowy from "../../workflowy.app.mjs"; + +export default { + key: "workflowy-update-node", + name: "Update Node", + description: "Updates an existing WorkFlowy node's name, note, and/or layout mode (POST /api/v1/nodes/:id). Run **Search Nodes** first to obtain the target node ID. At least one of name, note, or layout mode must be provided. Because the update endpoint only returns a status, this action performs a follow-up retrieval (GET /api/v1/nodes/:id) and returns the updated node state. [See the documentation](https://beta.workflowy.com/api-reference/).", + version: "0.0.1", + type: "action", + annotations: { + readOnlyHint: false, + destructiveHint: false, + openWorldHint: true, + }, + props: { + workflowy, + nodeId: { + type: "string", + label: "Node ID", + description: "The ID of the node to update. Run **Search Nodes** to find a valid node ID.", + }, + name: { + type: "string", + label: "Name", + description: "New main text for the node. Provide at least one of name, note, or layout mode.", + optional: true, + }, + note: { + type: "string", + label: "Note", + description: "New note (secondary text) for the node. Provide at least one of name, note, or layout mode.", + optional: true, + }, + layoutMode: { + propDefinition: [ + workflowy, + "layoutMode", + ], + }, + }, + async run({ $ }) { + if (this.name === undefined && this.note === undefined && this.layoutMode === undefined) { + throw new ConfigurationError("At least one of Name, Note, or Layout Mode must be provided."); + } + + await this.workflowy.updateNode({ + $, + nodeId: this.nodeId, + data: { + name: this.name, + note: this.note, + layoutMode: this.layoutMode, + }, + }); + + const updatedNode = await this.workflowy.getNode({ + $, + nodeId: this.nodeId, + }); + + $.export("$summary", `Updated node ${this.nodeId}`); + return updatedNode; + }, +}; diff --git a/components/workflowy/common/constants.mjs b/components/workflowy/common/constants.mjs new file mode 100644 index 0000000000000..fd6b0e186c322 --- /dev/null +++ b/components/workflowy/common/constants.mjs @@ -0,0 +1,15 @@ +export const BASE_URL = "https://beta.workflowy.com"; +export const VERSION_PATH = "/api/v1"; +export const LAYOUT_MODES = [ + "bullets", + "todo", + "h1", + "h2", + "h3", + "code-block", + "quote-block", +]; +export const POSITIONS = [ + "top", + "bottom", +]; diff --git a/components/workflowy/package.json b/components/workflowy/package.json index f83f846426316..a87adc4ddd4b9 100644 --- a/components/workflowy/package.json +++ b/components/workflowy/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/workflowy", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream WorkFlowy Components", "main": "workflowy.app.mjs", "keywords": [ @@ -11,5 +11,8 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.0.3" } -} \ No newline at end of file +} diff --git a/components/workflowy/workflowy.app.mjs b/components/workflowy/workflowy.app.mjs index 8276aa7e2083d..e857477272821 100644 --- a/components/workflowy/workflowy.app.mjs +++ b/components/workflowy/workflowy.app.mjs @@ -1,11 +1,72 @@ +import { axios } from "@pipedream/platform"; +import { + BASE_URL, + LAYOUT_MODES, + VERSION_PATH, +} from "./common/constants.mjs"; + export default { type: "app", app: "workflowy", - propDefinitions: {}, + propDefinitions: { + layoutMode: { + type: "string", + label: "Layout Mode", + description: "Optional display mode for the node. One of: `bullets`, `todo`, `h1`, `h2`, `h3`, `code-block`, `quote-block`.", + options: LAYOUT_MODES, + optional: true, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _makeRequest({ + $ = this, method = "GET", path, params, data, + }) { + return axios($, { + method, + url: `${BASE_URL}${VERSION_PATH}${path}`, + headers: { + "Authorization": `Bearer ${this.$auth.api_key}`, + "Content-Type": "application/json", + }, + params, + data, + }); + }, + createNode({ + $, data, + }) { + return this._makeRequest({ + $, + method: "POST", + path: "/nodes", + data, + }); + }, + updateNode({ + $, nodeId, data, + }) { + return this._makeRequest({ + $, + method: "POST", + path: `/nodes/${nodeId}`, + data, + }); + }, + getNode({ + $, nodeId, + }) { + return this._makeRequest({ + $, + method: "GET", + path: `/nodes/${nodeId}`, + }); + }, + exportNodes({ $ }) { + return this._makeRequest({ + $, + method: "GET", + path: "/nodes-export", + }); }, }, }; From cc27da23a974be0949bb4cab187dccf03fca0213 Mon Sep 17 00:00:00 2001 From: Vigneshwaran Kannan Date: Thu, 2 Jul 2026 22:37:13 +0530 Subject: [PATCH 2/7] Update pnpm-lock file Update pnpm-.lock file --- pnpm-lock.yaml | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e5343ca5ea45..6adf2c465d99d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1806,8 +1806,7 @@ importers: specifier: ^1.6.8 version: 1.6.8 - components/bilig_workpaper: - specifiers: {} + components/bilig_workpaper: {} components/bilionis: dependencies: @@ -7951,8 +7950,7 @@ importers: specifier: ^1.6.8 version: 1.6.8 - components/intrinio: - specifiers: {} + components/intrinio: {} components/intuiface: dependencies: @@ -17662,7 +17660,11 @@ importers: specifier: ^0.6.2 version: 0.6.2 - components/workflowy: {} + components/workflowy: + dependencies: + '@pipedream/platform': + specifier: ^3.0.3 + version: 3.4.0 components/workiom: dependencies: @@ -17787,8 +17789,7 @@ importers: specifier: ^0.3.2 version: 0.3.4 - components/xquik: - specifiers: {} + components/xquik: {} components/xray_cloud: {} @@ -18036,8 +18037,7 @@ importers: specifier: ^3.1.1 version: 3.1.1 - components/zeplin: - specifiers: {} + components/zeplin: {} components/zerobounce: dependencies: @@ -20164,12 +20164,12 @@ packages: '@daytonaio/toolbox-api-client@0.138.0': resolution: {integrity: sha512-unM9e7MOQiyDXdY8hCW1uTctYbxpo/TGZ6L71ZXyS/j2Cnz9/ud4VWBLcQP2VzlC+lrBP2YMrhT90zSSvcNfmA==} - '@definitelytyped/header-parser@0.2.28': - resolution: {integrity: sha512-JONMU+bw65y1EHtJggxMM9LdFUuvjFY1SXdSH038HcfYceRKiVHvWnMa8/cCKTAj/X696UqND8MVa5s7cJZwfg==} + '@definitelytyped/header-parser@0.2.29': + resolution: {integrity: sha512-w2oVQ+VX8zVTXco3NInGwg94SHmoqqfKN5jXkibTrjwevrYTAvxs9OxLZOyO5BdMSF/SIL5L6nJN6C+652mC7w==} engines: {node: '>=20.17.0'} - '@definitelytyped/typescript-versions@0.1.11': - resolution: {integrity: sha512-hkO3A+ZyjeiLEXLTYe561uv9hnTvHM15+JTi3RgetfuB/+/Rp4Im1y/m+SehSi6D3iwdnbPckupv5TZ4PnlKPg==} + '@definitelytyped/typescript-versions@0.1.12': + resolution: {integrity: sha512-sbdf3l4MEhnwGCP0ZxkSdOZH4wtiG7J7YEMwd/i34uAw/yeZkPDhFwORPqdTknzAUmcbIg81aPr6sVk7ZDCgcw==} engines: {node: '>=20.17.0'} '@definitelytyped/utils@0.1.14': @@ -38688,9 +38688,9 @@ snapshots: transitivePeerDependencies: - debug - '@definitelytyped/header-parser@0.2.28': + '@definitelytyped/header-parser@0.2.29': dependencies: - '@definitelytyped/typescript-versions': 0.1.11 + '@definitelytyped/typescript-versions': 0.1.12 '@definitelytyped/utils': 0.1.14 semver: 7.8.0 transitivePeerDependencies: @@ -38699,7 +38699,7 @@ snapshots: - react-native-b4a - supports-color - '@definitelytyped/typescript-versions@0.1.11': {} + '@definitelytyped/typescript-versions@0.1.12': {} '@definitelytyped/utils@0.1.14': dependencies: @@ -41983,7 +41983,6 @@ snapshots: transitivePeerDependencies: - rolldown - rollup - - supports-color '@putout/operator-parens@2.0.0(rolldown@1.0.0-beta.60(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1))(rollup@4.53.2)': dependencies: @@ -47343,7 +47342,7 @@ snapshots: dts-critic@3.3.11(typescript@5.6.3): dependencies: - '@definitelytyped/header-parser': 0.2.28 + '@definitelytyped/header-parser': 0.2.29 command-exists: 1.2.9 rimraf: 3.0.2 semver: 6.3.1 @@ -47358,7 +47357,7 @@ snapshots: dts-critic@3.3.11(typescript@5.9.3): dependencies: - '@definitelytyped/header-parser': 0.2.28 + '@definitelytyped/header-parser': 0.2.29 command-exists: 1.2.9 rimraf: 3.0.2 semver: 6.3.1 @@ -47375,8 +47374,8 @@ snapshots: dtslint@4.2.1(typescript@5.6.3): dependencies: - '@definitelytyped/header-parser': 0.2.28 - '@definitelytyped/typescript-versions': 0.1.11 + '@definitelytyped/header-parser': 0.2.29 + '@definitelytyped/typescript-versions': 0.1.12 '@definitelytyped/utils': 0.1.14 dts-critic: 3.3.11(typescript@5.6.3) fs-extra: 6.0.1 @@ -47394,8 +47393,8 @@ snapshots: dtslint@4.2.1(typescript@5.9.3): dependencies: - '@definitelytyped/header-parser': 0.2.28 - '@definitelytyped/typescript-versions': 0.1.11 + '@definitelytyped/header-parser': 0.2.29 + '@definitelytyped/typescript-versions': 0.1.12 '@definitelytyped/utils': 0.1.14 dts-critic: 3.3.11(typescript@5.9.3) fs-extra: 6.0.1 From 9b1cfc0520b15d23e1d9c24880dc8535bfbca5ad Mon Sep 17 00:00:00 2001 From: Vigneshwaran Kannan Date: Thu, 2 Jul 2026 23:26:01 +0530 Subject: [PATCH 3/7] addressed review comment addressed review comment --- .../actions/create-node/create-node.mjs | 17 ++++++++------- .../actions/search-nodes/search-nodes.mjs | 2 +- .../actions/update-node/update-node.mjs | 21 +++++++++---------- components/workflowy/workflowy.app.mjs | 20 ++++++++++-------- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/components/workflowy/actions/create-node/create-node.mjs b/components/workflowy/actions/create-node/create-node.mjs index 7e9cf6e0e14aa..86f95d34c93f7 100644 --- a/components/workflowy/actions/create-node/create-node.mjs +++ b/components/workflowy/actions/create-node/create-node.mjs @@ -4,7 +4,7 @@ import { POSITIONS } from "../../common/constants.mjs"; export default { key: "workflowy-create-node", name: "Create Node", - description: "Creates a new bullet node in WorkFlowy via the beta API (POST /api/v1/nodes). Use this to add a top-level node or a child under an existing parent. To create a child node, first run **Search Nodes** to obtain a valid parent node ID and pass it as `parentNodeId`. Returns the newly created node's ID. [See the documentation](https://beta.workflowy.com/api-reference/).", + description: "Creates a new bullet node in WorkFlowy via the beta API (POST /api/v1/nodes). Use this to add a top-level node or a child under an existing parent. To create a child node, first run **Search Nodes** to obtain a valid parent node ID and pass it as `parentNodeId`. Returns the newly created node's ID. [See the documentation](https://beta.workflowy.com/api-reference/#nodes-create).", version: "0.0.1", type: "action", annotations: { @@ -15,15 +15,16 @@ export default { props: { workflowy, name: { - type: "string", - label: "Name", - description: "The main text of the new node.", + propDefinition: [ + workflowy, + "name", + ], }, note: { - type: "string", - label: "Note", - description: "Optional note (secondary text) for the node.", - optional: true, + propDefinition: [ + workflowy, + "note", + ], }, parentNodeId: { type: "string", diff --git a/components/workflowy/actions/search-nodes/search-nodes.mjs b/components/workflowy/actions/search-nodes/search-nodes.mjs index 6120b5fc1bb67..9bd15c1f69fbb 100644 --- a/components/workflowy/actions/search-nodes/search-nodes.mjs +++ b/components/workflowy/actions/search-nodes/search-nodes.mjs @@ -3,7 +3,7 @@ import workflowy from "../../workflowy.app.mjs"; export default { key: "workflowy-search-nodes", name: "Search Nodes", - description: "Searches all WorkFlowy nodes by keyword. WorkFlowy has no dedicated search endpoint, so this exports all nodes (GET /api/v1/nodes-export) and filters client-side by matching the query against each node's name and note. Use this to discover node IDs before running **Create Node** (as a parent) or **Update Node**. Note: the export endpoint is rate limited to 1 request per minute. Returns matching nodes with their IDs and content. [See the documentation](https://beta.workflowy.com/api-reference/).", + description: "Searches all WorkFlowy nodes by keyword. WorkFlowy has no dedicated search endpoint, so this exports all nodes (GET /api/v1/nodes-export) and filters client-side by matching the query against each node's name and note. Use this to discover node IDs before running **Create Node** (as a parent) or **Update Node**. Note: the export endpoint is rate limited to 1 request per minute. Returns matching nodes with their IDs and content. [See the documentation](https://beta.workflowy.com/api-reference/#nodes-export).", version: "0.0.1", type: "action", annotations: { diff --git a/components/workflowy/actions/update-node/update-node.mjs b/components/workflowy/actions/update-node/update-node.mjs index 4e3b93acd8bb1..2dcd4af2c3fa5 100644 --- a/components/workflowy/actions/update-node/update-node.mjs +++ b/components/workflowy/actions/update-node/update-node.mjs @@ -4,7 +4,7 @@ import workflowy from "../../workflowy.app.mjs"; export default { key: "workflowy-update-node", name: "Update Node", - description: "Updates an existing WorkFlowy node's name, note, and/or layout mode (POST /api/v1/nodes/:id). Run **Search Nodes** first to obtain the target node ID. At least one of name, note, or layout mode must be provided. Because the update endpoint only returns a status, this action performs a follow-up retrieval (GET /api/v1/nodes/:id) and returns the updated node state. [See the documentation](https://beta.workflowy.com/api-reference/).", + description: "Updates an existing WorkFlowy node's name, note, and/or layout mode (POST /api/v1/nodes/:id). Run **Search Nodes** first to obtain the target node ID. At least one of name, note, or layout mode must be provided. Because the update endpoint only returns a status. [See the documentation](https://beta.workflowy.com/api-reference/#nodes-update).", version: "0.0.1", type: "action", annotations: { @@ -20,14 +20,18 @@ export default { description: "The ID of the node to update. Run **Search Nodes** to find a valid node ID.", }, name: { - type: "string", - label: "Name", + propDefinition: [ + workflowy, + "name", + ], description: "New main text for the node. Provide at least one of name, note, or layout mode.", optional: true, }, note: { - type: "string", - label: "Note", + propDefinition: [ + workflowy, + "note", + ], description: "New note (secondary text) for the node. Provide at least one of name, note, or layout mode.", optional: true, }, @@ -43,7 +47,7 @@ export default { throw new ConfigurationError("At least one of Name, Note, or Layout Mode must be provided."); } - await this.workflowy.updateNode({ + const updatedNode = await this.workflowy.updateNode({ $, nodeId: this.nodeId, data: { @@ -53,11 +57,6 @@ export default { }, }); - const updatedNode = await this.workflowy.getNode({ - $, - nodeId: this.nodeId, - }); - $.export("$summary", `Updated node ${this.nodeId}`); return updatedNode; }, diff --git a/components/workflowy/workflowy.app.mjs b/components/workflowy/workflowy.app.mjs index e857477272821..830148128f987 100644 --- a/components/workflowy/workflowy.app.mjs +++ b/components/workflowy/workflowy.app.mjs @@ -9,6 +9,17 @@ export default { type: "app", app: "workflowy", propDefinitions: { + name: { + type: "string", + label: "Name", + description: "The main text of the node.", + }, + note: { + type: "string", + label: "Note", + description: "Optional note (secondary text) for the node.", + optional: true, + }, layoutMode: { type: "string", label: "Layout Mode", @@ -52,15 +63,6 @@ export default { data, }); }, - getNode({ - $, nodeId, - }) { - return this._makeRequest({ - $, - method: "GET", - path: `/nodes/${nodeId}`, - }); - }, exportNodes({ $ }) { return this._makeRequest({ $, From 5c8c32ff7ef80913ce2201a7610bea82c0c62890 Mon Sep 17 00:00:00 2001 From: Vigneshwaran Kannan Date: Thu, 2 Jul 2026 23:42:44 +0530 Subject: [PATCH 4/7] Changes with respect to base url and link in description Changes with respect to base url and link in description --- components/workflowy/actions/create-node/create-node.mjs | 2 +- components/workflowy/actions/search-nodes/search-nodes.mjs | 2 +- components/workflowy/actions/update-node/update-node.mjs | 2 +- components/workflowy/common/constants.mjs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/workflowy/actions/create-node/create-node.mjs b/components/workflowy/actions/create-node/create-node.mjs index 86f95d34c93f7..99206766d26dc 100644 --- a/components/workflowy/actions/create-node/create-node.mjs +++ b/components/workflowy/actions/create-node/create-node.mjs @@ -4,7 +4,7 @@ import { POSITIONS } from "../../common/constants.mjs"; export default { key: "workflowy-create-node", name: "Create Node", - description: "Creates a new bullet node in WorkFlowy via the beta API (POST /api/v1/nodes). Use this to add a top-level node or a child under an existing parent. To create a child node, first run **Search Nodes** to obtain a valid parent node ID and pass it as `parentNodeId`. Returns the newly created node's ID. [See the documentation](https://beta.workflowy.com/api-reference/#nodes-create).", + description: "Creates a new bullet node in WorkFlowy via the beta API (POST /api/v1/nodes). Use this to add a top-level node or a child under an existing parent. To create a child node, first run **Search Nodes** to obtain a valid parent node ID and pass it as `parentNodeId`. Returns the newly created node's ID. [See the documentation](https://workflowy.com/api-reference/#nodes-create).", version: "0.0.1", type: "action", annotations: { diff --git a/components/workflowy/actions/search-nodes/search-nodes.mjs b/components/workflowy/actions/search-nodes/search-nodes.mjs index 9bd15c1f69fbb..0a0f2b5151898 100644 --- a/components/workflowy/actions/search-nodes/search-nodes.mjs +++ b/components/workflowy/actions/search-nodes/search-nodes.mjs @@ -3,7 +3,7 @@ import workflowy from "../../workflowy.app.mjs"; export default { key: "workflowy-search-nodes", name: "Search Nodes", - description: "Searches all WorkFlowy nodes by keyword. WorkFlowy has no dedicated search endpoint, so this exports all nodes (GET /api/v1/nodes-export) and filters client-side by matching the query against each node's name and note. Use this to discover node IDs before running **Create Node** (as a parent) or **Update Node**. Note: the export endpoint is rate limited to 1 request per minute. Returns matching nodes with their IDs and content. [See the documentation](https://beta.workflowy.com/api-reference/#nodes-export).", + description: "Searches all WorkFlowy nodes by keyword. WorkFlowy has no dedicated search endpoint, so this exports all nodes (GET /api/v1/nodes-export) and filters client-side by matching the query against each node's name and note. Use this to discover node IDs before running **Create Node** (as a parent) or **Update Node**. Note: the export endpoint is rate limited to 1 request per minute. Returns matching nodes with their IDs and content. [See the documentation](https://workflowy.com/api-reference/#nodes-export).", version: "0.0.1", type: "action", annotations: { diff --git a/components/workflowy/actions/update-node/update-node.mjs b/components/workflowy/actions/update-node/update-node.mjs index 2dcd4af2c3fa5..ba0c21930ce52 100644 --- a/components/workflowy/actions/update-node/update-node.mjs +++ b/components/workflowy/actions/update-node/update-node.mjs @@ -4,7 +4,7 @@ import workflowy from "../../workflowy.app.mjs"; export default { key: "workflowy-update-node", name: "Update Node", - description: "Updates an existing WorkFlowy node's name, note, and/or layout mode (POST /api/v1/nodes/:id). Run **Search Nodes** first to obtain the target node ID. At least one of name, note, or layout mode must be provided. Because the update endpoint only returns a status. [See the documentation](https://beta.workflowy.com/api-reference/#nodes-update).", + description: "Updates an existing WorkFlowy node's name, note, and/or layout mode (POST /api/v1/nodes/:id). Run **Search Nodes** first to obtain the target node ID. At least one of name, note, or layout mode must be provided. Note that the update endpoint only returns a status, not the full updated node. [See the documentation](https://workflowy.com/api-reference/#nodes-update).", version: "0.0.1", type: "action", annotations: { diff --git a/components/workflowy/common/constants.mjs b/components/workflowy/common/constants.mjs index fd6b0e186c322..4ebc9707b3d97 100644 --- a/components/workflowy/common/constants.mjs +++ b/components/workflowy/common/constants.mjs @@ -1,4 +1,4 @@ -export const BASE_URL = "https://beta.workflowy.com"; +export const BASE_URL = "https://workflowy.com"; export const VERSION_PATH = "/api/v1"; export const LAYOUT_MODES = [ "bullets", From a05a857e695a883bf9023e6dcd819b2a0b0c1604 Mon Sep 17 00:00:00 2001 From: Vigneshwaran Kannan Date: Fri, 3 Jul 2026 00:18:32 +0530 Subject: [PATCH 5/7] change in the url change in the url --- components/workflowy/actions/create-node/create-node.mjs | 2 +- components/workflowy/actions/search-nodes/search-nodes.mjs | 2 +- components/workflowy/actions/update-node/update-node.mjs | 2 +- components/workflowy/common/constants.mjs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/workflowy/actions/create-node/create-node.mjs b/components/workflowy/actions/create-node/create-node.mjs index 99206766d26dc..86f95d34c93f7 100644 --- a/components/workflowy/actions/create-node/create-node.mjs +++ b/components/workflowy/actions/create-node/create-node.mjs @@ -4,7 +4,7 @@ import { POSITIONS } from "../../common/constants.mjs"; export default { key: "workflowy-create-node", name: "Create Node", - description: "Creates a new bullet node in WorkFlowy via the beta API (POST /api/v1/nodes). Use this to add a top-level node or a child under an existing parent. To create a child node, first run **Search Nodes** to obtain a valid parent node ID and pass it as `parentNodeId`. Returns the newly created node's ID. [See the documentation](https://workflowy.com/api-reference/#nodes-create).", + description: "Creates a new bullet node in WorkFlowy via the beta API (POST /api/v1/nodes). Use this to add a top-level node or a child under an existing parent. To create a child node, first run **Search Nodes** to obtain a valid parent node ID and pass it as `parentNodeId`. Returns the newly created node's ID. [See the documentation](https://beta.workflowy.com/api-reference/#nodes-create).", version: "0.0.1", type: "action", annotations: { diff --git a/components/workflowy/actions/search-nodes/search-nodes.mjs b/components/workflowy/actions/search-nodes/search-nodes.mjs index 0a0f2b5151898..9bd15c1f69fbb 100644 --- a/components/workflowy/actions/search-nodes/search-nodes.mjs +++ b/components/workflowy/actions/search-nodes/search-nodes.mjs @@ -3,7 +3,7 @@ import workflowy from "../../workflowy.app.mjs"; export default { key: "workflowy-search-nodes", name: "Search Nodes", - description: "Searches all WorkFlowy nodes by keyword. WorkFlowy has no dedicated search endpoint, so this exports all nodes (GET /api/v1/nodes-export) and filters client-side by matching the query against each node's name and note. Use this to discover node IDs before running **Create Node** (as a parent) or **Update Node**. Note: the export endpoint is rate limited to 1 request per minute. Returns matching nodes with their IDs and content. [See the documentation](https://workflowy.com/api-reference/#nodes-export).", + description: "Searches all WorkFlowy nodes by keyword. WorkFlowy has no dedicated search endpoint, so this exports all nodes (GET /api/v1/nodes-export) and filters client-side by matching the query against each node's name and note. Use this to discover node IDs before running **Create Node** (as a parent) or **Update Node**. Note: the export endpoint is rate limited to 1 request per minute. Returns matching nodes with their IDs and content. [See the documentation](https://beta.workflowy.com/api-reference/#nodes-export).", version: "0.0.1", type: "action", annotations: { diff --git a/components/workflowy/actions/update-node/update-node.mjs b/components/workflowy/actions/update-node/update-node.mjs index ba0c21930ce52..f99f7c5af14b4 100644 --- a/components/workflowy/actions/update-node/update-node.mjs +++ b/components/workflowy/actions/update-node/update-node.mjs @@ -4,7 +4,7 @@ import workflowy from "../../workflowy.app.mjs"; export default { key: "workflowy-update-node", name: "Update Node", - description: "Updates an existing WorkFlowy node's name, note, and/or layout mode (POST /api/v1/nodes/:id). Run **Search Nodes** first to obtain the target node ID. At least one of name, note, or layout mode must be provided. Note that the update endpoint only returns a status, not the full updated node. [See the documentation](https://workflowy.com/api-reference/#nodes-update).", + description: "Updates an existing WorkFlowy node's name, note, and/or layout mode (POST /api/v1/nodes/:id). Run **Search Nodes** first to obtain the target node ID. At least one of name, note, or layout mode must be provided. Note that the update endpoint only returns a status, not the full updated node. [See the documentation](https://beta.workflowy.com/api-reference/#nodes-update).", version: "0.0.1", type: "action", annotations: { diff --git a/components/workflowy/common/constants.mjs b/components/workflowy/common/constants.mjs index 4ebc9707b3d97..fd6b0e186c322 100644 --- a/components/workflowy/common/constants.mjs +++ b/components/workflowy/common/constants.mjs @@ -1,4 +1,4 @@ -export const BASE_URL = "https://workflowy.com"; +export const BASE_URL = "https://beta.workflowy.com"; export const VERSION_PATH = "/api/v1"; export const LAYOUT_MODES = [ "bullets", From f5969464e70cd0dffa9d92ff8b8bc485c5075983 Mon Sep 17 00:00:00 2001 From: Vigneshwaran Kannan Date: Sat, 4 Jul 2026 15:04:29 +0530 Subject: [PATCH 6/7] addressed the review comment addressed the review comment --- components/workflowy/actions/create-node/create-node.mjs | 2 +- components/workflowy/actions/search-nodes/search-nodes.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/workflowy/actions/create-node/create-node.mjs b/components/workflowy/actions/create-node/create-node.mjs index 86f95d34c93f7..5363b145ca858 100644 --- a/components/workflowy/actions/create-node/create-node.mjs +++ b/components/workflowy/actions/create-node/create-node.mjs @@ -58,7 +58,7 @@ export default { position: this.position, }, }); - const nodeId = response?.item_id ?? response?.id ?? "unknown"; + const nodeId = response?.item_id ?? "unknown"; $.export("$summary", `Created node "${this.name}" with ID ${nodeId}`); return response; }, diff --git a/components/workflowy/actions/search-nodes/search-nodes.mjs b/components/workflowy/actions/search-nodes/search-nodes.mjs index 9bd15c1f69fbb..e565a01f5ef29 100644 --- a/components/workflowy/actions/search-nodes/search-nodes.mjs +++ b/components/workflowy/actions/search-nodes/search-nodes.mjs @@ -33,7 +33,7 @@ export default { $, }); const nodes = response?.nodes ?? []; - const lowerQuery = this.query.toLowerCase(); + const lowerQuery = String(this.query).toLowerCase(); const maxResults = this.maxResults ?? 100; const matches = nodes From 2bc868dde4d625f20f5770065449e3aa0d68a6aa Mon Sep 17 00:00:00 2001 From: Vigneshwaran Kannan Date: Sat, 4 Jul 2026 15:10:16 +0530 Subject: [PATCH 7/7] updated pnpm-lock file updated pnpm-lock file --- pnpm-lock.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50a85a230b65e..c25b51cd1a8be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17907,7 +17907,11 @@ importers: specifier: ^0.6.2 version: 0.6.2 - components/workflowy: {} + components/workflowy: + dependencies: + '@pipedream/platform': + specifier: ^3.0.3 + version: 3.4.0 components/workiom: dependencies: