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