RWTH Aachen University ProjectMember API

Endpoints for the project members.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

rwth-aachen-university-projectmember-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Coscine Web Admin ProjectMember API
  description: Coscine (short for <b>CO</b>llaborative <b>SC</b>ientific <b>IN</b>tegration <b>E</b>nvironment) 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