Files
Azure integration · 20 node(s).
00Overview
Manage Azure Files SMB shares straight from a flow — create and delete shares, adjust their quota, access tier and metadata, and check how much space each one is actually using before it fills up. Work with the directories and files inside them too: upload, download, copy, lease, list and delete, read properties without downloading, and set metadata. Hand out time-limited download or upload links with a shared access signature, so someone can reach a file without ever seeing your account key.
Every field below is exactly what you see in the Flomation editor. Fields marked ● live picker let you choose from a list pulled live from your account — no IDs to look up.
01Connecting Files
- In the Azure portal, open the Storage account that holds your file shares and put its name in the node's Storage Account field. Then choose an Authentication method — Shared Key (the account key, simplest and the only option that can sign a shared access signature) or Microsoft Entra (service principal).
- Shared Key: in the storage account open Security + networking → Access keys, reveal key1 and copy its Key value into the node's Account Key field.
- Microsoft Entra: in Microsoft Entra ID → App registrations create (or reuse) an app registration for Flomation. Copy its Directory (tenant) ID into Tenant ID and its Application (client) ID into Client ID, then under Certificates & secrets add a new client secret for Client Secret. On the storage account's Access control (IAM), assign that app a Storage File Data SMB Share Contributor role (or a Storage File Data Privileged role) so it can read and write the files — note that Entra calls run with backup intent and ignore per-file ACLs.
- In Flomation, store the secret — the account key under Shared Key, or the client secret under Entra — as an environment secret (e.g.
files_secret), then pick it in the node's matching Account Key or Client Secret field.
| Field | Type | Details | |
|---|---|---|---|
| Authentication | string | Shared Key, Microsoft Entra (service principal) | |
| Account Key | secret | Base64 account key — Storage Account ▸ Access keys | |
| Client Secret | secret | The app needs a Storage File Data SMB/Privileged role. Azure requires backup intent on OAuth calls, which BYPASSES the share's file permissions — use Shared Key if the ACLs must apply | |
| Allow Insecure TLS | boolean | Skip TLS verification — only for custom endpoints with a self-signed certificate | |
| Storage Account | string | Required | mystorageaccount |
| Tenant ID | string | Directory (tenant) ID — a GUID or your-tenant.onmicrosoft.com | |
| Client ID | string | Application (client) ID of the service principal | |
| Custom Endpoint | string | https://myaccount.file.core.windows.net — leave blank to derive; sovereign clouds only (Azurite has no File service) |
${secrets.your_secret}.02Directory
Azure Files: Create Directory
azure/files/directory_create · Action
Create a directory in a share. Azure has no mkdir -p: every parent must already exist, so nested paths need one call per level — turn on Create Parents to make those calls for you
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Required | reports/2026/q1 |
| Create Parents | boolean | On by default: create every missing level of the path. Turn off to fail when the parent is missing | |
| Metadata (JSON) | object | {"team":"ops"} — applied to the leaf directory only |
Returns: id, result, tool_result, success, error
Azure Files: Delete Directory
azure/files/directory_delete · Action
Delete a directory. It must be EMPTY first — unlike deleting a share, this does not cascade, and the service refuses a directory that still has anything in it
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Required | reports/2026/q1 |
Returns: id, result, tool_result, success, error
Azure Files: List Directory
azure/files/directory_get_all · Action
List a directory's contents. Unlike blob listing, which fakes hierarchy with name prefixes, this returns REAL entries — each tagged file or directory in the type field
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Leave blank for the share's root, or e.g. reports/2026 | |
| Prefix | string | Only entries whose name starts with this | |
| Return All | boolean | Follow pagination until every entry is fetched | |
| Limit | integer | Max entries to return when not returning all (default 50, max 5000) |
Returns: results, count, tool_result, success, error
Azure Files: Get Directory Properties
azure/files/directory_get_properties · Action
Read a directory's timestamps, SMB attributes and metadata. Also the cheapest existence check — a missing directory answers ResourceNotFound
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Leave blank for the share's root, or e.g. reports/2026 |
Returns: id, result, tool_result, success, error
03File
Azure Files: Copy File
azure/files/file_copy · Action
Start a server-side (async) file copy — from another file in the same account, or from any URL Azure can reach, including a blob — and optionally wait for it to complete. Handles files of any size, unlike Upload's 256 MB ceiling
| Field | Type | Details | |
|---|---|---|---|
| Destination Share | string | Required | my-share |
| Destination Directory | string | Leave blank for the share's root, or e.g. backups/2026 | |
| Destination File Name | string | Required | summary.pdf |
| Source Share (same account) | string | Copy from this account: source share name | |
| Source Path (same account) | string | Copy from this account: source path, e.g. reports/2026/summary.pdf | |
| Source URL | string | Or a full URL (public, or carrying its own SAS) — leave the two fields above blank | |
| Wait for Completion | boolean | On by default: poll up to 30s until the copy succeeds or fails | |
| Lease ID | string | Only needed when the file is leased — the Lease ID output of a Lease File step |
Returns: id, result, copy_status, copy_id, tool_result, success, error
Azure Files: Delete File
azure/files/file_delete · Action
Delete a file from a share. The file's directory is left in place
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Leave blank for the share's root, or e.g. reports/2026 | |
| File Name | string | Required | summary.pdf |
| Lease ID | string | Only needed when the file is leased — the Lease ID output of a Lease File step |
Returns: id, result, tool_result, success, error
Azure Files: Download File
azure/files/file_download · Action
Download a file (optionally a byte range) to a file reference for downstream nodes. Text-like content up to 1 MB is also returned inline
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Leave blank for the share's root, or e.g. reports/2026 | |
| File Name | string | Required | summary.pdf |
| Byte Range | string | bytes=0-1023 — leave blank for the whole file | |
| Lease ID | string | Only needed when the file is leased — the Lease ID output of a Lease File step |
Returns: id, result, file, content, content_type, size, tool_result, success, error
Azure Files: Generate SAS Link
azure/files/file_generate_sas · Action
Create a time-limited shared access signature URL for a file or a whole share — hand out downloads or accept uploads without sharing the account key. Signed locally with the account key; no API call is made
| Field | Type | Details | |
|---|---|---|---|
| Resource | string | choices: File, Share | |
| Share | string | Required | my-share |
| File Path | string | reports/2026/summary.pdf | |
| Permissions | string | r (read) is the default — subset of "rcwdl" (read, create, write, delete, list), in that order; list applies to a share only | |
| Expires After (hours) | integer | 24 unless set — ignored when an explicit expiry is given | |
| Expiry | datetime | Explicit expiry timestamp — wins over Expires After | |
| Start | datetime | Optional not-before timestamp (defaults to immediately valid) | |
| Allowed IP Range | string | 168.1.5.65 or 168.1.5.60-168.1.5.70 | |
| Content Disposition | string | attachment; filename="report.pdf" — forced on downloads via this link |
Returns: id, result, sas_url, sas_token, expires_at, tool_result, success, error
Azure Files: Get File Properties
azure/files/file_get_properties · Action
Read a file's size, content type, timestamps and metadata without downloading it. Also the cheapest existence check
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Leave blank for the share's root, or e.g. reports/2026 | |
| File Name | string | Required | summary.pdf |
| Lease ID | string | Only needed when the file is leased — the Lease ID output of a Lease File step |
Returns: id, result, size, tool_result, success, error
Azure Files: Lease File
azure/files/file_lease · Action
Take, swap, or release a write lock on a file. Acquire returns a Lease ID — pass it to the Lease ID field of any Upload/Delete/Set step to write to the locked file; every write WITHOUT it is refused while the lease is held. A file lease is INFINITE: it outlives the flow that took it, so release it. Break ends a lease you do not hold
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Leave blank for the share's root, or e.g. reports/2026 | |
| File Name | string | Required | summary.pdf |
| Lease Action | string | Required | choices: Acquire — take the lock, Change — swap the lock's ID, Release — hand the lock back, Break — end someone else's lock |
| Lease ID | string | The Lease ID output of the Acquire step — optional on Break, which does not need it | |
| Proposed Lease ID | string | A GUID to use as the lease's ID — leave blank on Acquire to let Azure choose one |
Returns: id, result, lease_id, tool_result, success, error
Azure Files: List File Ranges
azure/files/file_list_ranges · Action
List the byte ranges of a file that have actually been written. Azure Files allocates sparsely, so a file's size and its written content are different questions — this answers the second one
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Leave blank for the share's root, or e.g. reports/2026 | |
| File Name | string | Required | summary.pdf |
| Byte Range | string | bytes=0-1023 — leave blank to list the whole file | |
| Lease ID | string | Only needed when the file is leased — the Lease ID output of a Lease File step |
Returns: results, count, tool_result, success, error
Azure Files: Set File Metadata
azure/files/file_set_metadata · Action
Replace a file's metadata. This is a REPLACE, not a merge — names absent from the object are removed, and an empty object clears the metadata entirely
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Leave blank for the share's root, or e.g. reports/2026 | |
| File Name | string | Required | summary.pdf |
| Metadata (JSON) | object | Required | {"reviewed":"yes"} — replaces ALL existing metadata |
| Lease ID | string | Only needed when the file is leased — the Lease ID output of a Lease File step |
Returns: id, result, tool_result, success, error
Azure Files: Upload File
azure/files/file_upload · Action
Upload content to a file in a share — inline text, base64, a flo:file reference, or an uploaded asset. Azure Files writes in two steps (allocate, then write the bytes in 4 MiB ranges), which this step does for you. Content is capped at 256 MB
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Directory | string | Leave blank for the share's root, or e.g. reports/2026 | |
| File Name | string | Required | summary.pdf |
| Content | text | Required | Text, base64, a flo:file reference, or ${parent.file} from an upstream node |
| Content Type | string | Detected from the content when blank (e.g. application/pdf) | |
| Metadata (JSON) | object | {"source":"flomation"} | |
| Overwrite | boolean | On by default. Turn off to fail instead of replacing an existing file | |
| Lease ID | string | Only needed when the file is leased — the Lease ID output of a Lease File step |
Returns: id, result, etag, url, size, tool_result, success, error
04Share
Azure Files: Create Share
azure/files/share_create · Action
Create an SMB file share in the storage account, with an optional size quota and metadata. A share is the mount point — directories and files live inside it
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Quota (GiB) | integer | Maximum size, 1-102400 — the account default (usually 5120) when blank | |
| Access Tier | string | The account default when blank — choices: Account default, Transaction Optimized, Hot, Cool | |
| Metadata (JSON) | object | {"team":"ops"} |
Returns: id, result, tool_result, success, error
Azure Files: Delete Share
azure/files/share_delete · Action
Delete a file share and EVERYTHING in it — every directory and file, irrecoverably unless the account has share soft-delete enabled. Unlike a directory, a share does not have to be empty first
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Snapshots | string | A share with snapshots cannot be deleted unless they go too — choices: Delete the share and its snapshots, Delete the share, its snapshots, and break any snapshot leases, Fail if the share has snapshots |
Returns: id, result, tool_result, success, error
Azure Files: List Shares
azure/files/share_get_all · Action
List the file shares in the storage account, optionally filtered by a name prefix and enriched with metadata, snapshots, or soft-deleted shares
| Field | Type | Details | |
|---|---|---|---|
| Prefix | string | Only shares whose name starts with this | |
| Include | combobox | Leave blank for nothing extra; combine with commas, e.g. metadata,snapshots — choices: Metadata, Snapshots, Metadata + snapshots, Soft-deleted shares | |
| Return All | boolean | Follow pagination until every share is fetched | |
| Limit | integer | Max shares to return when not returning all (default 50, max 5000) |
Returns: results, count, tool_result, success, error
Azure Files: Get Share Properties
azure/files/share_get_properties · Action
Read a share's quota, access tier, lease state and metadata. Returns what the share is CONFIGURED as — for how much of it is actually used, use Get Share Stats
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
Returns: id, result, tool_result, success, error
Azure Files: Get Share Stats
azure/files/share_get_stats · Action
Read how many bytes a share actually uses. The quota is what you set; this is what you spent — the number to alert on before a share fills up and writes start failing
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
Returns: id, result, usage_bytes, tool_result, success, error
Azure Files: Set Share Metadata
azure/files/share_set_metadata · Action
Replace a share's metadata. This is a REPLACE, not a merge — names absent from the object are removed, and an empty object clears the metadata entirely
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Metadata (JSON) | object | Required | {"team":"ops","env":"prod"} — replaces ALL existing metadata |
Returns: id, result, tool_result, success, error
Azure Files: Set Share Properties
azure/files/share_set_properties · Action
Change a share's size quota or access tier. Both are optional, but at least one must be given — an empty call would silently do nothing
| Field | Type | Details | |
|---|---|---|---|
| Share | string | Required | my-share |
| Quota (GiB) | integer | New maximum size, 1-102400 — leave blank to keep the current quota | |
| Access Tier | string | Leave blank to keep the current tier — choices: Keep the current tier, Transaction Optimized, Hot, Cool |
Returns: id, result, tool_result, success, error
05Notes & Limitations
Behaviours and constraints worth knowing before you build with these nodes.
- Generating a shared access signature requires Shared Key authentication, because a Microsoft Entra service principal has no account key to sign the link with — switch the node to Shared Key for the Generate SAS action.
- A shared access signature is built and signed locally without calling Azure, so the link is returned even when the target file or share does not exist; it only fails when something actually tries to use it.
- When you authenticate with Microsoft Entra, requests are sent with backup intent, which bypasses the share's own file permissions and needs a privileged role such as Storage File Data SMB Elevated Contributor — use Shared Key instead if those permissions must apply.
- Downloading a file is limited to 256 MB.