WIReDSpace DSpace REST API

WIReDSpace is the Wits institutional repository, running DSpace 9.2. Its REST API exposes a HAL/JSON root document at /server/api with endpoints for communities, collections, items, bundles, bitstreams, discovery/browse, and more. Verified live returning a DSpace 9.2 root document.

OpenAPI Specification

university-of-the-witwatersrand-wiredspace-rest.yaml Raw ↑
openapi: 3.0.3
info:
  title: WIReDSpace DSpace REST API
  description: >-
    REST API for WIReDSpace, the University of the Witwatersrand institutional
    repository, running DSpace 9.2. The API serves a HAL/JSON root document at
    /server/api and exposes read access to communities, collections, items,
    bundles, bitstreams, and discovery/browse endpoints. This specification
    documents the public, anonymously-readable read surfaces verified live
    against the deployment; write, workflow, and administrative endpoints exist
    in DSpace but require authentication and are not enumerated here.
  version: "9.2"
  contact:
    name: Wits Open Scholarship, Library
    email: [email protected]
    url: https://wiredspace.wits.ac.za/
  license:
    name: DSpace BSD License
    url: https://github.com/DSpace/DSpace/blob/main/LICENSE
servers:
  - url: https://wiredspace.wits.ac.za/server/api
    description: WIReDSpace production DSpace 9.2 REST server
tags:
  - name: Root
    description: HAL/JSON API root document
  - name: Communities
    description: Top-level and sub-community containers
  - name: Collections
    description: Collections of items within communities
  - name: Items
    description: Repository items (records)
  - name: Discovery
    description: Browse and search/discovery endpoints
paths:
  /:
    get:
      tags: [Root]
      summary: API root document
      description: >-
        Returns the DSpace HAL/JSON root document, including dspaceVersion,
        dspaceName, and an _links map of all available endpoints.
      operationId: getRoot
      responses:
        "200":
          description: HAL/JSON root document
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/Root"
  /core/communities:
    get:
      tags: [Communities]
      summary: List communities
      description: Returns a paginated HAL collection of top-level communities.
      operationId: getCommunities
      parameters:
        - $ref: "#/components/parameters/Page"
        - $ref: "#/components/parameters/Size"
      responses:
        "200":
          description: Paginated list of communities
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/CommunityPage"
  /core/communities/{uuid}:
    get:
      tags: [Communities]
      summary: Get a community by UUID
      operationId: getCommunity
      parameters:
        - $ref: "#/components/parameters/Uuid"
      responses:
        "200":
          description: A single community
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/Community"
        "404":
          description: Community not found
  /core/collections:
    get:
      tags: [Collections]
      summary: List collections
      operationId: getCollections
      parameters:
        - $ref: "#/components/parameters/Page"
        - $ref: "#/components/parameters/Size"
      responses:
        "200":
          description: Paginated list of collections
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/DSpaceObjectPage"
  /core/collections/{uuid}:
    get:
      tags: [Collections]
      summary: Get a collection by UUID
      operationId: getCollection
      parameters:
        - $ref: "#/components/parameters/Uuid"
      responses:
        "200":
          description: A single collection
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/DSpaceObject"
        "404":
          description: Collection not found
  /core/items/{uuid}:
    get:
      tags: [Items]
      summary: Get an item by UUID
      description: >-
        Returns a single repository item. Anonymous access is governed by the
        item's access policies; restricted items return 401/403.
      operationId: getItem
      parameters:
        - $ref: "#/components/parameters/Uuid"
      responses:
        "200":
          description: A single item
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/DSpaceObject"
        "401":
          description: Authentication required for this item
        "404":
          description: Item not found
  /discover/browses:
    get:
      tags: [Discovery]
      summary: List browse indexes
      description: Returns the configured discovery browse indexes (e.g. by title, author, subject, date issued).
      operationId: getBrowses
      responses:
        "200":
          description: Browse indexes
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/DSpaceObjectPage"
  /discover/search/objects:
    get:
      tags: [Discovery]
      summary: Search discovery objects
      description: Full-text and faceted search across indexed DSpace objects.
      operationId: searchObjects
      parameters:
        - name: query
          in: query
          description: Search query string
          required: false
          schema:
            type: string
        - name: dsoType
          in: query
          description: Restrict results to a DSpace object type (community, collection, item)
          required: false
          schema:
            type: string
        - $ref: "#/components/parameters/Page"
        - $ref: "#/components/parameters/Size"
      responses:
        "200":
          description: Search result page
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/DSpaceObjectPage"
components:
  parameters:
    Uuid:
      name: uuid
      in: path
      required: true
      description: The UUID of the DSpace object
      schema:
        type: string
        format: uuid
    Page:
      name: page
      in: query
      required: false
      description: Zero-based page index
      schema:
        type: integer
        minimum: 0
        default: 0
    Size:
      name: size
      in: query
      required: false
      description: Page size
      schema:
        type: integer
        minimum: 1
        default: 20
  schemas:
    Root:
      type: object
      properties:
        dspaceUI:
          type: string
          format: uri
          example: https://wiredspace.wits.ac.za
        dspaceName:
          type: string
          example: WIReDSpace
        dspaceServer:
          type: string
          format: uri
          example: https://wiredspace.wits.ac.za/server
        dspaceVersion:
          type: string
          example: DSpace 9.2
        type:
          type: string
          example: root
        _links:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/Link"
    MetadataValue:
      type: object
      properties:
        value:
          type: string
        language:
          type: string
          nullable: true
        authority:
          type: string
          nullable: true
        confidence:
          type: integer
        place:
          type: integer
    Community:
      type: object
      properties:
        id:
          type: string
          format: uuid
        uuid:
          type: string
          format: uuid
        name:
          type: string
        handle:
          type: string
          example: "10539/38213"
        metadata:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: "#/components/schemas/MetadataValue"
        archivedItemsCount:
          type: integer
        type:
          type: string
          example: community
        _links:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/Link"
    DSpaceObject:
      type: object
      properties:
        id:
          type: string
          format: uuid
        uuid:
          type: string
          format: uuid
        name:
          type: string
        handle:
          type: string
        metadata:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: "#/components/schemas/MetadataValue"
        type:
          type: string
        _links:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/Link"
    Link:
      type: object
      properties:
        href:
          type: string
          format: uri
    PageInfo:
      type: object
      properties:
        size:
          type: integer
        totalElements:
          type: integer
        totalPages:
          type: integer
        number:
          type: integer
    CommunityPage:
      type: object
      properties:
        _embedded:
          type: object
          properties:
            communities:
              type: array
              items:
                $ref: "#/components/schemas/Community"
        _links:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/Link"
        page:
          $ref: "#/components/schemas/PageInfo"
    DSpaceObjectPage:
      type: object
      properties:
        _embedded:
          type: object
        _links:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/Link"
        page:
          $ref: "#/components/schemas/PageInfo"