Core
29 functions
Inlay_GET_BOOTTIME
Returns wall-clock uptime in milliseconds since boot, derived from clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW).
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
CacheBusterOptionalOptional argument. Omit to use the default behavior.
Returns
Returns runtime timing values used as a monotonic anchor for workflow logic.
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.
Response JSON: {"ok":true,"ip":"x.x.x.x"}.
Signature
Inlay_GET_PUBLIC_IPParameters
This function takes no parameters.
Returns
Returns WAN IP lookup results in JSON (success/error state plus IP value when available).
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.
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
IPorDNSRequiredHostname or IP address to probe for latency diagnostics.
Returns
Opens a native diagnostic window and returns immediate status JSON for launch state.
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.
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
CustomFunctionNameRequiredEntitled custom function name tied to the current licensee.
PayloadJsonRequiredJSON payload string containing inputs required by the custom workflow.
Returns
Returns custom-function execution status JSON tied to license entitlements.
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.
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_DEACTIVATEParameters
This function takes no parameters.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
Signature
Inlay_OPEN_LOGParameters
This function takes no parameters.
Returns
Attempts to open the active Inlay log file and returns success/error JSON.
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.
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
PathOrHostOptionalOptional argument. Omit to use the default behavior.
Returns
Return behavior is not explicitly documented in the registration comment. Availability: macOS only.
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.
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_FFMPEGParameters
This function takes no parameters.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
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 ( "{}" ;
[ "OutputPath?" ; "/Users/alice/Reports/Q1.xlsx" ; JSONString ] ;
[ "Sheets" ; "[{\"name\":\"Summary\",\"rows\":[[\"Item\",\"Total\"]]}]" ; JSONString ]
) )Parameters
JSONSetElementRequiredRequired argument for this call pattern.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
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
LabelRequiredRequired argument for this call pattern.
IPorDNSRequiredRequired argument for this call pattern.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
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
LabelRequiredRequired argument for this call pattern.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
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
LabelRequiredRequired argument for this call pattern.
IPorDNSRequiredRequired argument for this call pattern.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
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
LabelRequiredRequired argument for this call pattern.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
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_JOBSParameters
This function takes no parameters.
Returns
Return behavior is not explicitly documented in the registration comment.
Use Cases
- See example and related functions for usage context.
Notes / Caveats
See example and related functions for usage context.
Related Functions
Inlay_FINDER_INSTALL
Installs a Finder Quick Action into ~/Library/Services/ so the user can right-click any file in Finder and send it to FileMaker.
Accepts a JSON named-args object only.
Signature
Inlay_FINDER_INSTALL ( JSONSetElement ( "{}" ;
[ "WorkflowName" ; "send_to_fm" ; JSONString ] ;
[ "MenuNoun?" ; "FileMaker" ; JSONString ] ;
[ "OnReceiveScript?" ; "ImportClip" ; JSONString ] ;
[ "OnReceiveScriptFile?" ; "MySolution" ; JSONString ]
) )Parameters
WorkflowNameOptionalidentifier of a bundled workflow. v1 supports only "send_to_fm".
MenuNounOptionalthe noun appended to "Send to " in the Quick Action menu. Defaults to "FileMaker" when omitted or empty.
OnReceiveScriptOptionala FileMaker script to run each time a file is sent. When set, after writing the inbox the helper fires an fmp:// URL that runs this script; the script should call Inlay_FINDER_GETPATH to read the file envelope. Requires OnReceiveScriptFile.
OnReceiveScriptFileOptionalthe FileMaker database file (your solution's filename, e.g. "MySolution") that contains OnReceiveScript. This is your solution, NOT the file the user right-clicked. Required whenever OnReceiveScript is set.
Returns
Text. One of: "installed" (fresh install or version upgrade), "already_installed" (the bundled and installed versions match), or "error: <reason>".
Use Cases
- Push mode: set OnReceiveScript + OnReceiveScriptFile. Right-clicking a file and choosing "Send to <noun>" writes the inbox and triggers your script via an fmp:// URL; your script calls Inlay_FINDER_GETPATH to read the envelope {"Path":...,"Name":...,"Size":...,"Mtime":...}.
- Poll mode: omit OnReceiveScript and drain the inbox yourself with Inlay_FINDER_GETPATH on a script timer.
Notes / Caveats
- macOS only. Calls from unsupported platforms return an error response.
- Push mode requires the fmurlscript extended privilege ("Allow URL script execution") enabled on the privilege set used to open OnReceiveScriptFile, and that file must be open when a file is sent.
- Idempotent: safe to call on every solution open. The callback config is stored on disk, so push mode survives FileMaker restarts; you do not need to re-run this on every open.
- Windows equivalent: Inlay_ExplorerContext_INSTALL.
Related Functions
Inlay_FINDER_GETPATH
Pops the latest "Send to FileMaker" payload from the Finder inbox.
Returns the JSON envelope written when the user right-clicks a file in Finder and chooses "Send to FileMaker". The inbox is single-slot and consumed on read.
Signature
Inlay_FINDER_GETPATHParameters
This function takes no parameters.
Returns
Text. Either the JSON envelope {"Path":"...","Name":"...","Size":N,"Mtime":"..."} or empty string "" if the inbox is empty. On unexpected I/O error, returns "error: <reason>".
Use Cases
- Bind a button to Set Variable [ $payload; Value: Inlay_FINDER_GETPATH ] then branch on IsEmpty($payload) to detect whether anything is waiting.
- Use an OnTimer or layout-entry script trigger to drain the inbox automatically.
Notes / Caveats
- macOS only. Calls from unsupported platforms return an error response.
- Pair with Inlay_FINDER_INSTALL("send_to_fm") once during solution setup.
- Single-slot semantics: only the last "Send to FileMaker" action survives until consumed.
- Inbox: ~/Library/Application Support/Inlay/finder-inbox.json.
- Windows equivalent: Inlay_ExplorerContext_GETPATH.
Related Functions
Inlay_ExplorerContext_INSTALL
Registers an Explorer context-menu entry so right-clicking any file shows "Send to FileMaker".
Accepts a JSON named-args object only. On Windows 10 this appears at the top level; on Windows 11 it appears under "Show more options".
Signature
Inlay_ExplorerContext_INSTALL ( JSONSetElement ( "{}" ;
[ "WorkflowName" ; "send_to_fm" ; JSONString ] ;
[ "MenuNoun?" ; "FileMaker" ; JSONString ] ;
[ "OnReceiveScript?" ; "ImportClip" ; JSONString ] ;
[ "OnReceiveScriptFile?" ; "MySolution" ; JSONString ]
) )Parameters
WorkflowNameOptionalidentifier of a bundled workflow. v1 supports only "send_to_fm".
MenuNounOptionalthe noun appended to "Send to " in the menu. Defaults to "FileMaker" when omitted or empty.
OnReceiveScriptOptionala FileMaker script to run each time a file is sent. When set, after writing the inbox the helper fires an fmp:// URL that runs this script; the script should call Inlay_ExplorerContext_GETPATH to read the file envelope. Requires OnReceiveScriptFile.
OnReceiveScriptFileOptionalthe FileMaker database file (your solution's filename, e.g. "MySolution") that contains OnReceiveScript. This is your solution, NOT the file the user right-clicked. Required whenever OnReceiveScript is set.
Returns
Text. One of: "installed" (fresh install or noun/path change), "already_installed" (registry already matches), or "error: <reason>".
Use Cases
- Push mode: set OnReceiveScript + OnReceiveScriptFile. Right-clicking a file and choosing "Send to <noun>" writes the inbox and triggers your script via an fmp:// URL; your script calls Inlay_ExplorerContext_GETPATH to read the envelope {"Path":...,"Name":...,"Size":...,"Mtime":...}.
- Poll mode: omit OnReceiveScript and drain the inbox yourself with Inlay_ExplorerContext_GETPATH on a script timer.
Notes / Caveats
- Windows only. Calls from unsupported platforms return an error response.
- Push mode requires the fmurlscript extended privilege ("Allow URL script execution") enabled on the privilege set used to open OnReceiveScriptFile, and that file must be open when a file is sent.
- Idempotent: safe to call on every solution open. The callback config is stored on disk, so push mode survives FileMaker restarts; you do not need to re-run this on every open.
- macOS equivalent: Inlay_FINDER_INSTALL.
Related Functions
Inlay_ExplorerContext_GETPATH
Pops the latest "Send to FileMaker" payload from the Explorer inbox.
Returns the JSON envelope written when the user right-clicks a file in Explorer and chooses "Send to FileMaker". The inbox is single-slot and consumed on read.
Signature
Inlay_ExplorerContext_GETPATHParameters
This function takes no parameters.
Returns
Text. Either the JSON envelope {"Path":"...","Name":"...","Size":N,"Mtime":"..."} or empty string "" if the inbox is empty. On unexpected I/O error, returns "error: <reason>".
Use Cases
- Bind a button to Set Variable [ $payload; Value: Inlay_ExplorerContext_GETPATH ] then branch on IsEmpty($payload) to detect whether anything is waiting.
- Use an OnTimer or layout-entry script trigger to drain the inbox automatically.
Notes / Caveats
- Windows only. Calls from unsupported platforms return an error response.
- Pair with Inlay_ExplorerContext_INSTALL("send_to_fm") once during solution setup.
- Single-slot semantics: only the last "Send to FileMaker" action survives until consumed.
- Inbox: %LOCALAPPDATA%\Inlay\finder-inbox.json.
- macOS equivalent: Inlay_FINDER_GETPATH.
Related Functions
Inlay_FINDER_UNINSTALL
Removes the installed Finder Quick Action from ~/Library/Services/ and flushes the Services cache so the entry disappears from Finder immediately.
Signature
Inlay_FINDER_UNINSTALL ( workflowName )Parameters
workflowNameOptionalidentifier of the workflow to remove. v1 supports only "send_to_fm".
Returns
Text. One of: "uninstalled" (bundle was found and removed), "not_installed" (bundle was not present), or "error: <reason>".
Use Cases
- See example and related functions for usage context.
Notes / Caveats
- macOS only. Calls from unsupported platforms return an error response.
- Idempotent: safe to call even if never installed.
- Windows equivalent: Inlay_ExplorerContext_UNINSTALL.
Related Functions
Inlay_ExplorerContext_UNINSTALL
Removes the "Send to <noun>" shortcut from the user's SendTo folder and cleans up any legacy registry entry.
Signature
Inlay_ExplorerContext_UNINSTALL ( workflowName ; menuNoun )Parameters
workflowNameOptionalidentifier of the workflow to remove. v1 supports only "send_to_fm".
menuNounOptionalmust match the noun used at install time (default "FileMaker"). Used to locate the correct .lnk filename.
Returns
Text. One of: "uninstalled" (shortcut was found and removed), "not_installed" (shortcut was not present), or "error: <reason>".
Use Cases
- See example and related functions for usage context.
Notes / Caveats
- Windows only. Calls from unsupported platforms return an error response.
- Idempotent: safe to call even if never installed.
- macOS equivalent: Inlay_FINDER_UNINSTALL.
Related Functions
Inlay_RENDER_DROPZONE_HTML
Renders an HTML drop zone for a WebViewer.
When the user drags one file onto the WebViewer, the file's raw bytes are streamed to a loopback HTTP server inside the plugin and written to a temporary file. No Base64 conversion is involved and the file is never buffered whole in memory, so a drop larger than available RAM still works. Once the file is on disk, the drop-zone page calls the FileMaker script Inlay_DropZoneCallback, passing a JSON description of the temp file.
Signature
Inlay_RENDER_DROPZONE_HTML ( JSONSetElement ( "{}" ;
[ "PromptText?" ; "Drop_a_file_here" ; JSONString ] ;
[ "MaxSizeBytes?" ; 0 ; JSONNumber ] ;
[ "ImageUrl?" ; "" ; JSONString ]
) { ; SourceContainer } )Parameters
PromptTextOptionallabel shown inside the drop zone. Default "Drop a file here".
MaxSizeBytesOptionalreject drops larger than this many bytes. Omit or 0 for unlimited.
ImageUrlOptionalan image shown above the prompt text. Accepts an https URL or a data: URI. Omit for a text-only drop zone.
SourceContainerOptionala FileMaker container field whose image is shown above the prompt text. The plugin reads the container bytes and embeds them as a data: URI, picking the MIME automatically from the typed image stream (JPEG, PNG, GIF, BMP) or by sniffing the FILE stream for WebP or SVG. If the container holds bytes that are not a recognized image format, the call returns an error. Passing both ImageUrl and SourceContainer is rejected to keep intent explicit.
Returns
A JSON envelope. On success: ok:true plus url (set a WebViewer to this address), port, and token. On failure: ok:false plus message.
Use Cases
- See example and related functions for usage context.
Notes / Caveats
See example and related functions for usage context.
Related Functions
Inlay_TOTP_GENERATE_SECRET
Returns a random RFC 4648 base32 TOTP secret (uppercase, no padding).
Returns {"ok":true,"secret":"..."}. Optional ByteLength is the raw entropy size in bytes (10..=64, default 20). 20 bytes = 160 bits = 32 base32 chars, the RFC 4226 recommended size and what every authenticator app expects. Pair with Inlay_TOTP_PROVISIONING_URI and Inlay_TOTP_QR for enrollment.
Signature
Inlay_TOTP_GENERATE_SECRET ( { ByteLength } )Parameters
ByteLengthOptionalOptional argument. Omit to use the default behavior.
Returns
Return behavior is not explicitly documented in the registration comment.
Use Cases
- See example and related functions for usage context.
Notes / Caveats
See example and related functions for usage context.
Related Functions
Inlay_TOTP_PROVISIONING_URI
Builds an otpauth://totp/...
URI suitable for a QR code that authenticator apps (Google Authenticator, 1Password, Authy) can scan. Returns {"ok":true,"uri":"otpauth://..."}. Secret is base32. AccountName is typically the user's email or login. Optional Issuer is your app/company name (appears in the authenticator app entry). Digits (6..=8, default 6) and Period (15..=120 seconds, default 30) must match what your Inlay_TOTP_VERIFY uses. Algorithm is fixed to SHA1, the universally-supported choice. Pair with Inlay_TOTP_QR to render. Named form example: Inlay_TOTP_PROVISIONING_URI({ "Secret": "JBSWY3DPEHPK3PXP", "AccountName": "alice@example.com", "Issuer": "Acme Inc", "Digits": 6, "Period": 30 })
Signature
Inlay_TOTP_PROVISIONING_URI ( Secret ; AccountName ; { Issuer } ; { Digits } ; { Period } )Parameters
SecretRequiredRequired argument for this call pattern.
AccountNameRequiredRequired argument for this call pattern.
IssuerOptionalOptional argument. Omit to use the default behavior.
DigitsOptionalOptional argument. Omit to use the default behavior.
PeriodOptionalOptional argument. Omit to use the default behavior.
Returns
Return behavior is not explicitly documented in the registration comment.
Use Cases
- See example and related functions for usage context.
Notes / Caveats
See example and related functions for usage context.
Related Functions
Inlay_TOTP_QR
Renders an otpauth:// URI as a QR code.
When Format is "png" (default) returns a PNG container suitable for an image field or container. When Format is "html" returns {"ok":true,"html":"<img ...>"} text wrapping the data URL suitable for a WebViewer. PixelsPerModule (1..=20, default 6) controls the size of each QR cell in pixels. Typical otpauth URIs fit in QR version 6 and render in a few milliseconds. Named form example: Inlay_TOTP_QR({ "Uri": "otpauth://totp/Acme%20Inc:alice%40example.com?secret=JBSWY3DPEHPK3PXP&issuer=Acme%20Inc&digits=6&period=30&algorithm=SHA1", "Format": "png", "PixelsPerModule": 6 })
Signature
Inlay_TOTP_QR ( Uri ; { Format } ; { PixelsPerModule } )Parameters
UriRequiredRequired argument for this call pattern.
FormatOptionalOptional argument. Omit to use the default behavior.
PixelsPerModuleOptionalOptional argument. Omit to use the default behavior.
Returns
Return behavior is not explicitly documented in the registration comment.
Use Cases
- See example and related functions for usage context.
Notes / Caveats
See example and related functions for usage context.
Related Functions
Inlay_TOTP_NOW
Returns the current TOTP code for the given base32 secret.
Returns {"ok":true,"code":"482817"}. Optional Digits (6..=8, default 6) and Period (15..=120 seconds, default 30) match the values used at enrollment. Algorithm is HMAC-SHA1. Intended for admin preview and testing. Production logins should use Inlay_TOTP_VERIFY which accepts a clock-drift window. Named form example: Inlay_TOTP_NOW({ "Secret": "JBSWY3DPEHPK3PXP", "Digits": 6, "Period": 30 })
Signature
Inlay_TOTP_NOW ( Secret ; { Digits } ; { Period } )Parameters
SecretRequiredRequired argument for this call pattern.
DigitsOptionalOptional argument. Omit to use the default behavior.
PeriodOptionalOptional argument. Omit to use the default behavior.
Returns
Return behavior is not explicitly documented in the registration comment.
Use Cases
- See example and related functions for usage context.
Notes / Caveats
See example and related functions for usage context.
Related Functions
Inlay_TOTP_VERIFY
Verifies a user-entered TOTP Code against Secret using the current system time.
Returns {"ok":true,"valid":bool,"skew":int|null}. Window (0..=10, default 1) is the number of 30-second steps to accept on either side of T to tolerate clock drift; skew is the matched offset (-window..=window) or null when no match. Digits (6..=8, default 6) must match enrollment. Comparison is constant-time. The plugin does not track used codes; the FileMaker solution should store the last accepted T and reject replays. Named form example: Inlay_TOTP_VERIFY({ "Secret": "JBSWY3DPEHPK3PXP", "Code": "482817", "Window": 1, "Digits": 6 })
Signature
Inlay_TOTP_VERIFY ( Secret ; Code ; { Window } ; { Digits } )Parameters
SecretRequiredRequired argument for this call pattern.
CodeRequiredRequired argument for this call pattern.
WindowOptionalOptional argument. Omit to use the default behavior.
DigitsOptionalOptional argument. Omit to use the default behavior.
Returns
Return behavior is not explicitly documented in the registration comment.
Use Cases
- See example and related functions for usage context.
Notes / Caveats
See example and related functions for usage context.
Related Functions
Inlay_TOTP_WRAP
Encrypts a TOTP base32 secret with ChaCha20-Poly1305 using SHA-256(Passphrase) as the key.
Returns {"ok":true,"blob":"<base64url>"} where the blob encodes [12B random nonce | ciphertext | 16B Poly1305 tag]. Store this blob in the FileMaker user record instead of the raw secret. Pair with Inlay_TOTP_UNWRAP at login time. The Passphrase is expected to be a high-entropy server-side secret (e.g. one stored in a protected FM field, not a user password), since this uses a fast KDF rather than Argon2/PBKDF2.
Signature
Inlay_TOTP_WRAP ( Base32Secret ; Passphrase )Parameters
Base32SecretRequiredRequired argument for this call pattern.
PassphraseRequiredRequired argument for this call pattern.
Returns
Return behavior is not explicitly documented in the registration comment.
Use Cases
- See example and related functions for usage context.
Notes / Caveats
See example and related functions for usage context.
Related Functions
Inlay_TOTP_UNWRAP
Decrypts a blob produced by Inlay_TOTP_WRAP.
Returns {"ok":true,"secret":"<base32>"} on success or {"ok":false,"message":"decrypt_failed: ..."} on wrong passphrase, tampered blob, or any decode failure.
Signature
Inlay_TOTP_UNWRAP ( Blob ; Passphrase )Parameters
BlobRequiredRequired argument for this call pattern.
PassphraseRequiredRequired argument for this call pattern.
Returns
Return behavior is not explicitly documented in the registration comment.
Use Cases
- See example and related functions for usage context.
Notes / Caveats
See example and related functions for usage context.
Related Functions
Inlay_TOTP_BACKUP_GENERATE
Returns {"ok":true,"codes":["abcd-efgh",...]} with Count (1..=50, default 10) one-time backup codes.
Length (4..=32, default 8) is the number of characters per code excluding the dash; codes with length 6 or more are split at the midpoint by a single dash for legibility. Character set is lowercase base32. Show these to the user once at enrollment, store however you like (plain or hashed), and clear each one when used. The plugin does not track which codes have been used. Named form example: Inlay_TOTP_BACKUP_GENERATE({ "Count": 10, "Length": 8 })
Signature
Inlay_TOTP_BACKUP_GENERATE ( { Count } ; { Length } )Parameters
CountOptionalOptional argument. Omit to use the default behavior.
LengthOptionalOptional argument. Omit to use the default behavior.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
Signature
Inlay_INSPECT_CONTAINER ( Container )Parameters
containerRequiredFileMaker container field value to inspect.
Returns
Returns JSON metadata about the container stream and media properties when available.
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.
path accepts: bare HFS (Macintosh HD:Users:…), filemac:/…, file:/…, or a POSIX path (/Users/…).
Signature
Inlay_LOAD_IMAGE ( Path )Parameters
PathRequiredRequired argument for this call pattern.
Returns
Returns container data for the local file when the path is valid.
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.
Optional TtlHours, EncryptKey, and SourceDate control freshness and cached reuse. Named form example: Inlay_LOAD_REMOTE_IMAGE({ "Url": "https://example.com/image.jpg", "TtlHours": 24, "EncryptKey": "my-cache-passphrase", "SourceDate": "2026-04-01" }) Legacy keys url, ttlHours, encryptKey, sourceDate are accepted for one release cycle.
Signature
Inlay_LOAD_REMOTE_IMAGE ( JSONSetElement ( "{}" ;
[ "Url" ; "https://example.com/image.jpg" ; JSONString ]
) )Parameters
JSONSetElementRequiredRequired argument for this call pattern.
UrlOptionalOptional argument. Omit to use the default behavior.
JSONStringOptionalOptional argument. Omit to use the default behavior.
Returns
Returns container data for the downloaded image; cache settings can affect fetch behavior.
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.
Use direct credentials or Config; optional TtlHours, EncryptKey, and SourceDate control cached reuse. Named form example: Inlay_S3_GET({ "Config": "prod", "PathToFile": "media/2026/clip.mxf", "TtlHours": 24, "EncryptKey": "my-cache-passphrase", "SourceDate": "2026-04-01" }) Config: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. This is the config to read from or write to; it is NOT the same as ConfigKey in Inlay_S3_SET_CONFIG, which is a save-name. Legacy keys config, path, ttlHours, encryptKey, sourceDate are accepted for one release cycle.
Signature
Inlay_S3_GET ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ]
) )Parameters
ConfigKeyRequiredName of an S3 profile previously registered with Inlay_S3_SET_CONFIG. Use this mode for cleaner scripts.
SourcePathRequiredObject key path in the bucket (for example, posters/episode1/keyart.jpg).
DomainRequiredS3-compatible endpoint host when using direct-credentials mode.
RegionRequiredRegion identifier used for signing requests (for example, us-east-1).
AccessKeyRequiredAccess key ID for direct-credentials mode.
SecretKeyRequiredSecret access key for direct-credentials mode.
BucketRequiredBucket name that contains SourcePath.
TTLHoursOptionalCache freshness window in hours for local reuse.
EncryptKeyOptionalPassphrase used to encrypt/decrypt cached object bytes on disk.
SourceDateOptionalSource modified date used to force refresh when object changes.
Returns
Returns the object body as container data after access and caching checks.
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.
Sync/async behaviour is controlled by WaitForCompletion in Inlay_S3_SET_CONFIG.
Signature
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
ConfigRequireda 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.
DestinationFolderRequiredS3 key prefix, e.g. "media/2026" or "" for root.
SourceContainerRequiredthe FileMaker container value to upload.
MetadataOptionalJSON object of S3 object metadata.
DestinationFilenameOptionaloverride the container's filename.
TtlHoursOverrideOptionalcache TTL override.
EncryptKeyOverrideOptionalcache encryption key override.
Returns
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 / 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.
Supports optional metadata and destination filename, plus sync/async behavior via WaitForCompletion. Named form example: Inlay_S3_PUT_FILE({ "Config": "prod", "DestinationFolder": "media/2026", "Metadata": "{\"author\":\"alice\"}", "DestinationFilename": "clip.mp4", "TtlHoursOverride": 48, "EncryptKeyOverride": "my-cache-passphrase" }) Config: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. This is the config to read from or write to; it is NOT the same as ConfigKey in Inlay_S3_SET_CONFIG, which is a save-name. Legacy keys config, destinationFolder, etc. are accepted for one release cycle.
Signature
Inlay_S3_PUT_FILE ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "DestinationFolder" ; "media/2026" ; JSONString ]
) )Parameters
JSONSetElementRequiredRequired argument for this call pattern.
ConfigKeyOptionalName of the S3 profile previously registered with Inlay_S3_SET_CONFIG.
JSONStringOptionalOptional argument. Omit to use the default behavior.
DestinationFolderOptionalBucket folder/prefix where uploaded files should be stored.
Returns
Opens a native file picker and returns JSON describing upload status/result.
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.
Named form example: Inlay_S3_VERIFY({ "Config": "prod", "PathToFile": "media/2026/clip.mxf" }) Config: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. This is the config to read from or write to; it is NOT the same as ConfigKey in Inlay_S3_SET_CONFIG, which is a save-name. Legacy keys config, path are accepted for one release cycle.
Signature
Inlay_S3_VERIFY ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ]
) )Parameters
ConfigKeyRequiredNamed profile key from Inlay_S3_SET_CONFIG.
SourcePathRequiredObject key path to validate before downloading or rendering.
DomainRequiredEndpoint host for direct-credentials mode.
RegionRequiredRegion used for request signing.
AccessKeyRequiredAccess key ID for direct-credentials mode.
SecretKeyRequiredSecret access key for direct-credentials mode.
BucketRequiredBucket containing SourcePath.
Returns
Returns object-availability JSON without downloading the full object body.
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.
Named form example: Inlay_S3_VERIFY_HASH({ "Config": "prod", "PathToFile": "media/2026/clip.mxf", "ExpectedHash": "a1b2c3d4e5f67890..." }) Config: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. Legacy keys config, path, expectedHash are accepted for one release cycle.
Signature
Inlay_S3_VERIFY_HASH ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ] ;
[ "ExpectedHash" ; "a1b2c3d4e5f6..." ; JSONString ]
) )Parameters
JSONSetElementRequiredRequired argument for this call pattern.
ConfigKeyOptionalName of the S3 profile previously registered with Inlay_S3_SET_CONFIG.
JSONStringOptionalOptional argument. Omit to use the default behavior.
PathToFileOptionalOptional argument. Omit to use the default behavior.
ExpectedHashOptionalExpected SHA-256 hash (hex) used for integrity comparison.
Returns
Returns JSON hash verification results for the requested object.
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.
If no preview exists yet, one is generated and stored for reuse. Named form example: Inlay_S3_GET_THUMBNAIL({ "Config": "prod", "PathToFile": "media/2026/clip.mxf", "TtlHours": 24, "EncryptKey": "my-cache-passphrase", "SourceDate": "2026-04-01" }) Config: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. Legacy keys config, path, ttlHours, encryptKey, sourceDate are accepted for one release cycle.
Signature
Inlay_S3_GET_THUMBNAIL ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ]
) )Parameters
ConfigKeyRequiredNamed profile key from Inlay_S3_SET_CONFIG.
SourcePathRequiredObject key whose sidecar preview image should be returned.
DomainRequiredEndpoint host for direct-credentials mode.
RegionRequiredRegion used for request signing.
AccessKeyRequiredAccess key ID for direct-credentials mode.
SecretKeyRequiredSecret access key for direct-credentials mode.
BucketRequiredBucket containing SourcePath and preview assets.
TTLHoursOptionalCache freshness in hours for the generated/loaded preview image.
EncryptKeyOptionalPassphrase for encrypted thumbnail cache entries.
SourceDateOptionalModified-date hint used for cache refresh decisions.
Returns
Returns a PNG preview container for the target object.
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 a named key for the current FileMaker session.
One-argument form clears an existing saved config: pass either the ConfigKey as a bare string, or a JSON envelope containing only `ConfigKey`.
Signature
Inlay_S3_SET_CONFIG ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "001" ; JSONString ] ;
[ "Domain?" ; ".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?" ; "your-cache-passphrase" ; JSONString ] ;
[ "WaitForCompletion?" ; False ; JSONBoolean ]
) )Parameters
ConfigKeyOptionalthe 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.
OptionalDomain, Region, AccessKey, SecretKey, Bucket (required): S3 connection credentials.
TtlHoursOptionaldefault cache TTL for GET operations.
EncryptKeyOptionaldefault cache encryption key.
WaitForCompletionOptionalif false, PUT operations return immediately.
Returns
Returns JSON confirming config save/update/clear operations for the active session.
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.
Named form example: Inlay_S3_GET_METADATA({ "Config": "prod", "PathToFile": "media/2026/clip.mxf" }) Config: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. This is the config to read from or write to; it is NOT the same as ConfigKey in Inlay_S3_SET_CONFIG, which is a save-name. Legacy keys config, path are accepted for one release cycle.
Signature
Inlay_S3_GET_METADATA ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ]
) )Parameters
ConfigKeyRequiredNamed profile key from Inlay_S3_SET_CONFIG.
SourcePathRequiredObject key to inspect for metadata and object length.
DomainRequiredEndpoint host for direct-credentials mode.
RegionRequiredRegion used for request signing.
AccessKeyRequiredAccess key ID for direct-credentials mode.
SecretKeyRequiredSecret access key for direct-credentials mode.
BucketRequiredBucket containing SourcePath.
Returns
Returns metadata JSON (including object size and metadata fields) for the target object.
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.
DestinationPathToFile is optional; response JSON includes resolved path, content length, and metadata. DestinationPathToFile accepts bare HFS paths, filemac:/..., file:/..., or a POSIX path. Config: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. This is the config to read from or write to; it is NOT the same as ConfigKey in Inlay_S3_SET_CONFIG, which is a save-name. Named form example: Inlay_S3_DOWNLOAD_TO_PATH({ "Config": "prod", "SourcePathToFile": "media/2026/clip.mxf", "DestinationPathToFile": "/Users/alice/Downloads/clip.mxf" }) Legacy keys config, sourcePath, destinationPath are accepted for one release cycle.
Signature
Inlay_S3_DOWNLOAD_TO_PATH ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "SourcePathToFile" ; "media/2026/clip.mxf" ; JSONString ] ;
[ "DestinationPathToFile?" ; "/Users/alice/Downloads/clip.mxf" ; JSONString ]
) )Parameters
JSONSetElementRequiredRequired argument for this call pattern.
ConfigKeyOptionalName of the S3 profile previously registered with Inlay_S3_SET_CONFIG.
JSONStringOptionalOptional argument. Omit to use the default behavior.
Returns
Returns JSON describing the local download result path, object details, and transfer status.
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.
Path accepts: bare HFS (Macintosh HD:Users:…), filemac:/…, filewin:/…, file:/…, or a POSIX path (/Users/…).
Signature
Inlay_S3_OPEN_FILE_AT_PATH ( Path )Parameters
PathRequiredAbsolute local file path (or FileMaker-style file path) to open in the default OS app.
Returns
Attempts to open a local file in the OS default app and returns success/error JSON.
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.
Auto mode chooses viewer type from content type and filename extension. Named form example: Inlay_S3_RENDER_MEDIA_HTML({ "Config": "prod", "PathToFile": "media/2026/clip.mxf", "UrlTtlSeconds": 3600, "ViewerMode": "auto" }) Config: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. Legacy keys config, path, urlTtlSeconds, viewerMode are accepted for one release cycle.
Signature
Inlay_S3_RENDER_MEDIA_HTML ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "PathToFile" ; "media/2026/clip.mxf" ; JSONString ]
) )Parameters
ConfigKeyRequiredNamed profile key from Inlay_S3_SET_CONFIG.
SourcePathRequiredObject key for the media asset to render.
DomainRequiredEndpoint host for direct-credentials mode.
RegionRequiredRegion used for request signing.
AccessKeyRequiredAccess key ID for direct-credentials mode.
SecretKeyRequiredSecret access key for direct-credentials mode.
BucketRequiredBucket containing SourcePath.
UrlTtlSecondsOptionalSigned URL lifetime in seconds for embedded playback.
ViewerModeOptionalViewer override: auto, video, image, pdf, audio, or file.
Returns
Returns JSON payload containing signed media URL details and embeddable viewer HTML.
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.
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, then pass the save-name here. 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({ "Config": "prod", "Action": "register", "ReadOnly": false }) Legacy keys config, action, readOnly are accepted for one release cycle.
Signature
Inlay_S3_MOUNT ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "Action" ; "register" ; JSONString ] ;
[ "ReadOnly" ; False ; JSONBoolean ]
) )Parameters
JSONSetElementRequiredRequired argument for this call pattern.
ConfigKeyOptionalName of the S3 profile previously registered with Inlay_S3_SET_CONFIG.
JSONStringOptionalOptional argument. Omit to use the default behavior.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
The source is deleted only after the destination is confirmed to exist. If 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 (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: each accepts a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. These are the configs to read from or write to; they are NOT the same as ConfigKey in Inlay_S3_SET_CONFIG, which is a save-name.
Conflict (optional) -- what to do when the destination already exists: "overwrite" (default) -- always replace. "ignore" -- skip if the destination object exists. "etag" -- skip if source and destination ETags match. "size" -- skip if source and destination byte counts match. "md5" -- skip if ETags match and both are single-part (plain MD5). "sha256" -- skip if both objects carry a matching x-amz-checksum-sha256 checksum.
Silent (optional) -- pass true to skip the confirmation dialog before deleting source files.
Returns {"ok":true,"method":"server"|"stream","files_moved":N,"files_skipped":N,"sources_deleted":N,"bytes_transferred":N}. Named form example: Inlay_S3_MOVE({ "SourceConfig": "prod", "SourcePathToFileOrFolder": "media/2026/clip.mxf", "DestinationConfig": "archive", "DestinationPathToFileOrFolder": "archive/2026/clip.mxf", "Mode": "server", "Conflict": "overwrite", "Silent": true }) Legacy keys sourceConfig, sourcePath, destinationConfig, destinationPath, mode, conflict, silent are accepted for one release cycle.
Signature
Inlay_S3_MOVE ( JSONSetElement ( "{}" ;
[ "SourceConfig" ; "prod" ; JSONString ] ;
[ "SourcePathToFileOrFolder" ; "media/2026/clip.mxf" ; JSONString ] ;
[ "DestinationConfig" ; "archive" ; JSONString ] ;
[ "DestinationPathToFileOrFolder" ; "archive/2026/clip.mxf" ; JSONString ]
) )Parameters
JSONSetElementRequiredRequired argument for this call pattern.
SourceConfigOptionalOptional argument. Omit to use the default behavior.
JSONStringOptionalOptional argument. Omit to use the default behavior.
SourcePathToFileOrFolderOptionalObject key path inside your bucket (for example, posters/episode1/keyart.jpg).
DestinationConfigOptionalOptional argument. Omit to use the default behavior.
DestinationPathToFileOrFolderOptionalAbsolute local destination path for downloaded output.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
If SourcePathToFileOrFolder is a local filesystem path (absolute POSIX; bare HFS [Macintosh HD:...]; or prefixed with filemac:/filewin:/file:), files are uploaded to S3 at DestinationPathToFileOrFolder. Otherwise files are downloaded from S3 SourcePathToFileOrFolder to the local DestinationPathToFileOrFolder. 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: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. This is the config to read from or write to; it is NOT the same as ConfigKey in Inlay_S3_SET_CONFIG, which is a save-name.
Conflict (optional) -- what to do when the destination already exists: "overwrite" (default) -- always replace. "ignore" -- skip if the destination file or S3 object exists. "etag" -- local files have no ETag; falls back to size comparison. "size" -- skip if the destination byte count matches the source. "md5" -- compute the local MD5 and compare with the S3 ETag. "sha256" -- compute local SHA256 and compare with x-amz-checksum-sha256 from S3. Returns {"ok":true,"method":"upload"|"download","files_copied":N,"files_skipped":N,"bytes_transferred":N}. Named form example: Inlay_S3_COPY({ "Config": "prod", "SourcePathToFileOrFolder": "media/2026/clip.mxf", "DestinationPathToFileOrFolder": "media/2026/clip-backup.mxf", "Conflict": "overwrite" }) Legacy keys config, sourcePath, destinationPath, conflict are accepted for one release cycle.
Signature
Inlay_S3_COPY ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "SourcePathToFileOrFolder" ; "media/2026/clip.mxf" ; JSONString ] ;
[ "DestinationPathToFileOrFolder" ; "media/2026/clip-backup.mxf" ; JSONString ]
) )Parameters
ConfigKeyRequiredSaved S3 profile key created with Inlay_S3_SET_CONFIG.
SrcPathRequiredSource path. Use a local filesystem path for uploads or an S3 object/prefix for downloads.
DstPathRequiredDestination path. Use an S3 key/prefix for uploads or a local filesystem path for downloads.
ConflictOptionalConflict strategy when the destination already exists: overwrite, ignore, etag, size, md5, or sha256.
Returns
Returns JSON describing local-to-S3 or S3-to-local copy results and transfer status.
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.
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 ( "{}" ; [ "ConfigKey" ; "prod" ; JSONString ] ; [ "PathsToFiles" ; $myPathList ; JSONString ] ; [ "Thumbnails" ; True ; JSONBoolean ] ) ) Config: a saved config name (string) or an inline object with the keys Domain, Region, AccessKey, SecretKey, Bucket. This is the config to read from or write to; it is NOT the same as ConfigKey in Inlay_S3_SET_CONFIG, which is a save-name. 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. Legacy keys config, paths, ttlHours, encryptKey, sourceDate are accepted for one release cycle.
Signature
Inlay_S3_PRECACHE ( JSONSetElement ( "{}" ;
[ "ConfigKey" ; "prod" ; JSONString ] ;
[ "PathsToFiles" ; List (
"media/2026/clip1.mxf" ;
"media/2026/clip2.mxf"
) ; JSONString ]
) )Parameters
JSONSetElementRequiredRequired argument for this call pattern.
Returns
Return behavior is not explicitly documented in the registration comment.
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.
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({ "Action": "tc_to_frames", "Arg1": "01:00:00:00", "Arg2": "23.976" }) Legacy keys action, arg1-arg5, optionsJson are accepted for one release cycle.
Signature
Inlay_TIMECODE ( JSONSetElement ( "{}" ;
[ "Action" ; "tc_to_frames" ; JSONString ] ;
[ "Arg1?" ; "01:00:00:00" ; JSONString ]
) )Parameters
actionRequiredOperation token. Choose one of the actions below.
Conversionsnormalize- 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.
Parsingparse- 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 inforateInfo- 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.
Arithmeticadd- 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.
arg1RequiredPrimary input for the selected action. Usually a timecode string, numeric value, or rate token depending on action.
arg2OptionalSecond action-specific argument. Commonly rate, source type, comparison value, or numeric factor.
arg3OptionalThird action-specific argument. Commonly fromRate, toType, or tcB depending on action.
arg4OptionalFourth action-specific argument. Commonly toType or rate depending on action.
arg5OptionalFifth action-specific argument. Used by convert for optional toRate.
optionsJSONOptionalOptional JSON settings. convert currently supports filmFormat (35mm4, 35mm3, 35mm2, 16mm) and mode (rebase or runtime).
{"filmFormat":"35mm4","mode":"runtime"}
Returns
Returns JSON for every action, including normalized values, scalar conversion results, and structured parse or rate metadata.
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).
Optional FFprobePath overrides the analysis tool path. InputPath accepts: a plain path, file:/…, filemac:/…, or filewin:/… URL.
Signature
Inlay_VIDEO_METADATA ( InputPath { ; FFprobePath } )Parameters
InputPathRequiredAbsolute local source media path.
FFprobePathOptionalAbsolute path override for ffprobe executable.
Returns
Returns JSON media-analysis details such as streams, duration, and format metadata.
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).
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: Inlay_TRANSCODE({ "InputPath": "/Users/alice/Media/raw.mov", "OutputPath": "/Users/alice/Media/out.mp4", "FfmpegArgs": ["-c:v", "libx264", "-crf", "18"] }) NAMED FORM advanced: Inlay_TRANSCODE({ "AdvancedJob": { "inputs": [{"path": "/Users/alice/Media/raw.mov"}], "outputs": [{"path": "/Users/alice/Media/out.mp4", "args": ["-c:v", "libx264"]}] } }) Legacy keys inputPath, outputPath, ffmpegArgs, advancedJob are accepted for one release cycle.
Signature
Inlay_TRANSCODE ( JSONSetElement ( "{}" ;
[ "InputPath?" ; "/Users/alice/Media/raw.mov" ; JSONString ] ;
[ "OutputPath?" ; "/Users/alice/Media/out.mp4" ; JSONString ]
) )Parameters
InputPathSimple, requiredAbsolute path to the source media file. Accepts HFS (Macintosh HD:…), filemac:/…, file:/…, filewin:/…, or POSIX path.
OutputPathSimple, requiredAbsolute path for the output file, typically ending in .mp4. Same path formats as InputPath.
FFmpegArgsJsonSimple, optionalJSON 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 abovePass 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
Opens a native progress window and returns immediate status JSON for the started job.
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.
Pass a JSON object with download URLs: {"ffmpeg":"...","ffprobe":"...","ffplay":"..."}. Returns the final install result JSON when complete.
Signature
Inlay_INSTALL_FFMPEG ( UrlsJson )Parameters
UrlsJsonRequiredRequired argument for this call pattern.
Returns
Returns final install-result JSON after tool install mode completes.
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.
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
UrlsJsonRequiredJSON 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
`{"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`.
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.
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
ModelNameOrJsonRequiredeither 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
`{"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.
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.
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 ( "{}" ;
[ "InputPathToFile?" ; "/Media/interview.mov" ; JSONString ] ;
[ "Model?" ; "base.en" ; JSONString ] ;
[ "Outputs?" ; "[{\"format\":\"text\",\"path\":\"/tmp/out.txt\"}]" ; JSONString ] ;
[ "VideoLog?" ;
JSONSetElement ( "{}" ;
[ "frameRate" ; 29.97 ; JSONNumber ] ;
[ "timecodeStart" ; "00:00:00:00" ; JSONString ] ;
[ "boundaryMode" ; "auto" ; JSONString ]
)
; JSONObject ] ;
[ "OnCompleteScript?" ; "Handle_Transcribe_Done" ; JSONString ]
) )Parameters
ArgsJsonRequiredJSON object. Required keys: one of InputPathToFile 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.
VideoLogOptionaltuning 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.
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.
- InputPathToFile accepts POSIX, filemac:/, file:/, filewin:/, and bare HFS forms.
- Legacy keys inputPath, s3Bucket, s3Key, s3Region, s3Endpoint, model, language, translate, outputs, onCompleteScript, onCompleteScriptFile, onCompleteScriptParam, videoLog are accepted for one release cycle.
Related Functions
Inlay_TRANSCRIBE_CANCEL
Requests cancellation of an in-flight Inlay_TRANSCRIBE job.
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
JobIdRequiredthe opaque id returned by Inlay_TRANSCRIBE (format `tr_<pid>_<unix_ms>_<seq>`).
Returns
`{"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.
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.
Designed for FM polling: call repeatedly on a timer or in a script loop until status becomes terminal.
Signature
Inlay_TRANSCRIBE_STATUS ( JobId )Parameters
JobIdRequiredthe opaque id returned by Inlay_TRANSCRIBE.
Returns
`{"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.
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.
Signature
Inlay_TRANSCRIBE_LIST_JOBSParameters
This function takes no parameters.
Returns
`{"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.
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.
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
JobIdRequiredthe opaque id returned by Inlay_TRANSCRIBE.
Returns
`{"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.
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.
Signature
Inlay_TRANSCRIBE_CLEAR_ALLParameters
This function takes no parameters.
Returns
`{"ok":true,"removed":N}` where N is the number of registry entries that were removed.
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).
Returns {"ok":true,...} on success or {"ok":false,"message":"..."} when activation fails. Activation remains in effect across restarts.
Signature
Inlay_REGISTER_LICENSE ( Key )Parameters
KeyRequiredRequired argument for this call pattern.
Returns
Returns activation success/error JSON for the provided license key.
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.
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_STATUSParameters
This function takes no parameters.
Returns
Returns the current local license state JSON for script gating and UI display.
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.
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_DEACTIVATEParameters
This function takes no parameters.
Returns
Returns JSON confirming local activation state was released/cleared.
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.
Can also apply an update when requested. Named form example: Inlay_SELF_UPDATE({ "CurrentVersionOverride": "0.2.5", "Channel": "beta", "RequestedVersion": "0.2.6", "Platform": "macos", "ApplyUpdate": false }) Legacy keys currentVersionOverride, channel, requestedVersion, platform, applyUpdate are accepted for one release cycle.
Signature
Inlay_SELF_UPDATE ( JSONSetElement ( "{}" ;
[ "Channel?" ; "stable" ; JSONString ] ;
[ "ApplyUpdate?" ; False ; JSONBoolean ]
) )Parameters
CurrentVersionOverrideOptionalCurrent plugin version override for update comparison.
ChannelOptionalUpdate channel to query (release, beta, nightly).
RequestedVersionOptionalTarget plugin version to evaluate or install.
PlatformOptionalPlatform override used when evaluating update availability.
ApplyUpdateOptionalSet YES to apply the selected update; NO performs check-only behavior.
Returns
Returns JSON describing available versions and update/apply status.
Use Cases
- Check release/beta/nightly availability as part of admin maintenance workflows.
Notes / Caveats
See example and related functions for usage context.