JSON schema (v11.0)
Top-level blocks of the export produced by bibr chew / POST /papers/extract. The Pydantic model bibr.export.models.PaperExport is the single source of truth for output structure. Schema validation does not establish factual accuracy.
Download the generated JSON Schema. This uses the same schema builder as the checked-in export artifact, including its required-root-field contract.
Top-level blocks
| Block |
Type |
Description |
paper_id |
str | None |
Paper identifier: user-supplied --paper-id, else the DOI, else the source file name. |
schema_version |
Literal['11.0'] |
Export schema version. Its presence at the root is how readers distinguish v11 from all earlier versions. |
source |
SourceExport |
Identity of the input artifact: file name, content hash, and format. |
metadata |
MetadataExport |
Scalar paper-level metadata: title, abstract, keywords, DOI, paper-type and OECD classification, the paper's own journal/venue identity, and research-integrity statement text. |
author |
list[AuthorExport] |
Extracted authors, with name, affiliation, email, corresponding-author flag, ORCID, and contribution roles. |
text |
list[TextExport] |
Full body text as an ordered array of sentence-level spans, each linked to its paragraph, section, and page. |
section |
list[SectionExport] |
Document section headers with hierarchy (level, parent) and IMRaD classification. |
url |
list[UrlExport] |
Hyperlinks found in the body text, with their link text and source sentence. |
bib |
list[BibExport] |
Parsed bibliography entries, verbatim from the printed reference list — never backfilled from external enrichment. |
xref |
list[XrefExport] |
In-text citation/cross-reference markers linking a sentence to a bibliography entry, table, figure, footnote, equation, or section. |
figure |
list[FigureExport] |
Extracted figures with caption, page number, and (optionally) base64-encoded image data. |
table |
list[TableExport] |
Extracted tables with HTML markup, structured cell contents, caption, and page number. |
eq |
list[EqExport] |
Parsed statistical/mathematical expressions split into left-hand side, degrees of freedom, comparator, and right-hand side. |
bib_match |
list[BibMatchExport] |
Flattened enrichment matches (e.g. Crossref) for bibliography entries, one row per external-service hit. |
metadata_match |
list[MetadataMatchExport] |
Enrichment matches for the paper's own bibliographic identity (self-DOI lookup), shaped like bib_match minus bib_id. |
funding |
list[FundingExport] |
Structured funder names and award IDs parsed from the funding statement. |
affiliation |
list[AffiliationExport] |
Structured author affiliations parsed from the byline: verbatim text plus best-effort institution/department/city/country and linked author IDs. |
qualification_provenance |
dict | None |
Deployment-qualification provenance: identity SHAs, per-task protocol hashes, native-validity + fallback outcome, and request counts. Always present; null (never omitted) when no LLM ran or usage tracking is disabled. |
extraction |
ExtractionExport | None |
Extraction provenance: how this output was produced — engines, per-run settings, timings, LLM usage, enrichment, identity receipts, diagnostics and warnings; omitted when exported outside the pipeline. |
validation |
ValidationExport | None |
Output validation gate result: counts of errors/warnings and the structured issue list; absent when the gate was skipped. |
Reading an export
The root schema_version identifies the output schema; extraction.bibr_version identifies the producing package. Paper fields live in metadata, input identity in source, and telemetry in extraction. Table rows connect through IDs: text.section_id points to section.section_id, and xref links a source text_id to an object identified by xref_type and xref_id. Do not treat IDs as array positions.
bib starts with parsed references. bib_match and metadata_match hold external enrichment separately. Explicit consolidation (fill or replace) can update reference fields and records consolidated_fields. See enrichment and consolidation.
Optional blocks may be absent rather than null. extraction.regions requires include_regions=True / --regions; per-sentence underscore fields require include_region_meta=True / --region-meta. The validation gate is enabled by default and can be disabled independently of the typed export builder. Inspect extraction.warnings and validation when reviewing results. The root schema_version key distinguishes v11 from legacy exports. For compatibility and structured reference names, see the export overview.
Nested record fields
These tables describe the models referenced above. Required means required by the model constructor; a nullable field may still be required. Defaults do not guarantee that a field is emitted: the exporter omits selected optional and debug fields.
SourceExport
| Field |
Type |
Required |
Default |
file_name |
str |
Yes |
— |
file_hash |
str |
Yes |
— |
input_format |
str |
Yes |
— |
| Field |
Type |
Required |
Default |
title |
str | None |
Yes |
— |
abstract |
str | None |
No |
None |
keywords |
list[str] |
Yes |
— |
doi |
str | None |
Yes |
— |
paper_type |
str | None |
No |
None |
paper_type_confidence |
float | None |
No |
None |
oecd_l1 |
str | None |
No |
None |
oecd_l2 |
str | None |
No |
None |
oecd_confidence |
float | None |
No |
None |
journal |
str | None |
No |
None |
volume |
str | None |
No |
None |
issue |
str | None |
No |
None |
first_page |
str | None |
No |
None |
last_page |
str | None |
No |
None |
issn |
str | None |
No |
None |
publisher |
str | None |
No |
None |
published |
str | None |
No |
None |
license |
str | None |
No |
None |
funding_statement |
str | None |
No |
None |
coi_statement |
str | None |
No |
None |
ethics_statement |
str | None |
No |
None |
data_availability |
str | None |
No |
None |
AuthorExport
| Field |
Type |
Required |
Default |
author_id |
int |
Yes |
— |
given |
str |
Yes |
— |
family |
str |
Yes |
— |
suffix |
str | None |
No |
None |
affiliation |
str | None |
No |
None |
email |
str | None |
No |
None |
corresponding |
bool |
Yes |
— |
orcid |
str | None |
No |
None |
role |
list[str] |
No |
[] |
TextExport
| Field |
Type |
Required |
Default |
text |
str |
Yes |
— |
text_id |
int |
Yes |
— |
paragraph_id |
int |
Yes |
— |
section_id |
int | None |
Yes |
— |
page_number |
int | None |
Yes |
— |
formatted |
str | None |
No |
None |
_font_size |
float | None |
No |
None |
_font_bold |
bool | None |
No |
None |
_is_italic |
bool | None |
No |
None |
_bbox_2d |
list[float] | None |
No |
None |
_region_type |
str | None |
No |
None |
_page_w |
float | None |
No |
None |
_page_h |
float | None |
No |
None |
SectionExport
| Field |
Type |
Required |
Default |
section_id |
int |
Yes |
— |
header |
str |
Yes |
— |
level |
int |
Yes |
— |
parent_section_id |
int | None |
Yes |
— |
section_type |
str | None |
Yes |
— |
classification_score |
float |
Yes |
— |
classification_source |
str | None |
No |
None |
UrlExport
| Field |
Type |
Required |
Default |
href |
str |
Yes |
— |
link_text |
str | None |
Yes |
— |
text_id |
int |
Yes |
— |
BibExport
| Field |
Type |
Required |
Default |
bib_id |
int |
Yes |
— |
text_id |
int | None |
No |
None |
bib_type |
str | None |
No |
None |
doi |
str | None |
No |
None |
title |
str | None |
No |
None |
authors |
str | None |
No |
None |
author |
list[PersonNameExport] | None |
No |
None |
editors |
str | None |
No |
None |
editor |
list[PersonNameExport] | None |
No |
None |
publisher |
str | None |
No |
None |
year |
int | None |
No |
None |
year_suffix |
str | None |
No |
None |
date |
str | None |
No |
None |
container |
str | None |
No |
None |
volume |
str | None |
No |
None |
issue |
str | None |
No |
None |
first_page |
str | None |
No |
None |
last_page |
str | None |
No |
None |
edition |
str | None |
No |
None |
version |
str | None |
No |
None |
url |
str | None |
No |
None |
is_in_press |
bool |
No |
False |
arxiv |
str | None |
No |
None |
pmid |
str | None |
No |
None |
series |
str | None |
No |
None |
access_date |
str | None |
No |
None |
note |
str | None |
No |
None |
consolidated_fields |
str | None |
No |
None |
PersonNameExport
| Field |
Type |
Required |
Default |
family |
str | None |
No |
None |
given |
str | None |
No |
None |
suffix |
str | None |
No |
None |
literal |
str | None |
No |
None |
XrefExport
| Field |
Type |
Required |
Default |
target_id |
int | None |
Yes |
— |
xref_type |
Literal['bib', 'table', 'figure', 'foot', 'supplementary', 'equation', 'section'] |
Yes |
— |
contents |
str | None |
Yes |
— |
text_id |
int |
Yes |
— |
tier |
Literal['numeric', 'paren-numeric', 'flattened-superscript', 'author-year', 'llm'] | None |
No |
None |
| Field |
Type |
Required |
Default |
figure_id |
int |
Yes |
— |
section_id |
int | None |
No |
None |
image |
str | None |
No |
None |
caption |
str | None |
No |
None |
page_number |
int | None |
Yes |
— |
parts |
list[FigurePartExport] |
No |
[] |
| Field |
Type |
Required |
Default |
part_index |
int |
Yes |
— |
image |
str | None |
No |
None |
page_number |
int | None |
No |
None |
bbox |
list[float] | None |
No |
None |
provenance |
list[ProvenanceExport] |
No |
[] |
ProvenanceExport
| Field |
Type |
Required |
Default |
page |
int |
Yes |
— |
bbox |
list[float] | None |
No |
None |
TableExport
| Field |
Type |
Required |
Default |
table_id |
int |
Yes |
— |
section_id |
int | None |
No |
None |
html |
str | None |
No |
None |
contents |
list[list[str]] |
Yes |
— |
caption |
str | None |
No |
None |
page_number |
int | None |
Yes |
— |
parts |
list[TablePartExport] |
No |
[] |
TablePartExport
| Field |
Type |
Required |
Default |
part_index |
int |
Yes |
— |
html |
str | None |
No |
None |
contents |
list[list[str]] |
Yes |
— |
page_number |
int | None |
No |
None |
bbox |
list[float] | None |
No |
None |
provenance |
list[ProvenanceExport] |
No |
[] |
EqExport
| Field |
Type |
Required |
Default |
eq_id |
int |
Yes |
— |
text_id |
int |
Yes |
— |
grp_id |
int |
Yes |
— |
verbatim |
str | None |
No |
None |
lhs |
str |
Yes |
— |
df |
str |
Yes |
— |
comp |
str |
Yes |
— |
rhs |
str |
Yes |
— |
BibMatchExport
| Field |
Type |
Required |
Default |
bib_id |
int |
Yes |
— |
service |
str |
Yes |
— |
service_id |
str | None |
No |
None |
score |
float | None |
No |
None |
bib_type |
str | None |
No |
None |
doi |
str | None |
No |
None |
title |
str | None |
No |
None |
author |
list[PersonNameExport] | None |
No |
None |
editor |
list[PersonNameExport] | None |
No |
None |
publisher |
str | None |
No |
None |
year |
int | None |
No |
None |
date |
str | None |
No |
None |
container |
str | None |
No |
None |
volume |
str | None |
No |
None |
issue |
str | None |
No |
None |
first_page |
str | None |
No |
None |
last_page |
str | None |
No |
None |
edition |
str | None |
No |
None |
version |
str | None |
No |
None |
url |
str | None |
No |
None |
| Field |
Type |
Required |
Default |
service |
str |
Yes |
— |
service_id |
str | None |
No |
None |
score |
float | None |
No |
None |
bib_type |
str | None |
No |
None |
doi |
str | None |
No |
None |
title |
str | None |
No |
None |
author |
list[PersonNameExport] | None |
No |
None |
editor |
list[PersonNameExport] | None |
No |
None |
publisher |
str | None |
No |
None |
year |
int | None |
No |
None |
date |
str | None |
No |
None |
container |
str | None |
No |
None |
volume |
str | None |
No |
None |
issue |
str | None |
No |
None |
first_page |
str | None |
No |
None |
last_page |
str | None |
No |
None |
edition |
str | None |
No |
None |
version |
str | None |
No |
None |
url |
str | None |
No |
None |
FundingExport
| Field |
Type |
Required |
Default |
funding_id |
int |
Yes |
— |
funder |
str |
Yes |
— |
award_ids |
list[str] |
No |
[] |
AffiliationExport
| Field |
Type |
Required |
Default |
affiliation_id |
int |
Yes |
— |
text |
str |
Yes |
— |
institution |
str | None |
No |
None |
department |
str | None |
No |
None |
city |
str | None |
No |
None |
country |
str | None |
No |
None |
author_ids |
list[int] |
No |
[] |
| Field |
Type |
Required |
Default |
bibr_version |
str |
Yes |
— |
build_sha |
str | None |
No |
None |
completed_at |
str |
Yes |
— |
ocr |
OcrEngineExport | None |
No |
None |
llm |
LlmEngineExport | None |
No |
None |
settings |
ExtractionSettingsExport |
Yes |
— |
timings |
TimingsExport | None |
No |
None |
usage |
UsageExport | None |
No |
None |
enrichment |
EnrichmentExport | None |
No |
None |
identity |
IdentityExport | None |
No |
None |
diagnostics |
DiagnosticsExport | None |
No |
None |
warnings |
list[str] |
No |
(computed) |
regions |
list[RegionExport] | None |
No |
None |
trace |
list[LlmTraceExport] | None |
No |
None |
OcrEngineExport
| Field |
Type |
Required |
Default |
backend |
str | None |
No |
None |
model |
str | None |
No |
None |
profile |
Literal['paddle', 'glm'] | None |
No |
None |
LlmEngineExport
| Field |
Type |
Required |
Default |
provider |
str | None |
No |
None |
model |
str | None |
No |
None |
backend |
str | None |
No |
None |
| Field |
Type |
Required |
Default |
ref_seg |
str |
Yes |
— |
ref_parse |
str |
Yes |
— |
crossref_enrich |
bool |
Yes |
— |
consolidate |
str |
Yes |
— |
TimingsExport
| Field |
Type |
Required |
Default |
stages |
dict[str, float] | None |
No |
None |
total_seconds |
float | None |
No |
None |
UsageExport
| Field |
Type |
Required |
Default |
totals |
UsageTotalsExport |
Yes |
— |
breakdown |
list[UsageRowExport] |
No |
(computed) |
UsageTotalsExport
| Field |
Type |
Required |
Default |
calls |
int |
Yes |
— |
input_tokens |
int |
Yes |
— |
cached_input_tokens |
int |
Yes |
— |
output_tokens |
int |
Yes |
— |
total_tokens |
int |
Yes |
— |
UsageRowExport
| Field |
Type |
Required |
Default |
label |
str |
Yes |
— |
provider |
str | None |
No |
None |
model |
str | None |
No |
None |
calls |
int |
Yes |
— |
input_tokens |
int |
Yes |
— |
cached_input_tokens |
int |
Yes |
— |
output_tokens |
int |
Yes |
— |
total_tokens |
int |
Yes |
— |
EnrichmentExport
| Field |
Type |
Required |
Default |
complete |
bool |
Yes |
— |
refs_enriched |
int |
Yes |
— |
refs_total |
int |
Yes |
— |
IdentityExport
| Field |
Type |
Required |
Default |
expected |
ExpectedIdentityExport | None |
No |
None |
receipt |
IdentityReceiptExport | None |
No |
None |
ExpectedIdentityExport
| Field |
Type |
Required |
Default |
queue_record_id |
str |
Yes |
— |
expected_doi |
str | None |
No |
None |
expected_doi_sha256 |
str | None |
No |
None |
expected_title |
str | None |
No |
None |
target_block_hint |
dict[str, object] | None |
No |
None |
source_sha256 |
str | None |
No |
None |
doi_required |
bool |
No |
False |
IdentityReceiptExport
| Field |
Type |
Required |
Default |
selected |
DoiCandidateExport | None |
No |
None |
candidates |
list[DoiCandidateExport] |
No |
(computed) |
issue_codes |
list[str] |
No |
(computed) |
DoiCandidateExport
| Field |
Type |
Required |
Default |
raw |
str |
Yes |
— |
normalized |
str |
Yes |
— |
source_kind |
str |
Yes |
— |
page |
int | None |
Yes |
— |
section_id |
int | None |
Yes |
— |
section_type |
str | None |
Yes |
— |
region_index |
int | None |
Yes |
— |
region_type |
str | None |
Yes |
— |
text_id |
int | None |
Yes |
— |
marker_kind |
str |
Yes |
— |
repeated_header_footer_count |
int |
Yes |
— |
semantic_context |
str |
Yes |
— |
selection_tier |
int |
Yes |
— |
rejection_reason |
str | None |
No |
None |
DiagnosticsExport
| Field |
Type |
Required |
Default |
text_quality |
float | None |
No |
None |
references_complete |
bool |
No |
True |
ref_seg_fallback_used |
bool |
No |
False |
citation_linking |
CitationLinkingExport | None |
No |
None |
caption_assignment |
CaptionAssignmentReceiptExport | None |
No |
None |
reference_yield |
ReferenceYieldExport | None |
No |
None |
CitationLinkingExport
| Field |
Type |
Required |
Default |
style_scores |
dict[str, float] |
Yes |
— |
candidates |
list[CitationCandidateExport] |
Yes |
— |
resolved_candidate_fraction |
float | None |
Yes |
— |
unique_linked_bib_fraction |
float | None |
Yes |
— |
CitationCandidateExport
| Field |
Type |
Required |
Default |
text_id |
int |
Yes |
— |
start |
int |
Yes |
— |
end |
int |
Yes |
— |
raw |
str |
Yes |
— |
style |
str |
Yes |
— |
bib_ids |
list[int] |
Yes |
— |
evidence |
list[str] |
Yes |
— |
confidence |
float |
Yes |
— |
accepted |
bool |
Yes |
— |
rejection_reasons |
list[str] |
Yes |
— |
CaptionAssignmentReceiptExport
| Field |
Type |
Required |
Default |
candidates |
list[CaptionCandidateExport] |
Yes |
— |
assignments |
list[CaptionAssignmentExport] |
Yes |
— |
CaptionCandidateExport
| Field |
Type |
Required |
Default |
caption_id |
str |
Yes |
— |
text |
str |
Yes |
— |
object_type |
str |
Yes |
— |
page_number |
int | None |
Yes |
— |
bbox |
list[float] | None |
Yes |
— |
source_index |
int |
Yes |
— |
CaptionAssignmentExport
| Field |
Type |
Required |
Default |
caption_id |
str |
Yes |
— |
object_id |
str | None |
Yes |
— |
score |
float |
Yes |
— |
reasons |
list[str] |
Yes |
— |
ambiguous |
bool |
No |
False |
ReferenceYieldExport
| Field |
Type |
Required |
Default |
credible_source_starts |
int | None |
Yes |
— |
attempts |
list[ReferenceSegmentationAttemptExport] |
Yes |
— |
selected_spans |
list[list[int]] |
Yes |
— |
source_character_coverage |
float | None |
Yes |
— |
parsed_count |
int |
Yes |
— |
valid_count |
int |
Yes |
— |
duplicate_rate |
float |
Yes |
— |
reason_flags |
list[str] |
Yes |
— |
ReferenceSegmentationAttemptExport
| Field |
Type |
Required |
Default |
strategy |
str |
Yes |
— |
spans |
list[list[int]] |
Yes |
— |
credible_starts |
int | None |
Yes |
— |
selected |
bool |
Yes |
— |
reason_flags |
list[str] |
Yes |
— |
RegionExport
| Field |
Type |
Required |
Default |
page |
int |
Yes |
— |
index |
int |
Yes |
— |
label |
str | None |
Yes |
— |
bbox |
list[float] | None |
Yes |
— |
font_size |
float | None |
No |
None |
font_weight |
float | None |
No |
None |
font_bold |
bool | None |
No |
None |
section_id |
int | None |
No |
None |
content |
str | None |
No |
None |
raw_ocr_content |
str | None |
No |
None |
bbox_height |
float | None |
No |
None |
bbox_width |
float | None |
No |
None |
char_density |
float | None |
No |
None |
estimated_line_height |
float | None |
No |
None |
LlmTraceExport
| Field |
Type |
Required |
Default |
label |
str |
Yes |
— |
provider |
str | None |
No |
None |
model |
str | None |
No |
None |
messages |
list[dict] |
No |
(computed) |
raw_completion |
str | None |
No |
None |
parsed_ok |
bool |
Yes |
— |
finish_reason |
str | None |
No |
None |
params |
dict |
No |
(computed) |
attempt |
int |
No |
1 |
error |
str | None |
No |
None |
ValidationExport
| Field |
Type |
Required |
Default |
errors |
int |
Yes |
— |
warnings |
int |
Yes |
— |
blocking |
int |
No |
0 |
promotable |
bool |
No |
True |
issues |
list[ValidationIssueExport] |
Yes |
— |
ValidationIssueExport
| Field |
Type |
Required |
Default |
code |
str |
Yes |
— |
severity |
str |
Yes |
— |
message |
str |
Yes |
— |
origin_stage |
str |
No |
'export' |
evidence_ids |
list[str] |
No |
(computed) |
count |
int |
Yes |
— |
blocking |
bool |
No |
False |