Source catalog

CMS Contract Opportunities

Centers for Medicare & Medicaid Services acquisition forecasts.

← Source catalog

Source, grain and coverage

CMS Contract Opportunities ↗

Public forecast workbooks, with source-document and row provenance. Plans may change before procurement.

Workbook row numbers identify source evidence, rather than permanent requirements. Agency codes, fiscal years and classifications can be absent. Plans, estimated dates and values can change before procurement.

Collection schedule: Daily; unchanged workbooks may produce no new records.

Records describe public source observations. Missing values remain unknown; historical observations do not establish current status.

Definitions audited . Use source status and the returned watermarks to inspect current collection health.

REST and MCP access

Use a credential with intelligence scope and enable that data domain in your workspace.

curl 'https://www.govbiz.ai/api/v2/catalogue/sources/cms-forecast-refresh/records?limit=2' \
  -H "Authorization: Bearer $GOVBIZ_API_KEY"

The primary dataset is acquisition_forecasts. Select another dataset from this source with dataset_id. Supported field names can be used as exact filters; the versioned query endpoint also supports declared ranges and list operators.

Through canonical /mcp, use govbiz_discover_datasets, govbiz_describe_dataset, govbiz_search_records, and govbiz_get_evidence. Cross-source relationships use govbiz_get_related_records and require access to every involved domain.

API contracts · MCP setup · Workspace data domains

Query this source →

Acquisition Forecasts

acquisition_forecasts · Schema 1

One current retained version of a source-qualified forecast record per forecast_id; source_key identifies the publishing feed rather than necessarily the buying agency.

Search modes: structured, lexical. History: Current retained projection; exact historical reconstruction is unsupported.

Measures: record_count. Monetary values use decimal strings with declared units. Unknown amounts do not become zero.

Field definitions and supported filters · 54 fields
FieldType / unitMeaningAvailability and filters
forecast_idstringSource-record UUID in the forecast current view.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
canonical_requirement_idstringGovBiz resolved requirement identity shared by confirmed memberships.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
source_idstringGovBiz source-registry UUID in these SQL relations; not the collector job ID or publisher record ID.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
source_keystringStable registry source key; separate from UUID and collector job aliases.Storage and value limits: Maximum 120 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
source_namestringHuman source/publisher label.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
source_record_idstringPublisher-native record identifier, or explicitly marked fallback identity, within a source.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
source_record_urlstringPublic publisher URL for a particular record when available.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
source_document_urlstringPublic publisher URL for the source file/document.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
record_typestringSource record kind; grants synopsis/forecast and acquisition forecast/expiring/bid-board differ.Storage and value limits: Maximum 48 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
first_observed_atdatetimeEarliest retained observation of this record/source identity.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte
last_observed_atdatetimeMost recent retained observation of this record/source identity, including unchanged observations.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte
is_activebooleanStored source record lifecycle flag; not an award or procurement approval.Storage and value limits: Boolean physical type; defaults/omitted source fields can still mean unverified or not collected.Values can be missingeq, in, is_null
forecast_version_idstringIdentifier of the particular normalized forecast version.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
retrieval_idstringImmutable public source retrieval reference used for evidence.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
parser_versionstringParser/normalization implementation version used for a stored parse.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
agency_codestringStored source agency identifier; namespace can be CGAC, FPDS, top-tier or publisher-specific and must be declared.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Every current forecast view agency code is null; organization resolution must be explicit.Not collected; returned as unknowneq, in, is_null, contains
agency_namestringSource agency name; a label whose scope can be department, bureau or office.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
subagency_codestringSource bureau/subagency identifier, not automatically the same namespace as agency_code.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
subagency_namestringSource bureau/subagency label.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
contracting_office_codestringSource contracting-office identifier; requires an issuer/office namespace.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
contracting_office_namestringSource contracting-office label.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
fiscal_yearintegerSource/derived US federal fiscal year; October 1 starts the following numbered year, with source-specific precision.Storage and value limits: Signed 32-bit integer; logical domain constraints can be narrower.Values can be missingeq, in, is_null, gte, lte
requirement_titlestringPublished planned acquisition requirement title.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
requirement_descriptionstringPublisher description of a planned requirement.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
naics_codestringSource industry classification code; link with the NAICS edition and declared precision.Storage and value limits: Maximum 12 characters; identifier rules can be narrower.Require a classification edition; do not join broad prefixes as exact identities.Values can be missingeq, in, is_null, contains
psc_codestringProduct and Service Code classification; it is not a NAICS industry code.Storage and value limits: Maximum 16 characters; identifier rules can be narrower.Classification overlap is contextual, not record identity.Values can be missingeq, in, is_null, contains
estimated_value_mindecimal / USDNormalized lower endpoint of a publisher acquisition estimate; preserve the original range and open-bound wording.Storage and value limits: Precision 20, scale 2; absolute value below 10^18; rounding on assignment; checks can narrow the range.Current parser converts numeric tokens to min/max and may lose open-bound wording or partial suffixes; retain estimated_value_text.Values can be missingeq, in, is_null, gte, lte
estimated_value_maxdecimal / USDNormalized upper endpoint of a publisher acquisition estimate; a range parser can lose open-bound meaning.Storage and value limits: Precision 20, scale 2; absolute value below 10^18; rounding on assignment; checks can narrow the range.Current parser converts numeric tokens to min/max and may lose open-bound wording or partial suffixes; retain estimated_value_text.Values can be missingeq, in, is_null, gte, lte
estimated_value_textstringOriginal publisher estimate/range text retained for interpretation and provenance.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
estimated_solicitation_datedatePlanned solicitation date; HHS month/year values are currently converted to the first day.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
estimated_solicitation_quarterstringPublisher anticipated solicitation quarter label; do not synthesize an exact day.Storage and value limits: Maximum 12 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
estimated_award_datedatePlanned award date; month/quarter precision must remain explicit.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
estimated_award_quarterstringPublisher anticipated award quarter label; do not synthesize an exact day.Storage and value limits: Maximum 12 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
period_of_performance_startdatePublished forecast planned performance start date.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
period_of_performance_enddatePublished forecast planned performance end date.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
place_of_performance_citystringSource city of the place of performance; distinct from recipient legal address.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
place_of_performance_statestringSource state/territory of the place of performance; distinct from recipient legal address.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
place_of_performance_countrystringSource country of the place of performance; distinct from recipient legal address.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
competition_typestringPublisher planned competition category; not an observed competition outcome.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
set_aside_typestringSource set-aside label/category; categories and aliases must not be guessed.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
small_business_programstringPublished small-business program label on an acquisition plan.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
acquisition_strategystringPublisher acquisition-plan strategy text.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
contract_vehiclestringPublisher vehicle plan label; not proof of a task-order/parent relationship.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
contract_typestringPublisher intended contract instrument/pricing category.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
new_or_follow_onstringPublisher new/follow-on planning label; distinguish from a confirmed predecessor link.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
incumbent_namestringPublisher named incumbent; a label needing identity resolution.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
incumbent_award_idstringPublisher incumbent contract reference; qualify by agency/issuer before joining.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
forecast_statusstringPublisher forecast status label; not the GovBiz collection health status.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
poc_namestringSource primary notice point of contact name label; scope is the associated public record, not every procurement at the agency.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
poc_titlestringSource primary notice point of contact published role/title; scope is the associated public record, not every procurement at the agency.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
poc_emailstringSource primary notice point of contact email address; scope is the associated public record, not every procurement at the agency.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
poc_phonestringSource primary notice point of contact telephone text; scope is the associated public record, not every procurement at the agency.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
published_atdatetimePublisher publication timestamp when supplied.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte
source_updated_atdatetimePublisher update timestamp when supplied; separate from collection time.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte

Forecast Versions

forecast_versions · Schema 1

One immutable retained forecast version per id, linked by record_id and version_number.

Search modes: structured, lexical. History: Retained observation/version queries.

Measures: record_count. Monetary values use decimal strings with declared units. Unknown amounts do not become zero.

Field definitions and supported filters · 48 fields
FieldType / unitMeaningAvailability and filters
idstringGovBiz surrogate row identifier; interpret together with its relation, not as a source-native key.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
record_idstringGovBiz source-record row ID connecting immutable versions and observations.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
version_numberintegerPositive sequence number within a source record/version family.Storage and value limits: Signed 32-bit integer; logical domain constraints can be narrower.Values can be missingeq, in, is_null, gte, lte
retrieval_idstringImmutable public source retrieval reference used for evidence.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
parser_versionstringParser/normalization implementation version used for a stored parse.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
normalized_hashstringSHA-256 of normalized record content; parser-dependent and distinct from raw bytes.Storage and value limits: Fixed width 64 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
version_originstringWhether a version came from observation, parser reprocessing or manual correction.Storage and value limits: Maximum 24 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
source_locatorjsonStructured evidence locator such as file, sheet, row, page or source field mapping.Storage and value limits: Nested producer-specific structure; no fixed public field contract; redact and project known subfields.File/sheet/row/cell/page location and raw field mapping are evidence; do not use row number as persistent identity.Values can be missingis_null
agency_codestringStored source agency identifier; namespace can be CGAC, FPDS, top-tier or publisher-specific and must be declared.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Every current forecast view agency code is null; organization resolution must be explicit.Values can be missingeq, in, is_null, contains
agency_namestringSource agency name; a label whose scope can be department, bureau or office.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
subagency_codestringSource bureau/subagency identifier, not automatically the same namespace as agency_code.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
subagency_namestringSource bureau/subagency label.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
contracting_office_codestringSource contracting-office identifier; requires an issuer/office namespace.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
contracting_office_namestringSource contracting-office label.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
fiscal_yearintegerSource/derived US federal fiscal year; October 1 starts the following numbered year, with source-specific precision.Storage and value limits: Signed 32-bit integer; logical domain constraints can be narrower.Values can be missingeq, in, is_null, gte, lte
requirement_titlestringPublished planned acquisition requirement title.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
requirement_descriptionstringPublisher description of a planned requirement.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
naics_codestringSource industry classification code; link with the NAICS edition and declared precision.Storage and value limits: Maximum 12 characters; identifier rules can be narrower.Require a classification edition; do not join broad prefixes as exact identities.Values can be missingeq, in, is_null, contains
psc_codestringProduct and Service Code classification; it is not a NAICS industry code.Storage and value limits: Maximum 16 characters; identifier rules can be narrower.Classification overlap is contextual, not record identity.Values can be missingeq, in, is_null, contains
estimated_value_mindecimal / USDNormalized lower endpoint of a publisher acquisition estimate; preserve the original range and open-bound wording.Storage and value limits: Precision 20, scale 2; absolute value below 10^18; rounding on assignment; checks can narrow the range.Current parser converts numeric tokens to min/max and may lose open-bound wording or partial suffixes; retain estimated_value_text.Values can be missingeq, in, is_null, gte, lte
estimated_value_maxdecimal / USDNormalized upper endpoint of a publisher acquisition estimate; a range parser can lose open-bound meaning.Storage and value limits: Precision 20, scale 2; absolute value below 10^18; rounding on assignment; checks can narrow the range.Current parser converts numeric tokens to min/max and may lose open-bound wording or partial suffixes; retain estimated_value_text.Values can be missingeq, in, is_null, gte, lte
estimated_value_textstringOriginal publisher estimate/range text retained for interpretation and provenance.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
estimated_solicitation_datedatePlanned solicitation date; HHS month/year values are currently converted to the first day.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
estimated_solicitation_quarterstringPublisher anticipated solicitation quarter label; do not synthesize an exact day.Storage and value limits: Maximum 12 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
estimated_award_datedatePlanned award date; month/quarter precision must remain explicit.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
estimated_award_quarterstringPublisher anticipated award quarter label; do not synthesize an exact day.Storage and value limits: Maximum 12 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
period_of_performance_startdatePublished forecast planned performance start date.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
period_of_performance_enddatePublished forecast planned performance end date.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
place_of_performance_citystringSource city of the place of performance; distinct from recipient legal address.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
place_of_performance_statestringSource state/territory of the place of performance; distinct from recipient legal address.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
place_of_performance_countrystringSource country of the place of performance; distinct from recipient legal address.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
competition_typestringPublisher planned competition category; not an observed competition outcome.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
set_aside_typestringSource set-aside label/category; categories and aliases must not be guessed.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
small_business_programstringPublished small-business program label on an acquisition plan.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
acquisition_strategystringPublisher acquisition-plan strategy text.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
contract_vehiclestringPublisher vehicle plan label; not proof of a task-order/parent relationship.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
contract_typestringPublisher intended contract instrument/pricing category.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
new_or_follow_onstringPublisher new/follow-on planning label; distinguish from a confirmed predecessor link.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
incumbent_namestringPublisher named incumbent; a label needing identity resolution.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
incumbent_award_idstringPublisher incumbent contract reference; qualify by agency/issuer before joining.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
forecast_statusstringPublisher forecast status label; not the GovBiz collection health status.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
poc_namestringSource primary notice point of contact name label; scope is the associated public record, not every procurement at the agency.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
poc_titlestringSource primary notice point of contact published role/title; scope is the associated public record, not every procurement at the agency.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
poc_emailstringSource primary notice point of contact email address; scope is the associated public record, not every procurement at the agency.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
poc_phonestringSource primary notice point of contact telephone text; scope is the associated public record, not every procurement at the agency.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
published_atdatetimePublisher publication timestamp when supplied.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte
source_updated_atdatetimePublisher update timestamp when supplied; separate from collection time.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte
created_atdatetimeGovBiz row/version creation time.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte

Forecast Changes

forecast_changes · Schema 1

One retained detected forecast field/event change per id, linked by record_id and detected_at; parser-reprocess classification can be incomplete.

Search modes: structured. History: Retained observation/version queries.

Measures: record_count. Monetary values use decimal strings with declared units. Unknown amounts do not become zero.

Field definitions and supported filters · 12 fields
FieldType / unitMeaningAvailability and filters
idstringGovBiz surrogate row identifier; interpret together with its relation, not as a source-native key.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
record_idstringGovBiz source-record row ID connecting immutable versions and observations.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
from_version_idstringPrevious immutable version involved in a change event.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
to_version_idstringNew immutable version involved in a change event.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
field_namestringNormalized field whose value changed between immutable versions.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
event_typestringRelation-specific event category defined by its producer/constraint.Storage and value limits: Maximum 40 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
old_valuejsonPrevious normalized field value in its original JSON type.Storage and value limits: Nested producer-specific structure; no fixed public field contract; redact and project known subfields.Values can be missingis_null
new_valuejsonNew normalized field value in its original JSON type.Storage and value limits: Nested producer-specific structure; no fixed public field contract; redact and project known subfields.Values can be missingis_null
detected_atdatetimeTime a collector detected a difference between stored observations.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte
effective_datedateIntended publisher-effective calendar date of a forecast change; the current change-event insertion does not supply it. detected_at is the observation time, not an inferred effective date.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
source_retrieval_idstringPublic retrieval supporting a change event.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
materialitystringCollector classification of a field change; not monetary materiality by default.Storage and value limits: Maximum 16 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains