Skip to content

The lake

What data sources say: prices and bars by dataset, each dataset's entitlements, and the source priority a default read takes. This is its data dictionary at contract v24: one entry for every field of its messages a plugin meets, saying what the field is for, what a value means and does not mean, what empty means, who fills it, its bounds and the operations a write must carry it on. Each entry is anchored by its name, the name a refusal's path resolves to and a declaration names, which never changes.

Its messages are declared in meridian/v1/lake.proto. A field's entry is the same whatever carries it: a typed operation's parameters take the entries of the message they are made from.

Records

The messages this store keeps and answers.

Record What it is
Price a price of one kind for one subject, as one source stated it: closes, last prices, net asset values, settlement prices, bids, asks and mids, and FX rates as the price of a currency's cash instrument
Bar open, high, low and close over an interval, as one source stated them
Trade one trade as its source reported it, with what it may count for in the platform's words (contract v19)
Quote the best bid and offer on a venue or consolidated, in force until the next (contract v19)
Outcome an event contract's outcome as its venue determined it, at one stage, each stage a new version under the contract's one row key (contract v23)
DatasetEntitlement a plugin instance's entitlement to a dataset, every field or some, as a deployment admin set it
SourcePriority the deployment's order of datasets a default read takes for one data type and kind, with who set it

Price

meridian.v1.Price, a record.

meta

message ObservationMeta · since v18 · preview

Carries a price's envelope.

  • Means: its key, subject, source, times, version and sequence
  • Does not mean: the price
  • Empty: never unset
  • Filled: as-reported, by data
  • Required on: RecordPrices from v18

kind

enum PriceKind · since v18 · preview

Says which price a row is.

  • Means: the kind of price
  • Does not mean: the last trade at some hour, for a close
  • Empty: unspecified is refused
  • Filled: as-reported, by data
Value Means
PRICE_KIND_UNSPECIFIED refused
PRICE_KIND_CLOSE the dataset's declared close for the business date: the official close where the venue has one, otherwise the last price of the day the dataset declares
PRICE_KIND_LAST the last eligible trade's price at the valid time
PRICE_KIND_NAV a fund's net asset value per share, for the business date
PRICE_KIND_SETTLEMENT a contract's settlement price, for the business date
PRICE_KIND_BID the best bid at the valid time, or the business date's closing bid
PRICE_KIND_ASK the best ask at the valid time, or the business date's closing ask
PRICE_KIND_MID the mid at the valid time, or the business date's closing mid

price

Money · since v18 · preview

Says what one unit of the subject was priced at, by this source.

  • Means: the source's price of one unit of the subject, in the asset it was quoted in, that asset's cash instrument named; for a currency's cash instrument, the rate to the Money's asset; for an event contract, what one contract costs in the asset it pays out in
  • Does not mean: a value of a position; a price converted into another asset by the data plugin; a probability; adjusted for splits or dividends unless the dataset declares it so
  • Empty: never; a price with no amount is refused, and one whose value failed conversion is not known, its value as reported in unconverted
  • Filled: as-reported, by data
  • Unit: the major unit of the asset the Money names, per one unit of the subject
  • Required on: RecordPrices from v18

basis

enum PriceBasis · since v18 · preview

Says what one unit of a price is.

  • Means: per unit of the subject in the lake's 1a
  • Does not mean: a percent of par, a yield or a spread, which come with fixed income
  • Empty: unspecified is refused
  • Filled: as-reported, by data
Value Means
PRICE_BASIS_UNSPECIFIED refused
PRICE_BASIS_PER_UNIT per unit of the subject

Bar

meridian.v1.Bar, a record.

meta

message ObservationMeta · since v18 · preview

Carries a bar's envelope; its valid time is the interval.

  • Means: its key, subject, source, interval, version and sequence; a daily bar names its business date
  • Does not mean: the bar's prices
  • Empty: never unset
  • Filled: as-reported, by data
  • Required on: RecordBars from v18

open

Money · since v18 · preview

Says the interval's first eligible price.

  • Means: the open, by the source's eligibility rules, in the same asset as the bar's other prices
  • Does not mean: the official open, unless the dataset declares it
  • Empty: never
  • Filled: as-reported, by data
  • Unit: the major unit of the asset the Money names, per one unit of the subject
  • Required on: RecordBars from v18

high

Money · since v18 · preview

Says the interval's highest eligible price.

  • Means: the high, by the source's eligibility rules
  • Does not mean: a quote
  • Empty: never
  • Filled: as-reported, by data
  • Unit: the major unit of the asset the Money names, per one unit of the subject
  • Required on: RecordBars from v18

low

Money · since v18 · preview

Says the interval's lowest eligible price.

  • Means: the low, by the source's eligibility rules
  • Does not mean: a quote
  • Empty: never
  • Filled: as-reported, by data
  • Unit: the major unit of the asset the Money names, per one unit of the subject
  • Required on: RecordBars from v18

close

Money · since v18 · preview

Says the interval's last eligible price.

  • Means: the interval's last eligible price
  • Does not mean: the official close, which is a price of kind close
  • Empty: never
  • Filled: as-reported, by data
  • Unit: the major unit of the asset the Money names, per one unit of the subject
  • Required on: RecordBars from v18

volume

Decimal · since v18 · preview

Says how much traded in the interval.

  • Means: the eligible quantity over the interval, never negative
  • Does not mean: notional
  • Empty: 0 is a value: nothing traded
  • Filled: as-reported, by data
  • Unit: units of the instrument
  • Bounds: 0 to 18 decimal places; at most 38 significant digits; past it, refused
  • Required on: RecordBars from v18

vwap

Money · since v18 · preview

Says the interval's volume-weighted average price.

  • Means: the volume-weighted average price over the interval, in the bar's asset
  • Does not mean: a price of kind close
  • Empty: unset: the source gave none
  • Filled: as-reported, by data
  • Unit: the major unit of the asset the Money names, per one unit of the subject

trade_count

integer · since v18 · preview

Says how many trades the interval held.

  • Means: trades counted in the bar
  • Does not mean: the volume
  • Empty: unset: the source gave none; 0 is a value
  • Filled: as-reported, by data
  • Unit: trades

Trade

meridian.v1.Trade, a record.

meta

message ObservationMeta · since v19 · preview

Carries a trade's envelope; valid from its event time at its venue.

  • Means: its key, subject, source and venue, event time, version and sequence; valid_until_ns 0 and no business date
  • Does not mean: the trade's price or quantity
  • Empty: never unset
  • Filled: as-reported, by data
  • Required on: RecordTrades from v19

price

Money · since v19 · preview

Says what one unit of the subject traded at.

  • Means: the trade's price per unit of the subject, in the asset it traded in, that asset's cash instrument named; for an event contract, what one contract cost in the asset it pays out in
  • Does not mean: a probability; a price converted into another asset by the data plugin; the trade's notional
  • Empty: never; a trade with no price is refused
  • Filled: as-reported, by data
  • Unit: the major unit of the asset the Money names, per one unit of the subject
  • Required on: RecordTrades from v19

quantity

Decimal · since v19 · preview

Says how much traded.

  • Means: the quantity traded, more than zero
  • Does not mean: notional, or a count of contracts on another unit than the instrument's
  • Empty: never; zero or less is refused
  • Filled: as-reported, by data
  • Unit: units of the instrument
  • Bounds: 0 to 18 decimal places; at most 38 significant digits; past it, refused
  • Required on: RecordTrades from v19

attributes

message TradeAttributes · since v19 · preview

Says what a trade may count for, and its characteristics.

  • Means: the platform's trade attributes, converted from the source's condition codes at the edge
  • Does not mean: a vendor's or a SIP's codes, which no reader needs
  • Empty: never unset; its eligibilities unspecified are not known
  • Filled: as-reported, by data

aggressor

enum Aggressor · since v19 · preview

Says which side took liquidity.

  • Means: the side the source says took liquidity: a venue's taker side as sent, or its maker side inverted
  • Does not mean: a side guessed from the price's movement; the side of anyone's order in the book
  • Empty: unspecified: not known
  • Filled: as-reported, by data
Value Means
AGGRESSOR_UNSPECIFIED not known: the source does not say
AGGRESSOR_BUY the buyer took liquidity: it lifted the offer
AGGRESSOR_SELL the seller took liquidity: it hit the bid

source_sequence

integer · since v19 · preview

Keeps the source's own sequence number.

  • Means: the number the source gave the trade in its own feed
  • Does not mean: the lake's sequence, which the envelope carries; a trade identifier
  • Empty: 0: the source gave none
  • Filled: as-reported, by data
  • Unit: the source's sequence numbers

cancelled

boolean · since v19 · preview

Says the source withdrew a trade.

  • Means: true in a version, under the trade's row key, saying the source withdrew it
  • Does not mean: a trade removed: the versions before it are kept, and an as-of read before the withdrawal answers it
  • Empty: false: the trade stands
  • Filled: as-reported, by data

Quote

meridian.v1.Quote, a record.

meta

message ObservationMeta · since v19 · preview

Carries a quote's envelope; in force from its valid time until the next.

  • Means: its key, subject, source and venue, time, version and sequence; no business date
  • Does not mean: the quote's prices
  • Empty: never unset
  • Filled: as-reported, by data
  • Required on: RecordQuotes from v19

bid

Money · since v19 · preview

Says the best bid.

  • Means: the best price a buyer offered, in the quote's asset, its cash instrument named; one asset with the ask
  • Does not mean: a price of kind bid, which a dataset records as a price; book depth
  • Empty: unset: that side is empty
  • Filled: as-reported, by data
  • Unit: the major unit of the asset the Money names, per one unit of the subject

ask

Money · since v19 · preview

Says the best ask.

  • Means: the best price a seller asked, in the quote's asset, its cash instrument named; one asset with the bid
  • Does not mean: a price of kind ask, which a dataset records as a price; book depth
  • Empty: unset: that side is empty
  • Filled: as-reported, by data
  • Unit: the major unit of the asset the Money names, per one unit of the subject

bid_quantity

Decimal · since v19 · preview

Says how much is bid at the best bid.

  • Means: the quantity at the best bid, more than zero
  • Does not mean: the quantity across the book
  • Empty: unset: the source gave none; zero or less is refused
  • Filled: as-reported, by data
  • Unit: units of the instrument
  • Bounds: 0 to 18 decimal places; at most 38 significant digits; past it, refused

ask_quantity

Decimal · since v19 · preview

Says how much is offered at the best ask.

  • Means: the quantity at the best ask, more than zero
  • Does not mean: the quantity across the book
  • Empty: unset: the source gave none; zero or less is refused
  • Filled: as-reported, by data
  • Unit: units of the instrument
  • Bounds: 0 to 18 decimal places; at most 38 significant digits; past it, refused

characteristics

repeated enum QuoteCharacteristic · since v19 · preview

Says a quote's state in the platform's words.

  • Means: each state the source said the quote was in
  • Does not mean: a vendor's code
  • Empty: none: firm and trading
  • Filled: as-reported, by data
  • Bounds: at most 4 items; past it, refused
Value Means
QUOTE_CHARACTERISTIC_UNSPECIFIED refused
QUOTE_CHARACTERISTIC_INDICATIVE not firm: a price a participant need not trade at
QUOTE_CHARACTERISTIC_HALTED trading in the subject is halted

Outcome

meridian.v1.Outcome, a record.

meta

message ObservationMeta · since v23 · preview

Carries the outcome's envelope.

  • Means: its row key, one per contract; its subject the contract's instrument; its valid time the determination's, an event SourceTime; no business date
  • Does not mean: a daily value
  • Empty: never unset
  • Filled: as-reported, by data

determination

enum OutcomeDetermination · since v23 · preview

Says what the instrument pays, as its venue determined it (the lake plan's vL1c, item 1).

  • Means: the instrument's own determination, so a token whose outcome is a name, not yes, reads plainly
  • Does not mean: the venue's word, kept as reported; or void, which no venue reports
  • Empty: never unspecified
  • Filled: as-reported, by data
Value Means
OUTCOME_DETERMINATION_UNSPECIFIED not said; refused
OUTCOME_DETERMINATION_PAYS the instrument pays its full payout
OUTCOME_DETERMINATION_PAYS_NOTHING the instrument pays nothing
OUTCOME_DETERMINATION_PAYS_PART the instrument pays part of its payout: a scalar result, or a resolution at half

stage

enum OutcomeStage · since v23 · preview

Says the venue's stage of the determination (item 2).

  • Means: each change a new version under the contract's one row key, the lake's restatement pattern
  • Does not mean: whether holders were paid, which settled_at_ns says
  • Empty: never unspecified
  • Filled: as-reported, by data
Value Means
OUTCOME_STAGE_UNSPECIFIED not said; refused
OUTCOME_STAGE_PROPOSED proposed and open to challenge
OUTCOME_STAGE_DETERMINED determined by the venue; an amended determination is a new version here
OUTCOME_STAGE_DISPUTED disputed, the determination challenged
OUTCOME_STAGE_FINAL final

settlement_value

Money · since v23 · preview

Says what one contract settles at (item 1).

  • Means: Money per contract in the payout asset, always set: the full payout, nothing, or the part
  • Does not mean: a probability, or a price
  • Empty: never unset
  • Filled: as-reported, by data
  • Required on: RecordOutcomes from v23

settled_at_ns

moment · since v23 · preview

Says when the venue paid out (item 3).

  • Means: the payout's time, as the venue states it
  • Does not mean: the determination's time, which the envelope's valid time is
  • Empty: 0 until the venue has paid out
  • Filled: as-reported, by data

determination_as_reported

message AsReported · since v23 · preview

Keeps the venue's own word for the determination (item 1).

  • Means: as the venue reported it: yes, no, scalar, a name, Unknown/50-50
  • Does not mean: the determination, which says what the instrument pays
  • Empty: never unset
  • Filled: as-reported, by data

DatasetEntitlement

meridian.v1.DatasetEntitlement, a record.

dataset

identifier dataset · since v18 · preview

Names the dataset entitled.

  • Means: a dataset a launched instance's catalogue declares
  • Does not mean: a vendor's product
  • Empty: never empty
  • Filled: entered, by dashboard

instance

identifier instance · since v18 · preview

Names the plugin instance entitled.

  • Means: a launched instance, which may read the dataset
  • Does not mean: a person: entitlements per person come later
  • Empty: never empty
  • Filled: entered, by dashboard

allowed

boolean · since v18 · preview

Says whether the instance may read the dataset.

  • Means: true, it may; false, the entitlement withdrawn
  • Does not mean: a licence to keep the rows
  • Empty: false: withdrawn
  • Filled: entered, by dashboard

fields

repeated text · since v18 · preview

Narrows an entitlement to some fields.

  • Means: the fields by their dictionary entries; the sidecar strips the rest from every delivery and reply, naming each not entitled
  • Does not mean: the fields a dataset fills
  • Empty: none: every field
  • Filled: entered, by dashboard
  • Bounds: at most 64 items; past it, refused

updated_by

text · since v18 · preview

Names who set the entitlement.

  • Means: the deployment-local subject the dashboard stamped
  • Does not mean: an email address
  • Empty: never empty
  • Filled: stamped, by dashboard

updated_at_ns

moment · since v18 · preview

Says when it was set.

  • Means: when the conductor recorded the change
  • Does not mean: when it takes effect at the broker, which is at once
  • Empty: never 0
  • Filled: decided, by conductor
  • Unit: nanoseconds since the epoch

acting_through_delegation

text · since v18 · preview

Names the delegation a person acted through.

  • Means: the delegation's ID, as the dashboard stamped it
  • Does not mean: an access token
  • Empty: empty: set in a browser
  • Filled: stamped, by dashboard

client_name

text · since v18 · preview

Names the client a person acted through.

  • Means: the client's name, as its delegation recorded it
  • Does not mean: a person
  • Empty: empty: set in a browser
  • Filled: stamped, by dashboard

note

text · since v18 · preview

Says why the entitlement was set.

  • Means: the note kept with the change's record
  • Does not mean: a description of the dataset
  • Empty: empty where none was given at the page; never through /mcp
  • Filled: entered, by dashboard

prepared_call_id

text · since v20 · preview

Names the prepared change the change was made from (W6.27).

  • Means: the PC- ID the person's request carried, stamped beside the delegation, so the record says what prepared the change as well as who made it
  • Does not mean: who made it, who stays the person; or that an agent made it: a person did, from what was prepared
  • Empty: empty where the change was not made from a prepared change, and on every change before v20
  • Filled: stamped, by dashboard

SourcePriority

meridian.v1.SourcePriority, a record.

data_type

text · since v18 · preview

Names the data type a priority is for.

  • Means: meridian.v1.Price, meridian.v1.Bar, and from v19 meridian.v1.Trade or meridian.v1.Quote
  • Does not mean: a kind of price
  • Empty: never empty
  • Filled: entered, by dashboard

Changes: v19, clarified: trades and quotes take a priority too, with no kind (W10.2).

kind

enum PriceKind · since v18 · preview

Names the kind of price a priority is for.

  • Means: the kind
  • Does not mean: a basis
  • Empty: unspecified for bars
  • Filled: entered, by dashboard
Value Means
PRICE_KIND_UNSPECIFIED for bars
PRICE_KIND_CLOSE closes
PRICE_KIND_LAST last prices
PRICE_KIND_NAV net asset values
PRICE_KIND_SETTLEMENT settlement prices
PRICE_KIND_BID bids
PRICE_KIND_ASK asks
PRICE_KIND_MID mids

datasets

repeated identifier dataset · since v18 · preview

Orders the datasets a default read takes.

  • Means: first to last, a dataset silent beyond its cadence passed over for the next
  • Does not mean: the datasets a reader is entitled to
  • Empty: none: no default, so a default read is answered not covered
  • Filled: entered, by dashboard
  • Bounds: at most 16 items; past it, refused

updated_by

text · since v18 · preview

Names who set the priority.

  • Means: the deployment-local subject the dashboard stamped
  • Does not mean: an email address
  • Empty: never empty
  • Filled: stamped, by dashboard

updated_at_ns

moment · since v18 · preview

Says when it was set, and guards against a stale change.

  • Means: when the lake journalled the change
  • Does not mean: a version number
  • Empty: never 0
  • Filled: decided, by lake
  • Unit: nanoseconds since the epoch

acting_through_delegation

text · since v18 · preview

Names the delegation a person acted through.

  • Means: the delegation's ID, as the dashboard stamped it
  • Does not mean: an access token
  • Empty: empty: set in a browser
  • Filled: stamped, by dashboard

client_name

text · since v18 · preview

Names the client a person acted through.

  • Means: the client's name, as its delegation recorded it
  • Does not mean: a person
  • Empty: empty: set in a browser
  • Filled: stamped, by dashboard

note

text · since v18 · preview

Says why the priority was set.

  • Means: the note kept with the change's record
  • Does not mean: a description of a dataset
  • Empty: empty where none was given at the page; never through /mcp
  • Filled: entered, by dashboard

prepared_call_id

text · since v20 · preview

Names the prepared change the change was made from (W6.27).

  • Means: the PC- ID the person's request carried, stamped beside the delegation, so the record says what prepared the change as well as who made it
  • Does not mean: who made it, who stays the person; or that an agent made it: a person did, from what was prepared
  • Empty: empty where the change was not made from a prepared change, and on every change before v20
  • Filled: stamped, by dashboard

ObservationMeta

meridian.v1.ObservationMeta, a message.

row_key

text · since v18 · preview

Names one observation, so recording it again changes nothing.

  • Means: the data plugin's identity for this observation, made from its raw record: the same key with the same values is a repeat, with different values a restatement
  • Does not mean: a key unique across datasets, or a trade identifier a venue would recognise
  • Empty: never empty
  • Filled: as-reported, by data
  • Bounds: 1 to 128 characters; past it, refused
  • Required on: RecordPrices from v18; RecordBars from v18; RecordTrades from v19; RecordQuotes from v19

subjects

repeated message SubjectRef · since v18 · preview

Names the entities a row is about.

  • Means: the deployment's own entities, each resolved through W3.1 before the row is sent: for a price, the instrument priced; for an FX rate, the currency's cash instrument
  • Does not mean: every entity a row mentions: a venue or a dealer is its source, not a subject
  • Empty: never empty
  • Filled: as-reported, by data
  • Bounds: 1 to 8 items; past it, refused
  • Required on: RecordPrices from v18; RecordBars from v18; RecordTrades from v19; RecordQuotes from v19

source

message Source · since v18 · preview

Says where a row came from.

  • Means: the writing instance and its version, the dataset, and the venue where the row is one venue's
  • Does not mean: the dataset's vendor or aggregator, which its catalogue declares once and every answer carries
  • Empty: never unset
  • Filled: as-reported, by data
  • Required on: RecordPrices from v18; RecordBars from v18; RecordTrades from v19; RecordQuotes from v19

valid_from_ns

moment · since v18 · preview

Says when a value became true.

  • Means: when the value became true, the event happened, or the period began, in UTC
  • Does not mean: when anyone learnt it, which the source's times and the recorded time say
  • Empty: never 0
  • Filled: as-reported, by data
  • Unit: nanoseconds since the epoch
  • Required on: RecordPrices from v18; RecordBars from v18; RecordTrades from v19; RecordQuotes from v19

valid_until_ns

moment · since v18 · preview

Says when a period ends.

  • Means: the end of the period a value covers, exclusive; a daily value's is its day's end, so a value whose end lies after a read is still forming
  • Does not mean: an expiry the source declared, which is a value of its own
  • Empty: 0: an instant, or a value in force until the next
  • Filled: as-reported, by data
  • Unit: nanoseconds since the epoch

business_date

date · since v18 · preview

Says which business day a daily value is for.

  • Means: a plain date, YYYY-MM-DD, in the day the dataset declares (its time zone and the minute its day ends); an invalid date is refused
  • Does not mean: the valid time's date in UTC, or a moment; a trade's or a quote's, which name none and are keyed by UTC instants
  • Empty: empty: not a daily value
  • Filled: as-reported, by data

Changes: v19, clarified: a trade and a quote name no business date, refused naming it (W10.4).

source_times

repeated message SourceTime · since v18 · preview

Keeps the source's own clocks beside the valid time.

  • Means: each timestamp the source gave, at most one of each kind
  • Does not mean: the lake's or the sidecar's times
  • Empty: none: the source gave no times of its own
  • Filled: as-reported, by data
  • Bounds: at most 6 items; past it, refused

sent_at_ns

moment · since v18 · preview

Says when the row left the data plugin's sidecar.

  • Means: the envelope's publication time
  • Does not mean: the source's time, or a time the plugin chose
  • Empty: 0 from a plugin: the sidecar sends it empty, and the lake records the envelope's publication time, which the sidecar stamped
  • Filled: stamped, by sidecar
  • Unit: nanoseconds since the epoch

recorded_at_ns

moment · since v18 · preview

Says when the lake committed this version.

  • Means: the recorded time a point-in-time read cuts at
  • Does not mean: when the value was true
  • Empty: never 0 on a row the lake answers; a plugin's value is never read
  • Filled: decided, by lake
  • Unit: nanoseconds since the epoch

version

integer · since v18 · preview

Tells a restatement from the first record.

  • Means: 1 for the first record of the row key, one more for each restatement
  • Does not mean: a count of identical repeats, which change nothing
  • Empty: never 0 on a row the lake answers; a plugin's value is never read
  • Filled: decided, by lake
  • Unit: versions of the row key

sequence

integer · since v18 · preview

Places a row in its dataset.

  • Means: the dataset partition's next number, taken in the change's own transaction, so the numbers have no holes
  • Does not mean: comparable across datasets
  • Empty: never 0 on a row the lake answers; a plugin's value is never read
  • Filled: decided, by lake
  • Unit: rows in the dataset's partition

previous_sequence

integer · since v18 · preview

Lets a reader narrowed to some subjects see a gap in its own.

  • Means: the sequence of the previous row of the same subject, data type and dataset
  • Does not mean: the previous row in the partition, which another subject's row may hold
  • Empty: 0: the first row of its subject, data type and dataset
  • Filled: decided, by lake
  • Unit: rows in the dataset's partition

raw

message RawRecordRef · since v18 · preview

Points to the raw record a row was converted from.

  • Means: the record in the writing plugin's own storage, followed only through that plugin
  • Does not mean: a channel to that storage
  • Empty: never unset on a data plugin's row
  • Filled: as-reported, by data
  • Required on: RecordPrices from v18; RecordBars from v18; RecordTrades from v19; RecordQuotes from v19

unconverted

repeated message AsReported · since v18 · preview

Carries each vendor value that failed conversion, beside the field left not known.

  • Means: the vendor's value as sent, its scheme naming the plugin and the field; a venue the deployment does not hold yet travels here, its venue left not known
  • Does not mean: a meaning: nothing past the plugin interprets it
  • Empty: none: every value converted
  • Filled: as-reported, by data
  • Bounds: at most 16 items; past it, refused

closed_day

message DateCheck · since v23 · preview

Flags a daily value dated on a closed day of its dataset's calendar (W10.4).

  • Means: v22's DateCheck: the date, each calendar with its version, the reason (weekend, holiday, outside coverage) and the holiday's name; decided by the lake, as recorded_at_ns is; a later calendar version's re-check is journalled beside the row, never a new version, and a point-in-time read shows the flag as known then
  • Does not mean: a refusal: the value is recorded as reported; nor a flag on a trade, a quote, an intraday row or an outcome, which name no business date
  • Empty: unset unless the row's business date is a closed day of its dataset's calendar, or outside its coverage; unset too where the calendar is not held
  • Filled: decided, by lake

SubjectRef

meridian.v1.SubjectRef, a message.

entity_id

identifier entity · since v18 · preview

Names one entity a row is about.

  • Means: the deployment's own ID for an entity the entity store holds: in the lake's 1a an instrument's
  • Does not mean: a vendor's identifier, which is resolved and never a key
  • Empty: never empty
  • Filled: as-reported, by data
  • Bounds: 1 to 64 characters; past it, refused

Source

meridian.v1.Source, a message.

instance

identifier instance · since v18 · preview

Names the plugin instance that recorded a row.

  • Means: the instance the writing sidecar serves
  • Does not mean: the vendor
  • Empty: empty from a plugin: the sidecar stamps it
  • Filled: stamped, by sidecar

plugin_version

text · since v18 · preview

Makes a parser's fix traceable.

  • Means: the writing plugin's version when it recorded the row
  • Does not mean: the contract version, or a version the plugin claims
  • Empty: empty from a plugin: the sidecar sends it empty, and the lake records the version the deployment launched the instance at
  • Filled: stamped, by sidecar
  • Bounds: at most 64 characters; past it, refused

dataset

identifier dataset · since v18 · preview

Names the dataset a row belongs to.

  • Means: a dataset the writing instance's catalogue declares: the instance, a colon and the dataset's key
  • Does not mean: a vendor's product code
  • Empty: never empty
  • Filled: as-reported, by data
  • Bounds: 1 to 96 characters; past it, refused
  • Required on: RecordPrices from v18; RecordBars from v18

venue_id

identifier venue · since v18 · preview

Names the venue an observation originated on.

  • Means: the venue master's ID (VEN-), resolved through W3.14; for a trade, the venue it printed on: the market centre a consolidated dataset's trade names, a FINRA print's reporting facility
  • Does not mean: a MIC, which is one of the venue's identifiers; the dataset's distributor
  • Empty: empty: not venue-specific, which is the consolidated view; a venue not yet held is not known, and its value as reported is in unconverted
  • Filled: as-reported, by data

Changes: v19, clarified: a trade's venue is the venue it printed on (W10.4).

SourceTime

meridian.v1.SourceTime, a message.

kind

enum SourceTimeKind · since v18 · preview

Says which of the source's clocks a timestamp is.

  • Means: the clock
  • Does not mean: a ranking of trust
  • Empty: unspecified is refused
  • Filled: as-reported, by data
Value Means
SOURCE_TIME_KIND_UNSPECIFIED refused
SOURCE_TIME_KIND_EVENT when it happened at its origin
SOURCE_TIME_KIND_CONSOLIDATED when a consolidator published it
SOURCE_TIME_KIND_REPORTED when a reporting facility received it
SOURCE_TIME_KIND_VENDOR_RECEIVED when the vendor received it
SOURCE_TIME_KIND_PUBLISHED when the source released it: a close, a panel, a model

at_ns

moment · since v18 · preview

Carries one of the source's timestamps.

  • Means: that clock's reading, in UTC, as the source gave it
  • Does not mean: a time the data plugin adjusted
  • Empty: never 0
  • Filled: as-reported, by data
  • Unit: nanoseconds since the epoch

DatasetRef

meridian.v1.DatasetRef, a message.

dataset

identifier dataset · since v18 · preview

Names a dataset an answer includes.

  • Means: the dataset's ID in the deployment
  • Does not mean: a vendor's product
  • Empty: never empty
  • Filled: decided, by lake

instance

identifier instance · since v18 · preview

Names the instance serving a dataset.

  • Means: the plugin instance whose catalogue declares it
  • Does not mean: the vendor
  • Empty: never empty
  • Filled: decided, by lake

vendor

text · since v18 · preview

Says who originated a dataset's data.

  • Means: the vendor its catalogue declares
  • Does not mean: who distributed it
  • Empty: never empty
  • Filled: as-reported, by data

aggregator

text · since v18 · preview

Says who carried a dataset's data, when an aggregator did.

  • Means: the aggregator its catalogue declares
  • Does not mean: the vendor
  • Empty: empty: reached directly
  • Filled: as-reported, by data

declaration

message DatasetDeclaration · since v18 · preview

Carries a dataset's catalogue entry.

  • Means: the entry as its instance declared it
  • Does not mean: the deployment's licence, which is the admin's
  • Empty: unset in a read's answer; set in a listing of datasets and on an entitlements change
  • Filled: decided, by lake

unconverted_count

integer · since v18 · preview

Counts a dataset's rows whose values failed conversion, for the Data sources page.

  • Means: the rows the lake keeps of the dataset carrying a vendor's value as reported beside a field left not known
  • Does not mean: the rows refused, which are not kept
  • Empty: 0 where no kept row of it carries a value as reported, and in a read's answer and an entitlements change, which count nothing
  • Filled: derived, by lake
  • Unit: rows

miss_count

integer · since v18 · preview

Counts what a dataset's instance could not resolve, for the Data sources page.

  • Means: the identifiers and venues the dataset's instance reported missing (W3.2, W3.15), as the lake heard them
  • Does not mean: a want declined, or a subject not covered
  • Empty: 0 where its instance reported none since the lake started counting, and in a read's answer and an entitlements change
  • Filled: derived, by lake
  • Unit: misses

closed_day_count

integer · since v23 · preview

Counts a dataset's rows dated on a closed day of its calendar, for the Data sources page (W10.9).

  • Means: the rows the lake keeps of the dataset flagged ObservationMeta.closed_day for a weekend or a holiday
  • Does not mean: the rows dated outside the calendar's coverage, counted apart
  • Empty: 0 where no kept row of it is flagged on a closed day, and in a read's answer and an entitlements change
  • Filled: derived, by lake
  • Unit: rows

outside_coverage_count

integer · since v23 · preview

Counts a dataset's rows dated outside its calendar's coverage, apart, so a coverage lapse reads as a curation matter (W10.9).

  • Means: the rows flagged DATE_CHECK_REASON_OUTSIDE_COVERAGE
  • Does not mean: a vendor's error
  • Empty: 0 where no kept row of it is dated outside its calendar's coverage, and in a read's answer and an entitlements change
  • Filled: derived, by lake
  • Unit: rows

TradeAttributes

meridian.v1.TradeAttributes, a message.

consolidated

message Eligibility · since v19 · preview

Says what a trade may count for in the consolidated bar across venues.

  • Means: whether it may set the consolidated view's high and low, open, close and volume
  • Does not mean: whether it did
  • Empty: never unset
  • Filled: as-reported, by data

market_centre

message Eligibility · since v19 · preview

Says what a trade may count for in its own venue's bar.

  • Means: whether it may set its market centre's high and low, open, close and volume
  • Does not mean: whether it did
  • Empty: never unset
  • Filled: as-reported, by data

characteristics

repeated enum TradeCharacteristic · since v19 · preview

Carries what a trade's condition codes meant, in the platform's words.

  • Means: each characteristic the source's codes said the trade had
  • Does not mean: a vendor's or a SIP's code; whether the trade may set a bar's statistics, which its Eligibility says
  • Empty: none listed means a regular trade, unless unconverted names a code that did not convert, when the characteristics are not known
  • Filled: as-reported, by data
  • Bounds: at most 16 items; past it, refused
Value Means
TRADE_CHARACTERISTIC_UNSPECIFIED refused
TRADE_CHARACTERISTIC_OPENING_AUCTION printed by the venue's opening auction
TRADE_CHARACTERISTIC_CLOSING_AUCTION printed by the venue's closing auction
TRADE_CHARACTERISTIC_OTHER_AUCTION printed by another auction: a reopening after a halt, an intraday auction
TRADE_CHARACTERISTIC_ODD_LOT smaller than the instrument's round lot
TRADE_CHARACTERISTIC_EXTENDED_HOURS outside the venue's regular session
TRADE_CHARACTERISTIC_OUT_OF_SEQUENCE reported out of its time order
TRADE_CHARACTERISTIC_LATE_REPORT reported later than its venue's rules require
TRADE_CHARACTERISTIC_AVERAGE_PRICE priced as an average over several executions
TRADE_CHARACTERISTIC_NON_REGULAR_SETTLEMENT settling other than on the regular cycle: cash, next day, seller's option
TRADE_CHARACTERISTIC_INTERMARKET_SWEEP part of an order sweeping several venues at once
TRADE_CHARACTERISTIC_DERIVATIVELY_PRICED priced from another instrument or a benchmark, not by the market at the time
TRADE_CHARACTERISTIC_PRIOR_REFERENCE_PRICE priced at a reference price from earlier in the day
TRADE_CHARACTERISTIC_CONTINGENT executed contingent on another trade
TRADE_CHARACTERISTIC_CROSS a cross of two orders by one participant

Eligibility

meridian.v1.Eligibility, a message.

high_low

enum Eligible · since v19 · preview

Says whether a trade may set a bar's high and low.

  • Means: whether the trade may set the high and the low
  • Does not mean: whether it did
  • Empty: unspecified: not known, read as not eligible
  • Filled: as-reported, by data
Value Means
ELIGIBLE_UNSPECIFIED not known: a code that did not convert; a reader computing a bar reads it as not eligible, and says so
ELIGIBLE_ELIGIBLE the trade may set the statistic
ELIGIBLE_NOT_ELIGIBLE the trade may not set the statistic

open

enum Eligible · since v19 · preview

Says whether a trade may set a bar's open.

  • Means: whether the trade may set the open
  • Does not mean: whether it did
  • Empty: unspecified: not known, read as not eligible
  • Filled: as-reported, by data
Value Means
ELIGIBLE_UNSPECIFIED not known: a code that did not convert; a reader computing a bar reads it as not eligible, and says so
ELIGIBLE_ELIGIBLE the trade may set the statistic
ELIGIBLE_NOT_ELIGIBLE the trade may not set the statistic

close

enum Eligible · since v19 · preview

Says whether a trade may set a bar's close.

  • Means: whether the trade may set the close
  • Does not mean: whether it did; the official close, which is a price of kind close
  • Empty: unspecified: not known, read as not eligible
  • Filled: as-reported, by data
Value Means
ELIGIBLE_UNSPECIFIED not known: a code that did not convert; a reader computing a bar reads it as not eligible, and says so
ELIGIBLE_ELIGIBLE the trade may set the statistic
ELIGIBLE_NOT_ELIGIBLE the trade may not set the statistic

volume

enum Eligible · since v19 · preview

Says whether a trade counts toward a bar's volume.

  • Means: whether the trade's quantity may count toward the volume
  • Does not mean: whether it did
  • Empty: unspecified: not known, read as not eligible
  • Filled: as-reported, by data
Value Means
ELIGIBLE_UNSPECIFIED not known: a code that did not convert; a reader computing a bar reads it as not eligible, and says so
ELIGIBLE_ELIGIBLE the trade may set the statistic
ELIGIBLE_NOT_ELIGIBLE the trade may not set the statistic

RecordPricesRequest

meridian.v1.RecordPricesRequest, a message.

prices

repeated message Price · since v18 · preview

Carries a batch of prices.

  • Means: 1 to 500 prices, recorded whole or refused naming the item and field
  • Does not mean: a transaction across datasets: each row is recorded in its own dataset's partition
  • Empty: never empty
  • Filled: as-reported, by data
  • Bounds: 1 to 500 items; past it, refused

want_id

text · since v18 · preview

Names the want a batch answers.

  • Means: the want's identifier as it was delivered
  • Does not mean: a key the plugin made
  • Empty: empty: recorded unasked
  • Filled: as-reported, by data

RecordBarsRequest

meridian.v1.RecordBarsRequest, a message.

bars

repeated message Bar · since v18 · preview

Carries a batch of bars.

  • Means: 1 to 500 bars, recorded whole or refused naming the item and field
  • Does not mean: a transaction across datasets
  • Empty: never empty
  • Filled: as-reported, by data
  • Bounds: 1 to 500 items; past it, refused

want_id

text · since v18 · preview

Names the want a batch answers.

  • Means: the want's identifier as it was delivered
  • Does not mean: a key the plugin made
  • Empty: empty: recorded unasked
  • Filled: as-reported, by data

RecordTradesRequest

meridian.v1.RecordTradesRequest, a message.

trades

repeated message Trade · since v19 · preview

Carries a batch of trades.

  • Means: 1 to 500 trades, recorded whole or refused naming the item and field
  • Does not mean: a transaction across datasets: each row is recorded in its own dataset's partition
  • Empty: never empty
  • Filled: as-reported, by data
  • Bounds: 1 to 500 items; past it, refused

want_id

text · since v19 · preview

Names the want a batch answers.

  • Means: the want's identifier as it was delivered
  • Does not mean: a key the plugin made
  • Empty: empty: recorded unasked, as a standing want's stream mostly is
  • Filled: as-reported, by data

RecordQuotesRequest

meridian.v1.RecordQuotesRequest, a message.

quotes

repeated message Quote · since v19 · preview

Carries a batch of quotes.

  • Means: 1 to 500 quotes, recorded whole or refused naming the item and field
  • Does not mean: a transaction across datasets
  • Empty: never empty
  • Filled: as-reported, by data
  • Bounds: 1 to 500 items; past it, refused

want_id

text · since v19 · preview

Names the want a batch answers.

  • Means: the want's identifier as it was delivered
  • Does not mean: a key the plugin made
  • Empty: empty: recorded unasked
  • Filled: as-reported, by data

RecordObservationsReply

meridian.v1.RecordObservationsReply, a message.

recorded

integer · since v18 · preview

Counts the rows recorded for the first time.

  • Means: rows whose key the lake had not held
  • Does not mean: rows received
  • Empty: 0 when none was new
  • Filled: decided, by lake
  • Unit: rows

restated

integer · since v18 · preview

Counts the restatements.

  • Means: rows recorded as a new version of a key held, its values different by value
  • Does not mean: repeats at another scale: 764.2 and 764.20 are one value
  • Empty: 0 when none restated
  • Filled: decided, by lake
  • Unit: rows

unchanged

integer · since v18 · preview

Counts the repeats.

  • Means: rows identical to the version in force, which changed nothing
  • Does not mean: rows refused
  • Empty: 0 when none repeated
  • Filled: decided, by lake
  • Unit: rows

watermark

message Watermark · since v18 · preview

Says where the batch left its dataset.

  • Means: the dataset partition's sequence once the batch committed
  • Does not mean: a time
  • Empty: never unset
  • Filled: decided, by lake

PricesRecordedEvent

meridian.v1.PricesRecordedEvent, a message.

price

message Price · since v18 · preview

Delivers a price the lake recorded.

  • Means: the row as recorded, with its version and sequence
  • Does not mean: every price: a reader hears what it is entitled to and asked for, latest first under load per subject, dataset, kind, venue and the price's asset
  • Empty: never unset
  • Filled: decided, by lake

Changes: v19, clarified: conflated per the price's asset too (W10.5, approved 2026-10-10).

BarsRecordedEvent

meridian.v1.BarsRecordedEvent, a message.

bar

message Bar · since v18 · preview

Delivers a bar the lake recorded.

  • Means: the row as recorded, with its version and sequence
  • Does not mean: every bar
  • Empty: never unset
  • Filled: decided, by lake

TradesRecordedEvent

meridian.v1.TradesRecordedEvent, a message.

trade

message Trade · since v19 · preview

Delivers a trade the lake recorded.

  • Means: the row as recorded, with its version and sequence; every trade is delivered, never conflated
  • Does not mean: a promise of delivery: a reader too slow for them meets a loss marker and reads the trades after the watermark it last saw
  • Empty: never unset
  • Filled: decided, by lake

QuotesRecordedEvent

meridian.v1.QuotesRecordedEvent, a message.

quote

message Quote · since v19 · preview

Delivers a quote the lake recorded.

  • Means: the row as recorded, with its version and sequence
  • Does not mean: every quote: a reader hears what it is entitled to and asked for, latest first under load per subject, dataset, venue and the quote's asset
  • Empty: never unset
  • Filled: decided, by lake

SourceChoice

meridian.v1.SourceChoice, a message.

default

boolean · since v18 · preview

Asks for the deployment's priority.

  • Means: the datasets the deployment's priority orders for the data type and kind, with failover
  • Does not mean: the first dataset the reader is entitled to
  • Empty: false, with nothing else set, is the default too
  • Filled: as-reported, by reporting

named

repeated identifier dataset · since v18 · preview

Asks for named datasets.

  • Means: these datasets, in this order
  • Does not mean: datasets the reader is not entitled to, which are answered as not entitled
  • Empty: none: not named
  • Filled: as-reported, by reporting
  • Bounds: at most 16 items; past it, refused

side_by_side

boolean · since v18 · preview

Asks for every entitled dataset at once.

  • Means: each row from every dataset the reader is entitled to, each naming its own
  • Does not mean: a mix: no read silently mixes sources
  • Empty: false: one source per value
  • Filled: as-reported, by reporting

Unanswered

meridian.v1.Unanswered, a message.

subject

message SubjectRef · since v18 · preview

Names the subject a part of a read was not answered for.

  • Means: the entity asked about
  • Does not mean: a subject that answered
  • Empty: unset where the whole dataset went unanswered
  • Filled: decided, by lake

dataset

identifier dataset · since v18 · preview

Names the dataset that did not answer.

  • Means: the dataset asked, or the one a default read fell back past
  • Does not mean: the dataset that did answer
  • Empty: empty where no dataset could serve it
  • Filled: decided, by lake

field

text · since v18 · preview

Names the field not answered.

  • Means: the field by its dictionary entry, meridian.v1.Bar.vwap
  • Does not mean: a path into a request
  • Empty: empty for the whole row
  • Filled: decided, by lake

reason

enum UnansweredReason · since v18 · preview

Says why a part of a read was not answered.

  • Means: the reason
  • Does not mean: a failure of the read: the rest still answer
  • Empty: never unspecified
  • Filled: decided, by lake
Value Means
UNANSWERED_REASON_UNSPECIFIED never sent
UNANSWERED_REASON_NOT_ENTITLED the reader is not entitled to the dataset, or the field
UNANSWERED_REASON_NOT_COVERED no dataset covers the subject
UNANSWERED_REASON_ASKED_SOURCE the lake asked the dataset's source for it; the reader hears the rows once recorded
UNANSWERED_REASON_SOURCE_SILENT the dataset recorded nothing for the subject within its cadence
UNANSWERED_REASON_UNRESOLVED the subject is not one the deployment's entities resolve
UNANSWERED_REASON_BEYOND_HISTORY older than the history the dataset reaches, or the lake keeps
UNANSWERED_REASON_NOT_KEPT the dataset's licence forbids keeping it, and it was served, not kept

ListPricesRequest

meridian.v1.ListPricesRequest, a message.

subjects

repeated message SubjectRef · since v18 · preview

Names the entities a read is about.

  • Means: 1 to 500 entities
  • Does not mean: vendor identifiers
  • Empty: never empty
  • Filled: as-reported, by reporting
  • Bounds: 1 to 500 items; past it, refused

kinds

repeated enum PriceKind · since v18 · preview

Narrows a read to some kinds of price.

  • Means: the kinds wanted
  • Does not mean: a basis
  • Empty: none: every kind
  • Filled: as-reported, by reporting
Value Means
PRICE_KIND_UNSPECIFIED never asked
PRICE_KIND_CLOSE closes
PRICE_KIND_LAST last prices
PRICE_KIND_NAV net asset values
PRICE_KIND_SETTLEMENT settlement prices
PRICE_KIND_BID bids
PRICE_KIND_ASK asks
PRICE_KIND_MID mids

sources

message SourceChoice · since v18 · preview

Says which datasets a read is answered from.

  • Means: the default, named datasets, or every entitled dataset side by side
  • Does not mean: an entitlement
  • Empty: unset: the deployment's default
  • Filled: as-reported, by reporting

at_ns

moment · since v18 · preview

Asks for the latest in force at a valid time.

  • Means: the valid time; the latest is chosen per subject, dataset, kind, venue and the price's asset, so a subject priced in two assets on one venue answers both
  • Does not mean: a recorded time, which as_of_ns cuts
  • Empty: 0 with no business date and no range: the latest in force now
  • Filled: as-reported, by reporting
  • Unit: nanoseconds since the epoch

Changes: v19, clarified: the latest is chosen per the price's asset too (W10.6, approved 2026-10-10).

business_date

date · since v18 · preview

Asks for a business date's prices.

  • Means: a plain date, YYYY-MM-DD; an invalid date is refused
  • Does not mean: a moment
  • Empty: empty: not a read by date
  • Filled: as-reported, by reporting

valid_from_ns

moment · since v18 · preview

Opens a valid-time range.

  • Means: the range's start, inclusive
  • Does not mean: a recorded time
  • Empty: 0: not a range
  • Filled: as-reported, by reporting
  • Unit: nanoseconds since the epoch

valid_until_ns

moment · since v18 · preview

Closes a valid-time range.

  • Means: the range's end, exclusive
  • Does not mean: a recorded time
  • Empty: 0: not a range
  • Filled: as-reported, by reporting
  • Unit: nanoseconds since the epoch

as_of_ns

moment · since v18 · preview

Reads what the lake knew at a recorded time.

  • Means: the recorded-time cut-off: nothing recorded after it answers
  • Does not mean: a valid time
  • Empty: 0: what the lake knows now
  • Filled: as-reported, by reporting
  • Unit: nanoseconds since the epoch

page_size

integer · since v18 · preview

Bounds a page.

  • Means: how many rows a page holds at most
  • Does not mean: a promise that a page is full
  • Empty: 0 is 100; past 500, answered at 500
  • Filled: as-reported, by reporting
  • Unit: rows
  • Bounds: from 0 to 500; past it, answered at the bound

cursor

text · since v18 · preview

Asks for the next page.

  • Means: the previous reply's next_cursor, as given
  • Does not mean: a position a plugin computes
  • Empty: empty for the first page
  • Filled: as-reported, by reporting

ListPricesReply

meridian.v1.ListPricesReply, a message.

prices

repeated message Price · since v18 · preview

Carries a page of prices.

  • Means: the rows, each naming its dataset
  • Does not mean: every subject asked: unanswered says which were not
  • Empty: none answered
  • Filled: decided, by lake

unanswered

repeated message Unanswered · since v18 · preview

Says what a read could not serve, and why.

  • Means: each subject, dataset and field not answered, with its reason; a default read's fallback names why the datasets above it did not answer
  • Does not mean: a refusal of the read
  • Empty: none: every part answered
  • Filled: decided, by lake

datasets

repeated message DatasetRef · since v18 · preview

Says what each dataset in the answer is, once.

  • Means: each dataset with its instance, vendor and aggregator
  • Does not mean: the datasets the reader may read, which ListDatasets answers
  • Empty: none when no row answered
  • Filled: decided, by lake

watermark

message Watermark · since v18 · preview

Says where the read was answered.

  • Means: the sequence per dataset partition the read was answered at
  • Does not mean: a time
  • Empty: never unset
  • Filled: decided, by lake

next_cursor

text · since v18 · preview

Lets a reader ask for the next page.

  • Means: an opaque cursor
  • Does not mean: a count
  • Empty: empty when the read is exhausted
  • Filled: decided, by lake

ListBarsRequest

meridian.v1.ListBarsRequest, a message.

subjects

repeated message SubjectRef · since v18 · preview

Names the entities a read is about.

  • Means: 1 to 500 entities
  • Does not mean: vendor identifiers
  • Empty: never empty
  • Filled: as-reported, by reporting
  • Bounds: 1 to 500 items; past it, refused

interval_ns

integer · since v18 · preview

Narrows a read to bars of one length.

  • Means: the bars' length: a day's, a minute's
  • Does not mean: a time range
  • Empty: 0: every length
  • Filled: as-reported, by reporting
  • Unit: nanoseconds

sources

message SourceChoice · since v18 · preview

Says which datasets a read is answered from.

  • Means: the default, named datasets, or every entitled dataset side by side
  • Does not mean: an entitlement
  • Empty: unset: the deployment's default
  • Filled: as-reported, by reporting

at_ns

moment · since v18 · preview

Asks for the latest bar in force at a valid time.

  • Means: the valid time
  • Does not mean: a recorded time
  • Empty: 0 with no business date and no range: the latest in force now
  • Filled: as-reported, by reporting
  • Unit: nanoseconds since the epoch

business_date

date · since v18 · preview

Asks for a business date's bars.

  • Means: a plain date, YYYY-MM-DD; an invalid date is refused
  • Does not mean: a moment
  • Empty: empty: not a read by date
  • Filled: as-reported, by reporting

valid_from_ns

moment · since v18 · preview

Opens a valid-time range.

  • Means: the range's start, inclusive
  • Does not mean: a recorded time
  • Empty: 0: not a range
  • Filled: as-reported, by reporting
  • Unit: nanoseconds since the epoch

valid_until_ns

moment · since v18 · preview

Closes a valid-time range.

  • Means: the range's end, exclusive
  • Does not mean: a recorded time
  • Empty: 0: not a range
  • Filled: as-reported, by reporting
  • Unit: nanoseconds since the epoch

as_of_ns

moment · since v18 · preview

Reads what the lake knew at a recorded time.

  • Means: the recorded-time cut-off
  • Does not mean: a valid time
  • Empty: 0: what the lake knows now
  • Filled: as-reported, by reporting
  • Unit: nanoseconds since the epoch

page_size

integer · since v18 · preview

Bounds a page.

  • Means: how many rows a page holds at most
  • Does not mean: a promise that a page is full
  • Empty: 0 is 100; past 500, answered at 500
  • Filled: as-reported, by reporting
  • Unit: rows
  • Bounds: from 0 to 500; past it, answered at the bound

cursor

text · since v18 · preview

Asks for the next page.

  • Means: the previous reply's next_cursor, as given
  • Does not mean: a position a plugin computes
  • Empty: empty for the first page
  • Filled: as-reported, by reporting

ListBarsReply

meridian.v1.ListBarsReply, a message.

bars

repeated message Bar · since v18 · preview

Carries a page of bars.

  • Means: the rows, each naming its dataset
  • Does not mean: every subject asked
  • Empty: none answered
  • Filled: decided, by lake

unanswered

repeated message Unanswered · since v18 · preview

Says what a read could not serve, and why.

  • Means: each subject, dataset and field not answered, with its reason
  • Does not mean: a refusal of the read
  • Empty: none: every part answered
  • Filled: decided, by lake

datasets

repeated message DatasetRef · since v18 · preview

Says what each dataset in the answer is, once.

  • Means: each dataset with its instance, vendor and aggregator
  • Does not mean: the datasets the reader may read
  • Empty: none when no row answered
  • Filled: decided, by lake

watermark

message Watermark · since v18 · preview

Says where the read was answered.

  • Means: the sequence per dataset partition the read was answered at
  • Does not mean: a time
  • Empty: never unset
  • Filled: decided, by lake

next_cursor

text · since v18 · preview

Lets a reader ask for the next page.

  • Means: an opaque cursor
  • Does not mean: a count
  • Empty: empty when the read is exhausted
  • Filled: decided, by lake

ListTradesRequest

meridian.v1.ListTradesRequest, a message.

subjects

repeated message SubjectRef · since v19 · preview

Names the entities a read is about.

  • Means: 1 to 500 entities
  • Does not mean: vendor identifiers
  • Empty: never empty
  • Filled: as-reported, by signal
  • Bounds: 1 to 500 items; past it, refused

sources

message SourceChoice · since v19 · preview

Says which datasets a read is answered from.

  • Means: the default, named datasets, or every entitled dataset side by side
  • Does not mean: an entitlement
  • Empty: unset: the deployment's default
  • Filled: as-reported, by signal

valid_from_ns

moment · since v19 · preview

Opens a valid-time range.

  • Means: the range's start, inclusive; the range lies within one day of each dataset as it declares its day, or is refused naming it
  • Does not mean: a recorded time
  • Empty: 0: not a range, when after_watermark is given
  • Filled: as-reported, by signal
  • Unit: nanoseconds since the epoch

valid_until_ns

moment · since v19 · preview

Closes a valid-time range.

  • Means: the range's end, exclusive
  • Does not mean: a recorded time
  • Empty: 0: not a range, when after_watermark is given
  • Filled: as-reported, by signal
  • Unit: nanoseconds since the epoch

after_watermark

message Watermark · since v19 · preview

Catches a reader up on the trades it lost.

  • Means: the watermark the reader last saw: answered the rows each dataset partition it names recorded after its sequence there, for the subjects asked, whatever their valid time, a late or out-of-sequence print included
  • Does not mean: a time; a range: a partition it does not name is not read
  • Empty: unset: a read by range
  • Filled: as-reported, by signal

as_of_ns

moment · since v19 · preview

Reads what the lake knew at a recorded time.

  • Means: the recorded-time cut-off: nothing recorded after it answers
  • Does not mean: a valid time
  • Empty: 0: what the lake knows now
  • Filled: as-reported, by signal
  • Unit: nanoseconds since the epoch

page_size

integer · since v19 · preview

Bounds a page.

  • Means: how many rows a page holds at most
  • Does not mean: a promise that a page is full
  • Empty: 0 is 100; past 500, answered at 500
  • Filled: as-reported, by signal
  • Unit: rows
  • Bounds: from 0 to 500; past it, answered at the bound

cursor

text · since v19 · preview

Asks for the next page.

  • Means: the previous reply's next_cursor, as given
  • Does not mean: a position a plugin computes
  • Empty: empty for the first page
  • Filled: as-reported, by signal

latest_recorded

boolean · since v20 · preview

Asks, for a data plugin, the last trade its own instance recorded of each subject (W10.6).

  • Means: one trade per subject, dataset and venue, its own instance's rows only, with the watermark read at, so it backfills a restart's gap from the venue's history
  • Does not mean: the latest in force from every source, or a read any other reader may make: refused from any but a data plugin
  • Empty: false: a range, a watermark or a page, as before
  • Filled: as-reported, by data

ListTradesReply

meridian.v1.ListTradesReply, a message.

trades

repeated message Trade · since v19 · preview

Carries a page of trades.

  • Means: the rows, each naming its dataset
  • Does not mean: every subject asked: unanswered says which were not
  • Empty: none answered
  • Filled: decided, by lake

unanswered

repeated message Unanswered · since v19 · preview

Says what a read could not serve, and why.

  • Means: each subject, dataset and field not answered, with its reason; a default read's fallback names why the datasets above it did not answer
  • Does not mean: a refusal of the read
  • Empty: none: every part answered
  • Filled: decided, by lake

datasets

repeated message DatasetRef · since v19 · preview

Says what each dataset in the answer is, once.

  • Means: each dataset with its instance, vendor and aggregator
  • Does not mean: the datasets the reader may read, which ListDatasets answers
  • Empty: none when no row answered
  • Filled: decided, by lake

watermark

message Watermark · since v19 · preview

Says where the read was answered.

  • Means: the sequence per dataset partition the read was answered at, which a later catch-up names
  • Does not mean: a time
  • Empty: never unset
  • Filled: decided, by lake

next_cursor

text · since v19 · preview

Lets a reader ask for the next page.

  • Means: an opaque cursor
  • Does not mean: a count
  • Empty: empty when the read is exhausted
  • Filled: decided, by lake

ListQuotesRequest

meridian.v1.ListQuotesRequest, a message.

subjects

repeated message SubjectRef · since v19 · preview

Names the entities a read is about.

  • Means: 1 to 500 entities
  • Does not mean: vendor identifiers
  • Empty: never empty
  • Filled: as-reported, by signal
  • Bounds: 1 to 500 items; past it, refused

sources

message SourceChoice · since v19 · preview

Says which datasets a read is answered from.

  • Means: the default, named datasets, or every entitled dataset side by side
  • Does not mean: an entitlement
  • Empty: unset: the deployment's default
  • Filled: as-reported, by signal

at_ns

moment · since v19 · preview

Asks for the latest quote in force at a valid time.

  • Means: the valid time; the latest is chosen per subject, dataset, venue and the quote's asset
  • Does not mean: a recorded time, which as_of_ns cuts
  • Empty: 0 with no range: the latest in force now
  • Filled: as-reported, by signal
  • Unit: nanoseconds since the epoch

valid_from_ns

moment · since v19 · preview

Opens a valid-time range.

  • Means: the range's start, inclusive; the range lies within one day of each dataset as it declares its day, or is refused naming it
  • Does not mean: a recorded time
  • Empty: 0: not a range
  • Filled: as-reported, by signal
  • Unit: nanoseconds since the epoch

valid_until_ns

moment · since v19 · preview

Closes a valid-time range.

  • Means: the range's end, exclusive
  • Does not mean: a recorded time
  • Empty: 0: not a range
  • Filled: as-reported, by signal
  • Unit: nanoseconds since the epoch

as_of_ns

moment · since v19 · preview

Reads what the lake knew at a recorded time.

  • Means: the recorded-time cut-off
  • Does not mean: a valid time
  • Empty: 0: what the lake knows now
  • Filled: as-reported, by signal
  • Unit: nanoseconds since the epoch

page_size

integer · since v19 · preview

Bounds a page.

  • Means: how many rows a page holds at most
  • Does not mean: a promise that a page is full
  • Empty: 0 is 100; past 500, answered at 500
  • Filled: as-reported, by signal
  • Unit: rows
  • Bounds: from 0 to 500; past it, answered at the bound

cursor

text · since v19 · preview

Asks for the next page.

  • Means: the previous reply's next_cursor, as given
  • Does not mean: a position a plugin computes
  • Empty: empty for the first page
  • Filled: as-reported, by signal

ListQuotesReply

meridian.v1.ListQuotesReply, a message.

quotes

repeated message Quote · since v19 · preview

Carries a page of quotes.

  • Means: the rows, each naming its dataset
  • Does not mean: every subject asked: unanswered says which were not
  • Empty: none answered
  • Filled: decided, by lake

unanswered

repeated message Unanswered · since v19 · preview

Says what a read could not serve, and why.

  • Means: each subject, dataset and field not answered, with its reason; a default read's fallback names why the datasets above it did not answer
  • Does not mean: a refusal of the read
  • Empty: none: every part answered
  • Filled: decided, by lake

datasets

repeated message DatasetRef · since v19 · preview

Says what each dataset in the answer is, once.

  • Means: each dataset with its instance, vendor and aggregator
  • Does not mean: the datasets the reader may read, which ListDatasets answers
  • Empty: none when no row answered
  • Filled: decided, by lake

watermark

message Watermark · since v19 · preview

Says where the read was answered.

  • Means: the sequence per dataset partition the read was answered at, which a later catch-up names
  • Does not mean: a time
  • Empty: never unset
  • Filled: decided, by lake

next_cursor

text · since v19 · preview

Lets a reader ask for the next page.

  • Means: an opaque cursor
  • Does not mean: a count
  • Empty: empty when the read is exhausted
  • Filled: decided, by lake

ObservationsWantedEvent

meridian.v1.ObservationsWantedEvent, a message.

want_id

text · since v18 · preview

Names a want.

  • Means: the want's identifier, which the rows recorded for it name
  • Does not mean: a reader's identity: readers' identical wants are one
  • Empty: never empty
  • Filled: decided, by lake

dataset

identifier dataset · since v18 · preview

Names the dataset a want is of.

  • Means: a dataset the hearing instance serves
  • Does not mean: another instance's dataset: a want is delivered to the instance serving it alone
  • Empty: never empty
  • Filled: decided, by lake

data_type

text · since v18 · preview

Names the data type wanted.

  • Means: the data type by its message's full name: meridian.v1.Price, meridian.v1.Bar, and from v19 meridian.v1.Trade or meridian.v1.Quote
  • Does not mean: a kind of price
  • Empty: never empty
  • Filled: decided, by lake

Changes: v19, clarified: a want may be of trades or quotes (W10.7).

subjects

repeated message SubjectRef · since v18 · preview

Names the entities wanted.

  • Means: the deployment's entities, which the data plugin resolves to its vendor's codes at the edge
  • Does not mean: vendor identifiers
  • Empty: never empty
  • Filled: decided, by lake
  • Bounds: 1 to 500 items; past it, refused

kinds

repeated enum PriceKind · since v18 · preview

Narrows a want of prices to some kinds.

  • Means: the kinds wanted
  • Does not mean: a basis
  • Empty: none: every kind, or not a want of prices
  • Filled: decided, by lake
Value Means
PRICE_KIND_UNSPECIFIED never sent
PRICE_KIND_CLOSE closes
PRICE_KIND_LAST last prices
PRICE_KIND_NAV net asset values
PRICE_KIND_SETTLEMENT settlement prices
PRICE_KIND_BID bids
PRICE_KIND_ASK asks
PRICE_KIND_MID mids

interval_ns

integer · since v18 · preview

Names the length of the bars wanted.

  • Means: the bars' length
  • Does not mean: a time range
  • Empty: 0: not a want of bars
  • Filled: decided, by lake
  • Unit: nanoseconds

business_date

date · since v18 · preview

Names the business date wanted.

  • Means: a plain date, YYYY-MM-DD, in the dataset's declared day
  • Does not mean: a moment
  • Empty: empty: not a want by date
  • Filled: decided, by lake

valid_from_ns

moment · since v18 · preview

Opens the valid-time range wanted.

  • Means: the range's start, inclusive
  • Does not mean: a recorded time
  • Empty: 0: not a range
  • Filled: decided, by lake
  • Unit: nanoseconds since the epoch

valid_until_ns

moment · since v18 · preview

Closes the valid-time range wanted.

  • Means: the range's end, exclusive
  • Does not mean: a recorded time
  • Empty: 0: not a range
  • Filled: decided, by lake
  • Unit: nanoseconds since the epoch

standing

boolean · since v18 · preview

Asks the data plugin to keep subjects current.

  • Means: keep the subjects current until the want is withdrawn: from the vendor's stream where the dataset is streamed, by its schedule otherwise
  • Does not mean: a subscription a plugin holds: the lake withdraws it when no reader asks
  • Empty: false: fetch once
  • Filled: decided, by lake

Changes: v19, clarified: a streamed dataset keeps a standing want current from its vendor's stream (W10.7).

WantWithdrawnEvent

meridian.v1.WantWithdrawnEvent, a message.

want_id

text · since v18 · preview

Names the want withdrawn.

  • Means: a standing want no reader asked within the dataset's cadence
  • Does not mean: a decline
  • Empty: never empty
  • Filled: decided, by lake

dataset

identifier dataset · since v18 · preview

Names the dataset of the want withdrawn.

  • Means: a dataset the hearing instance serves
  • Does not mean: another instance's dataset
  • Empty: never empty
  • Filled: decided, by lake

DeclineWantRequest

meridian.v1.DeclineWantRequest, a message.

want_id

text · since v18 · preview

Names the want declined.

  • Means: the want's identifier as it was delivered
  • Does not mean: a key the plugin made
  • Empty: never empty
  • Filled: as-reported, by data

subjects

repeated message SubjectRef · since v18 · preview

Names the subjects declined.

  • Means: subjects of the want the data plugin cannot serve
  • Does not mean: subjects it served, which it recorded
  • Empty: never empty
  • Filled: as-reported, by data
  • Bounds: 1 to 500 items; past it, refused

reason

enum UnansweredReason · since v18 · preview

Says why the data plugin cannot serve subjects of a want.

  • Means: not covered, source silent or beyond history, for the date or range the want asked, or the latest where it asked the latest, and no other; the readers' next answers for that date carry it
  • Does not mean: an error in the plugin
  • Empty: unspecified is refused
  • Filled: as-reported, by data
Value Means
UNANSWERED_REASON_UNSPECIFIED refused
UNANSWERED_REASON_NOT_ENTITLED refused: entitlement is the lake's to answer
UNANSWERED_REASON_NOT_COVERED the source does not cover the subjects
UNANSWERED_REASON_ASKED_SOURCE refused: the lake's to answer
UNANSWERED_REASON_SOURCE_SILENT the source did not answer
UNANSWERED_REASON_UNRESOLVED refused: the lake's to answer
UNANSWERED_REASON_BEYOND_HISTORY older than the source reaches
UNANSWERED_REASON_NOT_KEPT refused: the lake's to answer

Changes: v19, clarified: a decline stands for the date asked only (W10.7, approved 2026-10-10).

SetSourcePriorityRequest

meridian.v1.SetSourcePriorityRequest, a message.

data_type

text · since v18 · preview

Names the data type a priority is for.

  • Means: meridian.v1.Price, meridian.v1.Bar, and from v19 meridian.v1.Trade or meridian.v1.Quote
  • Does not mean: a kind of price
  • Empty: never empty
  • Filled: entered, by dashboard

Changes: v19, clarified: trades and quotes take a priority too, with no kind (W10.2).

kind

enum PriceKind · since v18 · preview

Names the kind of price a priority is for.

  • Means: the kind
  • Does not mean: a basis
  • Empty: unspecified for bars
  • Filled: entered, by dashboard
Value Means
PRICE_KIND_UNSPECIFIED for bars
PRICE_KIND_CLOSE closes
PRICE_KIND_LAST last prices
PRICE_KIND_NAV net asset values
PRICE_KIND_SETTLEMENT settlement prices
PRICE_KIND_BID bids
PRICE_KIND_ASK asks
PRICE_KIND_MID mids

datasets

repeated identifier dataset · since v18 · preview

Replaces the order whole.

  • Means: first to last
  • Does not mean: a change to one place in the order
  • Empty: none: clears the priority
  • Filled: entered, by dashboard
  • Bounds: at most 16 items; past it, refused

note

text · since v18 · preview

Says why.

  • Means: the note kept with the change's record
  • Does not mean: a description of a dataset
  • Empty: empty only at the page; through /mcp refused
  • Filled: entered, by dashboard

against_updated_at_ns

moment · since v18 · preview

Refuses a change made over another unseen.

  • Means: the priority's updated_at_ns as it was read; refused when it has changed since
  • Does not mean: when the change takes effect
  • Empty: 0 when no priority was set
  • Filled: entered, by dashboard
  • Unit: nanoseconds since the epoch

ListSourcePrioritiesReply

meridian.v1.ListSourcePrioritiesReply, a message.

priorities

repeated message SourcePriority · since v18 · preview

Lists the deployment's priorities.

  • Means: each with who set it and when
  • Does not mean: the datasets themselves
  • Empty: none set
  • Filled: decided, by lake

ListDatasetsReply

meridian.v1.ListDatasetsReply, a message.

datasets

repeated message DatasetRef · since v18 · preview

Lists the datasets a reader may read, with their catalogue entries.

  • Means: each with its instance, vendor, aggregator and declaration; to the dashboard, every launched dataset
  • Does not mean: the rows
  • Empty: none the reader may read
  • Filled: decided, by lake

licences

repeated message DatasetLicence · since v18 · preview

Says each dataset's licence.

  • Means: the deployment's licence of each dataset listed, as a deployment admin set it
  • Does not mean: a claim that a deployment meets a vendor's terms
  • Empty: none set: each dataset is kept and read by its catalogue's default
  • Filled: decided, by lake

entitlements

repeated message DatasetEntitlement · since v18 · preview

Says who may read the datasets listed.

  • Means: to the dashboard every entitlement; to a plugin, its own
  • Does not mean: another plugin's entitlement, which a plugin never reads
  • Empty: none
  • Filled: decided, by lake

RecordOutcomesRequest

meridian.v1.RecordOutcomesRequest, a message.

outcomes

repeated message Outcome · since v23 · preview

Carries a batch of outcomes (W10.4).

  • Means: 1 to 500 outcomes, recorded whole or refused naming the item and field; each stage of a contract's determination a new version under its one row key
  • Does not mean: the payout to holders, which is servicing's
  • Empty: never empty
  • Filled: as-reported, by data
  • Bounds: 1 to 500 items; past it, refused

OutcomesRecordedEvent

meridian.v1.OutcomesRecordedEvent, a message.

outcome

message Outcome · since v23 · preview

Delivers an outcome the lake recorded (W10.5).

  • Means: the row as recorded, with its version and sequence; every version is delivered, never conflated
  • Does not mean: a promise of delivery: a reader too slow for them meets a loss marker and reads the outcomes after the watermark it last saw
  • Empty: never unset
  • Filled: decided, by lake

ListOutcomesRequest

meridian.v1.ListOutcomesRequest, a message.

subjects

repeated message SubjectRef · since v23 · preview

Names the event contracts' instruments a read is about (W10.6).

  • Means: 1 to 500 entities
  • Does not mean: vendor identifiers
  • Empty: never empty
  • Filled: as-reported, by reporting
  • Bounds: 1 to 500 items; past it, refused

after_watermark

message Watermark · since v23 · preview

Catches a reader up on the outcomes it lost (W10.6).

  • Means: the watermark the reader last saw: answered the versions each dataset partition it names recorded after its sequence there, for the subjects asked, whatever their valid time
  • Does not mean: a time: a partition it does not name is not read
  • Empty: unset: the version in force, or as of as_of_ns
  • Filled: as-reported, by reporting

as_of_ns

moment · since v23 · preview

Reads what the lake knew at a recorded time (W10.6).

  • Means: the recorded-time cut-off: nothing recorded after it answers, so a read before a restatement answers the version in force then
  • Does not mean: a valid time
  • Empty: 0: what the lake knows now
  • Filled: as-reported, by reporting
  • Unit: nanoseconds since the epoch

ListOutcomesReply

meridian.v1.ListOutcomesReply, a message.

outcomes

repeated message Outcome · since v23 · preview

Carries the outcomes read (W10.6).

  • Means: the version in force of each, or as of a recorded time before a restatement, or those recorded after a watermark; each naming its dataset
  • Does not mean: a daily value: no business date is asked or answered
  • Empty: none answered
  • Filled: decided, by lake

watermark

message Watermark · since v23 · preview

Says where the read was answered.

  • Means: the sequence per dataset partition the read was answered at, which a later catch-up names
  • Does not mean: a time
  • Empty: never unset
  • Filled: decided, by lake

Generated from boundaries/fields.json in meridian-schema at a6a0af7, contract v24.