Operation syntax and NDJSON input
filemaker accepts newline-delimited JSON (NDJSON): one complete operation object per line. Pass operations through standard input for a small inline request, or pass the path to an operations file for a batch. An operations file describes one attempt and must not be replayed against the same file.
Operation shape
Every operation has an op key in the form <verb>:<catalog>. The remaining keys provide the input for that operation.
{"op":"read:table"}
{"op":"read:table","name":"Contacts"}
{"op":"create:table","name":"Invoices"}
{"op":"create:field","table":"Invoices","name":"InvoiceID","type":"text"}
NDJSON is not a JSON array. Each line must be a complete JSON object so filemaker can validate and report one result for each operation.
Pass operations inline
If no operations-file path is given, filemaker reads NDJSON from standard input. For one operation, pipe a complete line into the command:
printf '%s\n' '{"op":"read:table"}' | \
filemaker --file="/absolute/path/Contacts.fmp12"
Use a here-document for a short batch:
filemaker --file="/absolute/path/Contacts.fmp12" --dry-run <<'NDJSON'
{"op":"create:table","name":"Invoices"}
{"op":"create:field","table":"Invoices","name":"InvoiceID","type":"text"}
NDJSON
Standard input must close after the final line. If the producer leaves the stream open, filemaker waits for another operation until its timeout expires.
Pass an operations file
For more than one or two operations, save the same NDJSON lines in a temporary file:
{"op":"create:table","name":"Invoices"}
{"op":"create:field","table":"Invoices","name":"InvoiceID","type":"text"}
Pass its path as the final argument:
filemaker --file="/absolute/path/Contacts.fmp12" \
--dry-run \
create-invoices.ndjson
The batch runs in line order against the one file named by --file. See Dry runs and batch behavior before applying a batch that changes a file.
Warning Operations files are not migrations An operations file records one attempted change. Do not replay it against the same FileMaker file: create operations may fail because an object exists, and other operations may apply a change twice. Do not treat these files as a numbered migration history or commit them for later replay.
Use the installed help for every operation
This page shows the common structure, not every catalog, verb, option, or FileMaker engine constraint. The installed CLI generates its help from the same contract it uses to validate operations.
filemaker help
filemaker help table
filemaker help table create
filemaker help field create options autoEnter
-
filemaker helplists every available catalog. -
filemaker help <catalog>lists that catalog's verbs. -
filemaker help <catalog> <verb>shows the exact keys, types, required values, checks, example, and errors for one operation. -
Add more path segments to inspect a nested input such as field options.
For scripts and tooling, request the same reference as JSON:
filemaker help --json table create
filemaker help --json --all
Because the operation contract can change between releases, use the help from the installed filemaker binary instead of copying an old operation shape from this page.