Columbia University Libraries Hours API response schemas

Response shapes for the Columbia University Libraries Hours API at hours.library.columbia.edu/api/v1. Derived from live responses observed on 2026-08-19 and from Columbia's own published Rails source at github.com/cul/ldpd-hours. Columbia publishes no schema of its own for this service.

UniversityHigher EducationEducationIvy LeaguePrivate Research UniversityUnited StatesNew YorkIdentity FederationLibraryOpen DataResearch RepositoryResearch DataCourse CatalogCampus Life
View JSON Schema on GitHub

JSON Schema

columbia-library-hours-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/columbia/main/json-schema/columbia-library-hours-schema.json",
  "title": "Columbia University Libraries Hours API response schemas",
  "description": "Response shapes for the Columbia University Libraries Hours API at hours.library.columbia.edu/api/v1. Derived from live responses observed on 2026-08-19 and from Columbia's own published Rails source at github.com/cul/ldpd-hours. Columbia publishes no schema of its own for this service.",
  "x-provenance": {
    "generated": "2026-08-19",
    "method": "derived",
    "source": "openapi/columbia-library-hours-openapi.yml",
    "derived_from": "Live probes of https://hours.library.columbia.edu/api/v1 plus https://github.com/cul/ldpd-hours",
    "x-operator": "institution",
    "x-operator-evidence": "hours.library.columbia.edu resolves into Columbia University address space (128.59.222.118) under a TLS certificate issued to O=Columbia University by InCommon/Internet2."
  },
  "$defs": {
    "OpenWindow": {
      "type": "object",
      "description": "The current opening window for one location.",
      "required": ["open_time", "close_time", "formatted_date"],
      "additionalProperties": false,
      "properties": {
        "open_time": { "type": "string", "pattern": "^[0-2][0-9]:[0-5][0-9]$", "description": "Local opening time, 24-hour HH:MM, America/New_York. The API declares no timezone." },
        "close_time": { "type": "string", "pattern": "^[0-2][0-9]:[0-5][0-9]$", "description": "Local closing time, 24-hour HH:MM." },
        "formatted_date": { "type": "string", "description": "Human display string such as 'Until 09:00PM'. Named formatted_date but carries a time." }
      }
    },
    "DayHours": {
      "type": "object",
      "description": "Posted hours for one location on one calendar date.",
      "required": ["date", "closed", "tbd", "formatted_date"],
      "additionalProperties": false,
      "properties": {
        "date": { "type": "string", "format": "date" },
        "open_time": { "type": ["string", "null"], "pattern": "^[0-2][0-9]:[0-5][0-9]$" },
        "close_time": { "type": ["string", "null"], "pattern": "^[0-2][0-9]:[0-5][0-9]$" },
        "closed": { "type": "boolean" },
        "tbd": { "type": "boolean", "description": "Hours for this date have not yet been decided." },
        "note": { "type": ["string", "null"], "description": "Free-text note, typically the academic period." },
        "short_note": { "type": ["string", "null"] },
        "short_note_url": { "type": ["string", "null"], "description": "Empty string when unset, not null." },
        "formatted_date": { "type": "string" }
      }
    },
    "OpenNowResponse": {
      "type": "object",
      "required": ["data"],
      "additionalProperties": false,
      "properties": {
        "data": {
          "description": "Map of location code to current opening window. Null when no location is open — callers must handle both shapes.",
          "oneOf": [
            { "type": "null" },
            { "type": "object", "additionalProperties": { "$ref": "#/$defs/OpenWindow" } }
          ]
        }
      }
    },
    "LocationHoursResponse": {
      "type": "object",
      "required": ["data"],
      "additionalProperties": false,
      "properties": {
        "data": {
          "type": "object",
          "description": "Single-key map of the requested location code to its list of daily entries.",
          "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/DayHours" } }
        }
      }
    },
    "ErrorResponse": {
      "type": "object",
      "required": ["error", "data"],
      "additionalProperties": false,
      "properties": {
        "error": {
          "type": "object",
          "required": ["msg"],
          "additionalProperties": false,
          "properties": {
            "msg": { "type": "string", "description": "Human message carrying the HTTP status as a text prefix. There is no machine-readable error code an agent can branch on." }
          }
        },
        "data": { "type": "null" }
      }
    }
  },
  "oneOf": [
    { "$ref": "#/$defs/OpenNowResponse" },
    { "$ref": "#/$defs/LocationHoursResponse" },
    { "$ref": "#/$defs/ErrorResponse" }
  ]
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/columbia-library-hours"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.