Configure JSON Output
The following table shows the operation and row model
| Model | Shape | Guidance |
|---|---|---|
op |
Metadata at the record level and column values under before and after objects. |
Recommended for CDC because it preserves explicit image semantics. |
row |
Column values at the record level rather than nested image objects. | Use only when the downstream contract expects a flat row. The table-specific runtime schema defines which image is represented for each operation. |
op with flatten=true |
Nested image names are concatenated with column names, for example before.STATUS and after.STATUS when the delimiter is .. |
Useful for flat sinks that still need before/after distinction. |
Core JSON properties
| Property | Default / limits | Description |
|---|---|---|
$schema |
ogg:outputFormatJson |
JSON output configuration schema identifier. |
model |
op; op or row |
Record model. |
beforeImageName |
before; 1-32 characters |
Name of the before-image object in operation model. |
afterImageName |
after; 1-32 characters |
Name of the after-image object in operation model. |
omitNullColumnValues |
false |
Omits columns whose value is null. This makes missing and null indistinguishable for omitted fields. |
treatAllColumnsAsStrings |
false |
Writes all column values as strings instead of native JSON primitives. |
flatten |
false |
Flattens before and after image columns in operation model. |
flattenDelimiter |
0-32 characters | Delimiter between image name and column name when flattened. |
delimiter |
0-32 characters | Formatter record delimiter. WebSocket consumers should normally retain the default array contract described by the AsyncAPI YAML. |
staticFields |
Object / none | Adds fields with constant values to output records. |
operationStrings |
INSERT, UPDATE, DELETE, TRUNCATE, UPSERT, DDL | Customizes operation labels. Coordinate with every consumer before changing. |
Schema and metadata emission
| Property | Default | Effect |
|---|---|---|
includeJSONSchemaRecord |
true |
Emits JSON Schema records for stream metadata, object metadata, DML, and DDL records. |
includeObjectMetadataRecords |
true |
Emits table column metadata. |
includeStreamMetadataRecord |
true |
Emits producer and source database metadata. |
Recommended: Keep all three settings enabled unless a governed external schema registry replaces them. Disabling schema or metadata records reduces network volume but transfers versioning and discovery responsibility to the consumer platform.
Size and large-value controls
| Property | Default | Minimum | Maximum | Behavior |
|---|---|---|---|---|
maxLobSize |
64,000 | 1 | 18,446,744,073,709,552,000 | LOB data is truncated beyond this size in bytes. |
maxDDLTextSize |
1,000,000 | 1 | 4,294,967,295 | DDL statement text is truncated beyond this size in bytes. |
maxRecordSize |
1,048,576 | 131,072 | 10,485,760 | A record exceeding the size is truncated or chunked. |
truncateOrChunk |
truncate |
- | truncate or chunk |
Selects oversized-record handling. |
When truncateOrChunk is chunk, consume the chunk metadata exactly as defined by the runtime schema. Do not invent a reassembly contract. Load test maximum LOB and DDL sizes because the WebSocket library, proxy, and downstream platform can impose additional frame or message limits.
Metadata fields
Most metaFields entries accept either a Boolean or a string. true includes the field with its default output name, false omits it, and a string includes it under that custom name. env, sys, and tokens accept specialized objects or values defined by the REST schema.
| Property | Default | Meaning |
|---|---|---|
qualifiedTable |
true |
Fully qualified object name. Default Data Streams field is normally qual_table. |
opType |
true |
Operation type. Default field is normally op_type. |
opTs |
true |
Operation timestamp. Default field is normally op_ts. |
pos |
true |
Opaque recovery position. Do not disable for a recoverable consumer. |
xid |
true |
Source transaction identifier. |
table |
false |
Unqualified table name. |
schema |
false |
Schema or owner name. |
catalog |
false |
Catalog name when available. |
csn |
false |
Source commit sequence number. |
opSeqno |
false |
Record sequence number within the transaction. |
transInd |
false |
Transaction indicator B, M, E, or W. |
primaryKeys |
false |
Primary key column names or values according to the configured formatter contract. |
opTsMicroSecs |
false |
Operation timestamp as microseconds after the epoch. |
currentTs |
false |
Current processing timestamp. |
currentTsMicroSecs |
false |
Current processing timestamp as microseconds after the epoch. |
tokens |
null |
User tokens, GoldenGate tokens, all tokens, or a configured subset. |
env |
null |
Selected GoldenGate environment values. |
sys |
null |
Selected system environment values. Avoid exposing secrets. |
Recommended enterprise metadata configuration
"metaFields": {
"qualifiedTable": true,
"opType": true,
"opTs": true,
"pos": true,
"xid": true,
"csn": "csn",
"opSeqno": "op_seqno",
"transInd": "trans_ind",
"primaryKeys": "primary_keys"
}
Explicit string names make the public payload contract clear and avoid relying on formatter default names for optional metadata.