Downloads a private object from S3-compatible storage and returns it as a FileMaker container.
Works with AWS S3, DigitalOcean Spaces, and other SigV4-compatible endpoints.
ConfigKey is polymorphic: pass the name of a profile saved with Inlay_S3_SET_CONFIG, or pass an inline object with the keys Domain, Region, AccessKey, SecretKey, and Bucket. The optional TtlHours, EncryptKey, and SourceDate control how the local disk cache is reused.
name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Use this mode for cleaner scripts. Required unless you supply the inline credential keys below.
PathToFile
Required
object key path in the bucket, for example posters/episode1/keyart.jpg.
Domain
Required
S3-compatible endpoint host. Required in direct-credentials mode.
Region
Required
region identifier used for signing requests, for example us-east-1. Required in direct-credentials mode.
AccessKey
Required
access key id. Required in direct-credentials mode.
SecretKey
Required
secret access key. Required in direct-credentials mode.
Bucket
Required
bucket name that contains PathToFile. Required in direct-credentials mode.
TtlHours
Optional
cache freshness window in hours for local reuse.
EncryptKey
Optional
passphrase used to encrypt and decrypt cached object bytes on disk.
SourceDate
Optional
source modified date used to force a refresh when the object changes.
Returns
JSON string
On success, returns the object body as FileMaker container data. On failure, returns a JSON error envelope {"ok":false,"message":"..."}.
Use Cases
Pull a private media asset or document into a container field without exposing the bucket publicly.
Reuse a saved profile so scripts stay short and credentials never appear in calculations.
Notes
When ConfigKey is a saved name, its stored TtlHours and EncryptKey apply unless overridden here.
Inline credentials default to no cache encryption and a zero TTL unless TtlHours and EncryptKey are passed.
Legacy keys config, path, ttlHours, encryptKey, and sourceDate are accepted for one release cycle.
a saved config name (string) or an inline object with keys Domain, Region, AccessKey, SecretKey, Bucket. NOT the same as ConfigKey in Inlay_S3_SET_CONFIG; that one is a save-name, this one is the runtime config to use.
DestinationFolder
Required
S3 key prefix, e.g. "media/2026" or "" for root.
SourceContainer
Required
the FileMaker container value to upload.
Metadata
Optional
JSON object of S3 object metadata.
DestinationFilename
Optional
override the container's filename.
TtlHoursOverride
Optional
cache TTL override.
EncryptKeyOverride
Optional
cache encryption key override.
Returns
JSON string
A JSON envelope with ok, plus key, etag, bytes on success. When WaitForCompletion is false, returns {"ok": true, "status": "started", "key": "..."} immediately.
Use Cases
Upload generated PDFs from container fields into archive buckets.
Notes
Network availability and endpoint latency directly affect response time.
Transfer behavior can be synchronous or async based on WaitForCompletion profile settings.
Opens a native file picker and uploads the selected file to S3-compatible storage.
The user chooses a file in the OS dialog, then it streams up to the target bucket folder.
ConfigKey is polymorphic: pass the name of a profile saved with Inlay_S3_SET_CONFIG, or pass an inline object with the keys Domain, Region, AccessKey, SecretKey, and Bucket. Whether the call blocks until the upload finishes is governed by WaitForCompletion in the saved config.
name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Required unless you supply the inline credential keys below.
DestinationFolder
Required
S3 key prefix for the upload, for example media/2026, or "" for the bucket root.
Domain
Required
S3-compatible endpoint host. Required in direct-credentials mode.
Region
Required
region identifier used for signing requests. Required in direct-credentials mode.
AccessKey
Required
access key id. Required in direct-credentials mode.
SecretKey
Required
secret access key. Required in direct-credentials mode.
Bucket
Required
destination bucket name. Required in direct-credentials mode.
Metadata
Optional
JSON object of S3 object metadata to attach to the upload.
DestinationFilename
Optional
override the chosen file's name for the S3 key. Must not contain path separators.
TtlHoursOverride
Optional
cache TTL override for the uploaded object.
EncryptKeyOverride
Optional
cache encryption passphrase override.
Returns
JSON string
A JSON envelope with ok. On a blocking upload, includes status "completed" plus key and size_bytes. When the config is async, returns status "started" with key and size_bytes immediately. On failure, returns {"ok":false,"message":"..."}, and a cancelled picker returns an error.
Use Cases
Let a FileMaker user push a local file to S3 with a native picker and no separate upload tool.
Stage uploads asynchronously by saving a config with WaitForCompletion off, then polling the result.
Notes
The picker runs through inlay-helper. If the user cancels, the call returns an error rather than uploading.
The original filename is recorded as object metadata, mirroring Inlay_S3_PUT_CONTAINER.
Legacy keys config, destinationFolder, metadata, destinationFilename, ttlHoursOverride, and encryptKeyOverride are accepted for one release cycle.
Checks whether an S3 object is reachable with the provided credentials and returns basic object details without downloading the body.
It issues a HEAD request, so it is fast and cheap.
ConfigKey is polymorphic: pass the name of a profile saved with Inlay_S3_SET_CONFIG, or pass an inline object with the keys Domain, Region, AccessKey, SecretKey, and Bucket.
name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Required unless you supply the inline credential keys below.
PathToFile
Required
object key path to validate before downloading or rendering.
Domain
Required
S3-compatible endpoint host. Required in direct-credentials mode.
Region
Required
region identifier used for signing requests. Required in direct-credentials mode.
AccessKey
Required
access key id. Required in direct-credentials mode.
SecretKey
Required
secret access key. Required in direct-credentials mode.
Bucket
Required
bucket that contains PathToFile. Required in direct-credentials mode.
Returns
JSON string
A JSON object {"ok":true,"exists":true,"metadata":{...},"content_length":N}. When the object is not found, exists is false with empty metadata and a content_length of 0. On other failures, returns {"ok":false,"message":"..."}.
Use Cases
Confirm an object exists before attempting a download or rendering it in a layout.
Read object size and metadata cheaply without transferring the file body.
Notes
This is a HEAD request only. It never downloads the object body.
A missing object is reported with ok true and exists false, not as an error.
Legacy keys config and path are accepted for one release cycle.
Validates an S3 object against an expected SHA-256 value and reports whether they match.
It returns the object's stored hash and size alongside the match result.
ConfigKey is polymorphic: pass the name of a profile saved with Inlay_S3_SET_CONFIG, or pass an inline object with the keys Domain, Region, AccessKey, SecretKey, and Bucket. The hash comparison is case-insensitive and ignores surrounding whitespace on the expected value.
name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Required unless you supply the inline credential keys below.
PathToFile
Required
object key path to verify.
ExpectedHash
Required
the SHA-256 hex digest you expect the object to have.
Domain
Required
S3-compatible endpoint host. Required in direct-credentials mode.
Region
Required
region identifier used for signing requests. Required in direct-credentials mode.
AccessKey
Required
access key id. Required in direct-credentials mode.
SecretKey
Required
secret access key. Required in direct-credentials mode.
Bucket
Required
bucket that contains PathToFile. Required in direct-credentials mode.
Returns
JSON string
A JSON object {"ok":true,"sha256":"<hex>","content_length":N,"match":true|false}. The sha256 field is the object's stored hash, and match is true when it equals ExpectedHash. On failure, returns {"ok":false,"message":"..."}.
Use Cases
Confirm an uploaded asset arrived intact by comparing against a known digest.
Detect that a remote object changed since you last recorded its hash.
Notes
Hash matching is case-insensitive and trims whitespace from ExpectedHash before comparing.
The stored hash is read from object metadata, so the object is not downloaded in full.
Legacy keys config, path, and expectedHash are accepted for one release cycle.
Returns a PNG preview image for an S3 object as a FileMaker container.
The preview is a sidecar object named OriginalFileName_Preview.png stored in the same bucket folder.
ConfigKey is polymorphic: pass the name of a profile saved with Inlay_S3_SET_CONFIG, or pass an inline object with the keys Domain, Region, AccessKey, SecretKey, and Bucket. If no preview exists yet, one is generated and stored for reuse.
Saves reusable S3 connection settings under a named key for the current FileMaker session.
Domain, Region, AccessKey, SecretKey, and Bucket are all required when saving a config. The one-argument form clears an existing saved config: pass either the ConfigKey as a bare string, or a JSON envelope containing only `ConfigKey`.
the name under which to save this S3 config. This is a save-name, not the config itself. Other Inlay_S3_* functions accept this name in their Config argument.
Domain
Required
the S3-compatible endpoint host.
Region
Required
the S3 region.
AccessKey
Required
the access key id.
SecretKey
Required
the secret access key.
Bucket
Required
the bucket name.
TtlHours
Optional
default cache TTL for GET operations. Default 0.
EncryptKey
Optional
default cache encryption passphrase. Default blank, meaning the disk cache is not encrypted.
WaitForCompletion
Optional
default true. If false, PUT operations return immediately instead of blocking until the upload finishes.
Returns
JSON string
Returns JSON confirming config save/update/clear operations for the active session.
Use Cases
Register per-environment profiles (prod, staging) once per session.
Notes
Network availability and endpoint latency directly affect response time.
Returns the metadata and content length of an S3 object without downloading its body.
It issues a HEAD request and reports the stored object metadata.
ConfigKey is polymorphic: pass the name of a profile saved with Inlay_S3_SET_CONFIG, or pass an inline object with the keys Domain, Region, AccessKey, SecretKey, and Bucket.
name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Required unless you supply the inline credential keys below.
PathToFile
Required
object key to inspect for metadata and object length.
Domain
Required
S3-compatible endpoint host. Required in direct-credentials mode.
Region
Required
region identifier used for signing requests. Required in direct-credentials mode.
AccessKey
Required
access key id. Required in direct-credentials mode.
SecretKey
Required
secret access key. Required in direct-credentials mode.
Bucket
Required
bucket that contains PathToFile. Required in direct-credentials mode.
Returns
JSON string
A JSON object {"ok":true,"metadata":{...},"content_length":N}, where metadata holds the object's stored key-value pairs and content_length is its size in bytes. On failure, returns {"ok":false,"message":"..."}.
Use Cases
Read an object's size and custom metadata before deciding whether to download it.
Inspect upload metadata such as the original filename recorded by Inlay_S3_PUT_FILE.
Notes
This is a HEAD request only. It never downloads the object body.
To also confirm existence with an explicit exists flag, use Inlay_S3_VERIFY.
Legacy keys config and path are accepted for one release cycle.
Downloads an S3 object to local disk with a cancelable progress window.
The response JSON includes the resolved local path, content length, and object metadata.
When DestinationPathToFile is omitted, the file is saved under a name derived from the source key. The destination accepts a bare HFS path, filemac:/..., file:/..., or a POSIX path. Parent directories are created as needed.
ConfigKey is polymorphic: pass the name of a profile saved with Inlay_S3_SET_CONFIG, or pass an inline object with the keys Domain, Region, AccessKey, SecretKey, and Bucket.
name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Required unless you supply the inline credential keys below.
SourcePathToFile
Required
S3 key of the object to download.
DestinationPathToFile
Optional
local destination path. Defaults to a filename derived from the source key.
Domain
Required
S3-compatible endpoint host. Required in direct-credentials mode.
Region
Required
region identifier used for signing requests. Required in direct-credentials mode.
AccessKey
Required
access key id. Required in direct-credentials mode.
SecretKey
Required
secret access key. Required in direct-credentials mode.
Bucket
Required
bucket that contains SourcePathToFile. Required in direct-credentials mode.
Returns
JSON string
On success, returns a JSON object {"ok":true,"source_path":"...","path":"...","filemaker_path":"...","size_bytes":N,"content_length":N,"metadata":{...}}. On failure, returns {"ok":false,"message":"..."}.
Use Cases
Pull an S3 object onto the user's machine before opening it locally.
Stage media files for an external tool that reads from disk.
Notes
The download runs through the helper so a cancelable progress window is shown.
Legacy keys config, sourcePath, destinationPath are accepted for one release cycle.
Opens a local file in the operating system's default application for that file type.
The file must already exist on disk. Pair this with Inlay_S3_DOWNLOAD_TO_PATH to download an S3 object and then open it. This is a single-argument function, so pass the path directly rather than a JSON envelope.
location of the local file to open. Accepts a bare HFS path (Macintosh HD:Users:...), filemac:/..., filewin:/..., file:/..., or a POSIX path (/Users/...).
Returns
JSON string
On success, returns a JSON object {"ok":true,"status":"opened","path":"...","filemaker_path":"..."}. On failure (path missing, file not found, or the OS could not open it), returns {"ok":false,"message":"..."}.
Use Cases
Open a downloaded media file in its default viewer or editor.
Hand a generated document off to the user's preferred application.
Notes
The file must exist; a missing file returns an error rather than opening anything.
Returns a signed media URL and an embeddable HTML viewer for an S3 object, ready to drop into a WebViewer.
The viewer type is video, image, pdf, audio, or a generic file card.
In auto mode the viewer type is chosen from the object's content type and filename extension. For video objects a poster image is included when a thumbnail is available, drawn from the local cache when fresh or signed on the fly otherwise.
ConfigKey is polymorphic: pass the name of a profile saved with Inlay_S3_SET_CONFIG, or pass an inline object with the keys Domain, Region, AccessKey, SecretKey, and Bucket.
name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Required unless you supply the inline credential keys below.
PathToFile
Required
S3 key of the media object.
UrlTtlSeconds
Optional
signed URL lifetime in seconds, from 1 to 604800. Defaults to the standard media TTL.
ViewerMode
Optional
forces the viewer type. Defaults to auto, which infers it from content type and extension.
Returns
JSON string
On success, returns a JSON object with ok:true plus url (the signed URL), viewer (the chosen viewer type), poster_url and poster_source for video, expires_at_unix, content_type, content_length, metadata, data_url, html_base64, and html (the full viewer document). On failure, returns {"ok":false,"message":"..."}.
Use Cases
Preview S3-hosted video, images, or PDFs inside a FileMaker WebViewer.
Generate a short-lived signed link to share a media object.
Notes
Set a WebViewer to the returned data_url, or use the html field directly.
Legacy keys config, path, urlTtlSeconds, viewerMode are accepted for one release cycle.
Mounts or unmounts an S3 bucket as a native cloud-storage drive.
The drive label shown in Finder or File Explorer is the config name.
Requires a config name previously registered with Inlay_S3_SET_CONFIG in the current session. Inline credential objects are rejected, so call Inlay_S3_SET_CONFIG first to persist credentials, then pass the saved name here.
On macOS the drive mounts through FileProvider and appears in the Finder sidebar. On Windows it mounts through the Cloud Filter API (CFAPI), where S3 files appear as on-demand placeholders in File Explorer and hydrate transparently on access.
name of an S3 profile previously saved with Inlay_S3_SET_CONFIG. This name becomes the drive label. A saved name string is required; inline credential objects are rejected.
Action
Required
"register" mounts the drive. "unregister" (or "remove") unmounts it.
ReadOnly
Optional
accepts 1/true/yes or 0/false/no, defaulting to 0. Set 1 to prevent write-back from the OS.
Returns
JSON string
On success, returns a JSON object {"ok":true,"action":"...","config_key":"..."}. Each config name maps to one drive slot, so calling register again with the same name replaces the existing mount.
Use Cases
Give FileMaker users a native Finder or File Explorer drive backed by an S3 bucket, with no third-party mounting tool.
Mount a bucket read-only for browsing and review while blocking accidental writes from the OS.
Notes
Save the profile with Inlay_S3_SET_CONFIG before mounting. Inline credentials passed directly to this function are rejected.
Legacy keys config, action, and readOnly are accepted for one release cycle.
Moves an S3 object or folder prefix to another S3 location, deleting the source only after the destination is confirmed.
When SourcePathToFileOrFolder ends with "/", all objects under that prefix are moved recursively. When source and destination share the same region and domain, a server-side CopyObject is used and no data flows through the plugin. For cross-region moves, Mode controls how bytes are relayed.
SourceConfig and DestinationConfig each accept a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. These are the configs to read from and write to. They are NOT the same as ConfigKey in Inlay_S3_SET_CONFIG, which is a save-name.
a saved config name or an inline config object for the source.
SourcePathToFileOrFolder
Required
S3 key, or a prefix ending in "/" to move a folder recursively.
DestinationConfig
Required
a saved config name or an inline config object for the destination.
DestinationPathToFileOrFolder
Required
S3 key or prefix to move into.
Mode
Optional
cross-region transfer mode. "stream" (default) holds bytes in memory. "cache" writes to a temp file first, better for large files. "server" forces a same-region server-side copy.
Conflict
Optional
behavior when the destination exists. "overwrite" (default) always replaces. "ignore" skips if it exists. "etag" skips on matching ETags. "size" skips on matching byte counts. "md5" skips on matching plain-MD5 single-part ETags. "sha256" skips on matching x-amz-checksum-sha256.
Silent
Optional
pass true to skip the confirmation dialog before deleting source files.
Returns
JSON string
On success, returns a JSON object {"ok":true,"method":"server"|"stream","files_moved":N,"files_skipped":N,"sources_deleted":N,"bytes_transferred":N}. On failure, returns {"ok":false,"message":"..."}.
Use Cases
Archive media by moving a folder prefix from a working bucket to a cold bucket.
Reorganize keys within a bucket using a fast server-side copy.
Notes
The source is removed only after the destination is verified, so an interrupted move never loses data.
Legacy keys sourceConfig, sourcePath, destinationConfig, destinationPath, mode, conflict, silent are accepted for one release cycle.
Copies files between the local filesystem and S3, in either direction, with a multi-file progress window.
Exactly one of SourcePathToFileOrFolder and DestinationPathToFileOrFolder must be a local path and the other an S3 key. When the source is local (absolute POSIX, bare HFS like Macintosh HD:..., or prefixed with filemac:/filewin:/file:), files are uploaded to the S3 destination. Otherwise files are downloaded from the S3 source to the local destination. A folder source (path ending in "/", or a local directory) is copied recursively.
ConfigKey is polymorphic: pass the name of a profile saved with Inlay_S3_SET_CONFIG, or pass an inline object with the keys Domain, Region, AccessKey, SecretKey, and Bucket.
name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Required unless you supply the inline credential keys below.
SourcePathToFileOrFolder
Required
a local path or an S3 key. Whichever side is local sets the direction.
DestinationPathToFileOrFolder
Required
the other side of the copy. Must be S3 when the source is local, and local when the source is S3.
Conflict
Optional
behavior when the destination exists. "overwrite" (default) always replaces. "ignore" skips if it exists. "etag" falls back to size comparison for local files. "size" skips on matching byte counts. "md5" compares local MD5 against the S3 ETag. "sha256" compares local SHA256 against x-amz-checksum-sha256.
Returns
JSON string
On success, returns a JSON object {"ok":true,"method":"upload"|"download","files_copied":N,"files_skipped":N,"bytes_transferred":N}. On failure, returns {"ok":false,"message":"..."}.
Use Cases
Upload a local folder of assets into an S3 prefix.
Download an S3 prefix to a local directory for offline work.
Notes
One side must be local and the other S3; two local paths or two S3 keys returns an error.
Legacy keys config, sourcePath, destinationPath, conflict are accepted for one release cycle.
Warms the local S3 disk cache in the background so later reads return instantly.
Accepts a return-separated list of object keys (the FileMaker List() form) and returns immediately with {"ok":true,"queued":N}. A pool of background worker threads then fetches each object, and by default its thumbnail, for every key not already fresh in cache. Keys already fresh have their TTL window reset so they behave like freshly fetched entries. After warming, Inlay_S3_GET and Inlay_S3_GET_THUMBNAIL for the same keys serve from cache.
ConfigKey is polymorphic: pass the name of a profile saved with Inlay_S3_SET_CONFIG, or pass an inline object with the keys Domain, Region, AccessKey, SecretKey, and Bucket. This function is named-parameter form only.
name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Required unless you supply the inline credential keys below.
PathsToFiles
Required
a return-separated list of S3 keys (use FileMaker's List()). Empty and whitespace-only lines are dropped; at least one real key is required.
Thumbnails
Optional
warm the thumbnail cache alongside each object. Defaults to true. Set false to skip thumbnails for binary-only flows.
TtlHours
Optional
cache lifetime override, same semantics as Inlay_S3_GET.
EncryptKey
Optional
cache encryption key, same semantics as Inlay_S3_GET.
SourceDate
Optional
source freshness date, same semantics as Inlay_S3_GET.
Returns
JSON string
Returns immediately with {"ok":true,"queued":N}, where N is the number of keys queued for warming. The actual fetches happen on background threads after this call returns.
Use Cases
Prefetch a found set of media so the gallery scrolls without load delays.
Warm the cache ahead of an offline session.
Notes
The call returns before warming completes; queued counts what was scheduled, not what finished.
Legacy keys config, paths, ttlHours, encryptKey, sourceDate are accepted for one release cycle.
Renders an interactive media review and editing surface for an S3 object inside a WebViewer: a Plyr video player with drop-frame-aware SMPTE timecode, timecode-anchored annotations (Annotations tab), and an Edit tab of in/out clips.
The viewer is a self-contained local HTML file (Plyr is vendored inline; no external assets). Working state lives in the WebViewer and is sent back to FileMaker on commit and on debounced autosave by calling FileMaker.PerformScript. FileMaker is the source of truth. Config: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket.
S3 key of a poster image shown before the first frame decodes. When omitted, the poster is derived for video objects from the thumbnail convention <PathToFile>_Preview.png in the same folder (the same poster Inlay_S3_RENDER_MEDIA_HTML uses). A fresh cached thumbnail is embedded; otherwise the key is signed. Pass an empty string in a saved State to keep a prior poster.
Proxies
Optional
an object mapping a quality label to an S3 key; each is signed for the player quality menu.
Transcript
Optional
transcript JSON stored in the editor state; accepts a JSON object or a JSON string. (This build has no Transcript tab; the data is preserved for round-trip.)
State
Optional
the serialized state from a prior commit, used to restore the working state. Accepts a JSON object OR a JSON string, so the callback payload (which is a JSON string) can be passed straight back here without re-wrapping it as a FileMaker JSON object. To pass the stored blob completely untouched, give it as the SECOND argument alongside the named envelope: Inlay_S3_RENDER_MEDIA_EDITOR_HTML ( { ConfigKey, PathToFile, … } ; State ). The blob is then its own argument with no nesting or escaping; the envelope's State (if any) wins, and an empty second argument is ignored (opens a fresh editor).
Fps
Optional
frame rate token for timecode display. Default 25. Drop-frame uses the df token: 29.97df or 59.94df show a semicolon; 29.97 or 59.94 alone are non-drop.
TcStartTime
Optional
starting timecode string. Default 1:00:00:00.
UrlTtlSeconds
Optional
signed URL lifetime in seconds, from 1 to 604800.
CallbackScript
Optional
the FileMaker script called on commit and autosave. Default Inlay_MediaEditorCallback.
AutosaveSeconds
Optional
autosave debounce in seconds. 0 disables autosave. Default 15.
ReadOnly
Optional
render the player and panels without editing controls.
Returns
JSON string
A JSON envelope. On success: ok:true plus viewer_url (a file:// URL to the rendered document; set a WebViewer to this address), viewer_path (the same document's local file path), url, poster_url (the poster shown before playback, when one was found), poster_source (local_cache, signed_url, or none), proxy_urls, expires_at_unix, content_type, callback_script, autosave_seconds, and read_only. When the object is already in a plaintext local cache (no EncryptKey) and fresh, it also includes local_url (a file:// to the cached file the player tries first, falling back to url) and source set to local_cache; otherwise source is signed_url. On failure: ok:false plus message.
Use Cases
Use this function to automate S3-backed FileMaker workflows with repeatable scripts.
Notes
Network availability and endpoint latency directly affect response time.