Reference

Look things up here once you know what you are after. The table pages and the code lists are generated from the schema that serves the data, so they change only when the model does. For the reasoning behind the tables, read The model at a glance first; for a task-shaped answer, the SQL guides are quicker.

  • Code lists: every controlled value a coded column can hold, with its meaning.
  • Downloads: the lists a spreadsheet reader wants whole, as .xlsx workbooks regenerated whenever a list changes: geography (every region code, with its parent and the members of each group), categories, system boundaries, classification schemes, units and licence terms. Each opens with an About sheet that names the page explaining it.
  • Tables: one page per published table of the model, with every field, its type and what it means. Filed in that same group, and the page to read first, is factors_flat: it is a view rather than a table, and its columns are what a query actually selects.
  • API reference: the /v1/ mapping endpoints, generated from the OpenAPI description, with a console beside each operation that sends a real request using your own key.

What is in the contract#

For a SQL reader the supported surface is a list, not a rule of thumb:

  • the view open_ef.factors_flat, which is what nearly every query on this site starts from;
  • every table with a page in this section, for auditing a number back to the rows it came from. That now includes open_ef.license_terms, open_ef.price_index and open_ef.fx_annual: the plain answers behind a license_code, and the two vendored World Bank series behind a restated monetary value, all three of which the guides join by name.

Schema evolution is additive is a promise about that list.

The rest of the open_ef schema is working state: run bookkeeping, the ledgers and indexes behind a served column, and the crosswalk out to consumer-side systems. Everything in them you are meant to read is already on factors_flat, which applies the release and quality predicates for you and carries the licence columns on every row. Two of them look readable and are not: factor_year_index is a copy, only as current as its last refresh, and activity_search is the index the search layer queries. Read the view instead. When it changes, the changelog says what changed and what to read instead.