Massey Research Online DSpace REST API

HAL/JSON REST API for Massey Research Online, running DSpace 8.3. Anonymous read is permitted on the repository root, communities (19 of them) and collections; item and bitstream listings return 401 "Authentication is required". Verified live 2026-09-01. The host is slow and intermittently drops connections to automated clients.

Operations 7

GET /api Repository root / HAL link index #
GET /api/core/communities List top-level and sub communities #
GET /api/core/collections List collections #
GET /api/core/items List items #
GET /api/core/bitstreams List bitstreams #
GET /api/discover/search/objects Discovery search across repository objects #
GET /oai/request OAI-PMH 2.0 metadata harvesting endpoint #

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/mro-rest"
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

massey-mro-dspace-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Massey Research Online (Pātaka Rangahau) REST API
  version: '8.3'
  summary: >-
    Read interface to Massey University's institutional research repository, self-hosted on
    mro.massey.ac.nz.
  description: >-
    Massey Research Online / Pātaka Rangahau is Massey University's institutional repository
    of theses, dissertations and research outputs. It runs DSpace 8.3 on the university's own
    host, mro.massey.ac.nz, and exposes a HAL/JSON REST interface at /server/api alongside an
    OAI-PMH 2.0 endpoint at /server/oai/request.

    Operator note: the repository SOFTWARE is DSpace, an open-source product of LYRASIS/the
    DSpace community, and the shape of this interface is DSpace's, not Massey's. The
    DEPLOYMENT is Massey's — their host, their content, their DOI prefix (10.82921, registered
    to DataCite repository massey.eqpliw). This document describes only the operations
    API Evangelist probed against Massey's deployment; it is not the DSpace project's own
    contract and must not be scored as Massey-authored engineering.
  contact:
    name: Massey University Library IT
    email: LibIT@massey.ac.nz
    url: https://mro.massey.ac.nz/
  termsOfService: https://www.massey.ac.nz/about/policies-procedures-and-guidelines/
x-operator: institution
x-operator-evidence: >-
  mro.massey.ac.nz resolves to 130.123.100.10 inside Massey University's own network and sits
  under the institution's registrable domain massey.ac.nz. The OAI-PMH Identify response names
  repositoryIdentifier "mro.massey.ac.nz" and adminEmail LibIT@massey.ac.nz.
x-software:
  name: DSpace
  version: '8.3'
  vendor: LYRASIS / DSpace community
  license: open source (BSD)
  note: >-
    Self-hosted open-source software, not a vendor SaaS tenancy. The contract shape is shared
    with every DSpace 8 installation; the deployment and its content are the institution's.
x-provenance:
  generated: '2026-09-01'
  method: derived
  acquisition: probed
  source:
    - https://mro.massey.ac.nz/server/api
  evidence:
    - url: https://mro.massey.ac.nz/server/api
      status: 200
      note: 'HAL root; dspaceName "Massey Research Online", dspaceVersion "DSpace 8.3"'
    - url: https://mro.massey.ac.nz/server/api/core/communities
      status: 200
      note: 19 communities returned
    - url: https://mro.massey.ac.nz/server/api/core/collections
      status: 200
    - url: https://mro.massey.ac.nz/server/api/core/items
      status: 401
      note: 'Authentication is required'
    - url: https://mro.massey.ac.nz/server/api/core/bitstreams
      status: 401
    - url: https://mro.massey.ac.nz/server/api/config/properties
      status: 405
servers:
  - url: https://mro.massey.ac.nz/server
    description: Massey Research Online production DSpace backend
tags:
  - name: Root
  - name: Core
    description: Communities, collections, items and bitstreams.
  - name: Discovery
    description: Search and browse indexes.
paths:
  /api:
    get:
      operationId: getRoot
      summary: Repository root / HAL link index
      description: >-
        Returns repository identity and the full HAL `_links` index of available endpoints.
        Verified 200 on 2026-09-01.
      tags: [Root]
      responses:
        '200':
          description: Repository root document.
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RepositoryRoot'
              examples:
                massey:
                  value:
                    dspaceUI: https://mro.massey.ac.nz
                    dspaceName: Massey Research Online
                    dspaceServer: https://mro.massey.ac.nz/server
                    dspaceVersion: DSpace 8.3
                    type: root
  /api/core/communities:
    get:
      operationId: listCommunities
      summary: List top-level and sub communities
      description: Public. Verified 200 on 2026-09-01; 19 communities in the repository.
      tags: [Core]
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/Size'
      responses:
        '200':
          description: Paged HAL collection of communities.
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PagedHal'
  /api/core/collections:
    get:
      operationId: listCollections
      summary: List collections
      description: Public. Verified 200 on 2026-09-01.
      tags: [Core]
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/Size'
      responses:
        '200':
          description: Paged HAL collection of collections.
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PagedHal'
  /api/core/items:
    get:
      operationId: listItems
      summary: List items
      description: >-
        NOT public on this deployment. Verified 401 "Authentication is required" on
        2026-09-01. Item metadata is reachable anonymously through the discovery search and
        the OAI-PMH endpoint instead.
      tags: [Core]
      responses:
        '401':
          description: Authentication is required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/core/bitstreams:
    get:
      operationId: listBitstreams
      summary: List bitstreams
      description: NOT public on this deployment. Verified 401 on 2026-09-01.
      tags: [Core]
      responses:
        '401':
          description: Authentication is required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/discover/search/objects:
    get:
      operationId: searchObjects
      summary: Discovery search across repository objects
      description: >-
        Advertised in the HAL root as `search`. Not independently confirmed with a 2xx during
        this run — the host intermittently dropped TLS connections on query-bearing requests
        (curl exit 35). Recorded from the root link index, not from a successful probe.
      tags: [Discovery]
      parameters:
        - name: query
          in: query
          schema: { type: string }
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/Size'
      responses:
        '200':
          description: Discovery result set.
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PagedHal'
  /oai/request:
    get:
      operationId: oaiRequest
      summary: OAI-PMH 2.0 metadata harvesting endpoint
      description: >-
        Standards-based OAI-PMH 2.0 interface. Verified 200 on 2026-09-01; Identify returns
        repositoryName "Massey Research Online", repositoryIdentifier "mro.massey.ac.nz",
        adminEmail LibIT@massey.ac.nz, granularity YYYY-MM-DDThh:mm:ssZ, deletedRecord
        "transient".
      tags: [Discovery]
      parameters:
        - name: verb
          in: query
          required: true
          schema:
            type: string
            enum: [Identify, ListMetadataFormats, ListSets, ListIdentifiers, ListRecords, GetRecord]
        - name: metadataPrefix
          in: query
          description: >-
            Supported prefixes verified on 2026-09-01: didl, mods, ore, mets, xoai, dim,
            rioxx, uketd_dc, qdc, oai_dc, rdf, marc, etdms.
          schema:
            type: string
            enum: [didl, mods, ore, mets, xoai, dim, rioxx, uketd_dc, qdc, oai_dc, rdf, marc, etdms]
        - name: identifier
          in: query
          schema: { type: string }
          example: 'oai:mro.massey.ac.nz:10179/1234'
        - name: set
          in: query
          schema: { type: string }
        - name: from
          in: query
          schema: { type: string }
        - name: until
          in: query
          schema: { type: string }
        - name: resumptionToken
          in: query
          schema: { type: string }
      responses:
        '200':
          description: OAI-PMH response envelope (application/xml). Protocol errors are also returned as 200 with an <error> element.
          content:
            text/xml:
              schema: { type: string }
components:
  parameters:
    Page:
      name: page
      in: query
      schema: { type: integer, minimum: 0, default: 0 }
    Size:
      name: size
      in: query
      schema: { type: integer, minimum: 1, default: 20 }
  schemas:
    RepositoryRoot:
      type: object
      properties:
        dspaceUI: { type: string, format: uri }
        dspaceName: { type: string }
        dspaceServer: { type: string, format: uri }
        dspaceVersion: { type: string }
        type: { type: string }
        _links: { type: object }
    PagedHal:
      type: object
      properties:
        _embedded: { type: object }
        _links: { type: object }
        page:
          type: object
          properties:
            size: { type: integer }
            totalElements: { type: integer }
            totalPages: { type: integer }
            number: { type: integer }
    Error:
      type: object
      description: Spring-style error body observed on this deployment.
      properties:
        timestamp: { type: string }
        status: { type: integer }
        error: { type: string }
        message: { type: string }
        path: { type: string }
      example:
        timestamp: '2026-09-01T20:41:48.069+00:00'
        status: 401
        error: Unauthorized
        message: Authentication is required
        path: /server/api/core/items