IP Inlay for FileMaker

Inlay Function Reference S3 Storage

S3 Storage

Moving media and documents between FileMaker and private S3 storage. 16 functions.

Inlay_S3_GET

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_GET ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ] ;
    [ "TtlHours" ; 24 ; JSONNumber ]
  ) )

Parameters

ConfigKey Required
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.

See Also

Inlay_S3_SET_CONFIG Inlay_S3_VERIFY Inlay_S3_GET_METADATA Inlay_S3_GET_THUMBNAIL

Inlay_S3_PUT_CONTAINER

S3 Storage Returns JSON

Uploads a FileMaker container to S3.

Sync/async behaviour is controlled by WaitForCompletion in Inlay_S3_SET_CONFIG.

Declaration

Inlay_S3_PUT_CONTAINER (
  JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "DestinationFolder" ; "upload/2026" ; JSONString ] ;
    [ "DestinationFilename?" ; "clip.mp4" ; JSONString ] ;
    [ "Metadata?" ; JSONSetElement ( "{}" ;
                  [ "RecordId"    ; "022"        ; JSONString ] ;
                  [ "UploadedBy"  ; "g.shumway"  ; JSONString ]
              ) ; JSONString ] ;
    [ "TtlHoursOverride?" ; 0 ; JSONNumber ]
  ) ;
  S3::SourceContainer
)

Parameters

Config Required
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.

See Also

Inlay_S3_SET_CONFIG Inlay_S3_PUT_FILE Inlay_S3_GET Inlay_S3_VERIFY

Inlay_S3_PUT_FILE

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_PUT_FILE ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "DestinationFolder" ; "media/2026" ; JSONString ] ;
    [ "DestinationFilename" ; "clip.mp4" ; JSONString ]
  ) )

Parameters

ConfigKey Required
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.

See Also

Inlay_S3_SET_CONFIG Inlay_S3_PUT_CONTAINER Inlay_S3_VERIFY Inlay_S3_GET

Inlay_S3_VERIFY

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_VERIFY ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ]
  ) )

Parameters

ConfigKey Required
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.

See Also

Inlay_S3_VERIFY_HASH Inlay_S3_GET_METADATA Inlay_S3_GET

Inlay_S3_VERIFY_HASH

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_VERIFY_HASH ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ] ;
    [ "ExpectedHash" ; "a1b2c3d4e5f6..." ; JSONString ]
  ) )

Parameters

ConfigKey Required
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.

See Also

Inlay_S3_VERIFY Inlay_S3_GET_METADATA Inlay_S3_GET

Inlay_S3_GET_THUMBNAIL

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_GET_THUMBNAIL ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ] ;
    [ "TtlHours" ; 24 ; JSONNumber ]
  ) )

Parameters

ConfigKey Required
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 whose sidecar preview image should be returned.
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 and its preview assets. Required in direct-credentials mode.
TtlHours Optional
cache freshness window in hours for the generated or loaded preview image.
EncryptKey Optional
passphrase for encrypted thumbnail cache entries.
SourceDate Optional
modified-date hint used for cache refresh decisions.

Returns

JSON string On success, returns the PNG preview as FileMaker container data. On failure, returns a JSON error envelope {"ok":false,"message":"..."}.

Use Cases

  • Show a lightweight image preview of a large media asset in a layout without downloading the full file.
  • Build a thumbnail grid backed by S3 objects, generating previews on first access.

Notes

  • The preview follows the OriginalFileName_Preview.png convention in the same folder as the object.
  • When the preview is missing it is generated once and stored, so later calls are fast.
  • Legacy keys config, path, ttlHours, encryptKey, and sourceDate are accepted for one release cycle.

See Also

Inlay_S3_GET Inlay_S3_RENDER_MEDIA_HTML Inlay_S3_VERIFY

Inlay_S3_SET_CONFIG

S3 Storage Returns JSON

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`.

Declaration

Inlay_S3_SET_CONFIG ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "001" ; JSONString ] ;
    [ "Domain" ; "<region>.digitaloceanspaces.com" ; JSONString ] ;
    [ "Region" ; "us-east-1" ; JSONString ] ;
    [ "AccessKey" ; "YOUR_ACCESS_KEY_ID" ; JSONString ] ;
    [ "SecretKey" ; "YOUR_SECRET_ACCESS_KEY" ; JSONString ] ;
    [ "Bucket" ; "your-bucket-name" ; JSONString ] ;
    [ "TtlHours?" ; 0 ; JSONNumber ] ;
    [ "EncryptKey?" ; "" ; JSONString ] ;
    [ "WaitForCompletion?" ; True ; JSONBoolean ]
  ) )

Parameters

ConfigKey Required
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.

See Also

Inlay_S3_GET Inlay_S3_PUT_CONTAINER Inlay_S3_PUT_FILE Inlay_S3_VERIFY

Inlay_S3_GET_METADATA

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_GET_METADATA ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ]
  ) )

Parameters

ConfigKey Required
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.

See Also

Inlay_S3_VERIFY Inlay_S3_VERIFY_HASH Inlay_S3_GET

Inlay_S3_DOWNLOAD_TO_PATH

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_DOWNLOAD_TO_PATH ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "SourcePathToFile" ; "media/2026/clip.mxf" ; JSONString ] ;
    [ "DestinationPathToFile" ; "/Users/alice/Downloads/clip.mxf" ; JSONString ]
  ) )

Parameters

ConfigKey Required
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.

See Also

Inlay_S3_GET Inlay_S3_OPEN_FILE_AT_PATH Inlay_S3_COPY Inlay_S3_PRECACHE

Inlay_S3_OPEN_FILE_AT_PATH

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_OPEN_FILE_AT_PATH ( "/Users/alice/Downloads/clip.mxf" )

Parameters

Path Required
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.

See Also

Inlay_S3_DOWNLOAD_TO_PATH Inlay_S3_GET Inlay_S3_COPY

Inlay_S3_RENDER_MEDIA_HTML

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_RENDER_MEDIA_HTML ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ] ;
    [ "UrlTtlSeconds" ; 3600 ; JSONNumber ] ;
    [ "ViewerMode" ; "auto" ; JSONString ]
  ) )

Parameters

ConfigKey Required
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.

See Also

Inlay_S3_RENDER_MEDIA_EDITOR_HTML Inlay_S3_GET Inlay_S3_GET_THUMBNAIL

Inlay_S3_MOUNT

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_MOUNT ( JSONSetElement ( "{}" ;
    [ "Config" ; "prod" ; JSONString ] ;
    [ "Action" ; "register" ; JSONString ] ;
    [ "ReadOnly" ; False ; JSONBoolean ]
  ) )

Parameters

Config Required
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.

See Also

Inlay_S3_SET_CONFIG Inlay_S3_GET Inlay_S3_PUT_CONTAINER Inlay_S3_PUT_FILE

Inlay_S3_MOVE

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_MOVE ( JSONSetElement ( "{}" ;
    [ "SourceConfig" ; "prod" ; JSONString ] ;
    [ "SourcePathToFileOrFolder" ; "media/2026/clip.mxf" ; JSONString ] ;
    [ "DestinationConfig" ; "archive" ; JSONString ] ;
    [ "DestinationPathToFileOrFolder" ; "archive/2026/clip.mxf" ; JSONString ] ;
    [ "Conflict" ; "overwrite" ; JSONString ] ;
    [ "Silent" ; True ; JSONBoolean ]
  ) )

Parameters

SourceConfig Required
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.

See Also

Inlay_S3_COPY Inlay_S3_DOWNLOAD_TO_PATH Inlay_S3_PUT_FILE

Inlay_S3_COPY

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_COPY ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "SourcePathToFileOrFolder" ; "/Users/alice/Media/2026/" ; JSONString ] ;
    [ "DestinationPathToFileOrFolder" ; "media/2026/" ; JSONString ] ;
    [ "Conflict" ; "overwrite" ; JSONString ]
  ) )

Parameters

ConfigKey Required
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.

See Also

Inlay_S3_MOVE Inlay_S3_DOWNLOAD_TO_PATH Inlay_S3_PUT_CONTAINER Inlay_S3_GET

Inlay_S3_PRECACHE

S3 Storage Updated Returns JSON

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.

Declaration

Inlay_S3_PRECACHE ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "PathsToFiles" ; List (
        "media/2026/clip1.mxf" ;
        "media/2026/clip2.mxf"
    ) ; JSONString ] ;
    [ "Thumbnails" ; True ; JSONBoolean ]
  ) )

Parameters

ConfigKey Required
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.

See Also

Inlay_S3_GET Inlay_S3_GET_THUMBNAIL Inlay_S3_VERIFY

Inlay_S3_RENDER_MEDIA_EDITOR_HTML

S3 Storage Returns JSON

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.

Declaration

Inlay_S3_RENDER_MEDIA_EDITOR_HTML ( JSONSetElement ( "{}" ;
    [ "ConfigKey" ; "prod" ; JSONString ] ;
    [ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ]
  ) )

Parameters

Config Required
a saved config name or an inline config object.
PathToFile Required
S3 key of the media object.
Poster Optional
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.

See Also

Inlay_S3_RENDER_MEDIA_HTML Inlay_TRANSCRIBE