Michigan State University Search API

The Search API from Michigan State University — 3 operation(s) for search.

Documentation

Specifications

Other Resources

OpenAPI Specification

michigan-state-university-search-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Library Catalog Record Search API
  version: 11.0.4
  description: The REST API provides access to search functions and records contained in the search index.
servers:
- url: https://catalog.lib.msu.edu/api/v1
tags:
- name: Search
paths:
  /search:
    get:
      summary: Search primary index
      description: 'Search primary index with given terms and filters. POST method may also be used if sending a long request.


        The URL syntax here is the same as the one used in VuFind® user interface. It is possible to make a search in VuFind® and copy the query parameters here to make the same search via the API. While this formal specification only describes basic searching, advanced searches like join=AND&lookfor0[]=apples&type0[]=Title&lookfor0[]=oranges&type0[]=Subject&bool0[]=AND are also supported by the endpoint.'
      parameters:
      - name: lookfor
        in: query
        description: Search terms. May be a single term, multiple words or a complex query containing boolean operators (AND, OR, NOT), quotes etc. Terms may also be prefixed with a field name (e.g. author:smith) to target only that field (see also type parameter).
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: 'Search type. The following search types are available:

          - AllFields

          - Title

          - JournalTitle

          - NewspaperTitle

          - Author

          - Subject

          - CallNumber

          - ISN

          - Publisher

          - oclc_num

          - Series

          - Genre'
        required: false
        schema:
          type: string
          default: AllFields
      - name: field[]
        in: query
        description: 'Fields to return. If not specified, a set of default fields is returned.


          The default fields are:

          - authors

          - formats

          - id

          - uuid

          - languages

          - series

          - subjects

          - title

          - urls'
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter[]
        in: query
        description: 'Filter queries. Repeat for every filter.

          The format for a filter is field:value.


          ''AND'' filtering is used by default. ''OR'' or ''NOT'' filtering can be used by prepending the field with ''~'' (OR) or ''-'' (NOT).'
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: facet[]
        in: query
        description: 'Fields to facet on. Repeat for every field. '
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: facetFilter[]
        in: query
        description: 'Faceting result filters. Contains regular expressions that the facet must match for it to be returned. The result will include the matched facet items and for hierarchical facets any ancestor values.

          Format for a facet filter is field:regexp, e.g. `author_facet:Sm.*th`.


          **N.B.**The filtered facet needs to be present in the list of returned facets (facet[] parameter).'
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: sort
        in: query
        description: Sort method.
        schema:
          type: string
          enum:
          - relevance
          - year
          - year asc
          - first_indexed
          - callnumber-sort
          - author
          - author desc
          - title
          - title desc
          default: relevance
      - name: page
        in: query
        description: Record page (first page is 1).
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: limit
        in: query
        description: Records to return per page. Set to 0 to return no records.
        schema:
          type: integer
          minimum: 0
          maximum: 100
          default: 20
      - name: resumptionToken
        in: query
        description: 'A large result set can only be downloaded in batches. You can initiate a batch download by setting resumptionToken to a single asterisk `*`. Each batch will then return a resumptionToken value to use for the next batch until no more results are available (note that the last result set can be empty). Other parameters are ignored when resumptionToken is set to any other value than `*`. The following parameters are not available with resumptionToken: limit, page, facet[].'
        schema:
          type: string
      - name: prettyPrint
        in: query
        description: Whether to pretty-print the response. Useful for observing the results in a browser.
        schema:
          type: boolean
          default: false
      - name: lng
        in: query
        description: Language for returned translated strings.
        schema:
          type: string
          enum:
          - en
          default: en
      - name: callback
        in: query
        description: A callback that can be used for JSONP.
        schema:
          type: string
      tags:
      - Search
      responses:
        '200':
          description: Response containing result count, records and/or facets.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /index2/search:
    get:
      summary: Search secondary index
      description: 'Search secondary index with given terms and filters. POST method may also be used if sending a long request.


        The URL syntax here is the same as the one used in VuFind® user interface. It is possible to make a search in VuFind® and copy the query parameters here to make the same search via the API. While this formal specification only describes basic searching, advanced searches like join=AND&lookfor0[]=apples&type0[]=Title&lookfor0[]=oranges&type0[]=Subject&bool0[]=AND are also supported by the endpoint.'
      parameters:
      - name: lookfor
        in: query
        description: Search terms. May be a single term, multiple words or a complex query containing boolean operators (AND, OR, NOT), quotes etc. Terms may also be prefixed with a field name (e.g. author:smith) to target only that field (see also type parameter).
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: 'Search type. The following search types are available:

          - AllFields

          - Title

          - Author

          - Subject

          - CallNumber

          - ISN'
        required: false
        schema:
          type: string
          default: AllFields
      - name: field[]
        in: query
        description: 'Fields to return. If not specified, a set of default fields is returned.


          The default fields are:

          - authors

          - formats

          - id

          - languages

          - series

          - subjects

          - title

          - urls'
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter[]
        in: query
        description: 'Filter queries. Repeat for every filter.

          The format for a filter is field:value.


          ''AND'' filtering is used by default. ''OR'' or ''NOT'' filtering can be used by prepending the field with ''~'' (OR) or ''-'' (NOT).'
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: facet[]
        in: query
        description: 'Fields to facet on. Repeat for every field. '
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: facetFilter[]
        in: query
        description: 'Faceting result filters. Contains regular expressions that the facet must match for it to be returned. The result will include the matched facet items and for hierarchical facets any ancestor values.

          Format for a facet filter is field:regexp, e.g. `author_facet:Sm.*th`.


          **N.B.**The filtered facet needs to be present in the list of returned facets (facet[] parameter).'
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: sort
        in: query
        description: Sort method.
        schema:
          type: string
          enum:
          - relevance
          - year
          - year asc
          - callnumber-sort
          - author
          - title
          default: relevance
      - name: page
        in: query
        description: Record page (first page is 1).
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: limit
        in: query
        description: Records to return per page. Set to 0 to return no records.
        schema:
          type: integer
          minimum: 0
          maximum: 100
          default: 20
      - name: resumptionToken
        in: query
        description: 'A large result set can only be downloaded in batches. You can initiate a batch download by setting resumptionToken to a single asterisk `*`. Each batch will then return a resumptionToken value to use for the next batch until no more results are available (note that the last result set can be empty). Other parameters are ignored when resumptionToken is set to any other value than `*`. The following parameters are not available with resumptionToken: limit, page, facet[].'
        schema:
          type: string
      - name: prettyPrint
        in: query
        description: Whether to pretty-print the response. Useful for observing the results in a browser.
        schema:
          type: boolean
          default: false
      - name: lng
        in: query
        description: Language for returned translated strings.
        schema:
          type: string
          enum:
          - en
          default: en
      - name: callback
        in: query
        description: A callback that can be used for JSONP.
        schema:
          type: string
      tags:
      - Search
      responses:
        '200':
          description: Response containing result count, records and/or facets.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecondarySearchResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /web/search:
    get:
      summary: Search website index
      description: 'Search website index with given terms and filters. POST method may also be used if sending a long request.


        The URL syntax here is the same as the one used in VuFind® user interface. It is possible to make a search in VuFind® and copy the query parameters here to make the same search via the API. While this formal specification only describes basic searching, advanced searches like join=AND&lookfor0[]=apples&type0[]=Title&lookfor0[]=oranges&type0[]=Subject&bool0[]=AND are also supported by the endpoint.'
      parameters:
      - name: lookfor
        in: query
        description: Search terms. May be a single term, multiple words or a complex query containing boolean operators (AND, OR, NOT), quotes etc. Terms may also be prefixed with a field name (e.g. author:smith) to target only that field (see also type parameter).
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: 'Search type. The following search types are available:

          - AllFields'
        required: false
        schema:
          type: string
          default: AllFields
      - name: field[]
        in: query
        description: 'Fields to return. If not specified, a set of default fields is returned.


          The default fields are:

          - id

          - lastModified

          - title

          - url'
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter[]
        in: query
        description: 'Filter queries. Repeat for every filter.

          The format for a filter is field:value.


          ''AND'' filtering is used by default. ''OR'' or ''NOT'' filtering can be used by prepending the field with ''~'' (OR) or ''-'' (NOT).'
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: facet[]
        in: query
        description: 'Fields to facet on. Repeat for every field. '
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: facetFilter[]
        in: query
        description: 'Faceting result filters. Contains regular expressions that the facet must match for it to be returned. The result will include the matched facet items and for hierarchical facets any ancestor values.

          Format for a facet filter is field:regexp, e.g. `author_facet:Sm.*th`.


          **N.B.**The filtered facet needs to be present in the list of returned facets (facet[] parameter).'
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: sort
        in: query
        description: Sort method.
        schema:
          type: string
          enum:
          - relevance
          - title
          default: relevance
      - name: page
        in: query
        description: Record page (first page is 1).
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: limit
        in: query
        description: Records to return per page. Set to 0 to return no records.
        schema:
          type: integer
          minimum: 0
          maximum: 100
          default: 20
      - name: resumptionToken
        in: query
        description: 'A large result set can only be downloaded in batches. You can initiate a batch download by setting resumptionToken to a single asterisk `*`. Each batch will then return a resumptionToken value to use for the next batch until no more results are available (note that the last result set can be empty). Other parameters are ignored when resumptionToken is set to any other value than `*`. The following parameters are not available with resumptionToken: limit, page, facet[].'
        schema:
          type: string
      - name: prettyPrint
        in: query
        description: Whether to pretty-print the response. Useful for observing the results in a browser.
        schema:
          type: boolean
          default: false
      - name: lng
        in: query
        description: Language for returned translated strings.
        schema:
          type: string
          enum:
          - en
          default: en
      - name: callback
        in: query
        description: A callback that can be used for JSONP.
        schema:
          type: string
      tags:
      - Search
      responses:
        '200':
          description: Response containing result count, records and/or facets.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebSearchResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Facet:
      type: object
      properties:
        value:
          description: Facet value
          type: string
        translated:
          description: Translated facet value
          type: string
        count:
          description: Count of records that can be found if the facet is added to the search as a filter
          type: integer
        href:
          description: The current search with the facet added as a filter
          type: string
        isApplied:
          description: True if if the facet is in use in the filter parameter of the query
          type: boolean
        children:
          description: For hierarchical facets, any child facets
          type: array
          items:
            $ref: '#/components/schemas/Facet'
    SecondaryRecord:
      type: object
      properties:
        accessRestrictions:
          description: Access restriction notes
          type: array
          items:
            type: string
        authors:
          $ref: '#/components/schemas/Authors'
        awards:
          description: Award notes
          type: array
          items:
            type: string
        bibliographicLevel:
          description: Bibliographic level
          type: string
          enum:
          - Monograph
          - Serial
          - MonographPart
          - SerialPart
          - Collection
          - CollectionPart
          - Unknown
        bibliographyNotes:
          description: Bibliography notes
          type: array
          items:
            type: string
        buildings:
          description: Buildings where the record is held
          type: array
          items:
            type: string
        callNumbers:
          description: Call numbers
          type: array
          items:
            type: string
        childRecordCount:
          description: Number of child records
          type: integer
        cleanDoi:
          description: First valid DOI
          type: string
        cleanIsbn:
          description: First valid ISBN favoring ISBN-10 over ISBN-13 when possible
          type: string
        cleanIssn:
          description: Base portion of the first listed ISSN
          type: string
        cleanOclcNumber:
          description: First OCLC number
          type: string
        containerEndPage:
          description: End page in the containing item
          type: string
        containerIssue:
          description: Issue number of the containing item
          type: string
        containerReference:
          description: Reference to the containing item
          type: string
        containerStartPage:
          description: Start page in the containing item
          type: string
        containerTitle:
          description: Title of the containing item
          type: string
        containerVolume:
          description: Volume of the containing item
          type: string
        corporateAuthors:
          description: Main corporate authors
          type: array
          items:
            type: string
        dedupIds:
          description: IDs of all records deduplicated with the current record
          type: array
          items:
            type: string
        edition:
          description: Edition
          type: string
        findingAids:
          description: Finding aids
          type: array
          items:
            type: string
        formats:
          description: Formats
          type: array
          items:
            type: string
        fullRecord:
          description: Full metadata record (typically XML)
          type: string
        generalNotes:
          description: General notes
          type: array
          items:
            type: string
        geoLocations:
          description: Geographic locations (e.g. points, bounding boxes)
          type: array
          items:
            type: string
        hierarchicalPlaceNames:
          description: Hierarchical place names concatenated for display
          type: array
          items:
            type: string
        hierarchyParentId:
          description: Parent record IDs for hierarchical records
          type: array
          items:
            type: string
        hierarchyParentTitle:
          description: Parent record titles for hierarchical records
          type: array
          items:
            type: string
        hierarchyTopId:
          description: Hierarchy top record IDs for hierarchical records
          type: array
          items:
            type: string
        hierarchyTopTitle:
          description: Hierarchy top record titles for hierarchical records
          type: array
          items:
            type: string
        humanReadablePublicationDates:
          description: Publication dates in human-readable format
          type: array
          items:
            type: string
        id:
          description: Record unique ID (can be used in the record endpoint)
          type: string
        institutions:
          description: Institutions the record belongs to
          type: array
          items:
            type: string
        isbns:
          description: ISBNs
          type: array
          items:
            type: string
        isCollection:
          description: Whether the record is a collection node in a hierarchy
          type: boolean
        issns:
          description: ISSNs
          type: array
          items:
            type: string
        languages:
          description: Languages
          type: array
          items:
            type: string
        lccn:
          description: LCCNs
          type: array
          items:
            type: string
        newerTitles:
          description: Successor titles
          type: array
          items:
            type: string
        oclc:
          description: OCLC numbers
          type: array
          items:
            type: string
        openUrl:
          description: OpenURL
          type: string
        physicalDescriptions:
          description: Physical dimensions etc.
          type: array
          items:
            type: string
        placesOfPublication:
          description: Places of publication
          type: array
          items:
            type: string
        playingTimes:
          description: Playing times (durations)
          type: array
          items:
            type: string
        previousTitles:
          description: Predecessor titles
          type: array
          items:
            type: string
        primaryAuthors:
          description: Primary authors
          type: array
          items:
            type: string
        productionCredits:
          description: Production credits
          type: array
          items:
            type: string
        publicationDates:
          description: Publication dates
          type: array
          items:
            type: string
        publishers:
          description: Publishers
          type: array
          items:
            type: string
        rawData:
          description: All data in the index fields
          type: string
        recordLinks:
          description: Links to other related records
          type: array
          items:
            $ref: '#/components/schemas/RecordLink'
        recordPage:
          description: Link to the record page in the UI
          type: string
        relationshipNotes:
          description: Notes describing relationships to other items
          type: array
          items:
            type: string
        secondaryAuthors:
          description: Secondary authors
          type: array
          items:
            type: string
        series:
          description: Series
          type: array
          items:
            type: string
        shortTitle:
          description: Short title (title excluding any subtitle)
          type: string
        subjects:
          description: 'Subject headings as an array from the least specific to the most specific

            '
          type: array
          items:
            type: array
            items:
              type: string
        subjectsExtended:
          description: Subject headings with type and source information
          type: array
          items:
            $ref: '#/components/schemas/Subject'
        subTitle:
          description: Subtitle
          type: string
        summary:
          description: Summary
          type: array
          items:
            type: string
        systemDetails:
          description: Technical details on the represented item
          type: array
          items:
            type: string
        targetAudienceNotes:
          description: Notes about the target audience
          type: array
          items:
            type: string
        title:
          description: Title including any subtitle
          type: string
        titleSection:
          description: Part/section portion of the title
          type: string
        titleStatement:
          description: Statement of responsibility that goes with the title
          type: string
        toc:
          description: Table of contents
          type: array
          items:
            type: string
        urls:
          description: URLs contained in the record
          type: array
          items:
            $ref: '#/components/schemas/Url'
    Record:
      type: object
      properties:
        accessRestrictions:
          description: Access restriction notes
          type: array
          items:
            type: string
        authors:
          $ref: '#/components/schemas/Authors'
        awards:
          description: Award notes
          type: array
          items:
            type: string
        bibliographicLevel:
          description: Bibliographic level
          type: string
          enum:
          - Monograph
          - Serial
          - MonographPart
          - SerialPart
          - Collection
          - CollectionPart
          - Unknown
        bibliographyNotes:
          description: Bibliography notes
          type: array
          items:
            type: string
        buildings:
          description: Buildings where the record is held
          type: array
          items:
            type: string
        callNumbers:
          description: Call numbers
          type: array
          items:
            type: string
        childRecordCount:
          description: Number of child records
          type: integer
        cleanDoi:
          description: First valid DOI
          type: string
        cleanIsbn:
          description: First valid ISBN favoring ISBN-10 over ISBN-13 when possible
          type: string
        cleanIssn:
          description: Base portion of the first listed ISSN
          type: string
        cleanOclcNumber:
          description: First OCLC number
          type: string
        containerEndPage:
          description: End page in the containing item
          type: string
        containerIssue:
          description: Issue number of the containing item
          type: string
        containerReference:
          description: Reference to the containing item
          type: string
        containerStartPage:
          description: Start page in the containing item
          type: string
        containerTitle:
          description: Title of the containing item
          type: string
        containerVolume:
          description: Volume of the containing item
          type: string
        corporateAuthors:
          description: Main corporate authors
          type: array
          items:
            type: string
        dedupIds:
          description: IDs of all records deduplicated with the current record
          type: array
          items:
            type: string
        edition:
          description: Edition
          type: string
        findingAids:
          description: Finding aids
          type: array
          items:
            type: string
        formats:
          description: Formats
          type: array
          items:
            type: string
        fullRecord:
          description: Full metadata record (typically XML)
          type: string
        generalNotes:
          description: General notes
          type: array
          items:
            type: string
        geoLocations:
          description: Geographic locations (e.g. points, bounding boxes)
          type: array
          items:
            type: string
        hierarchicalPlaceNames:
          description: Hierarchical place names concatenated for display
          type: array
          items:
            type: string
        hierarchyParentId:
          description: Parent record IDs for hierarchical records
          type: array
          items:
            type: string
        hierarchyParentTitle:
          description: Parent record titles for hierarchical records
          type: array
          items:
            type: string
        hierarchyTopId:
          description: Hierarchy top record IDs for hierarchical records
          type: array
          items:
            type: string
        hierarchyTopTitle:
          description: Hierarchy top record titles for hierarchical records
          type: array
          items:
            type: string
        humanReadablePublicationDates:
          description: Publication dates in human-readable format
          type: array
          items:
            type: string
        id:
          description: Record unique ID (can be used in the record endpoint), Folio hrid (human readable identifer) prefixed with 'folio.'
          type: string
        uuid:
          description: Folio id (universally unique identifer)
          type: string
        institutions:
          description: Institutions the record belongs to
          type: array
          items:
            type: string
        isbns:
          description: ISBNs
          type: array
          items:
            type: string
        isCollection:
          description: Whether the record is a collection node in a hierarchy
          type: boolean
        issns:
          description: ISSNs
          type: array
          items:
            type: string
        languages:
          description: Languages
          type: array
          items:
            type: string
        lccn:
          description: LCCNs
          type: array
          items:
            type: string
        newerTitles:
          description: Successor titles
          type: array
          items:
            type: string
        oclc:
          description: OCLC numbers
          type: array
          items:
            type: string
        openUrl:
          description: OpenURL
          type: string
        physicalDescriptions:
          description: Physical dimensions etc.
          type: array
          items:
            type: string
        placesOfPublication:
          description: Places of publication
          type: array
          items:
            type: string
        playingTimes:
          description: Playing times (durations)
          type: array
          items:
            type: string
        previousTitles:
          description: Predecessor titles
          type: array
          items:
            type: string
        primaryAuthors:
          description: Primary authors
          type: array
          items:
            type: string
        productionCredits:
          description: Production credits
          type: array
          items:
            type: string
        publicationDates:
          description: Publication dates
          type: array
          items:
            type: string
        publishers:
          description: Publishers
          type: array
          items:
            type: string
        rawData:
          description: All data in the index fields
          type: string
        recordLinks:
          description: Links to other related records
          type: array
          items:
            $ref: '#/components/schemas/RecordLink'
        recordPage:
          description: Link to the record page in the UI
          type: string
        relationshipNotes:
          description: Notes describing relationships to other items
          type: array
          items:
            type: string
        secondaryAuthors:
          description: Secondary authors
          type: array
          items:
            type: string
        series:
          description: Series
          type: array
          items:
            type: string
        shortTitle:
          description: Short title (ti

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/michigan-state-university/refs/heads/main/openapi/michigan-state-university-search-api-openapi.yml