Hong Kong Baptist University user API

The user API from Hong Kong Baptist University — 7 operation(s) for user.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

hong-kong-baptist-university-user-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Pure activity user 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: pure-support@elsevier.com
  license:
    name: ''
    url: ''
  version: 5.35.0
servers:
- url: https://scholars.hkbu.edu.hk/ws/api
security:
- api-key: []
tags:
- name: user
paths:
  /users:
    get:
      tags:
      - user
      summary: Lists all users
      description: Lists all users in the Pure instance.
      operationId: user_list_1
      parameters:
      - name: size
        in: query
        description: Number of returned users 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 /users/orderings
        schema:
          type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserListResult'
    put:
      tags:
      - user
      summary: Create user
      description: Create user
      operationId: user_create_1
      requestBody:
        description: The user to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/orderings:
    get:
      tags:
      - user
      summary: Lists available orderings
      description: Lists all orderings available to the user endpoint. These values can be used by the order parameter.
      operationId: user_getOrderings_1
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderingsList'
  /users/{uuid}:
    get:
      tags:
      - user
      summary: Get user
      description: Get user with specific UUID.
      operationId: user_get_1
      parameters:
      - name: uuid
        in: path
        description: UUID of the user
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '301':
          description: The requested content has changed UUID
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - user
      summary: Update user
      description: Update user with specific UUID.
      operationId: user_update_1
      parameters:
      - name: uuid
        in: path
        description: UUID of the user to update
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      requestBody:
        description: The content to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '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:
      - user
      summary: Delete user
      description: Delete user with specific UUID.
      operationId: user_delete_1
      parameters:
      - name: uuid
        in: path
        description: UUID of the user to delete
        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'
  /users/{uuid}/actions/lock:
    post:
      tags:
      - user
      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: user_lock_1
      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'
  /users/{uuid}/actions/reset-password:
    post:
      tags:
      - user
      summary: Reset user password
      description: Resets the user's password. Reset password email will be sent to the user's email. The token expiry hour defaults to 24 hours.
      operationId: user_resetPassword_1
      parameters:
      - name: uuid
        in: path
        description: UUID of the user to reset the password for
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      - name: tokenExpiryHours
        in: query
        description: Token expiration in hours. Must be between 1 and 168 hours (1 week).
        schema:
          type: number
          default: 24
      responses:
        '202':
          description: Accepted
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{uuid}/actions/unlock:
    post:
      tags:
      - user
      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: user_unlock_1
      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'
  /users/{uuid}/roles:
    get:
      tags:
      - user
      summary: Lists all roles of a user
      description: Lists all roles of a user
      operationId: user_get_roles_for_user_1
      parameters:
      - name: uuid
        in: path
        description: UUID of the user to list the roles of
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserRoles'
    put:
      tags:
      - user
      summary: Updates roles
      description: Applies the supplied roles to a user. Roles not in the request will be removed from user
      operationId: user_update_roles_for_user_1
      parameters:
      - name: uuid
        in: path
        description: UUID of the user to update roles of
        required: true
        schema:
          pattern: .+
          type: string
          format: uuid
      requestBody:
        description: Complete picture of a users roles
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserRoles'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserRoles'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: User not modifiable or role not assignable
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: User or role not found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '409':
          description: Version conflict
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ConflictProblemDetails'
components:
  schemas:
    User:
      required:
      - email
      - username
      type: object
      properties:
        pureId:
          type: integer
          description: Pure database ID of the object, prefer using the UUID if it is present on the entity
          format: int64
          readOnly: true
        uuid:
          type: string
          description: UUID, this is the primary identity of the entity
          format: uuid
          readOnly: true
        createdBy:
          type: string
          description: Username of creator
          readOnly: true
        createdDate:
          type: string
          description: Date and time of creation
          format: date-time
          readOnly: true
        modifiedBy:
          type: string
          description: Username of the user that performed a modification
          readOnly: true
        modifiedDate:
          type: string
          description: Date and time of last modification
          format: date-time
          readOnly: true
        portalUrl:
          type: string
          description: URL of the content on the Pure Portal
          readOnly: true
        prettyUrlIdentifiers:
          type: array
          description: All pretty URLs
          readOnly: true
          items:
            type: string
            description: All pretty URLs
            readOnly: true
        previousUuids:
          type: array
          description: UUIDs of other content items which have been merged into this content item (or similar)
          readOnly: true
          items:
            type: string
            description: UUIDs of other content items which have been merged into this content item (or similar)
            readOnly: true
        version:
          type: string
          description: Used to guard against conflicting updates. For new content this is null, and for existing content the current value. The property should never be modified by a client, except in the rare case where the client wants to perform an update irrespective of if other clients have made updates in the meantime, also known as a "dirty write". A dirty write is performed by not including the property value or setting the property to null
          nullable: true
        username:
          type: string
          description: Username
        name:
          $ref: '#/components/schemas/Name'
        email:
          type: string
          description: The user's email address
        externallyAuthenticated:
          type: boolean
          description: Is the user externally authenticated.
        pureSystemUser:
          type: boolean
          description: Is the user a Pure system user. Set to false when creating normal Pure users.
          default: false
        locked:
          type: boolean
          description: Is the user locked. A locked user cannot log into Pure.
          default: false
        identifiers:
          type: array
          description: Identifiers related to the user
          nullable: true
          items:
            $ref: '#/components/schemas/Identifier'
        systemName:
          type: string
          description: The content system name
          readOnly: true
      description: A user that can be attached to a person in Pure
    PageInformation:
      type: object
      properties:
        offset:
          type: integer
          description: Offset that returned items start at
          format: int32
        size:
          type: integer
          description: The requested number of items. May be higher than the actual number of items in the result if there are fewer items in the store than requested
          format: int32
      description: Information about pages
    AssignableRoleRef:
      required:
      - assignableRoleName
      type: object
      properties:
        assignableRoleName:
          type: string
          description: Name of an assignable role
      description: A reference to an assignable role that can be either local or global
    Identifier:
      required:
      - typeDiscriminator
      type: object
      properties:
        typeDiscriminator:
          type: string
      discriminator:
        propertyName: typeDiscriminator
        mapping:
          ClassifiedId: '#/components/schemas/ClassifiedId'
          PrimaryId: '#/components/schemas/PrimaryId'
          Id: '#/components/schemas/Id'
    UserListResult:
      type: object
      properties:
        count:
          type: integer
          description: The full count, ignoring paging
          format: int32
        pageInformation:
          $ref: '#/components/schemas/PageInformation'
        items:
          type: array
          description: Users
          items:
            $ref: '#/components/schemas/User'
      description: List of users. Can contain a subset of all items along with the full count
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          description: A URI reference [RFC3986] that identifies the problem type.
        title:
          type: string
          description: A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).
        status:
          type: integer
          description: The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.
          format: int32
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of the problem.
        instance:
          type: string
          description: A URI reference that identifies the specific occurrence of the problem.  It may or may not yield further information if dereferenced.
      description: RFC7807 Error details
      discriminator:
        propertyName: type
        mapping:
          /error: '#/components/schemas/GenericProblemDetails'
          /validation-error: '#/components/schemas/ValidationProblemDetails'
          /dependency-violation-error: '#/components/schemas/DependencyViolationProblemDetails'
    Name:
      type: object
      properties:
        firstName:
          type: string
        lastName:
          type: string
      description: A name describing a person, made up of given- and family name
    LocalRoleAssignment:
      required:
      - roleDefinition
      type: object
      properties:
        roleDefinition:
          $ref: '#/components/schemas/AssignableRoleRef'
        assignments:
          type: array
          description: Where the local role is (to be) assigned
          nullable: true
          items:
            $ref: '#/components/schemas/ContentRef'
      description: The complete picture of where a local role is to be assigned
    GlobalRoleAssignment:
      required:
      - roleDefinition
      type: object
      properties:
        roleDefinition:
          $ref: '#/components/schemas/AssignableRoleRef'
      description: Assignment of a global role
    UserRoles:
      required:
      - globalRoleAssignments
      - localRoleAssignments
      - version
      type: object
      properties:
        version:
          type: string
          description: Used to guard against conflicting updates. The property should never be modified explicitly by a client
        globalRoleAssignments:
          type: array
          description: Current/requested global role assignments
          items:
            $ref: '#/components/schemas/GlobalRoleAssignment'
        localRoleAssignments:
          type: array
          description: Current/requested local role assignments
          items:
            $ref: '#/components/schemas/LocalRoleAssignment'
      description: The complete picture of a users roles
    OrderingsList:
      type: object
      properties:
        orderings:
          type: array
          description: IDs of ways content can be ordered
          items:
            type: string
            description: IDs of ways content can be ordered
      description: List of available orderings
    ContentRef:
      required:
      - systemName
      - uuid
      type: object
      properties:
        uuid:
          type: string
          description: UUID of the referred content
          format: uuid
        systemName:
          type: string
      nullable: true
      discriminator:
        propertyName: systemName
        mapping:
          AccessDefinition: '#/components/schemas/AccessDefinitionRef'
          Activity: '#/components/schemas/ActivityRef'
          Application: '#/components/schemas/ApplicationRef'
          AuthorCollaboration: '#/components/schemas/AuthorCollaborationRef'
          Award: '#/components/schemas/AwardRef'
          ClassificationScheme: '#/components/schemas/ClassificationSchemeRef'
          ConferenceSeries: '#/components/schemas/ConferenceSeriesRef'
          DataSet: '#/components/schemas/DataSetRef'
          Equipment: '#/components/schemas/EquipmentRef'
          Event: '#/components/schemas/EventRef'
          ExternalOrganization: '#/components/schemas/ExternalOrganizationRef'
          ExternalPerson: '#/components/schemas/ExternalPersonRef'
          Impact: '#/components/schemas/ImpactRef'
          Journal: '#/components/schemas/JournalRef'
          Organization: '#/components/schemas/OrganizationRef'
          Person: '#/components/schemas/PersonRef'
          Publisher: '#/components/schemas/PublisherRef'
          PressMedia: '#/components/schemas/PressMediaRef'
          Prize: '#/components/schemas/PrizeRef'
          Project: '#/components/schemas/ProjectRef'
          ResearchOutput: '#/components/schemas/ResearchOutputRef'
          StudentThesis: '#/components/schemas/StudentThesisRef'
          FundingOpportunity: '#/components/schemas/FundingOpportunityRef'
          EthicalReview: '#/components/schemas/EthicalReviewRef'
          ApplicationCluster: '#/components/schemas/ApplicationClusterRef'
          AwardCluster: '#/components/schemas/AwardClusterRef'
          User: '#/components/schemas/UserRef'
          ERA2018FieldOfResearch: '#/components/schemas/Anzsrc2008FieldOfResearchRef'
          UnitOfAssessmentREF2014: '#/components/schemas/Ref2014UnitOfAssessmentRef'
          UnitOfAssessmentREF2020: '#/components/schemas/Ref2020UnitOfAssessmentRef'
          ANZSRCTypeOfActivity: '#/components/schemas/Anzsrc2020TypeOfActivityRef'
          ANZSRCFieldOfResearch: '#/components/schemas/Anzsrc2020FieldOfResearchRef'
          ANZSRCSocioEconomicObjective: '#/components/schemas/Anzsrc2020SocioEconomicObjectiveRef'
          Semester: '#/components/schemas/SemesterRef'
          Education: '#/components/schemas/EducationRef'
          Course: '#/components/schemas/CourseRef'
          CurriculumVitae: '#/components/schemas/CurriculumVitaeRef'
          CustomDefinedFieldConfiguration: '#/components/schemas/CustomDefinedFieldConfigurationRef'
          KeywordGroupConfiguration: '#/components/schemas/KeywordGroupConfigurationRef'
          Review: '#/components/schemas/ReviewRef'
          GenericContentRef: '#/components/schemas/GenericContentRef'
          UserProfile: '#/components/schemas/UserProfileRef'
          Thesaurus: '#/components/schemas/ThesaurusRef'
          Concept: '#/components/schemas/ConceptRef'
          PersonExpertise: '#/components/schemas/PersonExpertiseRef'
          Contract: '#/components/schemas/ContractRef'
          Milestone: '#/components/schemas/MilestoneRef'
          Fingerprint: '#/components/schemas/FingerprintRef'
          Specialization: '#/components/schemas/SpecializationRef'
          StudentProject: '#/components/schemas/StudentProjectRef'
    ConflictProblemDetails:
      type: object
      properties:
        type:
          type: string
          description: A URI reference [RFC3986] that identifies the problem type.
        title:
          type: string
          description: A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).
        status:
          type: integer
          description: The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.
          format: int32
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of the problem.
        instance:
          type: string
          description: A URI reference that identifies the specific occurrence of the problem.  It may or may not yield further information if dereferenced.
        modified:
          type: string
          format: date-time
        modifiedBy:
          type: string
      description: Problem details for state conflict failures
  securitySchemes:
    api-key:
      type: apiKey
      description: Security mechanism for the API
      name: api-key
      in: header