changedOutput schema / properties / articles / items / oneOf
Previous value: -[
- {
- "additionalProperties": false,
- "description": "Structured JATS full-text article. `viaSource` records whether the JATS came from NCBI PMC or Europe PMC.",
- "properties": {
- "abstract": {
- "description": "Abstract",
- "type": "string"
- },
- "affiliations": {
- "description": "Author affiliations",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "articleType": {
- "description": "Article type",
- "type": "string"
- },
- "authors": {
- "description": "Authors",
- "items": {
- "additionalProperties": false,
- "description": "Author entry",
- "properties": {
- "collectiveName": {
- "description": "Group name",
- "type": "string"
- },
- "givenNames": {
- "description": "Given names",
- "type": "string"
- },
- "lastName": {
- "description": "Last name",
- "type": "string"
- }
- },
- "type": "object"
- },
- "type": "array"
- },
- "doi": {
- "description": "DOI, cased as the tier that served this record reports it (NCBI PMC, Europe PMC, or Unpaywall). DOIs are case-insensitive by spec and no case normalization is applied here, so casing can differ between tiers and from other tools — compare case-insensitively.",
- "type": "string"
- },
- "epmcId": {
- "description": "Europe PMC record id — present when `viaSource` is `europepmc`",
- "type": "string"
- },
- "epmcSource": {
- "description": "Europe PMC source code when `viaSource` is `europepmc`. Common values: `MED` (PubMed-derived), `PMC` (PMC counterpart), `PPR` (preprint), `PAT` (patent), `AGR` (Agricola), plus less common codes (`CTX`, `CBA`, `ETH`, `HIR`). Treat as opaque — EPMC may introduce new codes.",
- "type": "string"
- },
- "journal": {
- "additionalProperties": false,
- "description": "Journal information",
- "properties": {
- "issn": {
- "description": "ISSN",
- "type": "string"
- },
- "issue": {
- "description": "Issue number",
- "type": "string"
- },
- "pages": {
- "description": "Page range",
- "type": "string"
- },
- "title": {
- "description": "Journal title",
- "type": "string"
- },
- "volume": {
- "description": "Volume number",
- "type": "string"
- }
- },
- "type": "object"
- },
- "keywords": {
- "description": "Keywords",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "pmcId": {
- "description": "PMC ID — present for NCBI PMC records and Europe PMC entries that have a PMC counterpart. Absent for EPMC-only records like preprints; use `epmcId` in that case.",
- "type": "string"
- },
- "pmcUrl": {
- "description": "PMC URL — derived from `pmcId` when present",
- "type": "string"
- },
- "pmid": {
- "description": "PubMed ID",
- "type": "string"
- },
- "publicationDate": {
- "additionalProperties": false,
- "description": "Publication date",
- "properties": {
- "day": {
- "description": "Publication day",
- "type": "string"
- },
- "month": {
- "description": "Publication month",
- "type": "string"
- },
- "year": {
- "description": "Publication year",
- "type": "string"
- }
- },
- "type": "object"
- },
- "pubmedUrl": {
- "description": "PubMed URL",
- "type": "string"
- },
- "references": {
- "description": "Reference list",
- "items": {
- "additionalProperties": false,
- "description": "Reference entry",
- "properties": {
- "citation": {
- "description": "Citation text",
- "type": "string"
- },
- "id": {
- "description": "Reference ID",
- "type": "string"
- },
- "label": {
- "description": "Reference label",
- "type": "string"
- }
- },
- "required": [
- "citation"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "sections": {
- "description": "Article body sections",
- "items": {
- "additionalProperties": false,
- "description": "Article body section",
- "properties": {
- "label": {
- "description": "Section label",
- "type": "string"
- },
- "subsections": {
- "description": "Nested subsections",
- "items": {
- "additionalProperties": false,
- "description": "Article subsection",
- "properties": {
- "label": {
- "description": "Subsection label",
- "type": "string"
- },
- "text": {
- "description": "Subsection body text. Sections nested deeper than this level are folded in here in document order, each heading rendered on its own line above its text.",
- "type": "string"
- },
- "title": {
- "description": "Subsection heading",
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "text": {
- "description": "Section body text",
- "type": "string"
- },
- "title": {
- "description": "Section heading",
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "source": {
- "const": "pmc",
- "description": "Structured JATS — same DTD whether sourced from NCBI PMC or Europe PMC",
- "type": "string"
- },
- "title": {
- "description": "Article title",
- "type": "string"
- },
- "viaSource": {
- "description": "Which layer produced the JATS: `pmc` for NCBI PMC EFetch (db=pmc), `europepmc` for Europe PMC `fullTextXML`. Both paths return the same JATS shape; the discriminator records origin for observability and license attribution.",
- "enum": [
- "pmc",
- "europepmc"
- ],
- "type": "string"
- }
- },
- "required": [
- "source",
- "viaSource",
- "sections"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Best-effort full text from an open-access copy",
- "properties": {
- "content": {
- "description": "Full article text — Markdown or plain text per `contentFormat`",
- "type": "string"
- },
- "contentFormat": {
- "description": "How `content` was extracted. html-markdown: Defuddle extracted Markdown from an HTML landing page; light section structure may survive but is not guaranteed. pdf-text: unpdf extracted plain text from a PDF; no section, reference, or heading structure.",
- "enum": [
- "html-markdown",
- "pdf-text"
- ],
- "type": "string"
- },
- "doi": {
- "description": "DOI used to locate the open-access copy",
- "type": "string"
- },
- "hostType": {
- "description": "`publisher` or `repository` — where the OA copy is hosted",
- "type": "string"
- },
- "license": {
- "description": "License identifier from Unpaywall (e.g. cc-by, cc0)",
- "type": "string"
- },
- "pmcId": {
- "description": "PMC ID this article was requested under, in `PMC<digits>` form — present for `pmcids` input, absent for `pmids` and `dois` input. Ties the article back to the requested identifier, which `unavailable[]` keys on for the ids that found nothing.",
- "type": "string"
- },
- "pmid": {
- "description": "PubMed ID when input was `pmids`; absent for `pmcids` and `dois` input",
- "type": "string"
- },
- "pubmedUrl": {
- "description": "PubMed URL — present when `pmid` is set",
- "type": "string"
- },
- "source": {
- "const": "unpaywall",
- "description": "Content fetched from an open-access copy indexed by Unpaywall. Best-effort — structural fidelity depends on `contentFormat`.",
- "type": "string"
- },
- "sourceUrl": {
- "description": "URL the content was fetched from",
- "type": "string"
- },
- "title": {
- "description": "Detected article title when present",
- "type": "string"
- },
- "totalPages": {
- "description": "Page count reported by the PDF extractor; absent for HTML",
- "type": "number"
- },
- "version": {
- "description": "OA version: submittedVersion | acceptedVersion | publishedVersion",
- "type": "string"
- },
- "viaSource": {
- "const": "unpaywall",
- "description": "Layer that produced this article. Constant `unpaywall` for this branch.",
- "type": "string"
- },
- "wordCount": {
- "description": "Approximate word count reported by the HTML extractor; absent for PDFs",
- "type": "number"
- }
- },
- "required": [
- "source",
- "viaSource",
- "contentFormat",
- "doi",
- "sourceUrl",
- "content"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "description": "Structured JATS full-text article. `viaSource` records whether the JATS came from NCBI PMC or Europe PMC.",
+ "properties": {
+ "abstract": {
+ "description": "Abstract",
+ "type": "string"
+ },
+ "affiliations": {
+ "description": "Author affiliations",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "articleType": {
+ "description": "Article type",
+ "type": "string"
+ },
+ "assets": {
+ "description": "Every `<fig>` and `<supplementary-material>` the article carries, in document order — from the body and from `<floats-group>`, `<back>` and appendices alike. Each one lifted from the body leaves a `[Figure: <label>]` or `[Supplementary: <label>]` marker at its position in the section text, so reading order survives the lift. Absent when the article deposits none, when `includeAssets` is false, or when a `sections` filter left none standing.",
+ "items": {
+ "additionalProperties": false,
+ "description": "One figure or supplementary-material item, with its caption, pointer, and section",
+ "properties": {
+ "assetType": {
+ "description": "Which captioned element this came from — `figure` for a `<fig>`, `supplementary-material` for a `<supplementary-material>` deposit",
+ "enum": [
+ "figure",
+ "supplementary-material"
+ ],
+ "type": "string"
+ },
+ "caption": {
+ "description": "Caption text, with the label excluded",
+ "type": "string"
+ },
+ "href": {
+ "description": "The `<graphic>`/`<media>` `@xlink:href` exactly as deposited — a pointer into the PMC deposit (`MOL2-20-1253-g001.jpg`), not a fetchable URL. No absolute form of it resolves; read the rendered article at `pmcUrl` instead. Absent when the deposit names no file.",
+ "type": "string"
+ },
+ "id": {
+ "description": "JATS `id` attribute — the target body-text cross-references point at",
+ "type": "string"
+ },
+ "label": {
+ "description": "Display label as printed, e.g. `Fig. 1`",
+ "type": "string"
+ },
+ "sectionTitle": {
+ "description": "Title of the innermost section enclosing the asset, wherever that section sits — body, `<back>` matter, or an appendix all count. Absent for an asset inside no section at all, such as a `<floats-group>` deposit.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "assetType"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "description": "Authors",
+ "items": {
+ "additionalProperties": false,
+ "description": "Author entry",
+ "properties": {
+ "collectiveName": {
+ "description": "Group name",
+ "type": "string"
+ },
+ "givenNames": {
+ "description": "Given names",
+ "type": "string"
+ },
+ "lastName": {
+ "description": "Last name",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "doi": {
+ "description": "DOI, cased as the tier that served this record reports it (NCBI PMC, Europe PMC, or Unpaywall). DOIs are case-insensitive by spec and no case normalization is applied here, so casing can differ between tiers and from other tools — compare case-insensitively.",
+ "type": "string"
+ },
+ "epmcId": {
+ "description": "Europe PMC record id — present when `viaSource` is `europepmc`",
+ "type": "string"
+ },
+ "epmcSource": {
+ "description": "Europe PMC source code when `viaSource` is `europepmc`. Common values: `MED` (PubMed-derived), `PMC` (PMC counterpart), `PPR` (preprint), `PAT` (patent), `AGR` (Agricola), plus less common codes (`CTX`, `CBA`, `ETH`, `HIR`). Treat as opaque — EPMC may introduce new codes.",
+ "type": "string"
+ },
+ "journal": {
+ "additionalProperties": false,
+ "description": "Journal information",
+ "properties": {
+ "elocationId": {
+ "description": "Electronic article locator from JATS `<elocation-id>` — the publisher-assigned article number (e.g. \"e20542\"). Journals that assign article numbers deposit no `<fpage>`, so this is the only locator on roughly half of PMC records. Never a substitute for `pages`; JATS carries no type attribute, so there is no counterpart to the `elocationIdType` that `pubmed_fetch_articles` reports.",
+ "type": "string"
+ },
+ "issn": {
+ "description": "ISSN",
+ "type": "string"
+ },
+ "issue": {
+ "description": "Issue number",
+ "type": "string"
+ },
+ "pages": {
+ "description": "Page range",
+ "type": "string"
+ },
+ "title": {
+ "description": "Journal title",
+ "type": "string"
+ },
+ "volume": {
+ "description": "Volume number",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "keywords": {
+ "description": "Keywords",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pmcId": {
+ "description": "PMC ID — present for NCBI PMC records and Europe PMC entries that have a PMC counterpart. Absent for EPMC-only records like preprints; use `epmcId` in that case.",
+ "type": "string"
+ },
+ "pmcUrl": {
+ "description": "PMC URL — derived from `pmcId` when present",
+ "type": "string"
+ },
+ "pmid": {
+ "description": "PubMed ID",
+ "type": "string"
+ },
+ "publicationDate": {
+ "additionalProperties": false,
+ "description": "Publication date",
+ "properties": {
+ "day": {
+ "description": "Publication day",
+ "type": "string"
+ },
+ "month": {
+ "description": "Publication month",
+ "type": "string"
+ },
+ "year": {
+ "description": "Publication year",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "pubmedUrl": {
+ "description": "PubMed URL",
+ "type": "string"
+ },
+ "references": {
+ "description": "Reference list",
+ "items": {
+ "additionalProperties": false,
+ "description": "Reference entry",
+ "properties": {
+ "citation": {
+ "description": "Citation text",
+ "type": "string"
+ },
+ "id": {
+ "description": "Reference ID",
+ "type": "string"
+ },
+ "label": {
+ "description": "Reference label",
+ "type": "string"
+ }
+ },
+ "required": [
+ "citation"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "sections": {
+ "description": "Article body sections",
+ "items": {
+ "additionalProperties": false,
+ "description": "Article body section",
+ "properties": {
+ "label": {
+ "description": "Section label",
+ "type": "string"
+ },
+ "subsections": {
+ "description": "Nested subsections",
+ "items": {
+ "additionalProperties": false,
+ "description": "Article subsection",
+ "properties": {
+ "label": {
+ "description": "Subsection label",
+ "type": "string"
+ },
+ "text": {
+ "description": "Subsection body text. Sections nested deeper than this level are folded in here in document order, each heading rendered on its own line above its text.",
+ "type": "string"
+ },
+ "title": {
+ "description": "Subsection heading",
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "text": {
+ "description": "Section body text",
+ "type": "string"
+ },
+ "title": {
+ "description": "Section heading",
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "source": {
+ "const": "pmc",
+ "description": "Structured JATS — same DTD whether sourced from NCBI PMC or Europe PMC",
+ "type": "string"
+ },
+ "tables": {
+ "description": "Every `<table-wrap>` the article carries, in document order — from the body and from `<floats-group>`, `<back>` and appendices alike. Absent when the article deposits none, when `includeTables` is false, or when a `sections` filter left none standing.",
+ "items": {
+ "additionalProperties": false,
+ "description": "One table from the article, with its cells, caption, and owning section",
+ "properties": {
+ "caption": {
+ "description": "Caption text, with the label excluded",
+ "type": "string"
+ },
+ "footnotes": {
+ "description": "`<table-wrap-foot>` text, flattened to one string",
+ "type": "string"
+ },
+ "headerRowCount": {
+ "description": "How many leading `rows` entries are header rows — a `<thead>` block, or leading rows made entirely of `<th>`. 0 when the table declares none. Several header rows stack: read one column top to bottom for its full header path.",
+ "type": "number"
+ },
+ "id": {
+ "description": "JATS `id` attribute — the target body-text cross-references point at",
+ "type": "string"
+ },
+ "label": {
+ "description": "Table label as printed, e.g. `TABLE 1`",
+ "type": "string"
+ },
+ "rows": {
+ "description": "Cell text by row, in document order, one entry per grid column. `colspan` and `rowspan` are expanded, so a cell covering several columns or rows repeats its text across each cell it covers and a well-formed table is rectangular — align on position from the left, and read a repeated value as one spanning cell rather than several measurements. Empty when `unextractableReason` is set.",
+ "items": {
+ "description": "One row, as cell text by grid column",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": "array"
+ },
+ "sectionTitle": {
+ "description": "Title of the innermost section enclosing the table, wherever that section sits — body, `<back>` matter, or an appendix all count, and in back matter the section name is the only positional cue there is. Absent only for a table inside no section at all, such as a `<floats-group>` deposit.",
+ "type": "string"
+ },
+ "unextractableReason": {
+ "description": "Why `rows` is empty — set only then. graphic-only: the table was deposited as an image with no underlying markup. cals-tgroup: the table uses the CALS `<tgroup>` model, which this server does not extract (0 of 283 tables in an open-access survey used it). no-rows: the markup carried no rows. The label and caption are still returned, so a table that could not be read is visible rather than silently missing.",
+ "enum": [
+ "cals-tgroup",
+ "graphic-only",
+ "no-rows"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "headerRowCount",
+ "rows"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "title": {
+ "description": "Article title",
+ "type": "string"
+ },
+ "viaSource": {
+ "description": "Which layer produced the JATS: `pmc` for NCBI PMC EFetch (db=pmc), `europepmc` for Europe PMC `fullTextXML`. Both paths return the same JATS shape; the discriminator records origin for observability and license attribution.",
+ "enum": [
+ "pmc",
+ "europepmc"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "viaSource",
+ "sections"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Best-effort full text from an open-access copy",
+ "properties": {
+ "content": {
+ "description": "Full article text — Markdown or plain text per `contentFormat`",
+ "type": "string"
+ },
+ "contentFormat": {
+ "description": "How `content` was extracted. html-markdown: Defuddle extracted Markdown from an HTML landing page; light section structure may survive but is not guaranteed. pdf-text: unpdf extracted plain text from a PDF; no section, reference, or heading structure.",
+ "enum": [
+ "html-markdown",
+ "pdf-text"
+ ],
+ "type": "string"
+ },
+ "doi": {
+ "description": "DOI used to locate the open-access copy",
+ "type": "string"
+ },
+ "hostType": {
+ "description": "`publisher` or `repository` — where the OA copy is hosted",
+ "type": "string"
+ },
+ "license": {
+ "description": "License identifier from Unpaywall (e.g. cc-by, cc0)",
+ "type": "string"
+ },
+ "pmcId": {
+ "description": "PMC ID this article was requested under, in `PMC<digits>` form — present for `pmcids` input, absent for `pmids` and `dois` input. Ties the article back to the requested identifier, which `unavailable[]` keys on for the ids that found nothing.",
+ "type": "string"
+ },
+ "pmid": {
+ "description": "PubMed ID when input was `pmids`; absent for `pmcids` and `dois` input",
+ "type": "string"
+ },
+ "pubmedUrl": {
+ "description": "PubMed URL — present when `pmid` is set",
+ "type": "string"
+ },
+ "source": {
+ "const": "unpaywall",
+ "description": "Content fetched from an open-access copy indexed by Unpaywall. Best-effort — structural fidelity depends on `contentFormat`.",
+ "type": "string"
+ },
+ "sourceUrl": {
+ "description": "URL the content was fetched from",
+ "type": "string"
+ },
+ "title": {
+ "description": "Detected article title when present",
+ "type": "string"
+ },
+ "totalPages": {
+ "description": "Page count reported by the PDF extractor; absent for HTML",
+ "type": "number"
+ },
+ "version": {
+ "description": "OA version: submittedVersion | acceptedVersion | publishedVersion",
+ "type": "string"
+ },
+ "viaSource": {
+ "const": "unpaywall",
+ "description": "Layer that produced this article. Constant `unpaywall` for this branch.",
+ "type": "string"
+ },
+ "wordCount": {
+ "description": "Approximate word count reported by the HTML extractor; absent for PDFs",
+ "type": "number"
+ }
+ },
+ "required": [
+ "source",
+ "viaSource",
+ "contentFormat",
+ "doi",
+ "sourceUrl",
+ "content"
+ ],
+ "type": "object"
+ }
+]