IP Inlay Platform

Core

14 functions

Inlay_GET_BOOTTIME

Returns wall-clock uptime in milliseconds since boot, derived from clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW).

CoremacOS onlyUpdatedReturns JSON

Matches the value reported by the BSD `uptime` command, which counts time the machine spent asleep. Strictly monotonic and unaffected by NTP / wall-clock adjustments. Refreshes on every call; subtract two readings to measure elapsed milliseconds between events. Divide by 1000 for seconds.

Signature

Inlay_GET_BOOTTIME ( { CacheBuster } )

Parameters

  • CacheBusterOptional

    Optional argument. Omit to use the default behavior.

Returns

JSON string

Returns runtime timing values used as a monotonic anchor for workflow logic.

Script Pattern

Get runtime anchor

Inlay_GET_BOOTTIME

Use Cases

  • Track elapsed runtime between scripted steps without relying on wall-clock drift.

Notes / Caveats

  • macOS only. Calls from unsupported platforms return an error response.

Related Functions

Inlay_GET_PUBLIC_IP

Returns the public WAN (NAT/masqueraded) IP address seen from the internet using a public IP lookup service.

CoreReturns JSON

Response JSON: {"ok":true,"ip":"x.x.x.x"}.

Signature

Inlay_GET_PUBLIC_IP

Parameters

This function takes no parameters.

Returns

JSON string

Returns WAN IP lookup results in JSON (success/error state plus IP value when available).

Script Pattern

Check WAN IP

Inlay_GET_PUBLIC_IP

Use Cases

  • Display current WAN egress IP in diagnostic/admin layouts.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.

Related Functions

Inlay_CONNECTION_DIAG

Runs a real-time connection diagnostic window (20 probes) for a host/IP and graphs latency.

CoreOpens UIReturns JSON

Use this to troubleshoot FileMaker connectivity; for good UX, keep sustained RTT under about 50ms when possible. Returns {"ok":true,"status":"started","address":"..."} immediately.

Signature

Inlay_CONNECTION_DIAG ( IPorDNS )

Parameters

  • IPorDNSRequired

    Hostname or IP address to probe for latency diagnostics.

Returns

Status JSON

Opens a native diagnostic window and returns immediate status JSON for launch state.

Script Pattern

Test latency to host

Inlay_CONNECTION_DIAG ( "db.filemaker.example.com" )

Use Cases

  • Diagnose high-latency conditions when users report slow FileMaker UX.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_CUSTOM_FUNCTION

Calls a license-bound custom function.

CoreReturns JSON

The first argument is the custom function name (tied to your licensee entitlement) and the second argument is a JSON payload string specific to your workflow. If your license is not entitled to that custom function, access is denied. Contact solutions@pinethree.dev to request a custom function.

Signature

Inlay_CUSTOM_FUNCTION ( CustomFunctionName ; PayloadJson )

Parameters

  • CustomFunctionNameRequired

    Entitled custom function name tied to the current licensee.

  • PayloadJsonRequired

    JSON payload string containing inputs required by the custom workflow.

Returns

JSON string

Returns custom-function execution status JSON tied to license entitlements.

Script Pattern

Run entitled custom workflow

Inlay_CUSTOM_FUNCTION ( "color_grade_pipeline" ; "{""jobId"":""J-2049"",""preset"":""broadcast""}" )

Use Cases

  • Execute customer-specific extensions tied to paid entitlement scope.

Notes / Caveats

  • Custom functions are license-bound; calls without matching entitlement are denied.

Related Functions

Inlay_DEACTIVATE

Fully deactivates this plugin installation.

CoreUnknown

Releases the platform seat remotely when one is present [optional]; removes any registered license key from local storage [platform token OR offline Ed25519]; and invalidates the in-memory license cache so the next function call observes the unlicensed state immediately [no plugin restart required]. Takes no arguments. Returns {"status": true, "message": "deactivated", "platform_seat_found": bool, "remote_deactivated": bool, "local_key_cleared": bool}. Renamed from Inlay_PLATFORM_DEACTIVATE because the previous name misrepresented the scope. The function now covers offline licenses too.

Signature

Inlay_DEACTIVATE

Parameters

This function takes no parameters.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_DEACTIVATE

Use Cases

  • See example and related functions for usage context.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_OPEN_LOG

Opens the current Inlay plugin log file in the default system app.

CoreActionOpens UIReturns JSON

Signature

Inlay_OPEN_LOG

Parameters

This function takes no parameters.

Returns

Action status JSON

Attempts to open the active Inlay log file and returns success/error JSON.

Script Pattern

Open active plugin log

Inlay_OPEN_LOG

Use Cases

  • Open the rolling Inlay log quickly during support or QA sessions.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_VERIFY_CODESIGN

Verifies code-sign trust using codesign + spctl.

CoremacOS onlyUnknown

With no argument, verifies the running FileMaker host runtime; pass a path to verify any binary or .app bundle. PathOrHost accepts: bare HFS (Macintosh HD:u{2026}), filemac:/u{2026}, file:/u{2026}, or a POSIX path (/u{2026}). Returns {"ok":true,"trusted":true|false,"path":"...","detail":"..."}. trusted:true means Gatekeeper-level approval, not just signature presence. Unsigned or ad-hoc signed binaries return trusted:false without an error. Use in security-sensitive workflows to confirm the FM runtime or helper tools are notarized before proceeding.

Signature

Inlay_VERIFY_CODESIGN ( { PathOrHost } )

Parameters

  • PathOrHostOptional

    Optional argument. Omit to use the default behavior.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment. Availability: macOS only.

Script Pattern

Minimal call

Inlay_VERIFY_CODESIGN

Full call pattern

Inlay_VERIFY_CODESIGN ( "/Users/shared/file.ext" )

Use Cases

  • See example and related functions for usage context.

Notes / Caveats

  • macOS only. Calls from unsupported platforms return an error response.

Related Functions

Inlay_CHECK_FFMPEG

Checks whether FFmpeg, FFprobe, and FFplay are installed and returns their paths and versions.

CoreUnknown

Always returns ok:true; check the installed field to branch script logic. When installed:true, each tool entry includes path and version, e.g. {"ok":true,"installed":true,"ffmpeg":{"path":"/usr/local/bin/ffmpeg","version":"7.x"},...}. When installed:false, returns a message with instructions to call Inlay_INSTALL_FFMPEG. Use the returned paths as the FFmpegPath and FFprobePath arguments in Inlay_TRANSCODE and Inlay_VIDEO_METADATA to avoid ambiguity when multiple versions are present. Call this at session start to gate video workflows before attempting metadata or transcode operations.

Signature

Inlay_CHECK_FFMPEG

Parameters

This function takes no parameters.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_CHECK_FFMPEG

Use Cases

  • See example and related functions for usage context.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_EXCEL_EXPORT

Writes a multi-sheet xlsx workbook from a JSON spec.

CoreUnknown

Named-mode only (single JSON object arg with "_inlay": true). Sheets, rows, formulas, formats, hyperlinks, and charts are encoded inline in the JSON.

Keys (camelCase): sheets (required, array) outputPath (optional, string) filesystem path; if omitted, returns container. Accepts: POSIX path, bare HFS (Macintosh HD:Users:...), filemac:/..., filewin:/..., or file:/... filename (optional, string) default 'Export.xlsx', used in container mode asContainer (optional, boolean) if true with outputPath, returns BOTH file + container password (optional, string) if non-empty, wraps the workbook in MS-OFFCRYPTO agile encryption (AES-256 + SHA-512, 100k spin count) so Excel prompts for this password to open

Sheet object: name (string, default 'Sheet<n>') freeze (object {row, col}) autofilter (array [[r,c],[r,c]]) columns (array of {width?, format?}) rows (array of arrays of cells) charts (array of chart objects)

Cell forms: scalar string | number | boolean | null formatted scalar {value, format?} formula {formula, value?, format?} formula is an Excel expr, e.g. =SUM(B2:B10) or =Sheet1!B2 date {date, format?} ISO-8601 (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS[.fff]) hyperlink {link, text?, format?} link is https://, http://, mailto:, internal:Sheet!Cell, or external: file path

Format (string form): named tokens: bold, italic, header, int, decimal2, usd, percent, date, datetime raw Excel format code (must start with digit, $, #, 0, %, ?, ., or [)

Format (object form): bold, italic, strike, wrap booleans underline none|single|double|singleAccounting|doubleAccounting fontName, fontSize string, number fontColor, bgColor, borderColor #RRGGBB hex or named (red, blue, green, yellow, black, white, gray, cyan, magenta, orange, purple, pink, brown) border shorthand for all 4 sides; values: none|thin|medium|thick|double|hair|dashed|dotted borderTop, borderBottom, borderLeft, borderRight per-side overrides align left|center|right|justify|fill valign top|middle|bottom indent non-negative integer rotate -90..90 (or 270 for vertical) numberFormat raw Excel format code

Chart object: type (required) column | line | bar | pie | scatter | area position (required) {row, col} top-left anchor series (required, array) each {name?, categories?, values}; values is required and is an Excel range like =Sheet1!$A$1:$A$10 title (optional, string) size (optional) {width, height} in pixels offset (optional) {x, y} pixel offset within the anchor cell scale (optional) {x, y} multiplicative scale x_axis (optional) {name?} y_axis (optional) {name?} legend (optional) {position?} position: none|top|bottom|left|right

FM ergonomics: Any structural slot (sheets, rows, columns, autofilter, freeze, charts, series) accepts either a real JSON value or a string-encoded JSON value. The latter handles JSONSetElement(... ; ... ; JSONString) chains.

Returns JSON {"ok":true,"path":...,"bytes":N,"sheets":N} in path mode, or sets the FileMaker container with the workbook bytes in container/hybrid mode. On error returns {"ok":false,"message":"..."}.

Signature

Inlay_EXCEL_EXPORT ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "outputPath" ; "<path>" ; JSONString ] ;
    [ "password" ; "<optional>" ; JSONString ] ;
    [ "sheets" ; "<sheets-json>" ; JSONString ]
  ) )

Parameters

  • JSONSetElementRequired

    Required argument for this call pattern.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_EXCEL_EXPORT ( "{""ok"":true}" )

Use Cases

  • See example and related functions for usage context.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_CORE_RUN_PING

Starts an asynchronous ping (5 echoes) against host.

CoreUnknown

Returns immediately with {"ok":true,"status":"started","label":...,"host":...}. Poll Inlay_CORE_GET_PING_RESULT(label) to retrieve the captured output. Calling again with the same label overwrites the previous result. macOS uses /sbin/ping; Windows uses ping.exe.

Signature

Inlay_CORE_RUN_PING ( Label ; IPorDNS )

Parameters

  • LabelRequired

    Required argument for this call pattern.

  • IPorDNSRequired

    Required argument for this call pattern.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_CORE_RUN_PING ( "example" ; "db.filemaker.example.com" )

Use Cases

  • See example and related functions for usage context.

Notes / Caveats

  • This call returns before long-running operations fully finish.

Related Functions

Inlay_CORE_GET_PING_RESULT

Returns the current state of a ping job started with Inlay_CORE_RUN_PING.

CoreUnknown

Result JSON has status one of "pending", "done", or "missing". While pending, includes partial_stdout and partial_stderr that grow as the child process writes output. When done, includes the final stdout, stderr, exit_code, started_at_ms, finished_at_ms, and elapsed_ms.

Signature

Inlay_CORE_GET_PING_RESULT ( Label )

Parameters

  • LabelRequired

    Required argument for this call pattern.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_CORE_GET_PING_RESULT ( "example" )

Use Cases

  • See example and related functions for usage context.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_CORE_RUN_TRACE

Starts an asynchronous traceroute against host and streams its output into the job entry as the child process emits it.

CoreUnknown

Returns immediately with {"ok":true,"status":"started","label":...,"host":...}. Poll Inlay_CORE_GET_TRACE(label) to see partial_stdout grow until the job flips to status "done". macOS uses /usr/sbin/traceroute -q 1 -w 1 -m 20 (one query per hop, 1s wait, max 20 hops). Windows is not implemented yet and returns {"ok":false,"message":"trace not implemented on this platform yet"}.

Signature

Inlay_CORE_RUN_TRACE ( Label ; IPorDNS )

Parameters

  • LabelRequired

    Required argument for this call pattern.

  • IPorDNSRequired

    Required argument for this call pattern.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_CORE_RUN_TRACE ( "example" ; "db.filemaker.example.com" )

Use Cases

  • See example and related functions for usage context.

Notes / Caveats

  • This call returns before long-running operations fully finish.

Related Functions

Inlay_CORE_GET_TRACE

Returns the current state of a traceroute job started with Inlay_CORE_RUN_TRACE.

CoreUnknown

Result JSON has status one of "pending", "done", or "missing". While pending, includes partial_stdout and partial_stderr that grow line-by-line as traceroute emits each hop. When done, includes the final stdout, stderr, exit_code, started_at_ms, finished_at_ms, and elapsed_ms.

Signature

Inlay_CORE_GET_TRACE ( Label )

Parameters

  • LabelRequired

    Required argument for this call pattern.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_CORE_GET_TRACE ( "example" )

Use Cases

  • See example and related functions for usage context.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_CORE_LIST_JOBS

Diagnostic.

CoreUnknown

Returns JSON describing every ping/trace job currently held in the plugin's in-memory state, with fields kind, label, status, host, started_at_ms, and (for done jobs) finished_at_ms, elapsed_ms, exit_code, stdout_bytes, stderr_bytes. Useful for confirming that an Inlay_CORE_RUN_* call actually populated the map.

Signature

Inlay_CORE_LIST_JOBS

Parameters

This function takes no parameters.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_CORE_LIST_JOBS

Use Cases

  • See example and related functions for usage context.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Media

3 functions

Inlay_INSPECT_CONTAINER

Returns JSON describing a container field's contents: stream type, byte size, and image dimensions when available.

MediaReturns JSON

Signature

Inlay_INSPECT_CONTAINER ( Container )

Parameters

  • containerRequired

    FileMaker container field value to inspect.

Returns

JSON string

Returns JSON metadata about the container stream and media properties when available.

Script Pattern

Inspect a container field

Inlay_INSPECT_CONTAINER ( Media::AssetContainer )

Use Cases

  • Branch workflow logic based on detected stream/media type inside a container field.
  • Validate upload candidates before pushing them to object storage.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_LOAD_IMAGE

Loads a local JPEG, PNG, GIF, BMP, or PDF and returns it as a FileMaker container.

MediaReturns Container

path accepts: bare HFS (Macintosh HD:Users:…), filemac:/…, file:/…, or a POSIX path (/Users/…).

Signature

Inlay_LOAD_IMAGE ( Path )

Parameters

  • PathRequired

    Required argument for this call pattern.

Returns

FileMaker container

Returns container data for the local file when the path is valid.

Script Pattern

Load local poster image

Inlay_LOAD_IMAGE ( "/Users/shared/posters/titlecard.png" )

Use Cases

  • Inject a local poster, graphic, or PDF into a FileMaker container field.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_LOAD_REMOTE_IMAGE

Downloads an image from URL and returns it as a FileMaker container.

MediaReturns Container

Optional TTLHours, EncryptKey, and SourceDate control freshness and cached reuse. Named form example: Inlay_LOAD_REMOTE_IMAGE({ "_inlay": true, "url": "https://example.com/image.jpg", "ttlHours": 24, "encryptKey": "<optional>", "sourceDate": "2026-04-01" })

Signature

Inlay_LOAD_REMOTE_IMAGE ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "url" ; "<image-url>" ; JSONString ]
  ) )

Parameters

  • JSONSetElementRequired

    Required argument for this call pattern.

  • _inlayOptional

    Optional argument. Omit to use the default behavior.

  • TrueOptional

    Optional argument. Omit to use the default behavior.

  • JSONBooleanOptional

    Optional argument. Omit to use the default behavior.

Returns

FileMaker container

Returns container data for the downloaded image; cache settings can affect fetch behavior.

Script Pattern

Load CDN image with cache controls

Inlay_LOAD_REMOTE_IMAGE ( "https://cdn.example.com/posters/titlecard.jpg" ; 24 ; "poster-cache-key" ; "2026-03-10" )

Use Cases

  • Render externally hosted poster/key-art in FileMaker without manual download steps.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.
  • TTL/SourceDate settings control cache freshness and when objects are re-fetched.

Related Functions

S3 Storage

15 functions

Inlay_S3_GET

Downloads a private object from S3-compatible storage (AWS S3, Spaces, etc.) and returns a FileMaker container.

S3 StorageReturns Container

Use direct credentials or ConfigKey; optional TTLHours, EncryptKey, and SourceDate control cached reuse. Named form example: Inlay_S3_GET({ "_inlay": true, "config": "prod", "path": "/folder/clip.mxf", "ttlHours": 24, "encryptKey": "<optional>", "sourceDate": "2026-04-01" }) config may be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket.

Signature

Inlay_S3_GET ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "path" ; "<object-path>" ; JSONString ]
  ) )

Parameters

  • ConfigKeyRequired

    Name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Use this mode for cleaner scripts.

  • SourcePathRequired

    Object key path in the bucket (for example, posters/episode1/keyart.jpg).

  • DomainRequired

    S3-compatible endpoint host when using direct-credentials mode.

  • RegionRequired

    Region identifier used for signing requests (for example, us-east-1).

  • AccessKeyRequired

    Access key ID for direct-credentials mode.

  • SecretKeyRequired

    Secret access key for direct-credentials mode.

  • BucketRequired

    Bucket name that contains SourcePath.

  • TTLHoursOptional

    Cache freshness window in hours for local reuse.

  • EncryptKeyOptional

    Passphrase used to encrypt/decrypt cached object bytes on disk.

  • SourceDateOptional

    Source modified date used to force refresh when object changes.

Returns

FileMaker container

Returns the object body as container data after access and caching checks.

Script Pattern

ConfigKey mode

Use a saved S3 profile so the call stays short inside scripts and calculations.

Set Variable [ $asset ;
    Inlay_S3_GET (
        "prod-media" ;
        "posters/episode1/keyart.jpg"
    )
]

Argument context

  • ConfigKey

    Name of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Use this mode for cleaner scripts.

  • SourcePath

    Object key path in the bucket (for example, posters/episode1/keyart.jpg).

Direct credentials mode

Use the explicit endpoint form when you need to pass domain, region, keys, and bucket in the same call.

Set Variable [ $asset ;
    Inlay_S3_GET (
        "nyc3.digitaloceanspaces.com" ;
        "us-east-1" ;
        "DO_ACCESS_KEY" ;
        "DO_SECRET_KEY" ;
        "inlay-assets" ;
        "posters/episode1/keyart.jpg" ;
        24 ;
        "media-cache-key" ;
        "2026-03-10"
    )
]

Argument context

  • Domain

    S3-compatible endpoint host when using direct-credentials mode.

  • Region

    Region identifier used for signing requests (for example, us-east-1).

  • AccessKey

    Access key ID for direct-credentials mode.

  • SecretKey

    Secret access key for direct-credentials mode.

  • Bucket

    Bucket name that contains SourcePath.

  • SourcePath

    Object key path in the bucket (for example, posters/episode1/keyart.jpg).

  • TTLHours

    Cache freshness window in hours for local reuse.

  • EncryptKey

    Passphrase used to encrypt/decrypt cached object bytes on disk.

  • SourceDate

    Source modified date used to force refresh when object changes.

Use Cases

  • Show private S3 media directly inside container fields.
  • Pull source assets from storage before handing off to transcode workflows.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.
  • TTL/SourceDate settings control cache freshness and when objects are re-fetched.

Related Functions

Inlay_S3_PUT_CONTAINER

Uploads a FileMaker container to S3 using ConfigKey.

S3 StorageUpdatedReturns JSON

Sync/async behaviour is controlled by WaitForCompletion in Inlay_S3_SET_CONFIG.

Signature

Inlay_S3_PUT_CONTAINER ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "destinationFolder" ; "<folder>" ; JSONString ]
  ) )

Parameters

  • Optional

    ConfigKey: saved config name (from Inlay_S3_SET_CONFIG), or an inline JSON object with domain, region, accessKey, secretKey, bucket.

  • Optional

    DestinationFolder: S3 key prefix (e.g. "media/2026" or "" for root).

  • Optional

    SourceContainer: the FileMaker container value to upload.

  • MetadataOptional

    JSON object of S3 object metadata.

  • DestinationFilenameOptional

    override the container's filename.

  • TTLHoursOverrideOptional

    cache TTL override.

  • EncryptKeyOverrideOptional

    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.

Script Pattern

Upload a container field

Push a FileMaker container to object storage while attaching metadata and a stable filename.

Set Variable [ $upload ;
    Inlay_S3_PUT_CONTAINER (
        "prod-media" ;
        "exports/invoices" ;
        Invoices::PdfContainer ;
        "{""customerId"":""C-10042"",""docType"":""invoice""}" ;
        "invoice-10042.pdf"
    )
]

Argument context

  • ConfigKey

    Used in this pattern.

  • DestinationFolder

    Used in this pattern.

  • SourceContainer

    Used in this pattern.

  • Metadata

    JSON object of S3 object metadata.

  • DestinationFilename

    override the container's filename.

Use Cases

  • Upload generated PDFs from container fields into archive buckets.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.
  • Transfer behavior can be synchronous or async based on WaitForCompletion profile settings.

Related Functions

Inlay_S3_PUT_FILE

Opens a native file picker and uploads the selected file to S3 using ConfigKey.

S3 StorageOpens UIActionReturns JSON

Supports optional metadata and destination filename, plus sync/async behavior via WaitForCompletion. Named form example: Inlay_S3_PUT_FILE({ "_inlay": true, "config": "prod", "destinationFolder": "media/2026", "metadata": "{\"author\":\"alice\"}", "destinationFilename": "clip.mp4", "ttlHoursOverride": 48, "encryptKeyOverride": "<optional>" }) config may be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket.

Signature

Inlay_S3_PUT_FILE ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "destinationFolder" ; "<folder>" ; JSONString ]
  ) )

Parameters

  • JSONSetElementRequired

    Required argument for this call pattern.

  • _inlayOptional

    Optional argument. Omit to use the default behavior.

  • TrueOptional

    Optional argument. Omit to use the default behavior.

  • JSONBooleanOptional

    Optional argument. Omit to use the default behavior.

  • configOptional

    Optional argument. Omit to use the default behavior.

  • JSONStringOptional

    Optional argument. Omit to use the default behavior.

Returns

Action status JSON

Opens a native file picker and returns JSON describing upload status/result.

Script Pattern

Pick local file and upload

Inlay_S3_PUT_FILE ( "prod-media" ; "uploads/source-footage" ; "{""project"":""episode1""}" ; "fishing.mov" )

Use Cases

  • Let operators pick a local file and push it to the active project bucket.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.
  • Transfer behavior can be synchronous or async based on WaitForCompletion profile settings.

Related Functions

Inlay_S3_VERIFY

Verify an S3 object is reachable with the provided credentials and return basic object details without downloading the body.

S3 StorageReturns JSON

Named form example: Inlay_S3_VERIFY({ "_inlay": true, "config": "prod", "path": "/folder/clip.mxf" }) config may be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket.

Signature

Inlay_S3_VERIFY ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "path" ; "<object-path>" ; JSONString ]
  ) )

Parameters

  • ConfigKeyRequired

    Named profile key from Inlay_S3_SET_CONFIG.

  • SourcePathRequired

    Object key path to validate before downloading or rendering.

  • DomainRequired

    Endpoint host for direct-credentials mode.

  • RegionRequired

    Region used for request signing.

  • AccessKeyRequired

    Access key ID for direct-credentials mode.

  • SecretKeyRequired

    Secret access key for direct-credentials mode.

  • BucketRequired

    Bucket containing SourcePath.

Returns

JSON string

Returns object-availability JSON without downloading the full object body.

Script Pattern

Mode A: ConfigKey

Inlay_S3_VERIFY ( "prod-media" ; "trailers/episode1/final.mp4" )

Mode B: Direct credentials

Inlay_S3_VERIFY ( "s3.amazonaws.com" ; "us-east-1" ; "AWS_ACCESS_KEY" ; "AWS_SECRET_KEY" ; "media-prod" ; "trailers/episode1/final.mp4" )

Use Cases

  • Confirm object availability before attempting download/render.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.
  • Verification functions validate object state and do not return container file bodies.

Related Functions

Inlay_S3_VERIFY_HASH

Validates an S3 object against an expected SHA-256 value and returns whether it matches, plus object size and returned hash details.

S3 StorageReturns JSON

Named form example: Inlay_S3_VERIFY_HASH({ "_inlay": true, "config": "prod", "path": "/folder/clip.mxf", "expectedHash": "<sha256-hex>" }) config may be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket.

Signature

Inlay_S3_VERIFY_HASH ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "path" ; "<object-path>" ; JSONString ] ;
    [ "expectedHash" ; "<sha256-hex>" ; JSONString ]
  ) )

Parameters

  • JSONSetElementRequired

    Required argument for this call pattern.

  • _inlayOptional

    Optional argument. Omit to use the default behavior.

  • TrueOptional

    Optional argument. Omit to use the default behavior.

  • JSONBooleanOptional

    Optional argument. Omit to use the default behavior.

  • configOptional

    Optional argument. Omit to use the default behavior.

  • JSONStringOptional

    Optional argument. Omit to use the default behavior.

  • pathOptional

    Optional argument. Omit to use the default behavior.

Returns

JSON string

Returns JSON hash verification results for the requested object.

Script Pattern

Verify object hash

Inlay_S3_VERIFY_HASH ( "prod-media" ; "trailers/episode1/final.mp4" ; "6de9d78f2f95ef7fda94d11fbe9f0e7d5e9a5e7f0be42a8a43a0b8b14f76d6db" )

Use Cases

  • Validate media integrity after upload or external processing.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.
  • Verification functions validate object state and do not return container file bodies.

Related Functions

Inlay_S3_GET_THUMBNAIL

Returns a preview image (<OriginalFileName>_Preview.png) from the same S3 folder as a FileMaker container.

S3 StorageReturns Container

If no preview exists yet, one is generated and stored for reuse. Named form example: Inlay_S3_GET_THUMBNAIL({ "_inlay": true, "config": "prod", "path": "/folder/clip.mxf", "ttlHours": 24, "encryptKey": "<optional>", "sourceDate": "2026-04-01" }) config may be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket.

Signature

Inlay_S3_GET_THUMBNAIL ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "path" ; "<object-path>" ; JSONString ]
  ) )

Parameters

  • ConfigKeyRequired

    Named profile key from Inlay_S3_SET_CONFIG.

  • SourcePathRequired

    Object key whose sidecar preview image should be returned.

  • DomainRequired

    Endpoint host for direct-credentials mode.

  • RegionRequired

    Region used for request signing.

  • AccessKeyRequired

    Access key ID for direct-credentials mode.

  • SecretKeyRequired

    Secret access key for direct-credentials mode.

  • BucketRequired

    Bucket containing SourcePath and preview assets.

  • TTLHoursOptional

    Cache freshness in hours for the generated/loaded preview image.

  • EncryptKeyOptional

    Passphrase for encrypted thumbnail cache entries.

  • SourceDateOptional

    Modified-date hint used for cache refresh decisions.

Returns

FileMaker container

Returns a PNG preview container for the target object.

Script Pattern

Load a preview image

Fetch a lightweight preview image instead of the full media file when you only need a visual thumbnail.

Set Variable [ $preview ;
    Inlay_S3_GET_THUMBNAIL (
        "prod-media" ;
        "trailers/episode1/final.mp4"
    )
]

Argument context

  • ConfigKey

    Named profile key from Inlay_S3_SET_CONFIG.

  • SourcePath

    Object key whose sidecar preview image should be returned.

Use Cases

  • Display preview images for larger media objects without loading full files.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.
  • TTL/SourceDate settings control cache freshness and when objects are re-fetched.

Related Functions

Inlay_S3_SET_CONFIG

Saves reusable S3 connection settings under ConfigKey for the current FileMaker session.

S3 StorageReturns JSON

One-argument form clears an existing ConfigKey. Named form example: Inlay_S3_SET_CONFIG({ "_inlay": true, "configKey": "prod", "domain": "s3.us-east-1.amazonaws.com", "region": "us-east-1", "accessKey": "AKIA...", "secretKey": "<secret>", "bucket": "media", "ttlHours": 24, "encryptKey": "<optional>", "waitForCompletion": true }) A 1-arg call with a JSON object lacking _inlay:true continues to be interpreted as a positional call for backward compatibility.

Signature

Inlay_S3_SET_CONFIG ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "configKey" ; "<config-key>" ; JSONString ] ;
    [ "domain" ; "<s3-domain>" ; JSONString ] ;
    [ "region" ; "<region>" ; JSONString ] ;
    [ "accessKey" ; "<access-key>" ; JSONString ] ;
    [ "secretKey" ; "<secret-key>" ; JSONString ] ;
    [ "bucket" ; "<bucket>" ; JSONString ]
  ) )

Parameters

  • ConfigKeyRequired

    Profile key you reference in later S3 functions (for example, prod-media).

  • DomainRequired

    S3 endpoint host used when creating/updating the profile.

  • RegionRequired

    S3 region for request signing (for example, us-east-1).

  • AccessKeyRequired

    Access key ID for this profile.

  • SecretKeyRequired

    Secret access key for this profile.

  • BucketRequired

    Default bucket for this profile.

  • TTLHoursOptional

    Default cache duration in hours for reads that support caching.

  • EncryptKeyOptional

    Default passphrase for encrypted local cache storage.

  • WaitForCompletionOptional

    Set 1 for synchronous transfers or 0 for async background behavior where supported.

Returns

JSON string

Returns JSON confirming config save/update/clear operations for the active session.

Script Pattern

Create a reusable S3 profile

Configure the connection once, then reference the profile by ConfigKey in later S3 functions.

Set Variable [ $config ;
    Inlay_S3_SET_CONFIG (
        "prod-media" ;
        "nyc3.digitaloceanspaces.com" ;
        "us-east-1" ;
        "DO_ACCESS_KEY" ;
        "DO_SECRET_KEY" ;
        "inlay-assets" ;
        24 ;
        "media-cache-key" ;
        1
    )
]

Argument context

  • ConfigKey

    Profile key you reference in later S3 functions (for example, prod-media).

  • Domain

    S3 endpoint host used when creating/updating the profile.

  • Region

    S3 region for request signing (for example, us-east-1).

  • AccessKey

    Access key ID for this profile.

  • SecretKey

    Secret access key for this profile.

  • Bucket

    Default bucket for this profile.

  • TTLHours

    Default cache duration in hours for reads that support caching.

  • EncryptKey

    Default passphrase for encrypted local cache storage.

  • WaitForCompletion

    Set 1 for synchronous transfers or 0 for async background behavior where supported.

Clear an existing profile

Pass only the ConfigKey when you want to remove the saved profile.

Set Variable [ $config ;
    Inlay_S3_SET_CONFIG ( "prod-media" )
]

Argument context

  • ConfigKey

    Profile key you reference in later S3 functions (for example, prod-media).

Use Cases

  • Register per-environment profiles (prod, staging) once per session.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.

Related Functions

Inlay_S3_GET_METADATA

Returns S3 object metadata and content length for the target object path.

S3 StorageReturns JSON

Named form example: Inlay_S3_GET_METADATA({ "_inlay": true, "config": "prod", "path": "/folder/clip.mxf" }) config may be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket.

Signature

Inlay_S3_GET_METADATA ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "path" ; "<object-path>" ; JSONString ]
  ) )

Parameters

  • ConfigKeyRequired

    Named profile key from Inlay_S3_SET_CONFIG.

  • SourcePathRequired

    Object key to inspect for metadata and object length.

  • DomainRequired

    Endpoint host for direct-credentials mode.

  • RegionRequired

    Region used for request signing.

  • AccessKeyRequired

    Access key ID for direct-credentials mode.

  • SecretKeyRequired

    Secret access key for direct-credentials mode.

  • BucketRequired

    Bucket containing SourcePath.

Returns

JSON string

Returns metadata JSON (including object size and metadata fields) for the target object.

Script Pattern

Inspect an object before processing

Read size and metadata before you decide whether to download, render, or transcode the asset.

Set Variable [ $meta ;
    Inlay_S3_GET_METADATA (
        "prod-media" ;
        "posters/episode1/keyart.jpg"
    )
]

Argument context

  • ConfigKey

    Named profile key from Inlay_S3_SET_CONFIG.

  • SourcePath

    Object key to inspect for metadata and object length.

Use Cases

  • Read content length and metadata before deciding processing paths.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.

Related Functions

Inlay_S3_DOWNLOAD_TO_PATH

Downloads an S3 object to local disk with a cancelable progress window.

S3 StorageReturns JSON

DestinationPath is optional; response JSON includes resolved path, content length, and metadata. DestinationPath accepts bare HFS paths, filemac:/…, file:/…, or a POSIX path. config may be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket. Named form example: Inlay_S3_DOWNLOAD_TO_PATH({ "_inlay": true, "config": "prod", "sourcePath": "/folder/clip.mxf", "destinationPath": "/Users/alice/Downloads/clip.mxf" })

Signature

Inlay_S3_DOWNLOAD_TO_PATH ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "sourcePath" ; "<s3-source-path>" ; JSONString ] ;
    [ "destinationPath" ; "<local-destination>" ; JSONString ]
  ) )

Parameters

  • JSONSetElementRequired

    Required argument for this call pattern.

  • _inlayOptional

    Optional argument. Omit to use the default behavior.

  • TrueOptional

    Optional argument. Omit to use the default behavior.

Returns

JSON string

Returns JSON describing the local download result path, object details, and transfer status.

Script Pattern

Download an object to disk

Use this when a local tool or operator needs the file on disk instead of inside a FileMaker container.

Set Variable [ $download ;
    Inlay_S3_DOWNLOAD_TO_PATH (
        "prod-media" ;
        "posters/episode1/keyart.jpg" ;
        "/Users/shared/Downloads/episode1-keyart.jpg"
    )
]

Argument context

  • ConfigKey

    Used in this pattern.

  • SourcePath

    Used in this pattern.

  • DestinationPath

    Used in this pattern.

Use Cases

  • Download source assets to local disk for external tools or manual review.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.

Related Functions

Inlay_S3_OPEN_FILE_AT_PATH

Opens a local file in the OS default application.

S3 StorageActionOpens UIReturns JSON

Path accepts: bare HFS (Macintosh HD:Users:…), filemac:/…, filewin:/…, file:/…, or a POSIX path (/Users/…).

Signature

Inlay_S3_OPEN_FILE_AT_PATH ( Path )

Parameters

  • PathRequired

    Absolute local file path (or FileMaker-style file path) to open in the default OS app.

Returns

Action status JSON

Attempts to open a local file in the OS default app and returns success/error JSON.

Script Pattern

Open local file

Inlay_S3_OPEN_FILE_AT_PATH ( "/Users/shared/Downloads/episode1-keyart.jpg" )

Use Cases

  • Open a downloaded file in the default desktop app from a script step.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_S3_RENDER_MEDIA_HTML

Returns media access URL(s) and an embeddable HTML viewer (video/image/pdf/audio/file) for an S3 object.

S3 StorageReturns JSON

Auto mode chooses viewer type from content type and filename extension. Named form example: Inlay_S3_RENDER_MEDIA_HTML({ "_inlay": true, "config": "prod", "path": "/folder/clip.mxf", "urlTtlSeconds": 3600, "viewerMode": "auto" }) config may be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket.

Signature

Inlay_S3_RENDER_MEDIA_HTML ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "path" ; "<object-path>" ; JSONString ]
  ) )

Parameters

  • ConfigKeyRequired

    Named profile key from Inlay_S3_SET_CONFIG.

  • SourcePathRequired

    Object key for the media asset to render.

  • DomainRequired

    Endpoint host for direct-credentials mode.

  • RegionRequired

    Region used for request signing.

  • AccessKeyRequired

    Access key ID for direct-credentials mode.

  • SecretKeyRequired

    Secret access key for direct-credentials mode.

  • BucketRequired

    Bucket containing SourcePath.

  • UrlTtlSecondsOptional

    Signed URL lifetime in seconds for embedded playback.

  • ViewerModeOptional

    Viewer override: auto, video, image, pdf, audio, or file.

Returns

JSON string

Returns JSON payload containing signed media URL details and embeddable viewer HTML.

Script Pattern

Render embeddable media viewer

Inlay_S3_RENDER_MEDIA_HTML ( "prod-media" ; "trailers/episode1/final.mp4" ; 900 ; "video" )

Use Cases

  • Embed signed media playback HTML in web viewers/container web areas.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.
  • Signed media URLs expire; regenerate HTML when viewer sessions outlive URL TTL.

Related Functions

Inlay_S3_MOUNT

Mounts or unmounts an S3 bucket as a native cloud-storage drive.

S3 StorageUnknown

Requires a config name previously registered with Inlay_S3_SET_CONFIG in the current session. config must be a saved config name string; inline credential objects are rejected (call Inlay_S3_SET_CONFIG first to persist credentials). The Finder/Explorer drive label is the config name. macOS: mounts via FileProvider (appears in Finder sidebar). Windows: mounts via Cloud Filter API (CFAPI); S3 files appear as on-demand placeholders in File Explorer and hydrate transparently on access. Action: "register" mounts the drive; "unregister" (or "remove") unmounts it. ReadOnly accepts 1/true/yes or 0/false/no (default 0); use 1 to prevent write-back from the OS. Each config name maps to one drive slot; calling register again with the same name replaces the existing mount. Returns {"ok":true,"action":"...","config_key":"..."} on success. Named form example: Inlay_S3_MOUNT({ "_inlay": true, "config": "prod", "action": "register", "readOnly": false })

Signature

Inlay_S3_MOUNT ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "action" ; "<register|unregister>" ; JSONString ] ;
    [ "readOnly" ; False ; JSONBoolean ]
  ) )

Parameters

  • JSONSetElementRequired

    Required argument for this call pattern.

  • _inlayOptional

    Optional argument. Omit to use the default behavior.

  • TrueOptional

    Optional argument. Omit to use the default behavior.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_S3_MOUNT ( "{""ok"":true}" )

Full call pattern

Inlay_S3_MOUNT ( "{""ok"":true}" ; "example" ; "example" )

Use Cases

  • Use this function to automate S3-backed FileMaker workflows with repeatable scripts.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.

Related Functions

Inlay_S3_MOVE

Move an S3 object or folder prefix to another S3 location.

S3 StorageUnknown

The source is deleted only after the destination is confirmed to exist. If sourcePath 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 (no data flows through the plugin). For cross-region moves, Mode controls data transfer: "stream" (default) -- bytes held in memory; "cache" -- bytes written to a temp file first, better for large files.

sourceConfig and destinationConfig may each be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket.

Conflict (optional 6th arg) -- what to do when the destination already exists: "overwrite" (default) -- always replace. Pro: simple, always up-to-date. Con: wastes bandwidth re-copying unchanged files. "ignore" -- skip if the destination object exists, regardless of content. Pro: fastest, zero extra requests beyond list. Con: will not re-copy a file that changed at the source. "etag" -- skip if source and destination ETags match. S3 ETags are the MD5 of the content for single-part uploads; for multipart uploads the ETag is a composite hash and two copies of the same file may not match. Pro: exact content comparison for single-part objects, no local computation. Con: unreliable for multipart-uploaded objects. "size" -- skip if source and destination byte counts match. Pro: very fast, works for all object types. Con: same-size files with different content are incorrectly skipped. "md5" -- skip if source and destination ETags match AND both are single-part (plain MD5). Falls back to copy if either object was multipart-uploaded. Pro: reliable content equality for single-part objects. Con: same limitation as etag for multipart uploads. "sha256" -- skip if both objects carry a matching x-amz-checksum-sha256 checksum. Requires AWS Checksum Mode; objects must have been uploaded with SHA256 checksums. Pro: strongest guarantee, algorithm-agnostic from S3's perspective. Con: not supported on DigitalOcean Spaces, MinIO, or objects uploaded without SHA256 checksums -- falls back to copy when checksum is absent.

Silent (optional 7th arg) -- pass "true", "1", "silent", or "yes" to skip the confirmation dialog before deleting source files. When omitted or empty, a native dialog prompts the user to confirm the delete.

Returns {"ok":true,"method":"server"|"stream","files_moved":N,"files_skipped":N,"sources_deleted":N,"bytes_transferred":N}. Returns {"ok":false,"message":"move cancelled: source files not deleted"} if the user declines the confirmation dialog. Named form example: Inlay_S3_MOVE({ "_inlay": true, "sourceConfig": "prod", "sourcePath": "/a/x.mp4", "destinationConfig": "archive", "destinationPath": "/b/x.mp4", "mode": "server", "conflict": "overwrite", "silent": true })

Signature

Inlay_S3_MOVE ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "sourceConfig" ; "<source-config-key>" ; JSONString ] ;
    [ "sourcePath" ; "<source-path>" ; JSONString ] ;
    [ "destinationConfig" ; "<destination-config-key>" ; JSONString ] ;
    [ "destinationPath" ; "<destination-path>" ; JSONString ]
  ) )

Parameters

  • JSONSetElementRequired

    Required argument for this call pattern.

  • _inlayOptional

    Optional argument. Omit to use the default behavior.

  • TrueOptional

    Optional argument. Omit to use the default behavior.

  • JSONBooleanOptional

    Optional argument. Omit to use the default behavior.

  • sourceConfigOptional

    Optional argument. Omit to use the default behavior.

  • sourceOptional

    Optional argument. Omit to use the default behavior.

  • JSONStringOptional

    Optional argument. Omit to use the default behavior.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_S3_MOVE ( "{""ok"":true}" )

Full call pattern

Inlay_S3_MOVE ( "{""ok"":true}" ; "example" ; "example" ; "{""ok"":true}" ; "example" ; "example" ; "{""ok"":true}" )

Use Cases

  • Use this function to automate S3-backed FileMaker workflows with repeatable scripts.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.

Related Functions

Inlay_S3_COPY

Copy files between a local filesystem and S3.

S3 StorageActionOpens UIReturns JSON

If sourcePath is a local filesystem path (absolute POSIX; bare HFS [Macintosh HD:…]; or prefixed with filemac:/filewin:/file:), files are uploaded to S3 at destinationPath. Otherwise files are downloaded from S3 sourcePath to the local destinationPath. If the source is a folder (path ends with "/" or is a directory), all files are copied recursively. Shows a multi-file progress window.

config may be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket.

Conflict [optional 4th arg] -- what to do when the destination already exists: "overwrite" [default] -- always replace. Pro: simple, always up-to-date. Con: wastes bandwidth re-copying unchanged files. "ignore" -- skip if the destination file or S3 object exists, regardless of content. Pro: fastest possible check. Con: will not re-copy a file that changed at the source. "etag" -- local files have no ETag; falls back to size comparison [same as "size"]. Use "md5" for content-based comparison on local-to-S3 or S3-to-local transfers. "size" -- skip if the destination byte count matches the source. Pro: fast, zero hashing overhead. Con: same-size files with different content are incorrectly skipped. "md5" -- compute the local file's MD5 and compare with the S3 ETag. For upload: reads the entire local file before deciding whether to upload [expensive for large files]. For download: reads the existing local file to compute its MD5. Only reliable for single-part S3 objects [ETag == MD5]; falls back to copy for multipart-uploaded objects. Pro: exact content comparison when applicable. Con: requires reading the full file; unreliable for multipart uploads. "sha256" -- compute local SHA256 and compare with x-amz-checksum-sha256 from S3. Objects must have been uploaded with a SHA256 checksum; not supported on DigitalOcean Spaces, MinIO, or objects without stored checksums. Pro: strongest guarantee; widely trusted algorithm. Con: requires full file read and AWS Checksum Mode support -- falls back to copy when checksum is absent. Returns {"ok":true,"method":"upload"|"download","files_copied":N,"files_skipped":N,"bytes_transferred":N}. Named form example: Inlay_S3_COPY({ "_inlay": true, "config": "prod", "sourcePath": "/a/x.mp4", "destinationPath": "/b/x.mp4", "conflict": "overwrite" })

Signature

Inlay_S3_COPY ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "sourcePath" ; "<source-path>" ; JSONString ] ;
    [ "destinationPath" ; "<destination-path>" ; JSONString ]
  ) )

Parameters

  • ConfigKeyRequired

    Saved S3 profile key created with Inlay_S3_SET_CONFIG.

  • SrcPathRequired

    Source path. Use a local filesystem path for uploads or an S3 object/prefix for downloads.

  • DstPathRequired

    Destination path. Use an S3 key/prefix for uploads or a local filesystem path for downloads.

  • ConflictOptional

    Conflict strategy when the destination already exists: overwrite, ignore, etag, size, md5, or sha256.

Returns

JSON string

Returns JSON describing local-to-S3 or S3-to-local copy results and transfer status.

Script Pattern

Upload a local file into S3

When SrcPath is local and DstPath is an S3 key, Inlay uploads the file and shows progress.

Set Variable [ $copy ;
    Inlay_S3_COPY (
        "prod-media" ;
        "/Users/shared/Deliverables/interview.mov" ;
        "projects/1234/interview.mov" ;
        "overwrite"
    )
]

Argument context

  • ConfigKey

    Saved S3 profile key created with Inlay_S3_SET_CONFIG.

  • SrcPath

    Source path. Use a local filesystem path for uploads or an S3 object/prefix for downloads.

  • DstPath

    Destination path. Use an S3 key/prefix for uploads or a local filesystem path for downloads.

  • Conflict

    Conflict strategy when the destination already exists: overwrite, ignore, etag, size, md5, or sha256.

Download an S3 object to disk

When SrcPath points at S3 and DstPath is local, Inlay downloads the object to disk with progress.

Set Variable [ $copy ;
    Inlay_S3_COPY (
        "prod-media" ;
        "projects/1234/interview.mov" ;
        "/Users/shared/Downloads/interview.mov" ;
        "md5"
    )
]

Argument context

  • ConfigKey

    Saved S3 profile key created with Inlay_S3_SET_CONFIG.

  • SrcPath

    Source path. Use a local filesystem path for uploads or an S3 object/prefix for downloads.

  • DstPath

    Destination path. Use an S3 key/prefix for uploads or a local filesystem path for downloads.

  • Conflict

    Conflict strategy when the destination already exists: overwrite, ignore, etag, size, md5, or sha256.

Use Cases

  • Move assets between local disk and S3 with a native progress window for operators.
  • Upload deliverables or pull review files down to a workstation without custom helper scripts.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.
  • This function opens a native progress window because local-to-S3 and S3-to-local copies can run longer than a typical script step.
  • Conflict modes that rely on hashes may read existing files before deciding whether to copy.

Related Functions

Inlay_S3_PRECACHE

Warms the local S3 disk cache in the background.

S3 StorageUnknown

Accepts a return-separated list of object paths (the FM-native List() form) and returns immediately with {"ok":true,"queued":N}; a pool of background worker threads fetches the source object AND its thumbnail for each path that is not already fresh in cache. Paths already fresh have their TTL window reset so the entry behaves like a freshly-fetched object. Subsequent Inlay_S3_GET and Inlay_S3_GET_THUMBNAIL calls for the same keys return instantly from cache. Empty/whitespace lines are silently dropped. Named-parameter form only. Example: Inlay_S3_PRECACHE ( JSONSetElement ( "{}" ; [ "_inlay" ; True ; JSONBoolean ] ; [ "config" ; "prod" ; JSONString ] ; [ "paths" ; $myPathList ; JSONString ] ; [ "thumbnails" ; True ; JSONBoolean ] ) ) config may be a saved config name [string] or an inline object with domain; region; accessKey; secretKey; bucket. ttlHours, encryptKey and sourceDate are optional and follow the same semantics as Inlay_S3_GET. thumbnails defaults to true; set false to skip pre-warming the thumbnail cache for binary-only flows.

Signature

Inlay_S3_PRECACHE ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "config" ; "<config-key>" ; JSONString ] ;
    [ "paths" ; List (
        "<object-path-1>" ;
        "<object-path-2>"
    ) ; JSONString ]
  ) )

Parameters

  • JSONSetElementRequired

    Required argument for this call pattern.

Returns

Unknown

Return behavior is not explicitly documented in the registration comment.

Script Pattern

Minimal call

Inlay_S3_PRECACHE ( "{""ok"":true}" )

Use Cases

  • Use this function to automate S3-backed FileMaker workflows with repeatable scripts.

Notes / Caveats

  • Network availability and endpoint latency directly affect response time.
  • This call returns before long-running operations fully finish.

Related Functions

SMPTE Timecode

1 function

Inlay_TIMECODE

Canonical SMPTE timecode API.

SMPTE TimecodeReturns JSON

action patterns: normalize(tc, rate) convert(value, fromType, fromRate, toType, [toRate], [optionsJSON]) parse(value, rate) parts(tc, rate) isValid(value, rate) rateInfo(rate) | ratePlayback(rate) | rateTimebase(rate) | rateNtsc(rate) add(tcA, tcB, rate) | subtract(tcA, tcB, rate) | compare(tcA, tcB, rate) scale(tc, factor, rate) | mod(tc, divisor, rate) negate(tc, rate) | abs(tc, rate) | rebase(tc, fromRate, toRate)

convert types: timecode | frames | seconds | ticks | feet optionsJSON: filmFormat = 35mm4 (default) | 35mm3 | 35mm2 | 16mm; mode = rebase (default) | runtime rate tokens: 23.98/23.976, 24, 25, 29.97/29.97ndf, 29.97df, 30, 47.95, 48, 50, 59.94/59.94ndf, 59.94df, 60

Returns JSON on all actions. Success is {"ok":true,"action":"...",...}; failures are {"ok":false,"message":"..."}. Named form example: Inlay_TIMECODE({ "_inlay": true, "action": "tc_to_frames", "arg1": "01:00:00:00", "arg2": "23.976" })

Signature

Inlay_TIMECODE ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "action" ; "<action-name>" ; JSONString ] ;
    [ "arg1" ; "<primary-input>" ; JSONString ]
  ) )

Parameters

  • actionRequired

    Operation token. Choose one of the actions below.

    Conversions
    normalize
    Re-express a frame count or timecode as a valid SMPTE string at the same rate.
    convert
    Convert a timecode or frame count to a target type (smpte, frames, seconds, feet+frames).
    rebase
    Change the frame rate of a timecode, adjusting its value to preserve runtime.
    Parsing
    parse
    Parse a timecode string and return its components as JSON.
    parts
    Return HH, MM, SS, FF components of a timecode as a JSON object.
    isValid
    Return 1 if the timecode is structurally valid for the given rate, 0 otherwise.
    Rate info
    rateInfo
    Return metadata about a rate token (numerator, denominator, drop-frame flag).
    ratePlayback
    Return the playback speed of a rate as a decimal (e.g. 29.97).
    rateTimebase
    Return the timebase of a rate (e.g. 30 for 29.97df).
    rateNtsc
    Return 1 if the rate is an NTSC variant, 0 otherwise.
    Arithmetic
    add
    Add two timecodes or a timecode and a frame offset.
    subtract
    Subtract one timecode from another.
    compare
    Compare two timecodes; returns -1, 0, or 1.
    scale
    Multiply a timecode by a numeric factor.
    mod
    Return the remainder after dividing one timecode by another.
    negate
    Negate a timecode (flip its sign).
    abs
    Return the absolute value of a timecode.
  • arg1Required

    Primary input for the selected action. Usually a timecode string, numeric value, or rate token depending on action.

  • arg2Optional

    Second action-specific argument. Commonly rate, source type, comparison value, or numeric factor.

  • arg3Optional

    Third action-specific argument. Commonly fromRate, toType, or tcB depending on action.

  • arg4Optional

    Fourth action-specific argument. Commonly toType or rate depending on action.

  • arg5Optional

    Fifth action-specific argument. Used by convert for optional toRate.

  • optionsJSONOptional

    Optional JSON settings. convert currently supports filmFormat (35mm4, 35mm3, 35mm2, 16mm) and mode (rebase or runtime).

    {"filmFormat":"35mm4","mode":"runtime"}

Returns

JSON string

Returns JSON for every action, including normalized values, scalar conversion results, and structured parse or rate metadata.

Script Pattern

Normalize shorthand SMPTE input

Use normalize when operators enter shorthand values and you want canonical SMPTE text back.

Set Variable [ $tc ;
    Inlay_TIMECODE ( "normalize" ; "1:2:3:4" ; "23.98" )
]

Argument context

  • action

    Operation token. Choose one of the actions below.

  • arg1

    Primary input for the selected action. Usually a timecode string, numeric value, or rate token depending on action.

  • arg2

    Second action-specific argument. Commonly rate, source type, comparison value, or numeric factor.

Convert timecode to frames

convert is the main bridge between timecode, frames, seconds, ticks, and feet+frames representations.

Set Variable [ $frames ;
    Inlay_TIMECODE (
        "convert" ;
        "01:00:00:00" ;
        "timecode" ;
        "24" ;
        "frames"
    )
]

Argument context

  • action

    Operation token. Choose one of the actions below.

  • arg1

    Primary input for the selected action. Usually a timecode string, numeric value, or rate token depending on action.

  • arg2

    Second action-specific argument. Commonly rate, source type, comparison value, or numeric factor.

  • arg3

    Third action-specific argument. Commonly fromRate, toType, or tcB depending on action.

  • arg4

    Fourth action-specific argument. Commonly toType or rate depending on action.

Convert frames to feet+frames

Pass optionsJSON when you need a non-default film stock layout or runtime-preserving cross-rate conversion.

Set Variable [ $feet ;
    Inlay_TIMECODE (
        "convert" ;
        "864" ;
        "frames" ;
        "24" ;
        "feet" ;
        "" ;
        "{""filmFormat"":""35mm4""}"
    )
]

Argument context

  • action

    Operation token. Choose one of the actions below.

  • arg1

    Primary input for the selected action. Usually a timecode string, numeric value, or rate token depending on action.

  • arg2

    Second action-specific argument. Commonly rate, source type, comparison value, or numeric factor.

  • arg3

    Third action-specific argument. Commonly fromRate, toType, or tcB depending on action.

  • arg4

    Fourth action-specific argument. Commonly toType or rate depending on action.

  • arg5

    Fifth action-specific argument. Used by convert for optional toRate.

  • optionsJSON

    Optional JSON settings. convert currently supports filmFormat (35mm4, 35mm3, 35mm2, 16mm) and mode (rebase or runtime).

Inspect frame-rate metadata

Use rateInfo to learn playback, timebase, and drop-frame status before building downstream workflow logic.

Set Variable [ $rate ;
    Inlay_TIMECODE ( "rateInfo" ; "29.97df" )
]

Argument context

  • action

    Operation token. Choose one of the actions below.

  • arg1

    Primary input for the selected action. Usually a timecode string, numeric value, or rate token depending on action.

Add two timecodes at the same rate

Arithmetic actions work on parsed SMPTE values and enforce an explicit rate token.

Set Variable [ $sum ;
    Inlay_TIMECODE (
        "add" ;
        "00:59:30;00" ;
        "00:00:45;00" ;
        "29.97df"
    )
]

Argument context

  • action

    Operation token. Choose one of the actions below.

  • arg1

    Primary input for the selected action. Usually a timecode string, numeric value, or rate token depending on action.

  • arg2

    Second action-specific argument. Commonly rate, source type, comparison value, or numeric factor.

  • arg3

    Third action-specific argument. Commonly fromRate, toType, or tcB depending on action.

Use Cases

  • Normalize operator-entered timecode before storing it in canonical SMPTE format.
  • Convert between timecode, frame counts, runtime seconds, Premiere ticks, and film feet+frames inside FileMaker scripts.
  • Perform frame-accurate arithmetic and comparison at explicit SMPTE rates, including drop-frame workflows.

Notes / Caveats

  • All actions return JSON. Success responses include ok: true and the selected action; validation failures return ok: false with a message.
  • 29.97 and 59.94 default to non-drop-frame. Use 29.97df or 59.94df explicitly when you need drop-frame semantics.
  • optionsJSON is only meaningful for actions that support optional behavior, primarily convert.

Related Functions

No direct related functions listed.

Video / Audio

11 functions

Inlay_VIDEO_METADATA

Analyzes a media file and returns JSON metadata (format, streams, duration, frame information).

Video / AudioReturns JSON

Optional FFprobePath overrides the analysis tool path. InputPath accepts: a plain path, file:/…, filemac:/…, or filewin:/… URL.

Signature

Inlay_VIDEO_METADATA ( InputPath { ; FFprobePath } )

Parameters

  • InputPathRequired

    Absolute local source media path.

  • FFprobePathOptional

    Absolute path override for ffprobe executable.

Returns

JSON string

Returns JSON media-analysis details such as streams, duration, and format metadata.

Script Pattern

Analyze media file

Inlay_VIDEO_METADATA ( "/Users/shared/media/fishing.mov" )

Use Cases

  • Read stream/frame metadata before choosing transcode presets.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_TRANSCODE

Starts a media transcode job (non-blocking).

Video / AudioOpens UIReturns JSON

Returns immediately with {"ok":true,"status":"started","job_id":"...","status_path":"...","result_path":"..."}. A cancelable progress window is shown while encoding.

SIMPLE MODE, 2 arguments: Inlay_TRANSCODE ( InputPath ; OutputPath ) Transcodes the source to H.264 MP4 with AAC audio, browser-ready (faststart/hinted). OutputPath should end in .mp4. Optionally pass a JSON array as a 3rd argument to override FFmpeg args, e.g. ["-c:v","libx264","-crf","18"].

ADVANCED MODE, 1 argument: Inlay_TRANSCODE ( AdvancedJobJson ) Pass a single JSON object to drive the full FFmpeg command. Required fields: inputs [array of path objects] and outputs [array of path + args objects]. Optional: global_args; filter_complex; job_id; ffmpeg_path; ffprobe_path; metadata with tape_name and master_clip_name. Enables multiple outputs from one pass (for example 1080p + proxy + poster PNG), plus filter_complex graphs and arbitrary stream mapping.

Poll result_path for {"ok":true,"status":"done"}. Path args accept: bare HFS (Macintosh HD:Users:…); filemac:/…; file:/…; filewin:/…; or POSIX path.

NAMED FORM example -- legacy: Inlay_TRANSCODE({ "_inlay": true, "inputPath": "/in.mov", "outputPath": "/out.mp4", "ffmpegArgs": ["-c:v", "libx264", "-crf", "18"] }) NAMED FORM example -- advanced: Inlay_TRANSCODE({ "_inlay": true, "advancedJob": { "inputs": [{"path": "/in.mov"}], "outputs": [{"path": "/out.mp4", "args": ["-c:v", "libx264"]}] } })

Signature

Inlay_TRANSCODE ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "inputPath" ; "<input-path>" ; JSONString ] ;
    [ "outputPath" ; "<output-path>" ; JSONString ]
  ) )

Parameters

  • InputPathSimple, required

    Absolute path to the source media file. Accepts HFS (Macintosh HD:…), filemac:/…, file:/…, filewin:/…, or POSIX path.

  • OutputPathSimple, required

    Absolute path for the output file, typically ending in .mp4. Same path formats as InputPath.

  • FFmpegArgsJsonSimple, optional

    JSON array of FFmpeg CLI tokens that override the default H.264 settings, e.g. ["-crf","18"]. Omit to use the built-in H.264 MP4 preset.

  • AdvancedJobJsonAdvanced, replaces all above

    Pass a JSON object as the only argument to take full control: multiple outputs, filter_complex graphs, custom stream mapping. Required fields: inputs (array of {path}), outputs (array of {path, args}). When used, InputPath and OutputPath are not needed.

Returns

Status JSON

Opens a native progress window and returns immediate status JSON for the started job.

Script Pattern

Simple (H.264 MP4, default)

Two arguments are all you need. The plugin transcodes to browser-ready H.264 MP4 with AAC audio and faststart/hinting enabled automatically.

Set Variable [ $job ;
    Inlay_TRANSCODE (
        "/Users/shared/media/source.mov" ;
        "/Users/shared/media/output.mp4"
    )
]

Argument context

  • InputPath

    Absolute path to the source media file. Accepts HFS (Macintosh HD:…), filemac:/…, file:/…, filewin:/…, or POSIX path.

  • OutputPath

    Absolute path for the output file, typically ending in .mp4. Same path formats as InputPath.

Advanced (hi-res + proxy + poster in one pass)

Pass a single JSON object as the only argument. filter_complex splits the source once so all three outputs share one decode pass, no re-reading the file.

Set Variable [ $job ;
    Inlay_TRANSCODE (
        "{
  ""global_args"": [""-y""],
  ""inputs"": [
    { ""path"": ""/Volumes/Media/source.mov"" }
  ],
  ""filter_complex"": ""[0:v]split=3[vhires][vproxy_src][vpost_src];[vproxy_src]scale=960:540[vproxy];[vpost_src]thumbnail=300[vposter]"",
  ""outputs"": [
    {
      ""path"": ""/Volumes/Media/output_1080p.mp4"",
      ""args"": [""-map"",""[vhires]"",""-map"",""0:a?"",""-c:v"",""libx264"",""-preset"",""medium"",""-crf"",""20"",""-pix_fmt"",""yuv420p"",""-movflags"",""+faststart"",""-c:a"",""aac"",""-b:a"",""192k""]
    },
    {
      ""path"": ""/Volumes/Media/output_proxy.mp4"",
      ""args"": [""-map"",""[vproxy]"",""-map"",""0:a?"",""-c:v"",""libx264"",""-preset"",""fast"",""-crf"",""28"",""-c:a"",""aac"",""-b:a"",""96k""]
    },
    {
      ""path"": ""/Volumes/Media/poster.png"",
      ""args"": [""-map"",""[vposter]"",""-frames:v"",""1""]
    }
  ]
}"
    )
]

Argument context

  • AdvancedJobJson

    Pass a JSON object as the only argument to take full control: multiple outputs, filter_complex graphs, custom stream mapping. Required fields: inputs (array of {path}), outputs (array of {path, args}). When used, InputPath and OutputPath are not needed.

Use Cases

  • Transcode any source video to browser-ready H.264 MP4 with just two arguments, no FFmpeg knowledge required.
  • Produce a hi-res delivery file, a smaller proxy, and a poster image all in one pass using the advanced JSON mode.
  • Automate post-production workflows: trigger a transcode from a FileMaker script and poll the result file until done.

Notes / Caveats

  • Returns immediately; transcoding happens in the background with a native progress window. Poll the result_path file in a script loop to detect completion.
  • The progress window can be cancelled by the user. Check the result JSON for ok: false and status: "cancelled" to handle early exit.

Related Functions

Inlay_INSTALL_FFMPEG

Installs FFmpeg, FFprobe, and FFplay for Inlay media features.

Video / AudioActionReturns JSON

Pass a JSON object with download URLs: {"ffmpeg":"...","ffprobe":"...","ffplay":"..."}. Returns the final install result JSON when complete.

Signature

Inlay_INSTALL_FFMPEG ( UrlsJson )

Parameters

  • UrlsJsonRequired

    Required argument for this call pattern.

Returns

JSON string

Returns final install-result JSON after tool install mode completes.

Script Pattern

Install using Homebrew

Inlay_INSTALL_FFMPEG ( "brew" )

Install using explicit binary URLs

Inlay_INSTALL_FFMPEG ( "{""ffmpeg"":""https://cdn.example.com/tools/ffmpeg"",""ffprobe"":""https://cdn.example.com/tools/ffprobe"",""ffplay"":""https://cdn.example.com/tools/ffplay""}" )

Use Cases

  • Provision FFmpeg tools on macOS hosts before enabling advanced video flows.

Notes / Caveats

  • Install step may take time based on package manager/network speed; run in admin workflows, not latency-sensitive scripts.

Related Functions

Inlay_INSTALL_WHISPER

Installs the whisper-cli binary (and on macOS the ggml-metal.metallib shader) into the Inlay helper data dir.

Video / AudiomacOS onlyUpdatedReturns JSON

Required once per workstation before Inlay_TRANSCRIBE can run. Downloads are SHA-256-verified, installed atomically, and progress is shown in a native window. See the Inlay TechBlog for build/hosting guidance.

Signature

Inlay_INSTALL_WHISPER ( UrlsJson )

Parameters

  • UrlsJsonRequired

    JSON object describing the artifacts to install. Required keys: `whisper_cli` (https URL of the whisper-cli binary), `sha256_whisper_cli` (64-char lowercase hex). On macOS also required: `metal_shaders` (https URL of ggml-metal.metallib) and `sha256_metal_shaders`. Optional: `force` (boolean, defaults to false; when true, reinstalls even if the SHA already matches the on-disk file).

Returns

JSON string

`{"ok":true,"status":"installed"|"already_installed","paths":{"whisper_cli":"...","metal_shaders":"..."}}` on success. On failure, `{"ok":false,"error_code":"...","message":"..."}` with codes including `download_failed` (hash mismatch or HTTP error), `invalid_args`, and `internal_error`.

Script Pattern

Minimal call

Inlay_INSTALL_WHISPER ( "{""ok"":true}" )

Use Cases

  • Provision a workstation for offline transcription before any Inlay_TRANSCRIBE call.
  • Re-install with `force:true` to upgrade to a new whisper-cli build after re-hosting the binary.

Notes / Caveats

  • macOS only. Calls from unsupported platforms return an error response.
  • The whisper-cli binary should be Mach-O universal (arm64+x86_64) for cross-architecture macOS support.
  • Models are installed separately via Inlay_WHISPER_MODEL_INSTALL.

Related Functions

Inlay_WHISPER_MODEL_INSTALL

Downloads a GGML whisper.cpp model into the Inlay helper data dir.

Video / AudiomacOS onlyUpdatedReturns JSON

Required once per model before Inlay_TRANSCRIBE can use it. URLs and SHA-256s are baked into the plugin source (trust boundary; arbitrary URLs are not accepted). Models range from 75 MB to 3 GB depending on the variant; a native progress window shows the download.

Signature

Inlay_WHISPER_MODEL_INSTALL ( ModelNameOrJson )

Parameters

  • ModelNameOrJsonRequired

    either a bare model-name string (one of `tiny`, `tiny.en`, `base`, `base.en`, `small`, `small.en`, `medium`, `medium.en`, `large-v3`, `large-v3-turbo`) or a JSON object `{"model":"<name>","force":false}`. When `force` is true, the model is re-downloaded even if the SHA already matches the on-disk file.

Returns

JSON string

`{"ok":true,"status":"installed"|"already_installed","model":"<name>","path":"<absolute-path>","bytes":N}` on success. On failure, `{"ok":false,"error_code":"download_failed"|"invalid_args"|"internal_error","message":"..."}`. SHA-256 mismatch returns `download_failed` and the partial file is removed.

Script Pattern

Minimal call

Inlay_WHISPER_MODEL_INSTALL ( "{""ok"":true}" )

Use Cases

  • Pre-flight setup: install the model your transcribe workflow needs before any user-facing call.
  • Multi-model workflows: install `small.en` for fast turnaround AND `large-v3` for archival accuracy, then choose per job at Inlay_TRANSCRIBE time.

Notes / Caveats

  • macOS only. Calls from unsupported platforms return an error response.
  • `.en` models are English-only and noticeably faster/smaller. Multilingual variants (no `.en` suffix) handle 99+ languages with whisper auto-detect.
  • Downloads stream-verify, so a corrupted partial file never lands at the model path.

Related Functions

Inlay_TRANSCRIBE

Starts an offline speech-to-text job using whisper.cpp.

Video / AudiomacOS onlyUpdatedReturns JSON

Non-blocking: returns immediately with a job id and opens a native progress window. Poll Inlay_TRANSCRIBE_STATUS, cancel via Inlay_TRANSCRIBE_CANCEL, or attach an onCompleteScript callback to handle terminal status. See the Inlay TechBlog for output format details and boundaryMode behavior.

Signature

Inlay_TRANSCRIBE ( JSONSetElement ( "{}" ;
    [ "_inlay"    ; True       ; JSONBoolean ] ;
    [ "inputPath" ; "<input-path>" ; JSONString ] ;
    [ "model"     ; "base.en"  ; JSONString ] ;
    [ "outputs"   ; "<outputs-json-array>" ; JSONString ] ;
    [ "videoLog"  ;
        JSONSetElement ( "{}" ;
          [ "frameRate"     ; 29.97 ; JSONNumber ] ;
          [ "timecodeStart" ; "00:00:00:00" ; JSONString ] ;
          [ "boundaryMode"  ; "auto" ; JSONString ]
        )
      ; JSONObject ] ;
    [ "onCompleteScript" ; "<script-name>" ; JSONString ]
  ) )

Parameters

  • ArgsJsonRequired

    JSON object. Required keys: `_inlay`:true; one of `inputPath` OR (`s3Bucket`+`s3Key`); `model` (tiny, tiny.en, base, base.en, small, small.en, medium, medium.en, large-v3, large-v3-turbo); `outputs` (non-empty array of {format, path} where format is text, json, srt, vtt, or video_log_json). Optional keys: `language` (ISO-639-1), `translate` (boolean), `s3Region`, `s3Endpoint`, `onCompleteScript`, `onCompleteScriptFile`, `onCompleteScriptParam`, `videoLog`.

  • videoLogOptional

    tuning for video_log_json output. Keys: `source`, `timecodeStart`, `frameRate`, `pauseThresholdSeconds`, `minBlockSeconds`, `maxBlockSeconds`, `boundaryMode` (one of: auto, video_fade_to_black, scene_change, none, conservative, aggressive, speaker_change, topic_shift). All keys individually optional.

Returns

Status JSON

`{"ok":true,"status":"started","job_id":"tr_..."}` on accepted submission. Failures return `{"ok":false,"error_code":"...","message":"..."}` with codes `whisper_not_installed`, `model_not_installed`, `ffmpeg_not_installed`, `invalid_args`, or `internal_error`. Terminal status (`done`, `error`, `cancelled`) surfaces via Inlay_TRANSCRIBE_STATUS or onCompleteScript.

Script Pattern

Minimal call

Inlay_TRANSCRIBE ( "{""ok"":true}" )

Full call pattern

Inlay_TRANSCRIBE ( "{""ok"":true}" ; "example" )

Use Cases

  • Generate searchable SRT/VTT subtitles from interview footage as a background script step.
  • Produce a video_log_json editorial log of a promo reel for ingest into NLE/MAM/DAM tools.
  • Transcribe audio-only files (.mp3/.wav/.m4a) with `boundaryMode:"none"` to skip the FFmpeg pre-pass.
  • Fire-and-forget with `onCompleteScript` so the FM script returns immediately and a callback handles the result.

Notes / Caveats

  • macOS only. Calls from unsupported platforms return an error response.
  • Prerequisites: Inlay_INSTALL_WHISPER, Inlay_WHISPER_MODEL_INSTALL (for the chosen model), and Inlay_INSTALL_FFMPEG.
  • Job state lives in plugin memory for the FileMaker session; FM quit drops the registry. Use Inlay_TRANSCRIBE_CLEAR_ALL to reset mid-session.
  • The progress window can be cancelled by the user; the job records `status:"cancelled"` and any onCompleteScript still fires for that terminal state.
  • inputPath accepts POSIX, filemac:/, file:/, filewin:/, and bare HFS forms.

Related Functions

Inlay_TRANSCRIBE_CANCEL

Requests cancellation of an in-flight Inlay_TRANSCRIBE job.

Video / AudiomacOS onlyUpdatedReturns JSON

Writes a sentinel file the helper polls every ~1 s; on detection it terminates the active whisper-cli / FFmpeg child process and records `status:"cancelled"`.

Signature

Inlay_TRANSCRIBE_CANCEL ( JobId )

Parameters

  • JobIdRequired

    the opaque id returned by Inlay_TRANSCRIBE (format `tr_<pid>_<unix_ms>_<seq>`).

Returns

Status JSON

`{"ok":true,"accepted":true,"job_id":"..."}` if the sentinel was written, `{"ok":true,"accepted":false,"reason":"not_running","status":"<terminal>"}` if the job has already finished, or `{"ok":false,"reason":"missing"}` if the job id is not in the in-memory registry.

Script Pattern

Minimal call

Inlay_TRANSCRIBE_CANCEL ( "example" )

Use Cases

  • Cancel a long-running transcription when the user closes the parent record or aborts the workflow.
  • Force-stop a runaway job from an admin layout.

Notes / Caveats

  • macOS only. Calls from unsupported platforms return an error response.
  • Cancellation is cooperative: the helper kills child processes on the next ~1 s polling tick, so the actual terminal state may lag the cancel call by a second.
  • The onCompleteScript callback (if any) still fires for the `cancelled` terminal state.

Related Functions

Inlay_TRANSCRIBE_STATUS

Returns the current state of an Inlay_TRANSCRIBE job.

Video / AudiomacOS onlyUpdatedReturns JSON

Designed for FM polling: call repeatedly on a timer or in a script loop until status becomes terminal.

Signature

Inlay_TRANSCRIBE_STATUS ( JobId )

Parameters

  • JobIdRequired

    the opaque id returned by Inlay_TRANSCRIBE.

Returns

Status JSON

`{"ok":true,"kind":"transcribe","job_id":"...","status":"<state>","progress_pct":N,"stage":"<stage>","started_at":N,"updated_at":N,...}`. `status` is one of `missing` (unknown job), `starting`, `downloading` (S3), `extracting_audio` (FFmpeg pre-process), `transcribing` (whisper-cli running), `done`, `error`, or `cancelled`. Once known, the payload also carries `language_detected`, `duration_s`, and on `done` an `outputs[]` array with each generated file's `format`, `path`, and `bytes`. On `error` the payload also carries `error_code` and `error`. Unknown job ids return `status:"missing"` rather than an error.

Script Pattern

Minimal call

Inlay_TRANSCRIBE_STATUS ( "example" )

Use Cases

  • Drive a FileMaker progress UI by repeatedly querying STATUS and updating a layout while the user works elsewhere.
  • Decide branching logic on terminal state: import the transcript on `done`, surface an error dialog on `error`, do nothing on `cancelled`.
  • Confirm a job exists in the registry (vs `missing`) before calling Inlay_TRANSCRIBE_CANCEL or Inlay_TRANSCRIBE_FORGET.

Notes / Caveats

  • macOS only. Calls from unsupported platforms return an error response.
  • This call is cheap (it reads a small status JSON file the helper updates as it works). Polling at 0.5-1 s is fine.
  • Status is reset when the plugin unloads (FM quit or extension toggle). Surviving status across FM restart is not supported.

Related Functions

Inlay_TRANSCRIBE_LIST_JOBS

Diagnostic listing of every Inlay_TRANSCRIBE job currently tracked in this FileMaker session.

Video / AudiomacOS onlyUpdatedReturns JSON

Signature

Inlay_TRANSCRIBE_LIST_JOBS

Parameters

This function takes no parameters.

Returns

Status JSON

`{"ok":true,"jobs":[ {"job_id":"...","status":"...","input_filename":"...","model":"...","started_at_ms":N,"has_callback":bool}, ... ]}`. Empty `jobs[]` array when no transcribe calls have run this session.

Script Pattern

Minimal call

Inlay_TRANSCRIBE_LIST_JOBS

Use Cases

  • Confirm Inlay_TRANSCRIBE actually registered a job (vs. failed pre-spawn).
  • Inspect leftover registry entries before invoking Inlay_TRANSCRIBE_CLEAR_ALL.
  • Surface running/finished jobs in an admin dashboard.

Notes / Caveats

  • macOS only. Calls from unsupported platforms return an error response.
  • Jobs persist for the FileMaker session and drop only when the plugin unloads (FM quit / extension toggle).
  • `has_callback` is true if the job was started with an onCompleteScript registration that is still pending.

Related Functions

Inlay_TRANSCRIBE_FORGET

Drops a single transcribe job from the plugin's in-memory registry.

Video / AudiomacOS onlyNewReturns JSON

The on-disk status file is unlinked and any pending onCompleteScript watcher is cancelled so it won't fire later even if the helper writes a terminal status.

Signature

Inlay_TRANSCRIBE_FORGET ( JobId )

Parameters

  • JobIdRequired

    the opaque id returned by Inlay_TRANSCRIBE.

Returns

Status JSON

`{"ok":true,"removed":true,"job_id":"..."}` if the entry existed and was removed, or `{"ok":true,"removed":false,"reason":"missing","job_id":"..."}` if the job id was unknown.

Script Pattern

Minimal call

Inlay_TRANSCRIBE_FORGET ( "example" )

Use Cases

  • Clean up completed jobs once their results have been imported into FileMaker.
  • Suppress a stale onCompleteScript invocation when the workflow context has changed.
  • Drop a single bad entry without resetting the whole session via Inlay_TRANSCRIBE_CLEAR_ALL.

Notes / Caveats

  • macOS only. Calls from unsupported platforms return an error response.
  • This does NOT kill the underlying whisper-cli / FFmpeg subprocess. Use Inlay_TRANSCRIBE_CANCEL first when you need to stop a running job before forgetting it.
  • Idempotent: calling FORGET on an unknown or already-forgotten id is safe.

Related Functions

Inlay_TRANSCRIBE_CLEAR_ALL

Drops every transcribe job from the plugin's in-memory registry, unlinks every on-disk status file, and cancels every pending onCompleteScript watcher.

Video / AudiomacOS onlyNewReturns JSON

Signature

Inlay_TRANSCRIBE_CLEAR_ALL

Parameters

This function takes no parameters.

Returns

Status JSON

`{"ok":true,"removed":N}` where N is the number of registry entries that were removed.

Script Pattern

Minimal call

Inlay_TRANSCRIBE_CLEAR_ALL

Use Cases

  • Session reset before starting a new workflow to make sure stale jobs from a prior context don't drive callbacks.
  • Diagnostic cleanup when the registry has accumulated entries from cancelled or hung jobs.
  • Forced cleanup before plugin reload.

Notes / Caveats

  • macOS only. Calls from unsupported platforms return an error response.
  • This does NOT kill running whisper-cli / FFmpeg subprocesses. Cancel running jobs individually via Inlay_TRANSCRIBE_CANCEL first when needed.
  • After CLEAR_ALL, Inlay_TRANSCRIBE_LIST_JOBS returns an empty `jobs[]` and every prior job id will return `status:"missing"` from Inlay_TRANSCRIBE_STATUS.

Related Functions

Licensing

3 functions

Inlay_REGISTER_LICENSE

Activates this plugin installation using a valid Inlay license key (offline key or platform key).

LicensingReturns JSON

Returns {"ok":true,...} on success or {"ok":false,"message":"..."} when activation fails. Activation remains in effect across restarts.

Signature

Inlay_REGISTER_LICENSE ( Key )

Parameters

  • KeyRequired

    Required argument for this call pattern.

Returns

JSON string

Returns activation success/error JSON for the provided license key.

Script Pattern

Activate plugin license

Inlay_REGISTER_LICENSE ( "eyJwcm9kdWN0IjoiaW5sYXkiLC4uLn0.Dd7A..." )

Use Cases

  • Activate a newly provisioned workstation during onboarding.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_LICENSE_STATUS

Returns current license status as JSON.

LicensingReturns JSON

Licensed response includes identity and expiration fields; unlicensed response is {"ok":true,"licensed":false}. Use this to gate scripts and show license state in your solution UI.

Signature

Inlay_LICENSE_STATUS

Parameters

This function takes no parameters.

Returns

JSON string

Returns the current local license state JSON for script gating and UI display.

Script Pattern

Read current license state

Inlay_LICENSE_STATUS

Use Cases

  • Gate premium script paths to licensed installations only.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Inlay_PLATFORM_DEACTIVATE

DEPRECATED.

LicensingReturns JSON

Alias for Inlay_DEACTIVATE preserved for one release cycle [0.2.6]; scheduled for removal in 0.2.7. Update scripts to call Inlay_DEACTIVATE. The response adds {"deprecated": true, "deprecation_note": "Inlay_PLATFORM_DEACTIVATE is deprecated; use Inlay_DEACTIVATE"} so a script can detect usage in logs.

Signature

Inlay_PLATFORM_DEACTIVATE

Parameters

This function takes no parameters.

Returns

JSON string

Returns JSON confirming local activation state was released/cleared.

Script Pattern

Release current machine activation

Inlay_PLATFORM_DEACTIVATE

Use Cases

  • Release a seat before machine replacement or VM rotation.

Notes / Caveats

See example and related functions for usage context.

Related Functions

Update

1 function

Inlay_SELF_UPDATE

Checks for plugin updates (release, beta, nightly) and returns available versions for macOS/Windows.

UpdateReturns JSON

Can also apply an update when requested. Named form example: Inlay_SELF_UPDATE({ "_inlay": true, "currentVersionOverride": "0.2.5", "channel": "beta", "requestedVersion": "0.2.6", "platform": "macos", "applyUpdate": false })

Signature

Inlay_SELF_UPDATE ( JSONSetElement ( "{}" ;
    [ "_inlay" ; True ; JSONBoolean ] ;
    [ "channel" ; "<stable|beta>" ; JSONString ] ;
    [ "applyUpdate" ; False ; JSONBoolean ]
  ) )

Parameters

  • CurrentVersionOverrideOptional

    Current plugin version override for update comparison.

  • ChannelOptional

    Update channel to query (release, beta, nightly).

  • RequestedVersionOptional

    Target plugin version to evaluate or install.

  • PlatformOptional

    Platform override used when evaluating update availability.

  • ApplyUpdateOptional

    Set YES to apply the selected update; NO performs check-only behavior.

Returns

JSON string

Returns JSON describing available versions and update/apply status.

Script Pattern

Check latest release channel

Inlay_SELF_UPDATE

Check beta channel

Inlay_SELF_UPDATE ( "0.2.3" ; "beta" ; "0.2.4-beta.1" ; "macos" ; "NO" )

Use Cases

  • Check release/beta/nightly availability as part of admin maintenance workflows.

Notes / Caveats

See example and related functions for usage context.

Related Functions