{
 "files": {
  "data/documents.json": "statements sorted by sha256, with source URL and URL class",
  "data/entities.json": "entities with 2 or more items, plus every typed or ASX-coded entity",
  "data/items-extra.json": "item ids (row-aligned with items.json); entity names, types, ASX codes and match methods (aligned with its dictionaries); the published CSV header: what the explorer's CSV download adds",
  "data/items.json": "every item, columnar and dictionary-encoded (see columns)",
  "data/members.json": "members sorted by id, with terms, item count and statements",
  "data/schema.json": "this contract",
  "data/search.json": "member and entity names for the index-page search box",
  "data/summary.json": "every number the overview page prints",
  "entities/<entity_id>/items.json": "the entity's items as row objects (published columns), for entities with 2 or more items",
  "members/<member_id>/items.json": "the member's items as row objects (published columns)"
 },
 "items": {
  "aligned": {
   "document": "data/documents.json (sorted by sha256)",
   "member": "data/members.json (sorted by id)"
  },
  "columns": [
   {
    "description": "Stable member id (slug of the member's name, e.g. `tony_abbott`); the same person keeps one id across parliaments and chambers.",
    "kind": "dict",
    "name": "member",
    "published_column": "member_id"
   },
   {
    "description": "`house` (House of Representatives) or `senate`.",
    "kind": "dict",
    "name": "chamber",
    "published_column": "chamber"
   },
   {
    "description": "Parliament number (43 = 2010-2013 … 48 = 2025-).",
    "kind": "int",
    "name": "parliament",
    "published_column": "parliament"
   },
   {
    "description": "Register section number (1-14, the House form's numbering; Senate categories are mapped onto it).",
    "kind": "int",
    "name": "section",
    "published_column": "section"
   },
   {
    "description": "Sub-part of the section where the form has one (`2(i)` family trusts, `2(ii)` other trusts), else empty.",
    "kind": "dict",
    "name": "subsection",
    "published_column": "subsection"
   },
   {
    "description": "Whose interest it is: `self`, `spouse`, `dependent_child` or `unknown`.",
    "kind": "dict",
    "name": "owner",
    "published_column": "owner"
   },
   {
    "description": "The company, organisation, trust or person the item names, as printed. Empty when the item names no entity (e.g. a house address).",
    "kind": "dict",
    "name": "entity_raw",
    "published_column": "entity_name_as_printed"
   },
   {
    "description": "Standardised entity id; items naming the same organisation in different spellings share it. Empty for no entity or a generic term (e.g. `family trust`).",
    "kind": "dict",
    "name": "entity",
    "published_column": "entity_id"
   },
   {
    "description": "The item as printed on the form (the full cell text).",
    "kind": "dict",
    "name": "description",
    "published_column": "description"
   },
   {
    "description": "Location, where the form gives one (real estate, travel).",
    "kind": "dict",
    "name": "location",
    "published_column": "location"
   },
   {
    "description": "Purpose, where the form gives one (real estate, liabilities).",
    "kind": "dict",
    "name": "purpose",
    "published_column": "purpose"
   },
   {
    "description": "1 if the item comes from a later Notification of Alteration, 0 if from the initial statement.",
    "kind": "int",
    "name": "alteration",
    "published_column": "is_alteration"
   },
   {
    "description": "`initial`, `added`, `removed`, `varied` or `unknown`.",
    "kind": "dict",
    "name": "change_type",
    "published_column": "change_type"
   },
   {
    "description": "Date the statement or alteration was lodged (YYYY-MM-DD; see date_precision).",
    "kind": "dict",
    "name": "lodged_date",
    "published_column": "lodged_date"
   },
   {
    "description": "`day`, `month` (day set to 01) or `unknown` (no date printed; lodged_date empty).",
    "kind": "dict",
    "name": "date_precision",
    "published_column": "date_precision"
   },
   {
    "description": "Page of the source PDF the item is on (1-based). Senate items: 1.",
    "kind": "int",
    "name": "page",
    "published_column": "page"
   },
   {
    "description": "Extractor's confidence in the item: `high`, `medium` or `low` (low/medium = hard-to-read scan or ambiguous layout).",
    "kind": "dict",
    "name": "confidence",
    "published_column": "extraction_confidence"
   },
   {
    "description": "sha256 of the source document.",
    "kind": "dict",
    "name": "document",
    "published_column": "source_sha256"
   }
  ],
  "dictionaries": "dict[<column>] lists the distinct values sorted ascending; a dict column's values are indexes into it, -1 for null",
  "file": "data/items.json",
  "layout": "columnar: cols[<column>] is an array of n values",
  "null_index": -1,
  "order": "chamber, parliament, member_id, source document path, page, section, item_id (the order of the published CSV)"
 },
 "items_extra": {
  "category": "section number (as a string) -> category",
  "entity": "name, type, asx: arrays aligned with dict.entity (null when empty)",
  "entity_raw_method": "entity_match_method per printed name, aligned with dict.entity_raw",
  "file": "data/items-extra.json",
  "header": "the published CSV columns, in order (export.HEADER)",
  "item_id": "n item ids, row-aligned with items.json"
 },
 "row_objects": {
  "columns": [
   {
    "description": "Stable id of the disclosed item (sha1 of the document hash and the item's content; see docs/v2/loading.md).",
    "name": "item_id",
    "type": "string"
   },
   {
    "description": "`house` (House of Representatives) or `senate`.",
    "name": "chamber",
    "type": "string"
   },
   {
    "description": "Parliament number (43 = 2010-2013 … 48 = 2025-).",
    "name": "parliament",
    "type": "integer"
   },
   {
    "description": "Stable member id (slug of the member's name, e.g. `tony_abbott`); the same person keeps one id across parliaments and chambers.",
    "name": "member_id",
    "type": "string"
   },
   {
    "description": "Member's full name.",
    "name": "member_name",
    "type": "string"
   },
   {
    "description": "Member's party for this parliament (start of term).",
    "name": "party",
    "type": "string"
   },
   {
    "description": "`Labor`, `Coalition` or `Crossbench`, derived from party.",
    "name": "political_bloc",
    "type": "string"
   },
   {
    "description": "House: electorate. Senate: state or territory.",
    "name": "electorate_or_state",
    "type": "string"
   },
   {
    "description": "Date of the member's initial statement (YYYY-MM-DD), where printed.",
    "name": "statement_date",
    "type": "string"
   },
   {
    "description": "Register section number (1-14, the House form's numbering; Senate categories are mapped onto it).",
    "name": "section",
    "type": "integer"
   },
   {
    "description": "Sub-part of the section where the form has one (`2(i)` family trusts, `2(ii)` other trusts), else empty.",
    "name": "subsection",
    "type": "string"
   },
   {
    "description": "Section name: Shareholding, Trust, Real estate, Directorship, Partnership, Liability, Bond/debenture, Account, Other asset, Income, Gift, Sponsored travel/hospitality, Membership, Other interest.",
    "name": "category",
    "type": "string"
   },
   {
    "description": "Whose interest it is: `self`, `spouse`, `dependent_child` or `unknown`.",
    "name": "owner",
    "type": "string"
   },
   {
    "description": "The company, organisation, trust or person the item names, as printed. Empty when the item names no entity (e.g. a house address).",
    "name": "entity_name_as_printed",
    "type": "string"
   },
   {
    "description": "Standardised entity id; items naming the same organisation in different spellings share it. Empty for no entity or a generic term (e.g. `family trust`).",
    "name": "entity_id",
    "type": "string"
   },
   {
    "description": "Canonical name of the standardised entity.",
    "name": "entity_name",
    "type": "string"
   },
   {
    "description": "Entity type (listed_company, private_company, bank_or_financial, trust_or_fund, association_or_ngo, sporting_body, government_body, political_party, union, airline, media_or_entertainment, education, person, other). Empty for most one-off (singleton) entities.",
    "name": "entity_type",
    "type": "string"
   },
   {
    "description": "ASX ticker when the entity matched an ASX-listed company (banks, airlines and media groups included, e.g. `CBA`, `QAN`), else empty.",
    "name": "entity_asx_code",
    "type": "string"
   },
   {
    "description": "How the name was standardised: `curated` (hand table), `asx` (ASX listed-companies snapshot), `llm` (LLM grouping of variants), `singleton` (one-off name, its own entity) or `generic` (generic term, no entity).",
    "name": "entity_match_method",
    "type": "string"
   },
   {
    "description": "The item as printed on the form (the full cell text).",
    "name": "description",
    "type": "string"
   },
   {
    "description": "Location, where the form gives one (real estate, travel).",
    "name": "location",
    "type": "string"
   },
   {
    "description": "Purpose, where the form gives one (real estate, liabilities).",
    "name": "purpose",
    "type": "string"
   },
   {
    "description": "1 if the item comes from a later Notification of Alteration, 0 if from the initial statement.",
    "name": "is_alteration",
    "type": "integer"
   },
   {
    "description": "`initial`, `added`, `removed`, `varied` or `unknown`.",
    "name": "change_type",
    "type": "string"
   },
   {
    "description": "Date the statement or alteration was lodged (YYYY-MM-DD; see date_precision).",
    "name": "lodged_date",
    "type": "string"
   },
   {
    "description": "`day`, `month` (day set to 01) or `unknown` (no date printed; lodged_date empty).",
    "name": "date_precision",
    "type": "string"
   },
   {
    "description": "Page of the source PDF the item is on (1-based). Senate items: 1.",
    "name": "page",
    "type": "integer"
   },
   {
    "description": "Extractor's confidence in the item: `high`, `medium` or `low` (low/medium = hard-to-read scan or ambiguous layout).",
    "name": "extraction_confidence",
    "type": "string"
   },
   {
    "description": "Source document path in the repository (House PDF, or the Senate API JSON payload).",
    "name": "source_file",
    "type": "string"
   },
   {
    "description": "sha256 of the source document.",
    "name": "source_sha256",
    "type": "string"
   },
   {
    "description": "Where the source document was downloaded from (APH).",
    "name": "source_url",
    "type": "string"
   },
   {
    "description": "`gemini-api` (LLM transcription of the PDF) or `senate-json` (Senate interests API, no LLM).",
    "name": "extraction_source",
    "type": "string"
   },
   {
    "description": "Model(s) that transcribed the PDF; `a+b` means model b handled pages model a refused.",
    "name": "extraction_model",
    "type": "string"
   }
  ],
  "files": [
   "members/<member_id>/items.json",
   "entities/<entity_id>/items.json"
  ],
  "nulls": "empty string, as in the CSV"
 },
 "web_bundle_version": "1"
}
