Pure CRIS REST API

The University of Manchester runs Elsevier Pure, which provides a documented REST (CRUD) API for extracting from and writing data into the research information system. A Material-for-MkDocs documentation site is served from the institution's Pure host, covering API keys, authorization, users/roles and file management, and references an OpenAPI 3 contract. Access requires a Pure-issued API key, so it is institution-gated rather than openly self-service.

OpenAPI Specification

university-of-manchester-pure-rest.yaml Raw ↑
openapi: 3.0.1
info:
  title: Pure API
  description: "The Pure API provides a secure and complete web services API for using\
    \ and managing research information data in Pure. The API enables a broad range\
    \ of use-cases for interacting with research information, from anonymous Open\
    \ Data scenarios to enabling the next generation Pure admin."
  termsOfService: ""
  contact:
    name: ""
    url: ""
    email: [email protected]
  license:
    name: ""
    url: ""
  version: 5.35.2-2
servers:
- url: /ws/api
security:
- api-key: []
paths:
  /activities:
    get:
      tags:
      - activity
      summary: Lists all activities
      description: "Lists all activities in the Pure instance. If you need to filter\
        \ the activities returned, see the POST version which supports additional\
        \ filtering."
      operationId: activity_list
      parameters:
      - name: size
        in: query
        description: Number of returned activities per request.
        schema:
          maximum: 1000
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        description: The offset for the returned list. 0 or null value is from the
          start
        schema:
          type: integer
          format: int32
          default: 0
      - name: order
        in: query
        description: "The order of the list, must be a value from /activities/orderings"
        schema:
          type: string
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ActivityListResult"
    put:
      tags:
      - activity
      summary: Create activity
      description: Create activity
      operationId: activity_create
      requestBody:
        description: The content to create
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Activity"
        required: true
      responses:
        "201":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Activity"
        "400":
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
  /activities/allowed-attendance-person-roles:
    get:
      tags:
      - activity
      summary: A list of allowed attendance activity person roles
      description: Get a list of allowed roles for persons on attendance activities
      operationId: activity_getAllowedAttendancePersonRoles
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-categories:
    get:
      tags:
      - activity
      summary: A list of allowed categories
      description: Get a list of allowed categories for activities
      operationId: activity_getAllowedCategories
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-classified-identifier-types:
    get:
      tags:
      - activity
      summary: A list of allowed classified identifier types
      description: Get a list of allowed classified identifier types that can be used
        for the 'identifiers.type' attribute of activities
      operationId: activity_getAllowedClassifiedIdentifierTypes
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-consultancy-person-roles:
    get:
      tags:
      - activity
      summary: A list of allowed  consultancy activity person roles
      description: Get a list of allowed roles for persons on consultancy activities
      operationId: activity_getAllowedConsultancyPersonRoles
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-custom-defined-field-values/{propertyName}/classifications:
    get:
      tags:
      - activity
      summary: Get allowed classifications for the custom-defined field associated
        with the activity
      description: Get allowed classifications for the custom-defined field associated
        with the activity.
      operationId: activity_getAllowedCustomDefinedFieldClassifications
      parameters:
      - name: propertyName
        in: path
        description: PropertyName for the desired custom-defined field
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
        "400":
          description: Bad request
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
        "404":
          description: Resource not found
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
  /activities/allowed-degree-of-recognitions:
    get:
      tags:
      - activity
      summary: A list of allowed degree of recognitions
      description: Get a list of allowed degree of recognitions on activities
      operationId: activity_getAllowedDegreeOfRecognitions
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-description-types:
    get:
      tags:
      - activity
      summary: A list of allowed description types
      description: Get a list of allowed types for descriptions on activities
      operationId: activity_getAllowedDescriptionTypes
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-document-licenses:
    get:
      tags:
      - activity
      summary: A list of allowed document licenses
      description: Get a list of allowed license types for documents on activities
      operationId: activity_getAllowedDocumentLicenses
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-document-types:
    get:
      tags:
      - activity
      summary: A list of allowed document types
      description: Get a list of allowed types for documents on activities
      operationId: activity_getAllowedDocumentTypes
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-editorial-work-person-roles:
    get:
      tags:
      - activity
      summary: A list of allowed editorial-work activity person roles
      description: Get a list of allowed roles for persons on editorial-work activities
      operationId: activity_getAllowedEditorialWorkPersonRoles
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-examination-person-roles:
    get:
      tags:
      - activity
      summary: A list of allowed examination activity person roles
      description: Get a list of allowed roles for persons on examination activities
      operationId: activity_getAllowedExaminationPersonRoles
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-host-visitor-countries:
    get:
      tags:
      - activity
      summary: A list of allowed host visitor countries
      description: Get a list of allowed countries host visitor activities
      operationId: activity_getAllowedHostVisitorCountries
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-host-visitor-person-roles:
    get:
      tags:
      - activity
      summary: A list of allowed host-visitor activity person roles
      description: Get a list of allowed roles for persons on host visitor activities
      operationId: activity_getAllowedHostVisitorPersonRoles
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-image-types:
    get:
      tags:
      - activity
      summary: A list of allowed image types
      description: Get a list of allowed image types that can be used for the 'images.type'
        attribute of activities
      operationId: activity_getAllowedImageTypes
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-indicators:
    get:
      tags:
      - activity
      summary: A list of allowed activity indicators
      description: Get a list of allowed indicators on activities
      operationId: activity_getAllowedIndicators
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-keyword-group-configurations:
    get:
      tags:
      - activity
      summary: A list of keyword group configurations
      description: Get a list of allowed keyword group configurations that can be
        used when submitting keyword groups.
      operationId: activity_getAllowedKeywordGroupConfigurations
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AllowedKeywordGroupConfigurationList"
  /activities/allowed-keyword-group-configurations/{id}/classifications:
    get:
      tags:
      - activity
      summary: A list of allowed classifications for the specified keyword group
      description: Get a list of allowed classifications that can be used when submitting
        a specified keyword group.
      operationId: activity_getAllowedKeywordGroupConfigurationClassifications
      parameters:
      - name: id
        in: path
        description: Pure id of the keyword group configuration
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-link-types:
    get:
      tags:
      - activity
      summary: A list of allowed link types
      description: Get a list of allowed link types on activities
      operationId: activity_getAllowedLinkTypes
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-locales:
    get:
      tags:
      - activity
      summary: A list of allowed locales in localized strings
      description: Get a list of allowed locales that can be used when submitting
        localized string entities.
      operationId: activity_getAllowedLocales
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocalesList"
  /activities/allowed-membership-person-roles:
    get:
      tags:
      - activity
      summary: A list of allowed membership activity person roles
      description: Get a list of allowed roles for persons on membership activities
      operationId: activity_getAllowedMembershipPersonRoles
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-other-activity-person-roles:
    get:
      tags:
      - activity
      summary: A list of allowed other activity person roles
      description: Get a list of allowed roles for persons on other activities
      operationId: activity_getAllowedOtherActivityPersonRoles
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-talk-person-roles:
    get:
      tags:
      - activity
      summary: A list of allowed talk activity person roles
      description: Get a list of allowed roles for persons on talk activities
      operationId: activity_getAllowedTalkPersonRoles
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-types:
    get:
      tags:
      - activity
      summary: A list of allowed activity types
      description: Get a list of allowed types that can be used for the 'type' attribute
        of activities
      operationId: activity_getAllowedTypes
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-visit-other-person-roles:
    get:
      tags:
      - activity
      summary: A list of allowed visit-other activity person roles
      description: Get a list of allowed roles for persons on visit-other activities
      operationId: activity_getAllowedVisitOtherPersonRoles
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClassificationRefList"
  /activities/allowed-workflow-steps:
    get:
      tags:
      - activity
      summary: A list of allowed workflow steps in localized strings
      description: Get a list of allowed workflow steps.
      operationId: activity_getAllowedWorkflowSteps
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WorkflowListResult"
  /activities/disciplines/allowed-discipline-schemes:
    get:
      tags:
      - activity
      summary: A list of allowed discipline schemes
      description: Get a list fo a allowed discipline schemes for activities
      operationId: activity_getAllowedDisciplineSchemes
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DisciplinesDisciplineSchemeListResult"
  /activities/disciplines/{discipline-scheme}/allowed-disciplines:
    get:
      tags:
      - activity
      summary: A list of allowed disciplines for a specific discipline scheme
      description: Get a list of a allowed disciplines for specific discipline scheme
        for activities
      operationId: activity_getAllowedDisciplines
      parameters:
      - name: discipline-scheme
        in: path
        description: Identifier for the discipline scheme for activities
        required: true
        schema:
          type: string
      - name: size
        in: query
        description: Number of returned disciplines per request
        schema:
          maximum: 1000
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        description: The offset for the returned list. 0 or null value is from the
          start
        schema:
          type: integer
          format: int32
          default: 0
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DisciplinesDisciplineListResult"
  /activities/disciplines/{discipline-scheme}/search:
    post:
      tags:
      - activity
      summary: Query operation for disciplines associated with activities
      description: Lists disciplines from the discipline scheme associated with activities
        in the Pure instance that matches the provided query.
      operationId: activity_listDisciplineAssociations
      parameters:
      - name: discipline-scheme
        in: path
        description: Identifier for the discipline scheme
        required: true
        schema:
          type: string
      requestBody:
        description: The query to perform
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DisciplinesAssociationsQuery"
        required: true
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DisciplinesAssociationListResult"
        "400":
          description: Bad request
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
  /activities/file-uploads:
    put:
      tags:
      - activity
      summary: Upload file to a specific activity
      description: Uploads file for the activity
      operationId: activity_fileUploads
      parameters:
      - name: Content-Type
        in: header
        description: Set the mime type for the file
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              type: string
              format: binary
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UploadedFile"
            application/xml:
              schema:
                $ref: "#/components/schemas/UploadedFile"
  /activities/orderings:
    get:
      tags:
      - activity
      summary: Lists available orderings
      description: Lists all orderings available to the activities endpoint. These
        values can be used by the order parameter when listing activities.
      operationId: activity_getOrderings
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OrderingsList"
  /activities/search:
    post:
      tags:
      - activity
      summary: Query operation for activities
      description: "Lists activities in the Pure instance that matches the provided\
        \ query, similar to the GET version, instead of using parameters to alter\
        \ the response, an JSON document is posted with the request. The JSON document\
        \ contains fields for all the parameters available for the GET version, but\
        \ also additional filtering options."
      operationId: activity_query
      requestBody:
        description: The query to perform
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ActivitiesQuery"
        required: true
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ActivityListResult"
        "400":
          description: Bad request
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
  /activities/{uuid}:
    get:
      tags:
      - activity
      summary: Get activity
      description: Get activity with specific UUID.
      operationId: activity_get
      parameters:
      - name: uuid
        in: path
        description: UUID of the desired activity
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Activity"
        "301":
          description: The requested content have changed UUID
        "404":
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
    put:
      tags:
      - activity
      summary: Update an activity
      description: Update an activity with specific UUID.
      operationId: activity_update
      parameters:
      - name: uuid
        in: path
        description: UUID of the activity to update
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      requestBody:
        description: The content to update
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Activity"
        required: true
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Activity"
        "400":
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
        "404":
          description: Resource not found
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
        "409":
          description: Version conflict
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ConflictProblemDetails"
    delete:
      tags:
      - activity
      summary: Delete activity
      description: Delete activity with specific UUID.
      operationId: activity_delete
      parameters:
      - name: uuid
        in: path
        description: UUID of the activity
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      responses:
        "204":
          description: Successful operation
        "404":
          description: Resource not found
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
        "409":
          description: Conflict
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ConflictProblemDetails"
  /activities/{uuid}/actions/lock:
    post:
      tags:
      - activity
      summary: Lock the content
      description: Mark the content as external (used when content contains synchronised
        data). This has no effect on interactions with the content through the API.
      operationId: activity_lock
      parameters:
      - name: uuid
        in: path
        description: UUID of the content to lock
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      responses:
        "204":
          description: Content marked as locked
        "404":
          description: Resource not found
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
        "409":
          description: Content already locked
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ConflictProblemDetails"
  /activities/{uuid}/actions/unlock:
    post:
      tags:
      - activity
      summary: Unlock the content
      description: Remove the external mark on the content (used when content contains
        synchronised data). This has no effect on interactions with the content through
        the API.
      operationId: activity_unlock
      parameters:
      - name: uuid
        in: path
        description: UUID of the content to unlock
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      responses:
        "204":
          description: Content marked as unlocked
        "404":
          description: Resource not found
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
        "409":
          description: Content already unlocked
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ConflictProblemDetails"
  /activities/{uuid}/dependents:
    get:
      tags:
      - activity
      summary: Lists all dependents to a activity
      description: "Lists all dependents to a activity with the specified UUID. If\
        \ the user does not have access to view all the dependent content, an authorization\
        \ error will be thrown. "
      operationId: activity_dependents
      parameters:
      - name: uuid
        in: path
        description: UUID of the activity
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      - name: verbose
        in: query
        description: DEPRECATED - Parameter has no effect.
        deprecated: true
        schema:
          type: boolean
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContentRefListResult"
  /activities/{uuid}/disciplines/{discipline-scheme}:
    get:
      tags:
      - activity
      summary: Get disciplines from the discipline scheme associated with the activity
      description: Get disciplines from the discipline scheme associated with the
        activity with specific UUID.
      operationId: activity_getDisciplineAssociation
      parameters:
      - name: uuid
        in: path
        description: UUID of the desired activity
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      - name: discipline-scheme
        in: path
        description: Identifier for the discipline scheme
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DisciplinesAssociation"
        "404":
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
    put:
      tags:
      - activity
      summary: Update disciplines from the discipline scheme associated with the activity
      description: Update disciplines from the discipline scheme associated with the
        activity with specific UUID.
      operationId: activity_putDisciplineAssociation
      parameters:
      - name: uuid
        in: path
        description: UUID of the activity to update
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      - name: discipline-scheme
        in: path
        description: Identifier for the discipline scheme
        required: true
        schema:
          type: string
      requestBody:
        description: The disciplines association to create
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DisciplinesAssociation"
        required: true
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DisciplinesAssociation"
        "400":
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
        "404":
          description: Resource not found
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
  /activities/{uuid}/files/{fileId}:
    get:
      tags:
      - activity
      summary: Get file from the activity
      description: Get file from the activity
      operationId: activity_getFile
      parameters:
      - name: uuid
        in: path
        description: UUID of the activity
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      - name: fileId
        in: path
        description: 'File id '
        required: true
        schema:
          pattern: .+
          type: string
      responses:
        "200":
          description: Successful operation
          content:
            '*/*':
              schema:
                type: string
                format: binary
  /activities/{uuid}/notes:
    get:
      tags:
      - activity
      summary: Lists notes
      description: Lists notes associated with an activity ordered by date (nulls
        last)
      operationId: activity_listNotes
      parameters:
      - name: uuid
        in: path
        description: UUID of the activity to get notes for
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      - name: size
        in: query
        description: Number of returned notes per request
        schema:
          maximum: 1000
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        description: The offset for the returned list. 0 or null value is from the
          start
        schema:
          type: integer
          format: int32
          default: 0
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NoteListResult"
        "404":
          description: activity not found
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
    put:
      tags:
      - activity
      summary: Create note
      description: Create note and associate it with an activity
      operationId: activity_createNote
      parameters:
      - name: uuid
        in: path
        description: UUID of the activity to add note to
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      requestBody:
        description: The note to create
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Note"
        required: true
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Note"
    

# --- truncated at 32 KB (1255 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/university-of-manchester/refs/heads/main/openapi/university-of-manchester-pure-rest.yaml