University of California, Davis Expert API

Expert Information

Business capability
Research & Scholarship Management BC-4780

Operations 13

GET /api/search/ Get api search #
GET /api/expert/browse Get api expert browse #
GET /api/expert/{expertId} Get api expert by expert id #
POST /api/expert/{expertId} Create api expert by expert id #
GET /api/work/search Get api work search #
GET /api/work/browse Get api work browse #
GET /api/work/{id} Get api work by id #
GET /api/grant/browse Get api grant browse #
GET /api/grant/{id} Get api grant by id #
GET /api/sitefarm/experts/{ids} Get api sitefarm experts by ids #
GET /api/miv/user Get api miv user #
GET /api/miv/grants Get api miv grants #
GET /api/miv/raw_grants Get api miv raw grants #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/uc-davis-expert-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

uc-davis-expert-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Aggie Experts Expert API
  version: '5.0'
  description: Allows for the retrieval of expert information.
  termsOfService: https://experts.ucdavis.edu/termsofuse
  contact:
    email: experts@ucdavis.edu
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  x-operator: institution
  x-operator-note: Operated by the UC Davis Library on experts.ucdavis.edu; UC Davis authored the contract.
  x-provenance:
    generated: '2026-08-19'
    method: searched
    source: https://experts.ucdavis.edu/api/
servers:
- url: https://experts.ucdavis.edu/api
  description: Aggie Experts production API (institution-operated, UC Davis Library)
tags:
- name: expert
  description: Expert Information
paths:
  /api/search/:
    get:
      description: Returns matching search results, including the number of matching works and grants
      parameters:
      - $ref: '#/components/parameters/q'
      - $ref: '#/components/parameters/p'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/size'
      - $ref: '#/components/parameters/atType'
      - $ref: '#/components/parameters/type'
      - $ref: '#/components/parameters/status'
      - $ref: '#/components/parameters/availability'
      - $ref: '#/components/parameters/expert'
      - $ref: '#/components/parameters/dateFrom'
      - $ref: '#/components/parameters/dateTo'
      responses:
        '200':
          $ref: '#/components/responses/Search'
        '400':
          $ref: '#/components/responses/Invalid_request'
      tags:
      - expert
      summary: Get api search
      x-summary-source: derived
      operationId: getApiSearch
      x-operation-id-source: derived
  /api/expert/browse:
    get:
      description: Returns for undefined for A - Z, or if sending query param p={letter}, will return results for undefined with last names of that letter
      parameters:
      - $ref: '#/components/parameters/p'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/size'
      responses:
        '200':
          $ref: '#/components/responses/Browse'
        '400':
          $ref: '#/components/responses/Invalid_request'
      tags:
      - expert
      summary: Get api expert browse
      x-summary-source: derived
      operationId: getApiExpertBrowse
      x-operation-id-source: derived
  /api/expert/{expertId}:
    get:
      description: Get an expert by id
      parameters:
      - $ref: '#/components/parameters/expertId'
      - $ref: '#/components/parameters/include'
      - $ref: '#/components/parameters/all'
      - $ref: '#/components/parameters/previewEsIndex'
      responses:
        '200':
          $ref: '#/components/responses/Expert'
        '400':
          $ref: '#/components/responses/Missing_id'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Expert_not_found'
      tags:
      - expert
      summary: Get api expert by expert id
      x-summary-source: derived
      operationId: getApiExpertByExpertId
      x-operation-id-source: derived
    post:
      description: Get an expert by id with subselect options
      parameters:
      - $ref: '#/components/parameters/expertId'
      requestBody:
        $ref: '#/components/requestBodies/Expert_post'
      responses:
        '200':
          $ref: '#/components/responses/Expert'
        '404':
          $ref: '#/components/responses/Expert_not_found'
      tags:
      - expert
      summary: Create api expert by expert id
      x-summary-source: derived
      operationId: postApiExpertByExpertId
      x-operation-id-source: derived
  /api/work/search:
    get:
      description: Returns matching search results for works.
      parameters:
      - $ref: '#/components/parameters/q'
      - $ref: '#/components/parameters/p'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/size'
      - $ref: '#/components/parameters/inner_hit_size'
      responses:
        '200':
          $ref: '#/components/responses/Search'
        '400':
          $ref: '#/components/responses/Invalid_request'
      tags:
      - expert
      summary: Get api work search
      x-summary-source: derived
      operationId: getApiWorkSearch
      x-operation-id-source: derived
  /api/work/browse:
    get:
      description: Returns works A - Z, or if sending query param p={letter}, will return results with that letter
      parameters:
      - $ref: '#/components/parameters/p'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/size'
      responses:
        '200':
          $ref: '#/components/responses/Browse'
        '400':
          $ref: '#/components/responses/Invalid_request'
      tags:
      - expert
      summary: Get api work browse
      x-summary-source: derived
      operationId: getApiWorkBrowse
      x-operation-id-source: derived
  /api/work/{id}:
    get:
      description: Get a work by id
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          $ref: '#/components/responses/Work'
        '400':
          $ref: '#/components/responses/Missing_id'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not_found'
      tags:
      - expert
      summary: Get api work by id
      x-summary-source: derived
      operationId: getApiWorkById
      x-operation-id-source: derived
  /api/grant/browse:
    get:
      description: Returns grants A - Z, or if sending query param p={letter}, will return results with that letter
      parameters:
      - $ref: '#/components/parameters/p'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/size'
      responses:
        '200':
          $ref: '#/components/responses/Browse'
        '400':
          $ref: '#/components/responses/Invalid_request'
      tags:
      - expert
      summary: Get api grant browse
      x-summary-source: derived
      operationId: getApiGrantBrowse
      x-operation-id-source: derived
  /api/grant/{id}:
    get:
      description: Get a grant by id
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          $ref: '#/components/responses/Grant'
        '400':
          $ref: '#/components/responses/Missing_id'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not_found'
      tags:
      - expert
      summary: Get api grant by id
      x-summary-source: derived
      operationId: getApiGrantById
      x-operation-id-source: derived
  /api/sitefarm/experts/{ids}:
    get:
      description: Returns a JSON array of expert profiles
      parameters:
      - $ref: '#/components/parameters/sitefarmId'
      responses:
        '200':
          $ref: '#/components/responses/Successful_operation'
        '400':
          $ref: '#/components/responses/Invalid_ID_supplied'
        '404':
          $ref: '#/components/responses/Expert_not_found'
      tags:
      - expert
      summary: Get api sitefarm experts by ids
      x-summary-source: derived
      operationId: getApiSitefarmExpertsByIds
      x-operation-id-source: derived
  /api/miv/user:
    get:
      description: Returns the expertId for the currently authenticated MIV user
      parameters: []
      responses:
        '200':
          $ref: '#/components/responses/Successful_operation'
        '404':
          $ref: '#/components/responses/Expert_not_found'
      tags:
      - expert
      summary: Get api miv user
      x-summary-source: derived
      operationId: getApiMivUser
      x-operation-id-source: derived
  /api/miv/grants:
    get:
      description: Returns a JSON array of an expert's grants. One of 'email', 'ucdPersonUUID', or 'iamId' must be provided to identify the expert. The 'until' date defaults to today if not provided.
      parameters:
      - $ref: '#/components/parameters/since'
      - $ref: '#/components/parameters/until'
      - $ref: '#/components/parameters/email'
      - $ref: '#/components/parameters/ucdPersonUUID'
      - $ref: '#/components/parameters/iamId'
      responses:
        '200':
          $ref: '#/components/responses/Successful_operation'
        '400':
          $ref: '#/components/responses/Invalid_ID_supplied'
        '404':
          $ref: '#/components/responses/Expert_not_found'
      tags:
      - expert
      summary: Get api miv grants
      x-summary-source: derived
      operationId: getApiMivGrants
      x-operation-id-source: derived
  /api/miv/raw_grants:
    get:
      description: Returns the raw Elasticsearch grant documents for an expert. One of 'email', 'ucdPersonUUID', or 'iamId' must be provided. The 'until' date defaults to today if not provided.
      parameters:
      - $ref: '#/components/parameters/since'
      - $ref: '#/components/parameters/until'
      - $ref: '#/components/parameters/email'
      - $ref: '#/components/parameters/ucdPersonUUID'
      - $ref: '#/components/parameters/iamId'
      responses:
        '200':
          $ref: '#/components/responses/Successful_operation'
        '400':
          $ref: '#/components/responses/Invalid_ID_supplied'
        '404':
          $ref: '#/components/responses/Expert_not_found'
      tags:
      - expert
      summary: Get api miv raw grants
      x-summary-source: derived
      operationId: getApiMivRawGrants
      x-operation-id-source: derived
components:
  parameters:
    availability:
      in: query
      name: availability
      description: Comma-separated search filter on expert availability types
      required: false
      schema:
        type: array
        items:
          type: string
          enum:
          - community partnerships
          - collaborative projects
          - industry Projects
          - media enquiries
      style: simple
      explode: false
    expert:
      in: query
      name: expert
      description: Comma-separated search filter on experts
      required: false
      schema:
        type: array
        items:
          type: string
      style: simple
      explode: false
    dateTo:
      in: query
      name: dateTo
      description: Filter results up to this date (inclusive). A 4-digit year (YYYY) will automatically expand to the last day of that year (YYYY-12-31).
      required: false
      schema:
        type: string
        format: date
        pattern: ^[0-9]{4}(-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01]))?$
        example: '2023-12-31'
    iamId:
      in: query
      name: iamId
      description: Filter grants by IAM ID
      required: false
      schema:
        type: string
    atType:
      in: query
      name: '@type'
      description: Comma-separated list of item @types to return.
      required: false
      schema:
        type: array
        default:
        - expert
        - grant
        - work
        items:
          type: string
          enum:
          - expert
          - grant
          - work
      style: simple
      explode: false
    since:
      in: query
      name: since
      description: Filter grants starting from this date (inclusive).
      required: false
      schema:
        type: string
        format: date
        pattern: ^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$
        example: '2010-01-01'
    all:
      in: query
      name: all
      description: Return all grants and works without pagination (requires owner or admin)
      required: false
      schema:
        type: boolean
    inner_hit_size:
      in: query
      name: inner_hit_size
      description: The number of inner hits (works per expert) to return
      required: false
      schema:
        type: integer
    p:
      in: query
      name: p
      description: The letter the experts last name starts with
      required: false
      schema:
        type: string
    until:
      in: query
      name: until
      description: Filter grants up to this date (inclusive). Defaults to today if not provided.
      required: false
      schema:
        type: string
        format: date
        pattern: ^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$
        example: '2030-12-31'
    status:
      in: query
      name: status
      description: Comma-separated search filter on grant status
      required: false
      schema:
        type: array
        items:
          type: string
          enum:
          - completed
          - active
      style: simple
      explode: false
    type:
      in: query
      name: type
      description: Comma-separated list of citation-types to return. From https://github.com/Juris-M/schema/blob/master/csl-types.rnc
      required: false
      schema:
        type: array
        items:
          type: string
          enum:
          - article
          - article-journal
          - article-magazine
          - article-newspaper
          - bill
          - book
          - broadcast
          - chapter
          - dataset
          - entry
          - entry-dictionary
          - entry-encyclopedia
          - figure
          - graphic
          - interview
          - legal_case
          - legislation
          - manuscript
          - map
          - motion_picture
          - musical_score
          - pamphlet
          - paper-conference
          - patent
          - personal_communication
          - post
          - post-weblog
          - report
          - review
          - review-book
          - song
          - speech
          - thesis
          - treaty
          - webpage
      style: simple
      explode: false
    email:
      in: query
      name: email
      description: Filter grants by email
      required: false
      schema:
        type: string
    size:
      in: query
      name: size
      description: The number of results to return per page, defaults to 25
      required: false
      schema:
        type: integer
        default: 25
    ucdPersonUUID:
      in: query
      name: ucdPersonUUID
      description: Filter grants by UCD Person UUID
      required: false
      schema:
        type: string
    id:
      name: id
      in: path
      required: true
      schema:
        type: string
    previewEsIndex:
      in: query
      name: previewEsIndex
      description: Override the Elasticsearch index used for this request
      required: false
      schema:
        type: string
    q:
      in: query
      name: q
      description: Text query to search for
      required: false
      schema:
        type: string
    sitefarmId:
      name: ids
      in: path
      required: true
      schema:
        type: string
      description: A comma separated list of expert IDs. Ids are in the format of '{idType}:{Id}'. For example 'expertId:12345'
    page:
      in: query
      name: page
      description: The pagination of results to return, defaults to 1
      required: false
      schema:
        type: integer
    dateFrom:
      in: query
      name: dateFrom
      description: Filter results starting from this date (inclusive). A 4-digit year (YYYY) will automatically expand to the first day of that year (YYYY-01-01).
      required: false
      schema:
        type: string
        format: date
        pattern: ^[0-9]{4}(-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01]))?$
        example: '2017-01-01'
    expertId:
      name: expertId
      in: path
      required: true
      schema:
        type: string
        format: nano(\d{8})
        description: The unique identifier for the expert
    include:
      in: query
      name: include
      description: Pass 'hidden' to include non-visible entries (requires owner or admin)
      required: false
      schema:
        type: string
        enum:
        - hidden
  responses:
    Forbidden:
      description: Request is forbidden
    Work:
      description: work
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Work'
    Successful_operation:
      description: Successful operation
    Invalid_ID_supplied:
      description: Invalid ID supplied
    Not_found:
      description: Resource not found
    Grant:
      description: grant
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Grant'
    Missing_id:
      description: Request needs id
    Search:
      description: The list of search results
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Search'
    Invalid_request:
      description: Invalid request
    Browse:
      description: The list of experts
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Browse'
    Expert:
      description: The expert
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Expert'
    Expert_not_found:
      description: Expert not found
  requestBodies:
    Expert_post:
      content:
        application/json:
          schema:
            type: object
            properties:
              is-visible:
                type: boolean
              expert:
                type: object
                properties:
                  include:
                    type: boolean
              grants:
                type: object
                properties:
                  include:
                    type: boolean
                  page:
                    type: integer
                  size:
                    type: integer
                  exclude:
                    type: array
                    items:
                      type: string
                  includeMisformatted:
                    type: boolean
                  sort:
                    type: array
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                        sort:
                          type: string
                        type:
                          type: string
              works:
                type: object
                properties:
                  include:
                    type: boolean
                  page:
                    type: integer
                  size:
                    type: integer
                  exclude:
                    type: array
                    items:
                      type: string
                  includeMisformatted:
                    type: boolean
                  sort:
                    type: array
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                        sort:
                          type: string
                        type:
                          type: string
  schemas:
    Browse:
      type: object
      properties:
        total:
          type: integer
        hits:
          type: array
          items:
            type: object
            properties:
              contactInfo:
                type: object
                properties:
                  hasURL:
                    type: array
                    items:
                      type: object
                      properties:
                        '@type':
                          type: array
                          items:
                            type: string
                        '@id':
                          type: string
                        url:
                          type: string
                        name:
                          type: string
                        rank:
                          type: integer
                  hasEmail:
                    type: string
                  hasName:
                    type: object
                    properties:
                      given:
                        type: string
                      '@type':
                        type: string
                      pronouns:
                        type: string
                      '@id':
                        type: string
                      family:
                        type: string
                  name:
                    type: string
                  hasTitle:
                    type: object
                    properties:
                      '@type':
                        type: string
                      name:
                        type: string
                      '@id':
                        type: string
                  hasOrganizationalUnit:
                    type: object
                    properties:
                      name:
                        type: string
                      '@id':
                        type: string
              name:
                type: string
              '@id':
                type: string
    Search:
      type: object
      properties:
        total:
          type: integer
        hits:
          type: array
          items:
            type: object
            properties:
              contactInfo:
                type: object
                properties:
                  hasEmail:
                    type: string
                  hasName:
                    type: object
                    properties:
                      given:
                        type: string
                      '@type':
                        type: string
                      '@id':
                        type: string
                      family:
                        type: string
                  name:
                    type: string
                  hasTitle:
                    type: object
                    properties:
                      '@type':
                        type: string
                      name:
                        type: string
                      '@id':
                        type: string
                  hasOrganizationalUnit:
                    type: object
                    properties:
                      name:
                        type: string
                      '@id':
                        type: string
              '@type':
                type: string
              name:
                type: string
              '@id':
                type: string
              _inner_hits:
                type: array
                items:
                  type: object
                  properties:
                    volume:
                      type: string
                    '@type':
                      type: array
                      items:
                        type: string
                    author:
                      type: array
                      items:
                        type: object
                        properties:
                          given:
                            type: string
                          rank:
                            type: integer
                          '@id':
                            type: string
                          family:
                            type: string
                    container-title:
                      type: string
                    ISSN:
                      type: string
                    abstract:
                      type: string
                    page:
                      type: string
                    title:
                      type: string
                    type:
                      type: string
                    issued:
                      type: string
                    status:
                      type: string
    Expert:
      type: object
      properties:
        '@id':
          type: string
          description: The unique identifier for the expert.
        '@type':
          type: array
          items:
            type: string
          description: The type of the expert.
        rank:
          type: integer
          description: The rank of the expert.
        name:
          type: string
          description: The name of the expert.
        url:
          type: string
          format: url
          description: The URL related to the expert.
        hasEmail:
          type: string
          format: email
          description: The email address of the expert.
        hasName:
          type: object
          properties:
            '@id':
              type: string
              description: The unique identifier for the name.
            '@type':
              type: string
              description: The type of the name.
            family:
              type: string
              description: The family name of the expert.
            given:
              type: string
              description: The given name of the expert.
            pronouns:
              type: string
              description: The pronouns of the expert.
          required:
          - '@id'
          - '@type'
          - family
          - given
          - pronouns
        hasTitle:
          type: object
          properties:
            '@id':
              type: string
              description: The unique identifier for the title.
            '@type':
              type: string
              description: The type of the title.
            name:
              type: string
              description: The title of the expert.
          required:
          - '@id'
          - '@type'
          - name
        hasOrganizationalUnit:
          type: object
          properties:
            '@id':
              type: string
              description: The unique identifier for the organizational unit.
            name:
              type: string
              description: The name of the organizational unit.
          required:
          - '@id'
          - name
        roles:
          type: array
          items:
            type: string
          description: The roles of the expert.
      required:
      - '@id'
      - '@type'
      - rank
      - name
      - url
      - hasEmail
      - hasName
      - hasTitle
      - hasOrganizationalUnit
      - roles
    Grant:
      type: object
      properties:
        '@id':
          type: string
        '@type':
          items:
            type: string
    Work:
      type: object
      properties:
        '@id':
          type: string
        '@type':
          items:
            type: string