Lund University Publications (LUP) Search API

REST/JSON(P) search interface over the Lund University Publications database, returning publication hits with total, size, start, and limit paging parameters. No authentication required.

OpenAPI Specification

lund-lup-search.yaml Raw ↑
openapi: 3.0.3
info:
  title: Lund University Publications (LUP) Search API
  description: >-
    REST/JSON(P) search interface over the Lund University Publications (LUP)
    database. Returns publication hits with paging metadata (total, size, start,
    limit). Individual records can also be exported in bibliographic formats.
    No authentication is required. The public API only returns records with
    status 'public'. This OpenAPI description was reconstructed faithfully from
    the published LUP API documentation (https://lup.lub.lu.se/search/doc/api),
    the published publication JSON Schema
    (https://lup.lub.lu.se/search/schema/publication.json), and observed live
    responses; LUP does not publish a native OpenAPI/Swagger document.
  version: '1.0'
  contact:
    name: Lund University Libraries
    url: https://lup.lub.lu.se/search/doc/api
  license:
    name: See LUP terms of use
    url: https://lup.lub.lu.se/search/doc/api
servers:
  - url: https://lup.lub.lu.se/search
    description: Lund University Publications search service
paths:
  /publication:
    get:
      operationId: searchPublications
      summary: Search publications
      description: >-
        Full-text and field search over LUP publications. Supports CQL-style
        queries via the q parameter, paging, sorting, and JSON or JSONP output.
      parameters:
        - name: q
          in: query
          description: Search query (free text or CQL expression).
          required: false
          schema:
            type: string
          example: dna
        - name: format
          in: query
          description: Response format.
          required: false
          schema:
            type: string
            enum: [json, jsonp]
            default: json
        - name: callback
          in: query
          description: JSONP callback function name (used when format=jsonp).
          required: false
          schema:
            type: string
        - name: sort
          in: query
          description: >-
            Comma-separated sort keys with .asc or .desc direction, e.g.
            year.desc,title.asc.
          required: false
          schema:
            type: string
          example: year.desc,title.asc
        - name: start
          in: query
          description: Zero-based pagination offset of the first returned hit.
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: limit
          in: query
          description: Maximum number of hits to return per request.
          required: false
          schema:
            type: integer
            minimum: 0
            default: 10
      responses:
        '200':
          description: A page of publication search results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResult'
  /publication/{id}:
    get:
      operationId: getPublication
      summary: Retrieve or export a single publication
      description: >-
        Retrieve a single publication by its LUP id. Use the format query
        parameter (or a format file extension on the path) to export the record
        in a bibliographic format.
      parameters:
        - name: id
          in: path
          required: true
          description: Unique LUP publication id.
          schema:
            type: string
        - name: format
          in: query
          required: false
          description: Export/serialization format for the record.
          schema:
            type: string
            enum: [json, jsonp, xls, xls2, csv, csv2, bibtex, ris, enw]
            default: json
      responses:
        '200':
          description: The requested publication record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Publication'
            text/plain:
              schema:
                type: string
        '404':
          description: No publication found for the given id.
components:
  schemas:
    SearchResult:
      type: object
      description: A page of publication search results.
      properties:
        total:
          type: integer
          description: Total number of publications matching the query.
        size:
          type: integer
          description: Number of hits actually returned in this page.
        start:
          type: integer
          description: Zero-based offset of the first returned hit.
        limit:
          type: integer
          description: Maximum number of hits requested per page.
        hits:
          type: array
          description: List of publication hits for this page.
          items:
            $ref: '#/components/schemas/PublicationHit'
    PublicationHit:
      type: object
      description: >-
        A publication as returned by the search endpoint. Fields reflect the
        live JSON response shape, which differs from the export/record schema.
      properties:
        _id:
          type: string
        uuid:
          type: string
        mainTitle:
          type: string
        subtitle:
          type: string
        sortTitle:
          type: string
        abstract:
          type: array
          items:
            type: object
            properties:
              text:
                type: string
              lang:
                type: string
        type:
          type: string
        documentType:
          type: string
        documentTypeFull:
          type: string
        documentSubtype:
          type: string
        lupType:
          type: string
        lupTypeFull:
          type: string
        lupSubtype:
          type: string
        subject:
          type: array
          items:
            type: string
        keyword:
          type: array
          items:
            type: string
        publication:
          type: string
        publisher:
          type: string
        publishingYear:
          type: string
        publishingDate:
          type: string
        publicationStatus:
          type: string
        submissionStatus:
          type: string
        peerReviewed:
          type: boolean
        openAccess:
          type: integer
        isNonLuPublication:
          type: boolean
        language:
          type: array
          items:
            type: string
        issn:
          type: array
          items:
            type: string
        volume:
          type: string
        issue:
          type: string
        articleNumber:
          type: string
        pagesStart:
          type: string
        pagesEnd:
          type: string
        portalUrl:
          type: string
          format: uri
        doiInfo:
          type: object
        externalIdentifier:
          type: array
          items:
            type: object
        totalNumberOfAuthors:
          type: integer
        author:
          type: array
          items:
            $ref: '#/components/schemas/HitAuthor'
        first_author:
          $ref: '#/components/schemas/HitAuthor'
        last_author:
          $ref: '#/components/schemas/HitAuthor'
        contributor_id:
          type: array
          items:
            type: string
        department:
          type: array
          items:
            type: object
        researchGroup:
          type: array
          items:
            type: object
        record_fulltext_access:
          type: string
        dateCreated:
          type: string
        dateLastChanged:
          type: string
        dateFirstPublic:
          type: string
        dateApproved:
          type: string
        datePureModified:
          type: string
        oai_datestamp:
          type: string
        digest:
          type: string
        additionalInfo:
          type: object
    HitAuthor:
      type: object
      description: An author as returned in a search hit.
      properties:
        fullName:
          type: string
        givenName:
          type: string
        surname:
          type: string
        uuid:
          type: string
        luLdapId:
          type: string
        orcid:
          type: string
        role:
          type: string
        affiliation:
          type: array
          items:
            type: object
            properties:
              name:
                type: array
                items:
                  type: object
                  properties:
                    text:
                      type: string
                    lang:
                      type: string
              organizationNumber:
                type: string
              isExternal:
                type: integer
    Publication:
      type: object
      description: >-
        A LU publication as defined by the LUP publication JSON Schema
        (https://lup.lub.lu.se/search/schema/publication.json). Used for the
        single-record/export representation.
      required: [_id, type, classification, status, external, title]
      properties:
        _id:
          type: string
          description: unique publication id
        type:
          type: string
          enum: [book, bookChapter, bookEditor, conference, dissertation, journalArticle, licentiateThesis, misc]
        classification:
          type: string
          enum: [A1, A2, A3, A4, B1, B2, B3, C1, C3, D1, D2, P1, V, U]
          description: UGent classification code of publication
        status:
          type: string
          enum: [unsubmitted, submitted, returned, public, pdeleted]
          description: record status (public API only returns 'public')
        publication_status:
          type: string
          enum: [unpublished, submitted, inpress, published]
        external:
          type: integer
          enum: [0, 1]
        title:
          type: string
        alternative_title:
          type: array
          items:
            type: string
        abstract:
          type: array
          items:
            type: string
        keyword:
          type: array
          items:
            type: string
        year:
          type: string
          pattern: '^\d{4}$'
        language:
          type: array
          items:
            type: string
            minLength: 3
            maxLength: 3
        subject:
          type: array
          items:
            type: string
            enum:
              - Agriculture and Food Sciences
              - Arts and Architecture
              - Biology and Life Sciences
              - Business and Economics
              - Chemistry
              - Cultural Sciences
              - Earth and Environmental Sciences
              - General Works
              - History and Archaeology
              - Languages and Literatures
              - Law and Political Science
              - Mathematics and Statistics
              - Medicine and Health Sciences
              - Performing Arts
              - Philosophy and Religion
              - Physics and Astronomy
              - Science General
              - Social Sciences
              - Technology and Engineering
              - Veterinary Sciences
        author:
          type: array
          items:
            $ref: '#/components/schemas/Person'
        editor:
          type: array
          items:
            $ref: '#/components/schemas/Person'
        promoter:
          type: array
          items:
            $ref: '#/components/schemas/Person'
        affiliation:
          type: array
          items:
            $ref: '#/components/schemas/Affiliation'
        parent:
          type: object
          properties:
            title:
              type: string
            short_title:
              type: string
        publisher:
          type: object
          properties:
            location:
              type: string
            name:
              type: string
        volume:
          type: string
        issue:
          type: string
        article_number:
          type: string
        edition:
          type: string
        isbn:
          type: array
          items:
            type: string
        issn:
          type: array
          items:
            type: string
        doi:
          type: array
          items:
            type: string
        wos_id:
          type: string
        file:
          type: array
          items:
            $ref: '#/components/schemas/File'
        jcr:
          $ref: '#/components/schemas/Jcr'
        date_created:
          type: string
        date_updated:
          type: string
        date_submitted:
          type: string
        date_approved:
          type: string
    Person:
      type: object
      properties:
        _id:
          type: string
        name:
          type: string
          description: full name, first name first
        name_last_first:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        ugent_id:
          type: array
          items:
            type: string
            pattern: '^\d{12}$'
        affiliation:
          type: array
          items:
            $ref: '#/components/schemas/Affiliation'
    Affiliation:
      type: object
      properties:
        ugent_id:
          type: string
          description: LU organization id
        path:
          type: object
          properties:
            ugent_id:
              type: string
    File:
      type: object
      required: [_id, content_type, name, access]
      properties:
        _id:
          type: string
        content_type:
          type: string
        name:
          type: string
        description:
          type: string
        access:
          type: string
          enum: [openAccess, lu, admin]
        size:
          type: integer
          minimum: 1
    Jcr:
      type: object
      description: Journal Citation Reports info for the publication year.
      properties:
        category_quartile:
          type: integer
          minimum: 1
          maximum: 4
        category_decile:
          type: integer
          minimum: 1
          maximum: 10
        category_vigintile:
          type: integer
          minimum: 1
          maximum: 20
        total_cites:
          type: integer
          minimum: 0
        immediacy_index:
          type: number
          minimum: 0
        impact_factor:
          type: number
          minimum: 0
        impact_factor_5year:
          type: number
          minimum: 0
        eigenfactor:
          type: number
          minimum: 0
        prev_impact_factor:
          type: number
          minimum: 0
        prev_category_quartile:
          type: integer
          minimum: 1
          maximum: 4