Humboldt-Universität zu Berlin Discovery API

Search and discovery over indexed repository objects

OpenAPI Specification

humboldt-universitat-zu-berlin-discovery-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: edoc-Server DSpace REST API (Humboldt-Universität zu Berlin) Core Discovery API
  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: Discovery
  description: Search and discovery over indexed repository objects
paths:
  /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:
  schemas:
    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'
    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'
    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
    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'
    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.
  parameters:
    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