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.33.3-3 servers: - url: /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 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 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 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 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 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 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 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 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 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 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 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: Name: type: object properties: firstName: type: string lastName: type: string description: A name describing a person, made up of given- and family name 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' GlobalRoleAssignment: required: - roleDefinition type: object properties: roleDefinition: $ref: '#/components/schemas/AssignableRoleRef' description: Assignment of a global role 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' 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 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' 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 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 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 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 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 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 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 securitySchemes: api-key: type: apiKey description: Security mechanism for the API name: api-key in: header