From 50a6ec37fbfeac199f5a061f6cfb21fde41bfa3e Mon Sep 17 00:00:00 2001 From: Jura Gorohovsky Date: Wed, 24 Dec 2025 00:44:53 +0400 Subject: [PATCH 1/2] Description of all storage actions --- workflow-management/actions.mdx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/workflow-management/actions.mdx b/workflow-management/actions.mdx index 3a15b14..5794a33 100644 --- a/workflow-management/actions.mdx +++ b/workflow-management/actions.mdx @@ -120,7 +120,14 @@ These actions allow you to retrieve and update data in issues and boards in proj These actions help store and share information collected during workflow runs. * **OpenOps Tables**: create and update records in [tables](/reporting-analytics/tables/). -* **SFTP**: create or read files on a remote server via SFTP. -* **Storage**: store data in and read it from your OpenOps installation's key-value storage. The storage is accessible at run, workflow, and project levels. * **Microsoft Outlook**: send, forward, reply to, find, and move emails. +* **SFTP**: create or read files on a remote server via SFTP. * **SMTP**: send emails. +* **Storage**: store data in and read it from your OpenOps installation's key-value storage. The storage is accessible at run, workflow, and installation levels. + * **Put**: saves or overwrites a string value under a given key. + * **Get**: retrieves a string value by key from storage. If the key does not exist, returns an optional default value. + * **Append**: appends text to an existing string value. Optionally inserts a separator between values (for example, `\n` for new lines). Fails if the existing value is an array, not a string — in this case, use *Add To List* instead. + * **Remove**: deletes a key and its associated value from storage. + * **Add To List**: treats the stored value as an array and appends a new item to it. The item value is always stored as text: any non-string input is implicitly converted to a string (for example, objects are JSON-serialized). If the key does not exist, it is created and initialized with an empty array. Can optionally skip insertion if an equal value already exists in the array. Fails if the existing value is a string, not an array — in this case, use *Append* instead. + * **Remove from List**: removes a matching item from an array value of the given key. Uses deep equality to find the item. Fails if the stored value is not an array. If multiple matching values exist, only the first match is removed. + * **List**: returns all keys and their values (both strings and arrays) in storage for the selected scope. Supports optional regex-based key filtering. From d0af4a1ebaf808fd9926317cd69fcb96cd393297 Mon Sep 17 00:00:00 2001 From: Jura Gorohovsky Date: Wed, 24 Dec 2025 00:46:26 +0400 Subject: [PATCH 2/2] Proofreading --- workflow-management/actions.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workflow-management/actions.mdx b/workflow-management/actions.mdx index 5794a33..fb0d463 100644 --- a/workflow-management/actions.mdx +++ b/workflow-management/actions.mdx @@ -123,11 +123,11 @@ These actions help store and share information collected during workflow runs. * **Microsoft Outlook**: send, forward, reply to, find, and move emails. * **SFTP**: create or read files on a remote server via SFTP. * **SMTP**: send emails. -* **Storage**: store data in and read it from your OpenOps installation's key-value storage. The storage is accessible at run, workflow, and installation levels. +* **Storage**: store data in and read it from your OpenOps installation's key-value storage. The storage is accessible at the run, workflow, and installation levels. * **Put**: saves or overwrites a string value under a given key. * **Get**: retrieves a string value by key from storage. If the key does not exist, returns an optional default value. * **Append**: appends text to an existing string value. Optionally inserts a separator between values (for example, `\n` for new lines). Fails if the existing value is an array, not a string — in this case, use *Add To List* instead. * **Remove**: deletes a key and its associated value from storage. * **Add To List**: treats the stored value as an array and appends a new item to it. The item value is always stored as text: any non-string input is implicitly converted to a string (for example, objects are JSON-serialized). If the key does not exist, it is created and initialized with an empty array. Can optionally skip insertion if an equal value already exists in the array. Fails if the existing value is a string, not an array — in this case, use *Append* instead. - * **Remove from List**: removes a matching item from an array value of the given key. Uses deep equality to find the item. Fails if the stored value is not an array. If multiple matching values exist, only the first match is removed. + * **Remove from List**: removes a matching item from an array value for the given key. Uses deep equality to find the item. If multiple matching values exist, only the first match is removed. Fails if the stored value is not an array. * **List**: returns all keys and their values (both strings and arrays) in storage for the selected scope. Supports optional regex-based key filtering.