CMU Library Publishing Service API + OAI-PMH

REST API and conformant OAI-PMH 2.0 provider for the Carnegie Mellon University Library Publishing Service, the open-access publishing programme run by University Libraries. Exposes five journals (Language Development Research, Encyclopedia of the History of Science, MAJAL, Negotiation and Conflict Management Research, Tolstoy Studies Journal), their issues, 379 articles, keywords and preprint objects. Self-hosted at 128.2.24.32 — inside Carnegie Mellon's own /16 — so unlike almost every research surface in this cohort it is the institution's own machine, not a vendor tenancy. The OAI-PMH Identify response names the repository as Carnegie Mellon University Library Publishing Service and the administrator as librarypublishing@andrew.cmu.edu, and advertises oai_dc and jats.

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/library-publishing"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

Free tier, no email required.

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

OpenAPI Specification

carnegie-mellon-university-library-publishing-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: CMU Library Publishing Service API
  version: '1.0'
  description: >-
    Read API for the Carnegie Mellon University Library Publishing Service, the open-access
    scholarly publishing programme run by CMU University Libraries. It exposes the five journals
    CMU publishes — Language Development Research (ISSN 2771-7976), Encyclopedia of the History of
    Science (2642-5890), MAJAL: CMUQ's Undergraduate Journal, Negotiation and Conflict Management
    Research (1750-4716) and Tolstoy Studies Journal — along with their issues, articles (379 when
    probed), keywords, licences and preprint repository objects, plus a full OAI-PMH 2.0 provider.
    This is the surface the June 2026 profile missed entirely while crediting CMU with figshare's
    contract: it is self-hosted on lps.library.cmu.edu at 128.2.24.32, inside Carnegie Mellon's own
    /16, and its OAI-PMH Identify response names Carnegie Mellon University Library Publishing
    Service as the repository and librarypublishing@andrew.cmu.edu as the administrator.
  contact:
    name: Carnegie Mellon University Library Publishing Service
    email: librarypublishing@andrew.cmu.edu
    url: https://lps.library.cmu.edu/
  x-operator: institution
  x-operator-evidence: >-
    lps.library.cmu.edu is under Carnegie Mellon University's own registrable domain and resolves
    to 128.2.24.32 — Carnegie Mellon's own 128.2.0.0/16 address space, not a vendor CDN or cloud
    tenancy. Contrast kilthub.cmu.edu, which is a CNAME to FIGSHARE.COM and is therefore recorded
    as `tenant`, and canvas.cmu.edu, which is a CNAME to CMU-VANITY.INSTRUCTURE.COM. The software
    is Janeway, an open-source publishing platform, but CMU operates the instance: the OAI-PMH
    Identify response returns repositoryName "Carnegie Mellon University Library Publishing
    Service" and adminEmail librarypublishing@andrew.cmu.edu, and every journal record carries
    publisher "Carnegie Mellon University Library Publishing Service". Probed 2026-08-19:
    /api/ 200 application/json; /api/journals/ 200 (count 5); /api/articles/ 200 (count 379);
    /api/oai/?verb=Identify 200 application/xml; /api/oai/?verb=ListMetadataFormats 200
    (oai_dc, jats); /api/oai/?verb=ListRecords&metadataPrefix=oai_dc 200.
  x-provenance:
    generated: '2026-08-19'
    method: derived
    source: >-
      Live probes of https://lps.library.cmu.edu/api/ and
      https://ncmr.lps.library.cmu.edu/api/oai/ on 2026-08-19. The API is a Django REST Framework
      browsable root that self-describes its collections; every path below was read from that root
      and confirmed by request.
    authorship: >-
      Written by API Evangelist, not published by Carnegie Mellon University. No OpenAPI, schema
      endpoint or API documentation page is served for this surface.
    coverage: >-
      The DRF root advertises eighteen collections (accountrole, journals, issues, articles,
      licences, keywords, accounts, preprints, repository_licenses, repository_fields,
      preprint_files, user_preprints, repository_subjects, published_preprints, version_queue,
      identifiers, user_info, logout). The four public read collections that were probed and
      returned real data are modelled here; the account- and workflow-scoped collections are
      listed in x-unmodelled-collections rather than guessed at.
  x-unmodelled-collections:
  - accountrole
  - accounts
  - licences
  - repository_licenses
  - repository_fields
  - preprint_files
  - user_preprints
  - repository_subjects
  - published_preprints
  - version_queue
  - identifiers
  - user_info
  - logout
servers:
- url: https://lps.library.cmu.edu
  description: Production — CMU Library Publishing Service (press-wide root)
- url: https://ncmr.lps.library.cmu.edu
  description: >-
    Per-journal host. Each journal answers the same API and OAI-PMH paths scoped to itself; NCMR
    (Negotiation and Conflict Management Research) is the host that was probed.
tags:
- name: journals
  description: The journals CMU Libraries publishes.
- name: issues
  description: Issues within a journal.
- name: articles
  description: Published articles.
- name: preprints
  description: Preprint repository objects.
- name: oai-pmh
  description: OAI-PMH 2.0 metadata harvesting provider.
paths:
  /api/:
    get:
      tags: [journals]
      operationId: getApiRoot
      summary: Django REST Framework API root
      description: >-
        Returns a flat object mapping each available collection name to its absolute URL. This is
        the only discovery surface the API offers — there is no OpenAPI, no schema endpoint and no
        documentation page.
      responses:
        '200':
          description: Map of collection name to URL.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {type: string, format: uri}
  /api/journals/:
    get:
      tags: [journals]
      operationId: listJournals
      summary: List published journals
      responses:
        '200':
          description: Paginated journal list (count 5 when probed 2026-08-19).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResult'
              example:
                count: 5
                next: null
                previous: null
                results:
                - pk: 3
                  code: LDR
                  name: Language Development Research
                  publisher: Carnegie Mellon University Library Publishing Service
                  issn: 2771-7976
  /api/issues/:
    get:
      tags: [issues]
      operationId: listIssues
      summary: List issues
      parameters:
      - {name: limit, in: query, schema: {type: integer}}
      - {name: offset, in: query, schema: {type: integer}}
      responses:
        '200':
          description: Paginated issue list.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/PaginatedResult'}
  /api/articles/:
    get:
      tags: [articles]
      operationId: listArticles
      summary: List published articles
      description: >-
        Returns articles with title, subtitle, abstract (HTML), and links to their issue and
        journal. Paginated with `limit`/`offset`; the default page size is 100 and `next` carries
        the absolute URL of the following page.
      parameters:
      - {name: limit, in: query, schema: {type: integer, default: 100}}
      - {name: offset, in: query, schema: {type: integer, default: 0}}
      responses:
        '200':
          description: Paginated article list (count 379 on the NCMR host when probed 2026-08-19).
          content:
            application/json:
              schema: {$ref: '#/components/schemas/PaginatedResult'}
  /api/preprints/:
    get:
      tags: [preprints]
      operationId: listPreprints
      summary: List preprint repository objects
      responses:
        '200':
          description: Paginated preprint list.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/PaginatedResult'}
  /api/keywords/:
    get:
      tags: [articles]
      operationId: listKeywords
      summary: List article keywords
      responses:
        '200':
          description: Paginated keyword list.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/PaginatedResult'}
  /api/oai/:
    get:
      tags: [oai-pmh]
      operationId: oaiPmh
      summary: OAI-PMH 2.0 metadata harvesting endpoint
      description: >-
        A conformant OAI-PMH 2.0 provider operated by CMU on CMU's own host. Identify returns
        repositoryName "Carnegie Mellon University Library Publishing Service", baseURL
        https://lps.library.cmu.edu/NCMR/api/oai/, protocolVersion 2.0, adminEmail
        librarypublishing@andrew.cmu.edu, earliestDatestamp 2008-02-11T22:00:00Z, deletedRecord
        "no" and granularity YYYY-MM-DDThh:mm:ssZ. ListMetadataFormats advertises `oai_dc` and
        `jats`. This is the domain-standard conformance point for the education regime's
        `oai-pmh` target, and unlike most of the cohort it is on the institution's own
        infrastructure rather than a vendor's shared endpoint.
      parameters:
      - name: verb
        in: query
        required: true
        schema:
          type: string
          enum: [Identify, ListMetadataFormats, ListSets, ListIdentifiers, ListRecords, GetRecord]
        example: Identify
      - name: metadataPrefix
        in: query
        required: false
        schema: {type: string, enum: [oai_dc, jats]}
      - name: identifier
        in: query
        required: false
        description: Required for GetRecord.
        schema: {type: string}
      - name: from
        in: query
        required: false
        schema: {type: string, format: date-time}
      - name: until
        in: query
        required: false
        schema: {type: string, format: date-time}
      - name: resumptionToken
        in: query
        required: false
        schema: {type: string}
      responses:
        '200':
          description: >-
            OAI-PMH 2.0 response document. Protocol errors are returned inside this document as
            <error code="..."/> with HTTP 200, per the OAI-PMH specification.
          content:
            application/xml:
              schema: {type: string}
components:
  schemas:
    PaginatedResult:
      type: object
      description: Django REST Framework limit/offset pagination envelope used by every collection.
      required: [count, results]
      properties:
        count: {type: integer}
        next: {type: string, format: uri, nullable: true}
        previous: {type: string, format: uri, nullable: true}
        results:
          type: array
          items: {type: object, additionalProperties: true}
    Journal:
      type: object
      properties:
        pk: {type: integer}
        code: {type: string, example: NCMR}
        name: {type: string}
        publisher: {type: string, example: Carnegie Mellon University Library Publishing Service}
        issn: {type: string, nullable: true}
        description: {type: string, nullable: true}
        current_issue: {type: string, format: uri, nullable: true}
        default_cover_image: {type: string, format: uri, nullable: true}
        issues: {type: array, items: {type: string, format: uri}}
    Article:
      type: object
      properties:
        pk: {type: integer}
        title: {type: string}
        subtitle: {type: string, nullable: true}
        abstract: {type: string, nullable: true, description: HTML.}