Peking University Harvesting API

OAI-PMH 2.0 verbs for harvesting repository metadata.

Operations 1

GET /request OAI-PMH 2.0 request #

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/peking-harvesting-api"
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 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.

OpenAPI Specification

peking-harvesting-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Peking University Institutional Repository OAI-PMH Harvesting API
  description: 'OAI-PMH 2.0 metadata-harvesting endpoint for the Institutional Repository of Peking University, operated by the PKU Library on the university''s own host. The live Identify response names the repository "Institutional Repository of Peking University", gives adminEmail pkuir@lib.pku.edu.cn, an earliest datestamp of 2015-09-25, transient deleted-record support and YYYY-MM-DDThh:mm:ssZ granularity.

    Twelve metadata formats are advertised: oai_dc, qdc, mods, mets, didl, ore, rdf, marc, xoai, dim, etdms and uketd_dc. Sets are exposed per PKU faculty and department (com_20.500.11897_2 北京大学, com_20.500.11897_3 理学部, and so on).

    The six verbs below are the complete OAI-PMH 2.0 protocol. Identify, ListMetadataFormats, ListSets and ListIdentifiers were verified live on 2026-08-19; GetRecord and ListRecords are protocol-mandatory and are documented from the specification, not from a successful probe — see the note in conformance/peking-conformance.yml.'
  version: '2.0'
  contact:
    name: PKU Institutional Repository
    email: pkuir@lib.pku.edu.cn
    url: https://ir.pku.edu.cn/
  x-operator: institution
  x-operator-evidence: baseURL reported by the endpoint's own Identify response is http://ir.pku.edu.cn/oai/request, under Peking University's registrable domain.
  x-generated: '2026-08-19'
  x-method: probed
  x-source: https://ir.pku.edu.cn/oai/request?verb=Identify
servers:
- url: https://ir.pku.edu.cn/oai
  description: Production OAI-PMH endpoint
tags:
- name: Harvesting
  description: OAI-PMH 2.0 verbs for harvesting repository metadata.
paths:
  /request:
    get:
      tags:
      - Harvesting
      summary: OAI-PMH 2.0 request
      description: Single-endpoint OAI-PMH interface. The `verb` parameter selects the operation; the remaining parameters are those the chosen verb allows.
      operationId: oaiRequest
      parameters:
      - name: verb
        in: query
        required: true
        description: The OAI-PMH verb to execute.
        schema:
          type: string
          enum:
          - Identify
          - ListMetadataFormats
          - ListSets
          - ListIdentifiers
          - ListRecords
          - GetRecord
        example: Identify
      - name: metadataPrefix
        in: query
        required: false
        description: Metadata format to return. Required for ListIdentifiers, ListRecords and GetRecord. Advertised by this repository as one of the twelve prefixes below.
        schema:
          type: string
          enum:
          - oai_dc
          - qdc
          - mods
          - mets
          - didl
          - ore
          - rdf
          - marc
          - xoai
          - dim
          - etdms
          - uketd_dc
        example: oai_dc
      - name: identifier
        in: query
        required: false
        description: OAI identifier of a single record. Required for GetRecord.
        schema:
          type: string
        example: oai:localhost:20.500.11897/69
      - name: set
        in: query
        required: false
        description: Set to restrict a selective harvest to, e.g. a PKU faculty.
        schema:
          type: string
        example: com_20.500.11897_2
      - name: from
        in: query
        required: false
        description: Lower bound of the datestamp range, YYYY-MM-DDThh:mm:ssZ.
        schema:
          type: string
      - name: until
        in: query
        required: false
        description: Upper bound of the datestamp range, YYYY-MM-DDThh:mm:ssZ.
        schema:
          type: string
      - name: resumptionToken
        in: query
        required: false
        description: Flow-control token returned by a previous incomplete list response.
        schema:
          type: string
      responses:
        '200':
          description: An OAI-PMH response envelope. Protocol-level failures are also returned with HTTP 200 and an <error> element carrying an OAI error code.
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/OAIPMHResponse'
              examples:
                identify:
                  summary: Identify, captured live 2026-08-19
                  externalValue: ../examples/peking-ir-oai-identify-response.xml
                listMetadataFormats:
                  summary: ListMetadataFormats, captured live 2026-08-19
                  externalValue: ../examples/peking-ir-oai-listmetadataformats-response.xml
        '500':
          description: Observed behaviour, not protocol behaviour. An unrecognised verb returns a Tomcat HTTP 500 page instead of the OAI-PMH `badVerb` error element the specification requires. Recorded in errors/peking-errors.yml.
          content:
            text/html:
              schema:
                type: string
components:
  schemas:
    OAIError:
      type: object
      properties:
        code:
          type: string
          enum:
          - badArgument
          - badResumptionToken
          - badVerb
          - cannotDisseminateFormat
          - idDoesNotExist
          - noRecordsMatch
          - noMetadataFormats
          - noSetHierarchy
        message:
          type: string
    Identify:
      type: object
      properties:
        repositoryName:
          type: string
          example: Institutional Repository of Peking University
        baseURL:
          type: string
          example: http://ir.pku.edu.cn/oai/request
        protocolVersion:
          type: string
          const: '2.0'
        adminEmail:
          type: string
          example: pkuir@lib.pku.edu.cn
        earliestDatestamp:
          type: string
          example: '2015-09-25T01:41:46Z'
        deletedRecord:
          type: string
          example: transient
        granularity:
          type: string
          example: YYYY-MM-DDThh:mm:ssZ
    OAIPMHResponse:
      type: object
      description: Root OAI-PMH element. Carries responseDate, the echoed request, and exactly one of a verb payload or an error element.
      properties:
        responseDate:
          type: string
          format: date-time
        request:
          type: string
        Identify:
          $ref: '#/components/schemas/Identify'
        error:
          $ref: '#/components/schemas/OAIError'
externalDocs:
  description: OAI-PMH 2.0 protocol specification
  url: https://www.openarchives.org/OAI/openarchivesprotocol.html