IP Inlay for FileMaker

Inlay Function Reference Core

Core

Diagnostics, environment checks, and platform utilities. 11 functions.

Inlay_GET_BOOTTIME

Core macOS only Updated Returns JSON

Returns wall-clock uptime in milliseconds since boot as a plain number.

The value is derived from a monotonic raw clock and matches the BSD uptime command, which counts time the machine spent asleep. It is strictly monotonic and unaffected by NTP or wall-clock adjustments.

The reading refreshes on every call. Subtract two readings to measure elapsed milliseconds between events, or divide by 1000 for seconds.

Declaration

Inlay_GET_BOOTTIME ( )

Parameters

CacheBuster Optional
any value, used only to force FileMaker to re-evaluate the call. Ignored otherwise.

Returns

JSON string A bare numeric string of milliseconds since boot, for example "5403122". Returns an unlicensed JSON envelope if the plugin is not licensed.

Use Cases

  • Measure elapsed time between two events without relying on the wall clock.
  • Detect whether the machine has been restarted since a prior reading.

Notes

  • macOS only. Calls from unsupported platforms return an error response.
  • macOS only. Other platforms return an unsupported message.
  • The result is not JSON. It is a raw number string.

See Also

Inlay_CONNECTION_DIAG Inlay_LICENSE_STATUS Inlay_GET_PUBLIC_IP Inlay_CUSTOM_FUNCTION

Inlay_GET_PUBLIC_IP

Core Updated Returns JSON

Returns the public WAN IP address this machine presents to the internet.

The address is the NAT or masqueraded IP seen by an external public IP lookup service, not a private LAN address. This function runs without a license so it can be used to diagnose activation and network issues before a license is in place.

Declaration

Inlay_GET_PUBLIC_IP ( )

This function takes no parameters.

Returns

JSON string On success returns {"ok":true,"ip":"x.x.x.x"}. On failure returns {"ok":false,"message":"..."}.

Use Cases

  • Confirm outbound internet connectivity from the FileMaker host.
  • Capture the WAN IP for allowlisting or support diagnostics.

Notes

  • Takes no arguments.
  • Requires outbound network access to reach the lookup service.

See Also

Inlay_CONNECTION_DIAG Inlay_OPEN_LOG

Inlay_CONNECTION_DIAG

Core Updated Returns JSON

Opens a real-time connection diagnostic window that probes a host or IP and graphs latency.

Use this to troubleshoot FileMaker connectivity. For good interactive performance, aim to keep sustained round-trip time under about 50ms where possible. The diagnostic runs in the Inlay helper app, so the call returns as soon as the window is launched.

Declaration

Inlay_CONNECTION_DIAG ( "host.example.com" )

Parameters

IPorDNS Required
the host name or IP address to probe. Leading and trailing whitespace is trimmed and an empty value is rejected.

Returns

JSON string On launch returns {"ok":true,"status":"started","address":"...","wan_ip":"..."}. The wan_ip field is best-effort and may be null. Returns {"ok":false,"message":"..."} if the address is empty or the helper cannot be found or launched.

Use Cases

  • Diagnose slow or dropping connections to a FileMaker Server host.
  • Visually confirm latency to a host before reporting a network issue.

Notes

  • Requires the bundled Inlay helper app. If it is missing, reinstall the plugin.
  • The current WAN IP is included in the window header when it can be resolved.

See Also

Inlay_GET_PUBLIC_IP Inlay_OPEN_LOG

Inlay_CUSTOM_FUNCTION

Core Updated Returns JSON

Calls a license-bound custom function gated by your licensee entitlement.

The first argument is the custom function name, which is tied to your license. The second argument is a JSON payload string specific to your workflow. If your license is not entitled to the named custom function, access is denied.

Contact solutions@pinethree.dev to request a custom function.

Declaration

Inlay_CUSTOM_FUNCTION (
    "MyCustomFunction" ;
    JSONSetElement ( "{}" ;
    [ "RecordId" ; "022" ; JSONString ]
  )
)

Parameters

CustomFunctionName Required
the entitled custom function name. Whitespace is trimmed and an empty value is rejected.
PayloadJson Required
a workflow-specific payload that must be valid JSON. Invalid JSON is rejected.

Returns

JSON string On success returns {"ok":true,"custom_function":"...","license_bound":true,"payload":{...}}. Returns a denied envelope if your license is not entitled, an unlicensed envelope if the plugin is not licensed, or {"ok":false,"message":"..."} for bad input.

Use Cases

  • Invoke bespoke logic delivered for your license without shipping a separate plugin.

Notes

  • Requires a valid Inlay license and an entitlement for the named function.
  • PayloadJson must parse as JSON. Compose it with JSONSetElement.

See Also

Inlay_LICENSE_STATUS Inlay_REGISTER_LICENSE

Inlay_OPEN_LOG

Core Updated Returns JSON

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

Use this to inspect plugin activity when troubleshooting. It runs without a license so it can help diagnose activation problems before a license is in place.

Declaration

Inlay_OPEN_LOG ( )

This function takes no parameters.

Returns

JSON string On success returns {"ok":true,"status":"opened","path":"..."}. Returns {"ok":false,"message":"..."} if the log path cannot be resolved, the file cannot be opened, or any argument is passed.

Use Cases

  • Quickly open the plugin log to review errors or recent operations.
  • Gather diagnostics to share with support.

Notes

  • Takes no arguments. Passing any argument returns a usage error.
  • The file opens in whatever application is registered for the log file type.

See Also

Inlay_CONNECTION_DIAG Inlay_GET_PUBLIC_IP

Inlay_VERIFY_CODESIGN

Core macOS only Updated Returns JSON

Verifies code-sign trust of a binary or app bundle using codesign and spctl.

With no argument it verifies the running FileMaker host runtime. Pass a path to verify any other binary or .app bundle instead. A trusted result means Gatekeeper-level approval, not merely the presence of a signature.

Use this in security-sensitive workflows to confirm the FileMaker runtime or helper tools are signed and notarized before proceeding.

Declaration

Inlay_VERIFY_CODESIGN ( )

Parameters

PathOrHost Optional
path to a binary or .app bundle to verify. When omitted, the running FileMaker host is verified. Accepts a bare HFS path (Macintosh HD:Users:...), filemac:/..., file:/..., or a POSIX path (/Users/...).

Returns

JSON string A JSON envelope including ok, trusted, message, target, target_kind, target_path, and signing identity fields such as identifier, team_identifier, codesign_verify_ok, spctl_assess_ok, and gatekeeper_required. trusted is true only when codesign verification, the effective Gatekeeper check, and host expectations all pass.

Use Cases

  • Confirm the FileMaker host process is genuinely signed before running privileged steps.
  • Verify a helper tool or downloaded binary is notarized before invoking it.

Notes

  • macOS only. Calls from unsupported platforms return an error response.
  • macOS only. Other platforms return an unsupported message.
  • Unsigned or ad-hoc signed binaries return trusted:false without raising an error.

See Also

Inlay_GET_BOOTTIME Inlay_GET_PUBLIC_IP Inlay_CONNECTION_DIAG Inlay_CUSTOM_FUNCTION

Inlay_CORE_RUN_PING

Core Updated Returns JSON

Starts an asynchronous ping against a host and returns right away with a job label you poll later.

The job sends 5 echo requests and runs in a background thread, so this call does not block FileMaker while the host responds. Captured output is held in the plugin's in-memory job map under the label you supply. Retrieve it with Inlay_CORE_GET_PING_RESULT.

Ping and trace jobs keep separate label namespaces, so the same label can name one of each. Re-running with a label that already has a ping job overwrites the previous result.

Declaration

Inlay_CORE_RUN_PING ( "wan-check" ; "example.com" )

Parameters

Label Required
caller-chosen non-empty job key used later by Inlay_CORE_GET_PING_RESULT. Leading and trailing whitespace is trimmed.
IPorDNS Required
host to ping. Only letters, digits, dot, colon, hyphen, and underscore are allowed (covers IPv4, IPv6, and DNS names); anything else is rejected.

Returns

JSON string On success returns {"ok":true,"status":"started","kind":"ping","label":...,"host":...}. If the ping process cannot be launched, returns {"ok":false,"status":"spawn_failed",...}. An empty label or an invalid host returns {"ok":false,"message":...}.

Use Cases

  • Check reachability of a FileMaker Server or hosted resource without freezing the UI.
  • Kick off several ping jobs under different labels, then poll each result.

Notes

  • macOS runs /sbin/ping -c 5 -t 5; Windows runs ping -n 5 -w 5000.
  • The job lives only in plugin memory and is lost when FileMaker quits or the plugin reloads.
  • "started" only means the process was launched; poll Inlay_CORE_GET_PING_RESULT for the outcome.

See Also

Inlay_CORE_GET_PING_RESULT Inlay_CORE_RUN_TRACE Inlay_CORE_LIST_JOBS

Inlay_CORE_GET_PING_RESULT

Core Updated Returns JSON

Polls a ping job started with Inlay_CORE_RUN_PING and returns its current state and captured output.

The result status is "pending", "done", or "missing". While pending, the job's partial_stdout and partial_stderr grow as the ping process writes output, so repeated calls can show progress. Once the process exits the job flips to done and carries the full output plus timing and exit code.

Declaration

Inlay_CORE_GET_PING_RESULT ( "wan-check" )

Parameters

Label Required
the same label passed to Inlay_CORE_RUN_PING. Leading and trailing whitespace is trimmed.

Returns

JSON string Pending: {"ok":true,"status":"pending","kind":"ping","label":...,"host":...,"started_at_ms":...,"partial_stdout":...,"partial_stderr":...}. Done: {"ok":true,"status":"done",...,"finished_at_ms":...,"elapsed_ms":...,"exit_code":...,"stdout":...,"stderr":...} where exit_code is null if the process produced no code. Missing: {"ok":false,"status":"missing",...,"message":...} when no ping job exists for that label. An empty label returns {"ok":false,"message":...}.

Use Cases

  • Drive a FileMaker poll loop or Install OnTimer script that calls this until status is "done".
  • Show live ping progress by displaying partial_stdout while the job is pending.

Notes

  • Ping and trace use separate label namespaces; this only reads ping jobs.
  • A done job stays readable until it is overwritten by a new run with the same label or FileMaker quits.

See Also

Inlay_CORE_RUN_PING Inlay_CORE_GET_TRACE Inlay_CORE_LIST_JOBS

Inlay_CORE_RUN_TRACE

Core Updated Returns JSON

Starts an asynchronous traceroute against a host and returns right away with a job label you poll later.

The traceroute runs in a background thread and streams its output into the job entry as each hop is printed, so polling shows the route filling in line by line. Captured output is held in the plugin's in-memory job map under the label you supply. Retrieve it with Inlay_CORE_GET_TRACE.

Ping and trace jobs keep separate label namespaces, so the same label can name one of each. Re-running with a label that already has a trace job overwrites the previous result.

Declaration

Inlay_CORE_RUN_TRACE ( "route-check" ; "example.com" )

Parameters

Label Required
caller-chosen non-empty job key used later by Inlay_CORE_GET_TRACE. Leading and trailing whitespace is trimmed.
IPorDNS Required
host to trace. Only letters, digits, dot, colon, hyphen, and underscore are allowed (covers IPv4, IPv6, and DNS names); anything else is rejected.

Returns

JSON string On success returns {"ok":true,"status":"started","kind":"trace","label":...,"host":...}. If the traceroute process cannot be launched, returns {"ok":false,"status":"spawn_failed",...}. An empty label or invalid host returns {"ok":false,"message":...}. On platforms other than macOS and Windows it returns {"ok":false,"message":"trace not implemented on this platform yet"}.

Use Cases

  • Diagnose where connectivity to a FileMaker Server or hosted endpoint breaks down along the network path.
  • Capture a route snapshot into a found record for support tickets.

Notes

  • macOS runs /usr/sbin/traceroute -q 1 -w 1 -m 20 (one query per hop, 1s wait, max 20 hops); Windows runs tracert -h 20 -w 1000.
  • Traceroute can take many seconds; the job stays pending until the process exits, so poll Inlay_CORE_GET_TRACE.
  • The job lives only in plugin memory and is lost when FileMaker quits or the plugin reloads.

See Also

Inlay_CORE_GET_TRACE Inlay_CORE_RUN_PING Inlay_CORE_LIST_JOBS

Inlay_CORE_GET_TRACE

Core Updated Returns JSON

Polls a traceroute job started with Inlay_CORE_RUN_TRACE and returns its current state and captured output.

The result status is "pending", "done", or "missing". While pending, partial_stdout grows hop by hop as traceroute prints each line, so repeated calls reveal the route as it is discovered. Once the process exits the job flips to done and carries the full output plus timing and exit code.

Declaration

Inlay_CORE_GET_TRACE ( "route-check" )

Parameters

Label Required
the same label passed to Inlay_CORE_RUN_TRACE. Leading and trailing whitespace is trimmed.

Returns

JSON string Pending: {"ok":true,"status":"pending","kind":"trace","label":...,"host":...,"started_at_ms":...,"partial_stdout":...,"partial_stderr":...}. Done: {"ok":true,"status":"done",...,"finished_at_ms":...,"elapsed_ms":...,"exit_code":...,"stdout":...,"stderr":...} where exit_code is null if the process produced no code. Missing: {"ok":false,"status":"missing",...,"message":...} when no trace job exists for that label. An empty label returns {"ok":false,"message":...}.

Use Cases

  • Drive a FileMaker poll loop or Install OnTimer script that calls this until status is "done".
  • Display the route as it builds by showing partial_stdout while the job is pending.

Notes

  • Ping and trace use separate label namespaces; this only reads trace jobs.
  • A done job stays readable until it is overwritten by a new run with the same label or FileMaker quits.

See Also

Inlay_CORE_RUN_TRACE Inlay_CORE_GET_PING_RESULT Inlay_CORE_LIST_JOBS

Inlay_CORE_LIST_JOBS

Core Updated Returns JSON

Lists every ping and traceroute job currently held in the plugin's in-memory state.

This is a diagnostic snapshot of the job map shared by Inlay_CORE_RUN_PING and Inlay_CORE_RUN_TRACE. Each entry reports byte counts rather than full output, so use it to see what jobs exist and their status, then call Inlay_CORE_GET_PING_RESULT or Inlay_CORE_GET_TRACE for the actual text.

Declaration

Inlay_CORE_LIST_JOBS

This function takes no parameters.

Returns

JSON string {"ok":true,"count":N,"jobs":[...]} sorted by kind then label. Every entry carries kind ("ping" or "trace"), label, status, host, and started_at_ms. Pending entries also carry partial_stdout_bytes and partial_stderr_bytes. Done entries also carry finished_at_ms, elapsed_ms, exit_code (may be null), stdout_bytes, and stderr_bytes.

Use Cases

  • Confirm an Inlay_CORE_RUN_PING or Inlay_CORE_RUN_TRACE call actually registered a job.
  • Audit which diagnostic jobs are still pending versus done during a debugging session.

Notes

  • Output sizes are reported as byte counts only; fetch full text with the per-job GET functions.
  • The map lives only in plugin memory and is empty after FileMaker quits or the plugin reloads.

See Also

Inlay_CORE_RUN_PING Inlay_CORE_GET_PING_RESULT Inlay_CORE_RUN_TRACE Inlay_CORE_GET_TRACE