open-dsa

Data dictionary: Statement of Reason fields

Every column in the EU's daily Statement of Reason (SoR) export, with whether it is kept in the open-dsa database, whether it carries into the slim dataset (the fast per-day-country table behind the Metabase dashboards), its DSA requirement level, data type, fill rate in our sample, and a short description. The flowchart's last group also lists the fields the slim adds on top of the raw data. Hover any card for the description; click to jump to the matching theme in the detailed reference below.

Inspection sample: 7,000,007 SoRs spanning the first week of March 2025 (2025-03-01 to 2025-03-07), drawn from the first inner-shard zip of each daily archive. 36 distinct platforms; the week is dominated by Google Shopping (62.5%), AliExpress (17.8%), and TikTok (17.1%), so the per-field fill rates below reflect that mix.
Loading …
In the open-dsa database
field_in_db field_dropped
Light green background = kept in our database (queryable in Metabase). White card with a dashed border = dropped at ingest (free-text or near-empty columns we strip out before storing).
In the slim dataset
field_in_slim field_added
Dark green band along the top = this field is carried into the slim per-day-country table that powers the fast Metabase dashboards. The blue-grey cards (also banded) in the Enriched (added in the slim) group at the bottom are 8 fields that do not exist in the raw EU data: derived buckets, joins from the open-dsa platform register, and the SoR counts.
DSA requirement level (symbol shown in the top-right corner of each card)
Required 1 of 4 actions Conditional Optional EU-assigned
Required: must be filled in every SoR.  1 of 4 actions: at least one of decision_visibility, decision_monetary, decision_provision, or decision_account must be filled per SoR; each individual one is otherwise optional.  Conditional: required only when its parent field has a specific value (shown on the card).  Optional: the platform may leave it blank.  EU-assigned: populated by the European Commission's database on ingest, not submitted by platforms (uuid, platform_name, created_at).
Fill rate
75%
The thin blue bar at the bottom of each card shows what share of rows in the 7-million-row sample have a non-empty value for that field. 100% means it is filled in every SoR; very low percentages mean the column is rarely populated in practice (often because only a few platforms send it, or because it is tied to a rare conditional trigger).

Loading detailed reference …