openapi: 3.0.1 info: title: Coscine Web Admin Project 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: Project description: Endpoints for the projects. paths: /api/v2/projects: post: tags: - Project summary: Creates a new project. operationId: CreateProject requestBody: description: The project data for creation. content: application/json: schema: $ref: '#/components/schemas/ProjectForCreationDto' text/json: schema: $ref: '#/components/schemas/ProjectForCreationDto' application/*+json: schema: $ref: '#/components/schemas/ProjectForCreationDto' responses: '201': description: Project created. content: application/json: schema: $ref: '#/components/schemas/ProjectDtoResponse' text/json: schema: $ref: '#/components/schemas/ProjectDtoResponse' '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. get: tags: - Project summary: Retrieves all projects. operationId: GetProjects parameters: - name: IncludeOrganizations in: query description: Gets or sets a value indicating whether to retrieve the organizations. schema: type: boolean - name: TopLevel in: query description: Gets or sets a value indicating whether to retrieve only top-level projects. schema: type: boolean - 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 projects. content: application/json: schema: $ref: '#/components/schemas/ProjectDtoPagedResponse' text/json: schema: $ref: '#/components/schemas/ProjectDtoPagedResponse' '403': description: User is missing authorization requirements. options: tags: - Project summary: Responds with the HTTP methods allowed for the endpoint. responses: '200': description: OK /api/v2/projects/{projectId}: get: tags: - Project summary: Retrieves a project. operationId: GetProject parameters: - name: projectId in: path description: The ID of the project. required: true schema: type: string - name: IncludeSubProjects in: query description: Gets or sets a value indicating whether to include sub-projects in the retrieval. schema: type: boolean responses: '200': description: Returns the project. content: application/json: schema: $ref: '#/components/schemas/ProjectDtoResponse' text/json: schema: $ref: '#/components/schemas/ProjectDtoResponse' '403': description: User is missing authorization requirements. '400': description: Provided input has a bad format. '404': description: Project does not exist or has been deleted. put: tags: - Project summary: Updates a project. operationId: UpdateProject parameters: - name: projectId in: path description: The ID of the project. required: true schema: type: string requestBody: description: The updated project data. content: application/json: schema: $ref: '#/components/schemas/ProjectForUpdateDto' text/json: schema: $ref: '#/components/schemas/ProjectForUpdateDto' application/*+json: schema: $ref: '#/components/schemas/ProjectForUpdateDto' responses: '204': description: Project updated. '403': description: User is missing authorization requirements. '400': description: Provided input has a bad format or the resource is write-protected due to its archived status. '404': description: Provided input refers to entries that do not exist or have been deleted. delete: tags: - Project summary: Deletes a project. operationId: DeleteProject parameters: - name: projectId in: path description: The ID of the project. required: true schema: type: string responses: '204': description: Project deleted. '403': description: User is missing authorization requirements. '400': description: Provided input has a bad format or the resource is write-protected due to its archived status. '404': description: Provided input refers to entries that do not exist or have been deleted. components: schemas: PublicationAdvisoryServiceDto: required: - displayName - email type: object properties: displayName: minLength: 1 type: string description: Gets the data publication service's display name. email: minLength: 1 type: string description: Gets the data publication service's email address. description: type: string description: Gets the data publication service's description. nullable: true organizationRor: type: string description: Gets the ROR of the organization that provides this publication service. nullable: true additionalProperties: false description: Data transfer object (DTO) representing the publication advisory service of an organization. VisibilityDto: type: object properties: id: type: string description: The identifier for the visibility setting. format: uuid displayName: type: string description: The display name for the visibility setting. additionalProperties: false description: Represents a Data Transfer Object (DTO) for visibility settings. DisciplineForProjectManipulationDto: required: - id type: object properties: id: type: string description: Gets or initializes the identifier of the discipline. format: uuid additionalProperties: false description: Data transfer object (DTO) representing a discipline for project manipulation. OrganizationForProjectManipulationDto: required: - responsible - uri type: object properties: uri: type: string description: Gets or initializes the URI of the organization. format: uri responsible: type: boolean description: Gets or initializes if the organization is responsible. additionalProperties: false description: Data transfer object (DTO) representing an organization for project manipulation. ProjectDto: required: - description - disciplines - endDate - id - name - organizations - pid - slug - startDate - visibility type: object properties: id: type: string description: Unique identifier for the project. format: uuid pid: type: string description: Persistent identifier for the project. name: type: string description: Name of the project. description: type: string description: Description of the project. startDate: type: string description: Start date of the project. format: date-time endDate: type: string description: End date of the project. format: date-time keywords: type: array items: type: string description: Collection of keywords associated with the project. nullable: true displayName: type: string description: Display name of the project. nullable: true principleInvestigators: type: string description: Principal investigators involved in the project. nullable: true grantId: type: string description: Grant ID associated with the project. nullable: true visibility: $ref: '#/components/schemas/VisibilityDto' disciplines: type: array items: $ref: '#/components/schemas/DisciplineDto' description: Disciplines related to the project. organizations: type: array items: $ref: '#/components/schemas/ProjectOrganizationDto' description: Organizations associated with the project. slug: type: string description: Slug for the project. creator: $ref: '#/components/schemas/UserMinimalDto' creationDate: type: string description: Date of creation of the project. format: date-time nullable: true subProjects: type: array items: $ref: '#/components/schemas/ProjectDto' description: Collection of sub-projects associated with this project. nullable: true deprecated: true parent: $ref: '#/components/schemas/ProjectMinimalDto' additionalProperties: false description: Represents a data transfer object (DTO) for project information. ProjectForUpdateDto: required: - description - disciplines - name - organizations - slug - visibility type: object properties: name: maxLength: 200 minLength: 1 type: string description: Gets or initializes the name of the project. description: maxLength: 10000 minLength: 1 type: string description: Gets or initializes the description of the project. startDate: type: string description: Gets or initializes the start date of the project. format: date-time endDate: type: string description: Gets or initializes the end date of the project. format: date-time keywords: type: array items: type: string description: Gets or initializes the keywords associated with the project. nullable: true displayName: maxLength: 25 type: string description: Gets or initializes the display name of the project. nullable: true principleInvestigators: maxLength: 500 type: string description: Gets or initializes the principal investigators associated with the project. nullable: true grantId: maxLength: 500 type: string description: Gets or initializes the grant ID associated with the project. nullable: true visibility: $ref: '#/components/schemas/VisibilityForProjectManipulationDto' disciplines: type: array items: $ref: '#/components/schemas/DisciplineForProjectManipulationDto' description: Gets or initializes the disciplines associated with the project. organizations: type: array items: $ref: '#/components/schemas/OrganizationForProjectManipulationDto' description: Gets or initializes the organizations associated with the project. slug: maxLength: 63 minLength: 1 type: string description: Gets or initializes the slug associated with the project for identification purposes. additionalProperties: false description: "Data transfer object (DTO) representing the update of a project.\r\nInherits from the base class Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.ProjectForManipulationDto." 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. DisciplineDto: type: object properties: id: type: string description: The unique identifier for the discipline. format: uuid uri: type: string description: The URI associated with the discipline. displayNameDe: type: string description: The display name of the discipline in German. displayNameEn: type: string description: The display name of the discipline in English. additionalProperties: false description: Represents the data transfer object for a discipline. ProjectDtoResponse: type: object properties: data: $ref: '#/components/schemas/ProjectDto' isSuccess: type: boolean readOnly: true statusCode: type: integer format: int32 nullable: true traceId: type: string nullable: true additionalProperties: false 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. ProjectOrganizationDto: required: - displayName - responsible - uri type: object properties: uri: type: string description: The ROR (Research Organization Registry) ID of the organization. format: uri displayName: type: string description: The display name of the organization. email: type: string description: The email address of the organization. nullable: true publicationAdvisoryService: $ref: '#/components/schemas/PublicationAdvisoryServiceDto' responsible: type: boolean description: Determines if the organization is Responsible for a given project. additionalProperties: false description: Represents a data transfer object (DTO) for an organization in the context of a project. UserMinimalDto: required: - id type: object properties: id: type: string description: The unique identifier for the user. format: uuid additionalProperties: false description: Represents a minimal Data Transfer Object (DTO) for user information. VisibilityForProjectManipulationDto: required: - id type: object properties: id: type: string description: The unique identifier of the visibility setting. format: uuid additionalProperties: false description: Represents the data transfer object (DTO) for manipulating the visibility of a project. ProjectForCreationDto: required: - description - disciplines - name - organizations - visibility type: object properties: name: maxLength: 200 minLength: 1 type: string description: Gets or initializes the name of the project. description: maxLength: 10000 minLength: 1 type: string description: Gets or initializes the description of the project. startDate: type: string description: Gets or initializes the start date of the project. format: date-time endDate: type: string description: Gets or initializes the end date of the project. format: date-time keywords: type: array items: type: string description: Gets or initializes the keywords associated with the project. nullable: true displayName: maxLength: 25 type: string description: Gets or initializes the display name of the project. nullable: true principleInvestigators: maxLength: 500 type: string description: Gets or initializes the principal investigators associated with the project. nullable: true grantId: maxLength: 500 type: string description: Gets or initializes the grant ID associated with the project. nullable: true visibility: $ref: '#/components/schemas/VisibilityForProjectManipulationDto' disciplines: type: array items: $ref: '#/components/schemas/DisciplineForProjectManipulationDto' description: Gets or initializes the disciplines associated with the project. organizations: type: array items: $ref: '#/components/schemas/OrganizationForProjectManipulationDto' description: Gets or initializes the organizations associated with the project. parentId: type: string description: Gets or initializes the identifier of the parent project. format: uuid nullable: true copyOwnersFromParent: type: boolean description: Gets or initializes if the owners of the parent project should be copied to the sub project. nullable: true additionalProperties: false description: "Data transfer object (DTO) representing the creation of a project.\r\nInherits from the base class Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.ProjectForManipulationDto." ProjectDtoPagedResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/ProjectDto' 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 securitySchemes: Bearer: type: apiKey description: JWT Authorization header using the Bearer scheme. name: Authorization in: header