API Documentation

Discovery

Hudson Street Library implements RFC 9727 for API discovery. You can discover the available APIs in two ways:

Well-Known URI

GET https://hudsonstreetlibrary.com/.well-known/api-catalog

Link Relations

Each HTML page includes this link element:

<link rel="api-catalog" type="application/linkset+json" href="/.well-known/api-catalog">

Note: HTTP Link headers are not available because GitHub Pages does not support custom response headers. The well-known URI and the HTML link element work.

Available APIs

Full Catalog JSON

https://hudsonstreetlibrary.com/data/books.json

This endpoint returns the complete catalog of 2028 book records.

Format: application/json (~1.6MB)

Schema: /schemas/book-collection/

Example:

curl https://hudsonstreetlibrary.com/data/books.json | jq '.[0]'

CSV Export

https://hudsonstreetlibrary.com/cms/data/books.csv

This endpoint returns the full catalog as CSV. Each record has 36 columns.

Format: text/csv

Schema: /schemas/book-csv/

Example:

curl https://hudsonstreetlibrary.com/cms/data/books.csv | head -5

Collections Metadata

https://hudsonstreetlibrary.com/cms/data/libraryCollections.json

This endpoint returns the thematic collection groupings.

Format: application/json

Schema: /schemas/collections/

Example:

curl https://hudsonstreetlibrary.com/cms/data/libraryCollections.json | jq '.'

Rate Limits & Usage

GitHub Pages serves all endpoints as static files. No rate limits apply beyond the standard GitHub CDN throttling. When the library adds new books, the next deployment updates the data.

CORS: All endpoints support cross-origin requests.

Caching: GitHub Pages serves the files with standard HTTP cache headers. The catalog usually updates weekly.

Standards Compliance

Questions?

To ask a question about the API or to report a problem, open an issue on the project repository.