edoc-Server DSpace REST API

Public REST API of the edoc Open Access publication server, the institutional repository of Humboldt-Universität zu Berlin. The repository runs on DSpace 7, whose Server REST API exposes communities, collections, items, and bitstreams as HAL/JSON resources.

OpenAPI Specification

humboldt-universitat-zu-berlin-edoc-rest.yaml Raw ↑
openapi: 3.0.3
info:
  title: edoc-Server DSpace REST API (Humboldt-Universität zu Berlin)
  description: >-
    Public, read-oriented subset of the DSpace REST API powering the edoc-Server
    Open Access institutional repository of Humboldt-Universität zu Berlin. The
    repository runs DSpace 8 and exposes communities, collections, items, and a
    discovery search as HAL/JSON resources. This description was authored from
    the live API responses observed at the base URL; only publicly reachable,
    unauthenticated read endpoints are documented here. Write, submission,
    workflow, and authenticated endpoints exist in DSpace but are intentionally
    omitted because they require authentication and are not publicly self-service.
  version: '8.4'
  contact:
    name: edoc-Server, University Library, Humboldt-Universität zu Berlin
    url: https://edoc-info.hu-berlin.de/en
  license:
    name: DSpace BSD License
    url: https://github.com/DSpace/DSpace/blob/main/LICENSE
servers:
  - url: https://edoc.hu-berlin.de/server/api
    description: edoc-Server production REST API
tags:
  - name: Core
    description: Core repository resources (communities, collections, items)
  - name: Discovery
    description: Search and discovery over indexed repository objects
  - name: Root
    description: API root and capability discovery
paths:
  /:
    get:
      tags: [Root]
      summary: API root / capability discovery
      description: >-
        Returns the HAL root document advertising the DSpace name and version
        and the set of available endpoint links.
      operationId: getApiRoot
      responses:
        '200':
          description: HAL root document
          content:
            application/hal+json:
              schema:
                type: object
                properties:
                  dspaceVersion:
                    type: string
                    example: DSpace 8.4-SNAPSHOT
                  dspaceName:
                    type: string
                    example: edoc-Server
                  dspaceUI:
                    type: string
                    format: uri
                  dspaceServer:
                    type: string
                    format: uri
                  _links:
                    type: object
                    additionalProperties:
                      $ref: '#/components/schemas/Link'
  /core/communities:
    get:
      tags: [Core]
      summary: List communities
      description: Returns a paginated HAL collection of top-level and child communities.
      operationId: listCommunities
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/size'
      responses:
        '200':
          description: Paginated list of communities
          content:
            application/hal+json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PagedResponse'
                  - type: object
                    properties:
                      _embedded:
                        type: object
                        properties:
                          communities:
                            type: array
                            items:
                              $ref: '#/components/schemas/Community'
  /core/communities/{uuid}:
    get:
      tags: [Core]
      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: Not found
  /core/communities/{uuid}/collections:
    get:
      tags: [Core]
      summary: List collections within a community
      operationId: listCommunityCollections
      parameters:
        - $ref: '#/components/parameters/uuid'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/size'
      responses:
        '200':
          description: Paginated list of collections
          content:
            application/hal+json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PagedResponse'
                  - type: object
                    properties:
                      _embedded:
                        type: object
                        properties:
                          collections:
                            type: array
                            items:
                              $ref: '#/components/schemas/Collection'
  /core/collections:
    get:
      tags: [Core]
      summary: List collections
      operationId: listCollections
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/size'
      responses:
        '200':
          description: Paginated list of collections
          content:
            application/hal+json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PagedResponse'
                  - type: object
                    properties:
                      _embedded:
                        type: object
                        properties:
                          collections:
                            type: array
                            items:
                              $ref: '#/components/schemas/Collection'
  /core/collections/{uuid}:
    get:
      tags: [Core]
      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/Collection'
        '404':
          description: Not found
  /core/items/{uuid}:
    get:
      tags: [Core]
      summary: Get an item by UUID
      description: >-
        Returns a single archived item. Item listing endpoints in DSpace are
        access-controlled; individual archived (publicly discoverable) items are
        retrievable by UUID.
      operationId: getItem
      parameters:
        - $ref: '#/components/parameters/uuid'
      responses:
        '200':
          description: A single item
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Item'
        '401':
          description: Unauthorized (item not publicly accessible)
        '404':
          description: Not found
  /discover/search/objects:
    get:
      tags: [Discovery]
      summary: Discovery search over indexed objects
      description: >-
        Full-text and faceted search across indexed repository objects (items,
        collections, communities). Returns an embedded searchResult with objects
        and facets.
      operationId: searchObjects
      parameters:
        - name: query
          in: query
          description: Search query string
          schema:
            type: string
        - name: dsoType
          in: query
          description: Restrict results to a DSpace object type
          schema:
            type: string
            enum: [item, collection, community]
        - name: scope
          in: query
          description: UUID of a community or collection to scope the search to
          schema:
            type: string
            format: uuid
        - name: sort
          in: query
          description: Sort expression, e.g. "dc.title,ASC"
          schema:
            type: string
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/size'
      responses:
        '200':
          description: Search result with embedded objects and facets
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SearchResultResponse'
components:
  parameters:
    uuid:
      name: uuid
      in: path
      required: true
      description: UUID of the resource
      schema:
        type: string
        format: uuid
    page:
      name: page
      in: query
      description: Zero-based page index
      schema:
        type: integer
        minimum: 0
        default: 0
    size:
      name: size
      in: query
      description: Page size
      schema:
        type: integer
        minimum: 1
        default: 20
  schemas:
    Link:
      type: object
      properties:
        href:
          type: string
          format: uri
    MetadataValue:
      type: object
      description: A single DSpace metadata value entry.
      properties:
        value:
          type: string
        language:
          type: string
          nullable: true
        authority:
          type: string
          nullable: true
        confidence:
          type: integer
        place:
          type: integer
      required: [value]
    MetadataMap:
      type: object
      description: >-
        Map of metadata field keys (e.g. "dc.title", "dc.identifier.uri",
        "dc.description") to arrays of metadata values.
      additionalProperties:
        type: array
        items:
          $ref: '#/components/schemas/MetadataValue'
    PageInfo:
      type: object
      properties:
        size:
          type: integer
        totalElements:
          type: integer
        totalPages:
          type: integer
        number:
          type: integer
    PagedResponse:
      type: object
      properties:
        _embedded:
          type: object
        page:
          $ref: '#/components/schemas/PageInfo'
        _links:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Link'
    Community:
      type: object
      description: A DSpace community (a grouping of collections and sub-communities).
      properties:
        id:
          type: string
          format: uuid
        uuid:
          type: string
          format: uuid
        name:
          type: string
        handle:
          type: string
          example: 18452/21664
        metadata:
          $ref: '#/components/schemas/MetadataMap'
        archivedItemsCount:
          type: integer
        type:
          type: string
          enum: [community]
        _links:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Link'
    Collection:
      type: object
      description: A DSpace collection (a container of items).
      properties:
        id:
          type: string
          format: uuid
        uuid:
          type: string
          format: uuid
        name:
          type: string
        handle:
          type: string
          example: 18452/20731
        metadata:
          $ref: '#/components/schemas/MetadataMap'
        archivedItemsCount:
          type: integer
        type:
          type: string
          enum: [collection]
        _links:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Link'
    Item:
      type: object
      description: A DSpace item (a repository record such as a thesis, article, or dataset).
      properties:
        id:
          type: string
          format: uuid
        uuid:
          type: string
          format: uuid
        name:
          type: string
        handle:
          type: string
        metadata:
          $ref: '#/components/schemas/MetadataMap'
        inArchive:
          type: boolean
        discoverable:
          type: boolean
        withdrawn:
          type: boolean
        lastModified:
          type: string
          format: date-time
        entityType:
          type: string
          nullable: true
        type:
          type: string
          enum: [item]
        _links:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Link'
    SearchResultObject:
      type: object
      properties:
        hitHighlights:
          type: object
        type:
          type: string
        _links:
          type: object
          properties:
            indexableObject:
              $ref: '#/components/schemas/Link'
        _embedded:
          type: object
          properties:
            indexableObject:
              type: object
              description: The embedded item, collection, or community.
    FacetValue:
      type: object
      properties:
        label:
          type: string
        count:
          type: integer
        authorityKey:
          type: string
          nullable: true
        type:
          type: string
        _links:
          type: object
          properties:
            search:
              $ref: '#/components/schemas/Link'
    Facet:
      type: object
      properties:
        name:
          type: string
        facetType:
          type: string
        facetLimit:
          type: integer
        _embedded:
          type: object
          properties:
            values:
              type: array
              items:
                $ref: '#/components/schemas/FacetValue'
    SearchResultResponse:
      type: object
      properties:
        _embedded:
          type: object
          properties:
            searchResult:
              type: object
              properties:
                _embedded:
                  type: object
                  properties:
                    objects:
                      type: array
                      items:
                        $ref: '#/components/schemas/SearchResultObject'
                page:
                  $ref: '#/components/schemas/PageInfo'
                _links:
                  type: object
                  additionalProperties:
                    $ref: '#/components/schemas/Link'
            facets:
              type: array
              items:
                $ref: '#/components/schemas/Facet'