openapi: 3.0.1 info: title: Coscine Web Admin ProjectMember API description: Coscine (short for COllaborative SCientific INtegration Environment) is the research data management platform for your research project. termsOfService: https://about.coscine.de/en/termsofuse/ contact: name: Coscine Team email: servicedesk@rwth-aachen.de version: '2.0' servers: - url: https://coscine.rwth-aachen.de/coscine security: - Bearer: [] tags: - name: ProjectMember description: Endpoints for the project members. paths: /api/v2/projects/{projectId}/members/{membershipId}: get: tags: - ProjectMember summary: Retrieves a project membership for a specified project. operationId: GetMembership parameters: - name: projectId in: path description: The Id or slug of the project. required: true schema: type: string - name: membershipId in: path description: The ID of the project membership to retrieve. required: true schema: type: string format: uuid responses: '200': description: Returns the project membership. content: application/json: schema: $ref: '#/components/schemas/ProjectRoleDtoResponse' text/json: schema: $ref: '#/components/schemas/ProjectRoleDtoResponse' '404': description: Project membership does not exist. put: tags: - ProjectMember summary: Updates a project membership for a specified project. operationId: UpdateMembership parameters: - name: projectId in: path description: The Id or slug of the project. required: true schema: type: string - name: membershipId in: path description: The ID of the project membership to update. required: true schema: type: string format: uuid requestBody: description: The updated project membership data. content: application/json: schema: $ref: '#/components/schemas/ProjectRoleForProjectManipulationDto' text/json: schema: $ref: '#/components/schemas/ProjectRoleForProjectManipulationDto' application/*+json: schema: $ref: '#/components/schemas/ProjectRoleForProjectManipulationDto' responses: '204': description: Project membership updated. '403': description: User is missing authorization requirements. '400': description: Provided input has a bad format. '404': description: Provided input refers to entries that do not exist or have been deleted. delete: tags: - ProjectMember summary: Deletes a project membership for a specified project. operationId: DeleteMembership parameters: - name: projectId in: path description: The Id or slug of the project. required: true schema: type: string - name: membershipId in: path description: The ID of the project membership to delete. required: true schema: type: string format: uuid responses: '204': description: Project membership deleted. '403': description: User is missing authorization requirements. '404': description: Provided input refers to entries that do not exist or have been deleted. /api/v2/projects/{projectId}/members: get: tags: - ProjectMember summary: Retrieves all project memberships for a specified project. operationId: GetMemberships parameters: - name: projectId in: path description: The Id or slug of the project. required: true schema: type: string - name: PageNumber in: query description: Gets or sets the desired page number. Should be greater than or equal to 1. Default is 1. schema: type: integer format: int32 - name: PageSize in: query description: Gets or sets the desired page size. Should be between 1 and the maximum allowed page size (50). Default is 10. schema: type: integer format: int32 - name: OrderBy in: query description: "Gets or sets the field name used for ordering the results.\r\nThe order is constructed by an order string.\r\nUse the property followed by \"asc\" or \"desc\" and separate properties by commas. Default is asc.\r\nCan be used like this: \"propertyA asc, propertyB desc\"." schema: type: string responses: '200': description: Returns the project memberships. content: application/json: schema: $ref: '#/components/schemas/ProjectRoleDtoPagedResponse' text/json: schema: $ref: '#/components/schemas/ProjectRoleDtoPagedResponse' post: tags: - ProjectMember summary: Creates a project membership for a specified project. operationId: AddMembership parameters: - name: projectId in: path description: The Id or slug of the project. required: true schema: type: string requestBody: description: The project membership data for creation. content: application/json: schema: $ref: '#/components/schemas/ProjectRoleForProjectCreationDto' text/json: schema: $ref: '#/components/schemas/ProjectRoleForProjectCreationDto' application/*+json: schema: $ref: '#/components/schemas/ProjectRoleForProjectCreationDto' responses: '201': description: Project membership created. content: application/json: schema: $ref: '#/components/schemas/ProjectRoleDtoResponse' text/json: schema: $ref: '#/components/schemas/ProjectRoleDtoResponse' '403': description: User is missing authorization requirements. '400': description: Provided input has a bad format. '404': description: Provided input refers to entries that do not exist or have been deleted. options: tags: - ProjectMember summary: Responds with the HTTP methods allowed for the endpoint. parameters: - name: projectId in: path required: true schema: type: string responses: '200': description: OK /api/v2/projects/{projectId}/members/me: get: tags: - ProjectMember summary: Retrieves the project role of the authenticated user for a specified project. operationId: GetMyMembership parameters: - name: projectId in: path description: The Id or slug of the project. required: true schema: type: string responses: '200': description: Returns the project role of the authenticated user. content: application/json: schema: $ref: '#/components/schemas/ProjectRoleDtoResponse' text/json: schema: $ref: '#/components/schemas/ProjectRoleDtoResponse' '404': description: Authenticated user has no role in the given project. components: schemas: ProjectRoleForProjectManipulationDto: required: - roleId type: object properties: roleId: type: string description: Gets or initializes the identifier of the role associated with the project manipulation. format: uuid additionalProperties: false description: Data transfer object (DTO) representing a project role for manipulation within a project. PublicUserDto: required: - displayName - id type: object properties: id: type: string description: Gets the unique identifier of the user. format: uuid displayName: type: string description: Gets the display name of the user. givenName: type: string description: Gets the given name of the user. nullable: true familyName: type: string description: Gets the family name of the user. nullable: true email: type: string description: Gets the email address of the user. nullable: true title: $ref: '#/components/schemas/TitleDto' additionalProperties: false description: Represents a public user data transfer object (DTO). RoleDto: required: - description - displayName - id type: object properties: id: type: string description: The unique identifier of the role. format: uuid displayName: type: string description: The display name of the role. description: type: string description: The description of the role. additionalProperties: false description: Represents a Data Transfer Object (DTO) for a role. TitleDto: required: - displayName - id type: object properties: id: type: string description: The identifier for the title. format: uuid displayName: type: string description: The displayed name of the title. additionalProperties: false description: Represents the Data Transfer Object (DTO) for title information. ProjectRoleDto: type: object properties: id: type: string description: Identifier of the project role. format: uuid project: $ref: '#/components/schemas/ProjectMinimalDto' role: $ref: '#/components/schemas/RoleDto' user: $ref: '#/components/schemas/PublicUserDto' additionalProperties: false description: Represents a data transfer object (DTO) for a project role. ProjectRoleDtoResponse: type: object properties: data: $ref: '#/components/schemas/ProjectRoleDto' isSuccess: type: boolean readOnly: true statusCode: type: integer format: int32 nullable: true traceId: type: string nullable: true additionalProperties: false Pagination: type: object properties: currentPage: type: integer description: Gets or sets the current page number. format: int32 totalPages: type: integer description: Gets or sets the total number of pages. format: int32 pageSize: type: integer description: Gets or sets the number of items per page. format: int32 totalCount: type: integer description: Gets or sets the total count of items across all pages. format: int64 hasPrevious: type: boolean description: Gets a value indicating whether there is a previous page. readOnly: true hasNext: type: boolean description: Gets a value indicating whether there is a next page. readOnly: true additionalProperties: false description: Represents pagination information for a collection of items. ProjectMinimalDto: required: - id type: object properties: id: type: string description: Unique identifier for the project. format: uuid additionalProperties: false description: Represents a minimal data transfer object (DTO) for a project. ProjectRoleDtoPagedResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/ProjectRoleDto' nullable: true isSuccess: type: boolean readOnly: true statusCode: type: integer format: int32 nullable: true traceId: type: string nullable: true pagination: $ref: '#/components/schemas/Pagination' additionalProperties: false ProjectRoleForProjectCreationDto: required: - roleId - userId type: object properties: roleId: type: string description: Gets or initializes the identifier of the role associated with the project manipulation. format: uuid userId: type: string description: Gets or initializes the identifier of the user associated with the project role creation. format: uuid additionalProperties: false description: "Data transfer object (DTO) representing the creation of a project role within a project.\r\nInherits from the base class Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.ProjectRoleForProjectManipulationDto." securitySchemes: Bearer: type: apiKey description: JWT Authorization header using the Bearer scheme. name: Authorization in: header