openapi: 3.2.0 info: title: University of Florida Libraries Patron Item API version: '2026-09-01' summary: Public, unauthenticated read API over the University of Florida Digital Collections, the Digital Library of the Caribbean and the Florida Digital Newspaper Library. description: '`api.patron.uflib.ufl.edu` is the backend of the UF Digital Collections reader at ufdc.ufl.edu.' contact: name: UF Digital Library Center email: digby@ufl.edu url: https://lts.uflib.ufl.edu/supported-systems/uf-digital-collections/ x-operator: institution x-operator-basis: api.patron.uflib.ufl.edu -> 128.227.18.113, 128.227.24.223; ARIN NetName UFNET, OrgName "University of Florida", CIDR 128.227.0.0/16. No vendor CNAME. TLS issuer "C=US, O=Internet2, CN=InCommon RSA Server CA 2". The OAI-PMH Identify response names UF as the repository and digby@ufl.edu as adminEmail. No vendor product string appears in any probed response. x-provenance: generated: '2026-09-01' method: derived source: Live HTTP probes of every resource named in the root index of https://api.patron.uflib.ufl.edu on 2026-09-01, plus the self-documenting example URLs each resource root returns. The host itself was discovered by reading https://ufdc.ufl.edu/assets/environment-CtcEkdJa.js, the UFDC client's build-time environment module. servers: - url: https://api.patron.uflib.ufl.edu description: 'Production. Public and unauthenticated; no API key is issued or required. WARNING — the hostname resolves to TWO A records that do not serve the same routes. 128.227.18.113 serves every resource. 128.227.24.223 serves every resource EXCEPT /oai and /oai_by_title, which it returns 404 for. Verified 2026-09-01 by pinning each address with --resolve and replaying all nine sampled routes against both. See `x-node-divergence`.' tags: - name: Item description: Per-item citation, downloads and volume enumeration. paths: /serialhierarchy: get: tags: - Item operationId: getSerialHierarchy summary: Volume/issue hierarchy for one serial parameters: - name: bibid in: query required: true schema: type: string examples: - UF00081789 responses: '200': description: Serial hierarchy. content: application/json: schema: type: object /all_vids_in_bibid: get: tags: - Item operationId: listVolumes summary: Enumerate every volume under one bibliographic record parameters: - name: bibid in: query required: true schema: type: string examples: - UF00094730 - name: start in: query schema: type: integer default: 0 - name: size in: query schema: type: integer responses: '200': description: Volumes. content: application/json: schema: type: object /{bibid}/{vid}/citation: get: tags: - Item operationId: getCitation summary: Full descriptive metadata for one item description: 'MODS-derived descriptive metadata: title, creators, genre, subjects with authority, language, PDF filename, ETD block.' parameters: - name: bibid in: path required: true schema: type: string examples: - UF00078891 - name: vid in: path required: true schema: type: string examples: - '00001' responses: '200': description: Item citation. content: application/json: schema: $ref: '#/components/schemas/Citation' /{bibid}/{vid}/downloads: get: tags: - Item operationId: getDownloads summary: Downloadable renditions for one item parameters: - name: bibid in: path required: true schema: type: string - name: vid in: path required: true schema: type: string responses: '200': description: Available downloads. content: application/json: schema: type: object components: schemas: Citation: type: object properties: Title: type: string Creators: type: array items: type: object properties: name: type: string role: type: string Language: type: string genre: type: array items: type: object properties: text: type: string authority: type: string description: e.g. aat, rbgenr, marcgt. subjects: type: array items: type: object properties: subject_string: type: string subject_fields: type: object item_pdf: type: string scale: type: - string - 'null' edition: type: - string - 'null' etd: type: - object - 'null' description: Electronic thesis/dissertation block. x-node-divergence: observed: '2026-09-01' method: probed hosts: - address: 128.227.18.113 routes_ok: all sampled - address: 128.227.24.223 routes_404: - /oai - /oai_by_title routes_ok: - / - /types - /exactsearch - /recent_additions - /rss_ufdc - /collections - /fdnl_titles_list impact: An OAI-PMH harvester that resolves onto the second node receives HTTP 404 and concludes the repository has been withdrawn. Which node answers is a DNS ordering accident, so the failure is intermittent and will not reproduce on a retry that lands on the other address. This is deployment drift between two backends, not a deliberate partition — every other route is served identically by both.