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