{
  "openapi": "3.0.1",
  "info": {
    "title": "Coscine Web 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"
    }
  ],
  "paths": {
    "/api/v2/admin/activity-logs": {
      "get": {
        "tags": [
          "Admin"
        ],
        "summary": "Retrieves all activity logs.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetAllActivityLogs",
        "parameters": [
          {
            "name": "ActivityTimestampBefore",
            "in": "query",
            "description": "Gets or sets the activity timestamp date before which activity logs should be retrieved.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "ActivityTimestampAfter",
            "in": "query",
            "description": "Gets or sets the activity timestamp date after which activity logs should be retrieved.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Guid",
            "in": "query",
            "description": "Gets or sets the GUID for which activity logs should be retrieved. Can be a project, resource or other ID.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "UserId",
            "in": "query",
            "description": "Gets or sets the user ID for which activity logs should be retrieved.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "RegularExpression",
            "in": "query",
            "description": "Gets or sets the regular expression to filter activity logs' API path by. The regex must be a valid, already escaped string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "HttpMethod",
            "in": "query",
            "description": "Gets or sets the http method to filter activity logs by.",
            "schema": {
              "$ref": "#/components/schemas/CoscineHttpMethod"
            }
          },
          {
            "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 activity logs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityLogDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityLogDtoPagedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/admin/projects": {
      "get": {
        "tags": [
          "Admin"
        ],
        "summary": "Retrieves all projects.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetAllProjects",
        "parameters": [
          {
            "name": "TopLevel",
            "in": "query",
            "description": "Gets or sets a value indicating whether to filter top-level projects.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeDeleted",
            "in": "query",
            "description": "Gets or sets a value indicating whether to include deleted projects in the results.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeQuotas",
            "in": "query",
            "description": "Gets or sets a value indicating whether to include quotas in the results.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludePublicationRequests",
            "in": "query",
            "description": "Gets or sets a value indicating whether to include project publication requests in the results.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Visibility",
            "in": "query",
            "description": "Gets or sets a value indicating the desired visibility of the projects.",
            "schema": {
              "$ref": "#/components/schemas/CoscineVisibility"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Gets or sets number of items per page. The maximum number of items per page is `250`.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "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": "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/ProjectAdminDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectAdminDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements. This endpoint is only available to Coscine Admin users."
          }
        }
      }
    },
    "/api/v2/admin/resources": {
      "get": {
        "tags": [
          "Admin"
        ],
        "summary": "Retrieves all resources.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetAllResources",
        "parameters": [
          {
            "name": "IncludeDeleted",
            "in": "query",
            "description": "Gets or sets a value indicating whether to include deleted projects in the results.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeQuotas",
            "in": "query",
            "description": "Gets or sets a value indicating whether to include quotas in the results.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Visibility",
            "in": "query",
            "description": "Gets or sets the resource visibility filter.",
            "schema": {
              "$ref": "#/components/schemas/CoscineVisibility"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Gets or sets number of items per page. The maximum number of items per page is `250`.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "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": "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 resources.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceAdminDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceAdminDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements. This endpoint is only available to Coscine Admin users."
          }
        }
      }
    },
    "/api/v2/admin/users": {
      "get": {
        "tags": [
          "Admin"
        ],
        "summary": "Retrieves all users.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetAllUsers",
        "parameters": [
          {
            "name": "TosAccepted",
            "in": "query",
            "description": "Gets or sets a value indicating whether the terms of service have been accepted by the user.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Gets or sets number of items per page. The maximum number of items per page is `250`.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "DataProcessingConsentGranted",
            "in": "query",
            "description": "Gets or sets a value indicating whether the personal data processing consent have been granted by the user.",
            "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": "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 users.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements. This endpoint is only available to Coscine Admin users."
          }
        }
      }
    },
    "/api/v2/admin/metadata/{graph}": {
      "get": {
        "tags": [
          "Admin"
        ],
        "summary": "Gets a metadata graph.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetMetadataGraph",
        "parameters": [
          {
            "name": "graph",
            "in": "path",
            "description": "The absolute URI of the graph to get.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Format",
            "in": "query",
            "description": "Gets or sets the RDF format.",
            "schema": {
              "$ref": "#/components/schemas/RdfFormat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RdfDefinitionDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RdfDefinitionDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements. This endpoint is only available to Coscine Admin users."
          }
        }
      },
      "put": {
        "tags": [
          "Admin"
        ],
        "summary": "Updates a metadata graph.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "UpdateMetadataGraph",
        "parameters": [
          {
            "name": "graph",
            "in": "path",
            "description": "The absolute URI of the graph to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The metadata update admin parameters.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataUpdateAdminParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataUpdateAdminParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataUpdateAdminParameters"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Metadata graph updated"
          },
          "403": {
            "description": "User is missing authorization requirements. This endpoint is only available to Coscine Admin users."
          }
        }
      },
      "patch": {
        "tags": [
          "Admin"
        ],
        "summary": "Patches a metadata graph.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "PatchMetadata",
        "parameters": [
          {
            "name": "graph",
            "in": "path",
            "description": "The absolute URI of the graph to patch.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The well-formed RDF patch document containing the changes as operations to be applied to the graph.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RdfPatchDocumentDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RdfPatchDocumentDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RdfPatchDocumentDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Metadata graph patched"
          },
          "403": {
            "description": "User is missing authorization requirements. This endpoint is only available to Coscine Admin users."
          }
        }
      }
    },
    "/api/v2/admin/graphs": {
      "get": {
        "tags": [
          "Admin"
        ],
        "summary": "Gets all deployed graphs.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetDeployedGraphs",
        "parameters": [
          {
            "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 metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeployedGraphDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeployedGraphDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements. This endpoint is only available to Coscine Admin users."
          }
        }
      }
    },
    "/api/v2/admin/resource/{resourceId}/type/{typeId}": {
      "post": {
        "tags": [
          "Admin"
        ],
        "summary": "Creates a new datasource for a specified resource and type.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "CreateDatasource",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "typeId",
            "in": "path",
            "description": "The unique identifier of the datasource type.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "quota",
            "in": "query",
            "description": "The allocated quota for the datasource.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "dsNrwReplicationGroup",
            "in": "query",
            "description": "The optional replication grouo for the datasource.",
            "schema": {
              "$ref": "#/components/schemas/DsNrwReplicationGroup"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Datasource successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateDatasourceDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateDatasourceDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User lacks authorization. Only accessible to Coscine Admin users."
          }
        }
      },
      "put": {
        "tags": [
          "Admin"
        ],
        "summary": "Updates the type and option ID of a specified resource.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "UpdateResourceType",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource to be updated.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "typeId",
            "in": "path",
            "description": "The unique identifier of the new resource type.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "optionId",
            "in": "query",
            "description": "The unique identifier of the new resource type option.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource successfully updated."
          },
          "403": {
            "description": "User lacks authorization. Only accessible to Coscine Admin users."
          }
        }
      }
    },
    "/api/v2/admin/users/{userId}": {
      "delete": {
        "tags": [
          "Admin"
        ],
        "summary": "Deletes the given user.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The id of the user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/v2/admin/messages/backfill/{name}": {
      "post": {
        "tags": [
          "Admin"
        ],
        "summary": "Runs a backfill operation.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "The name of the backfill operation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The backfill request data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BackfillRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BackfillRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BackfillRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BackfillResultDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BackfillResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/admin": {
      "options": {
        "tags": [
          "Admin"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/application-profiles/profiles": {
      "get": {
        "tags": [
          "ApplicationProfile"
        ],
        "summary": "Retrieves all application profiles.",
        "operationId": "GetApplicationProfiles",
        "parameters": [
          {
            "name": "SearchTerm",
            "in": "query",
            "description": "Gets or sets the search term used to filter application profiles.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Language",
            "in": "query",
            "description": "Gets or sets the language for which the application profiles are requested.",
            "schema": {
              "$ref": "#/components/schemas/AcceptedLanguage"
            }
          },
          {
            "name": "Modules",
            "in": "query",
            "description": "Gets or sets a value indicating whether to include modules in the application profiles.",
            "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 application profiles.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationProfileDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationProfileDtoPagedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/application-profiles/profiles/{profile}": {
      "get": {
        "tags": [
          "ApplicationProfile"
        ],
        "summary": "Retrieves an application profile by its URI.",
        "operationId": "GetApplicationProfile",
        "parameters": [
          {
            "name": "profile",
            "in": "path",
            "description": "The URI of the application profile to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "The desired data format for the returned application profile.",
            "schema": {
              "$ref": "#/components/schemas/RdfFormat"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "The preferred language for the application profile data.",
            "schema": {
              "$ref": "#/components/schemas/AcceptedLanguage"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the application profile.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationProfileDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationProfileDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Application profile does not exist."
          }
        }
      },
      "delete": {
        "tags": [
          "ApplicationProfile"
        ],
        "summary": "Deletes an application profile by its URI.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "DeleteApplicationProfile",
        "parameters": [
          {
            "name": "profile",
            "in": "path",
            "description": "The URI of the application profile to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deleting the application profile was successfull."
          },
          "403": {
            "description": "User is missing authorization requirements. This endpoint is only available to Coscine Admin users."
          },
          "404": {
            "description": "Application profile does not exist."
          }
        }
      }
    },
    "/api/v2/application-profiles/profiles/{profile}/raw": {
      "get": {
        "tags": [
          "ApplicationProfile"
        ],
        "summary": "Retrieves the `raw` application profile definition by its URI.",
        "operationId": "GetRawApplicationProfile",
        "parameters": [
          {
            "name": "profile",
            "in": "path",
            "description": "The URI of the application profile.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the raw application profile.",
            "content": {
              "text/turtle": {
                "schema": {
                  "type": "string"
                }
              },
              "application/ld+json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Application profile does not exist."
          }
        }
      }
    },
    "/api/v2/application-profiles/requests": {
      "post": {
        "tags": [
          "ApplicationProfile"
        ],
        "summary": "Submits a request to create a new application profile.",
        "operationId": "CreateApplicationProfileRequest",
        "requestBody": {
          "description": "The details required to create a new application profile.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationProfileForCreationDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationProfileForCreationDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationProfileForCreationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Application profile request created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationProfileForCreationDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationProfileForCreationDtoResponse"
                }
              }
            }
          },
          "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."
          }
        }
      }
    },
    "/api/v2/application-profiles": {
      "options": {
        "tags": [
          "ApplicationProfile"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/blobs/{key}": {
      "post": {
        "tags": [
          "Blob"
        ],
        "summary": "Creates a new blob for a resource.",
        "operationId": "CreateBlob",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "key",
            "in": "path",
            "description": "The key for the new blob.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Blob created."
          },
          "400": {
            "description": "Blob already exists."
          },
          "415": {
            "description": "Blob is not of the type \"multipart/form-data\""
          },
          "413": {
            "description": "Blob is to large."
          }
        },
        "deprecated": true
      },
      "get": {
        "tags": [
          "Blob"
        ],
        "summary": "Download a blob from a resource.",
        "operationId": "GetBlob",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "key",
            "in": "path",
            "description": "The key associated with the blob.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the blob.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Blob does not exist."
          }
        },
        "deprecated": true
      },
      "put": {
        "tags": [
          "Blob"
        ],
        "summary": "Updates an existing blob of a resource.",
        "operationId": "UpdateBlob",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "key",
            "in": "path",
            "description": "The key associated with the blob to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Blob updated."
          },
          "400": {
            "description": "Blob already exists."
          },
          "415": {
            "description": "Blob is not of the type \"multipart/form-data\""
          },
          "413": {
            "description": "Blob is to large."
          }
        },
        "deprecated": true
      },
      "delete": {
        "tags": [
          "Blob"
        ],
        "summary": "Deletes a blob from a resource.",
        "operationId": "DeleteBlob",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "key",
            "in": "path",
            "description": "The key associated with the blob to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Blob deleted."
          },
          "404": {
            "description": "Blob does not exist."
          }
        },
        "deprecated": true
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/blobs": {
      "options": {
        "tags": [
          "Blob"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/reports/data-hamster/3685": {
      "get": {
        "tags": [
          "DataHamsterReport"
        ],
        "summary": "Get the number of archived resources KPI report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetNumberOfArchivedResourcesKpi",
        "responses": {
          "200": {
            "description": "Returns the data hamster report.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataHamsterKpiDtoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/reports/data-hamster/3681": {
      "get": {
        "tags": [
          "DataHamsterReport"
        ],
        "summary": "Get the number of created projects KPI report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetNumberOfCreatedProjectsKpi",
        "responses": {
          "200": {
            "description": "Returns the data hamster report.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataHamsterKpiDtoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/reports/data-hamster/3683": {
      "get": {
        "tags": [
          "DataHamsterReport"
        ],
        "summary": "Get the number of created resources KPI report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetNumberOfCreatedResourcesKpi",
        "responses": {
          "200": {
            "description": "Returns the data hamster report.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataHamsterKpiDtoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/reports/data-hamster/3691": {
      "get": {
        "tags": [
          "DataHamsterReport"
        ],
        "summary": "Get the number of users per day KPI report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetNumberOfUsersPerDayKpi",
        "responses": {
          "200": {
            "description": "Returns the data hamster report.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataHamsterKpiDtoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/reports/data-hamster/type/{typeId}": {
      "get": {
        "tags": [
          "DataHamsterReport"
        ],
        "summary": "Get the storage usage per resource type report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetStorageByResourceTypeKpi",
        "parameters": [
          {
            "name": "typeId",
            "in": "path",
            "description": "The id of the resource type.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the data hamster report.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageDataHamsterKpiDtoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/reports/data-hamster/3689": {
      "get": {
        "tags": [
          "DataHamsterReport"
        ],
        "summary": "Get the number of users per ror report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetUsersPerRorKpi",
        "responses": {
          "200": {
            "description": "Returns the data hamster report.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataHamsterKpiDtoIEnumerableResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/reports/data-hamster": {
      "options": {
        "tags": [
          "DataHamsterReport"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/disciplines/{disciplineId}": {
      "get": {
        "tags": [
          "Discipline"
        ],
        "summary": "Retrieves a discipline with the specified ID.",
        "operationId": "GetDiscipline",
        "parameters": [
          {
            "name": "disciplineId",
            "in": "path",
            "description": "The ID of the discipline.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the discipline.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisciplineDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisciplineDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Discipline does not exist."
          }
        }
      }
    },
    "/api/v2/disciplines": {
      "get": {
        "tags": [
          "Discipline"
        ],
        "summary": "Retrieves all disciplines.",
        "operationId": "GetDisciplines",
        "parameters": [
          {
            "name": "SearchTerm",
            "in": "query",
            "description": "Gets or sets the search term used to filter disciplines.",
            "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 disciplines.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisciplineDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisciplineDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Discipline"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/graphs": {
      "get": {
        "tags": [
          "Graph"
        ],
        "summary": "Retrieves a paginated subset of nodes that make up the metadata tree\r\nfor a specified resource within a given project.",
        "operationId": "GetStorageGraphTree",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project containing the resource.\r\nSupplied as a route parameter.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource whose metadata tree should be retrieved.\r\nSupplied as a route parameter.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Gets or sets the field name used for ordering the results.\r\n\r\n\r\nThe properties `HasChildren`, `HasMetadata`, `HasData` and `Subject` are supported for ordering.\r\nUse \"asc\" or \"desc\" as the direction.\r\nThe Default is `HasChildren desc, subject asc`.\r\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Prefix",
            "in": "query",
            "description": "Gets or sets the prefix filter.\r\n\r\n\r\nThe prefix to filter the storage objects by.\r\nSlashes are taken into account when filtering by prefix.\r\nThe forwads slash (/) character is treated as the path separator.\r\nThe lookup is only done for one level.\r\nTo look into the next level, include the trailing slash to indicate the next level of the tree.\r\n",
            "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"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved a paged list of metadata tree nodes for the specified resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageNodeDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageNodeDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "The user is missing the necessary authorization to access the resource."
          },
          "404": {
            "description": "The resource was not found."
          },
          "400": {
            "description": "Invalid request parameters were supplied."
          }
        }
      },
      "options": {
        "tags": [
          "Graph"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/graphs/{encodedPath}": {
      "head": {
        "tags": [
          "Graph"
        ],
        "summary": "Performs a metadata check for a graph node or group at the specified path without returning a response body.",
        "operationId": "HeadStorageGraph",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project. Supplied as a route parameter.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource. Supplied as a route parameter.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The url encoded path of the file.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The resource exists. Metadata is available in the headers."
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "The resource was not found."
          },
          "400": {
            "description": "Invalid request parameters were supplied."
          },
          "401": {
            "description": "The user is not authorized to access the resource."
          }
        }
      },
      "get": {
        "tags": [
          "Graph"
        ],
        "summary": "Retrieves metadata for a graph node or group at the specified path.",
        "operationId": "GetStorageGraph",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project. Supplied as a route parameter.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource. Supplied as a route parameter.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The url encoded path of the file.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The resource exists. Metadata is available in the body and headers.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageNodeDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageNodeDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "The resource was not found."
          },
          "400": {
            "description": "Invalid request parameters were supplied."
          },
          "401": {
            "description": "The user is not authorized to access the resource."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/graphs/{encodedPath}/metadata/versions": {
      "get": {
        "tags": [
          "GraphMetadata"
        ],
        "summary": "Retrieves a paginated list of all metadata versions available\r\nfor a specific graph node of a resource.",
        "operationId": "ListMetadataVersions",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The URL-encoded path to the graph node.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Gets or sets the field name used for ordering the results.\r\n\r\n\r\nThe property `version`is supported for ordering.\r\nUse \"asc\" or \"desc\" as the direction.\r\nThe Default is `version desc`.\r\n",
            "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"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved metadata version list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataVersionNodeDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataVersionNodeDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "No metadata versions were found for the specified path."
          },
          "400": {
            "description": "Invalid query parameters supplied."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/graphs/{encodedPath}/metadata": {
      "get": {
        "tags": [
          "GraphMetadata"
        ],
        "summary": "Retrieves a specific version of the metadata graph for a given path.",
        "operationId": "GetMetadataVersion",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The URL-encoded path to the graph node.\r\n            Due to a limitation in the underlying structure, any trailing slashes in the path will be trimmed.\r\n            Test.txt and Test.txt/ will be treated as the same path.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "graphVersion",
            "in": "query",
            "description": "The version identifier of the graph to retrieve.\r\nIf omitted, the latest version is returned.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the specified metadata version.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataVersionNodeDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataVersionNodeDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "The requested version was not found."
          },
          "400": {
            "description": "Invalid request parameters supplied."
          },
          "401": {
            "description": "The user is not authorized to access the resource."
          }
        }
      },
      "head": {
        "tags": [
          "GraphMetadata"
        ],
        "summary": "Checks the existence of a specific metadata version without returning content.",
        "operationId": "HeadMetadataVersion",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The URL-encoded path to the graph node.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "graphVersion",
            "in": "query",
            "description": "Optional version identifier of the graph to check.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The specified metadata version exists."
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "The metadata version was not found."
          },
          "400": {
            "description": "Invalid request parameters supplied."
          },
          "401": {
            "description": "The user is not authorized to access the resource."
          }
        }
      },
      "options": {
        "tags": [
          "GraphMetadata"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/graphs/{encodedPath}/metadata/content": {
      "get": {
        "tags": [
          "GraphMetadataContent"
        ],
        "summary": "Retrieves the raw RDF content of a specific metadata graph version\r\nfor the given resource and path.",
        "operationId": "GetMetadataContent",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project. Supplied as a route parameter.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource. Supplied as a route parameter.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The URL-encoded path representing the location of the graph node.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "graphVersion",
            "in": "query",
            "description": "The version identifier of the metadata graph to retrieve.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the RDF content stream.",
            "content": {
              "text/turtle": {
                "schema": {
                  "type": "string"
                }
              },
              "application/ld+json": {
                "schema": {
                  "type": "string"
                }
              },
              "application/n-quads": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "The specified metadata version or path was not found."
          },
          "400": {
            "description": "Invalid route or query parameters supplied."
          },
          "401": {
            "description": "The user is not authorized to access the resource."
          }
        }
      },
      "put": {
        "tags": [
          "GraphMetadataContent"
        ],
        "summary": "Creates a new metadata graph version for a given resource and graph path.\r\nAccepts RDF content as the request body.",
        "operationId": "CreateMetadataVersion",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project. Supplied as a route parameter.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource. Supplied as a route parameter.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The URL-encoded path representing the location of the graph node.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/ld+json": {
              "schema": {
                "type": "string",
                "description": "JSON-LD payload"
              }
            },
            "text/turtle": {
              "schema": {
                "type": "string",
                "description": "Turtle (TTL) RDF payload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "201": {
            "description": "The metadata version was successfully created."
          },
          "400": {
            "description": "Invalid or malformed RDF content was supplied."
          },
          "401": {
            "description": "The user is not authorized to modify the resource."
          },
          "415": {
            "description": "The provided content type is unsupported."
          }
        }
      },
      "options": {
        "tags": [
          "GraphMetadataContent"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/handles/{prefix}/{suffix}": {
      "get": {
        "tags": [
          "Handle"
        ],
        "summary": "Retrieves all values of a handle by its PID.",
        "operationId": "GetHandle",
        "parameters": [
          {
            "name": "prefix",
            "in": "path",
            "description": "The prefix of the PID",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "suffix",
            "in": "path",
            "description": "The suffix of the PID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the handles.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HandleDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/HandleDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements. This endpoint is only available to Coscine Admin users."
          },
          "404": {
            "description": "Provided input refers to entries that do not exist or have been deleted."
          }
        }
      },
      "put": {
        "tags": [
          "Handle"
        ],
        "summary": "Updates a handle.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "UpdateHandle",
        "parameters": [
          {
            "name": "prefix",
            "in": "path",
            "description": "The prefix of the PID",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "suffix",
            "in": "path",
            "description": "The suffix of the PID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The handle for updating.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HandleForUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/HandleForUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/HandleForUpdateDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Handle updated."
          },
          "403": {
            "description": "User is missing authorization requirements. This endpoint is only available to Coscine Admin users."
          },
          "404": {
            "description": "Provided input refers to entries that do not exist or have been deleted."
          }
        }
      }
    },
    "/api/v2/handles": {
      "options": {
        "tags": [
          "Handle"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/languages/{languageId}": {
      "get": {
        "tags": [
          "Language"
        ],
        "summary": "Retrieves a language by ID.",
        "operationId": "GetLanguage",
        "parameters": [
          {
            "name": "languageId",
            "in": "path",
            "description": "The ID of the language.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the language.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LanguageDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LanguageDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Language does not exist."
          }
        }
      }
    },
    "/api/v2/languages": {
      "get": {
        "tags": [
          "Language"
        ],
        "summary": "Retrieves all languages.",
        "operationId": "GetLanguages",
        "parameters": [
          {
            "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 languages.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LanguageDtoIEnumerableResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LanguageDtoIEnumerableResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Language"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/licenses/{licenseId}": {
      "get": {
        "tags": [
          "License"
        ],
        "summary": "Retrieves a license with the specified ID.",
        "operationId": "GetLicense",
        "parameters": [
          {
            "name": "licenseId",
            "in": "path",
            "description": "The ID of the license.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the license.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LicenseDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LicenseDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "License does not exist."
          }
        }
      }
    },
    "/api/v2/licenses": {
      "get": {
        "tags": [
          "License"
        ],
        "summary": "Retrieves all licenses.",
        "operationId": "GetLicenses",
        "parameters": [
          {
            "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 licenses.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LicenseDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LicenseDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "License"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/maintenances": {
      "get": {
        "tags": [
          "Maintenance"
        ],
        "summary": "Retrieves the current maintenance messages.",
        "operationId": "GetCurrentMaintenances",
        "responses": {
          "200": {
            "description": "Returns the maintenances.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceDtoPagedResponse"
                }
              }
            }
          }
        },
        "deprecated": true
      },
      "options": {
        "tags": [
          "Maintenance"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/notifications/{notificationId}": {
      "get": {
        "tags": [
          "Notification"
        ],
        "summary": "Retrieves a notification.",
        "operationId": "GetNotification",
        "parameters": [
          {
            "name": "notificationId",
            "in": "path",
            "description": "The ID of the notification.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the notification.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Notification does not exist."
          }
        }
      }
    },
    "/api/v2/notifications": {
      "get": {
        "tags": [
          "Notification"
        ],
        "summary": "Retrieves all notifications.",
        "operationId": "GetNotifications",
        "parameters": [
          {
            "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 notifications.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Notification"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/organizations/{organizationRorUri}": {
      "get": {
        "tags": [
          "Organization"
        ],
        "summary": "Retrieves an organization.",
        "operationId": "GetOrganization",
        "parameters": [
          {
            "name": "organizationRorUri",
            "in": "path",
            "description": "The parameters for organization filtering and pagination.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the organizations.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationDtoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/organizations": {
      "get": {
        "tags": [
          "Organization"
        ],
        "summary": "Retrieves all organizations.",
        "operationId": "GetOrganizations",
        "parameters": [
          {
            "name": "SearchTerm",
            "in": "query",
            "description": "Gets or sets the search term used to filter organizations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Language",
            "in": "query",
            "description": "Gets or sets language of name or text (dataPublicationService)",
            "schema": {
              "$ref": "#/components/schemas/AcceptedLanguage"
            }
          },
          {
            "name": "FilterByPublicationService",
            "in": "query",
            "description": "Gets or sets a value indicating whether gets or sets the option to find only organizations having the publication service set.",
            "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 organizations.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Organization"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/pids/{prefix}/{suffix}": {
      "get": {
        "tags": [
          "Pid"
        ],
        "summary": "Retrieves the Persistent Identifier (PID) for a given prefix and suffix.",
        "operationId": "GetPid",
        "parameters": [
          {
            "name": "prefix",
            "in": "path",
            "description": "The PID prefix. Limited to the values provided by the API.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "suffix",
            "in": "path",
            "description": "The PID suffix of a project or a resource, represented as a GUID.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response with the PID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PidDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PidDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "The specified PID does not exist"
          },
          "410": {
            "description": "The PID is no longer valid (e.g., resource deleted)"
          }
        }
      }
    },
    "/api/v2/pids/{prefix}/{suffix}/requests": {
      "post": {
        "tags": [
          "Pid"
        ],
        "summary": "Sends an inquiry to the owner of the given PID.",
        "operationId": "SendRequestToOwner",
        "parameters": [
          {
            "name": "prefix",
            "in": "path",
            "description": "The PID prefix of a project or a resource to validate",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "suffix",
            "in": "path",
            "description": "The PID body of a project or a resource to validate",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The data transfer object containing the inquiry details.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PidRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PidRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PidRequestDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Email sent successfully"
          },
          "400": {
            "description": "PID has a bad format"
          },
          "404": {
            "description": "PID does not exist or is invalid"
          }
        }
      }
    },
    "/api/v2/pids": {
      "get": {
        "tags": [
          "Pid"
        ],
        "summary": "Retrieves all PIDs.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetPids",
        "parameters": [
          {
            "name": "IncludeProjects",
            "in": "query",
            "description": "Gets or sets a value indicating whether to include projects when retrieving pid information.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeResources",
            "in": "query",
            "description": "Gets or sets a value indicating whether to include resources when retrieving pid information.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeDeleted",
            "in": "query",
            "description": "Gets or sets a value indicating whether to include deleted pid information.",
            "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 PIDs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PidDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PidDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          }
        }
      },
      "options": {
        "tags": [
          "Pid"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/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/import/rdmo": {
      "post": {
        "tags": [
          "Project"
        ],
        "summary": "Imports a project from RDMO.",
        "operationId": "ImportRdmoProject",
        "requestBody": {
          "description": "The RDMO import payload.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RdmoImportDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RdmoImportDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RdmoImportDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Project imported.",
            "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."
          }
        }
      }
    },
    "/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."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/graphs/metadata/content": {
      "get": {
        "tags": [
          "ProjectGraphContent"
        ],
        "summary": "Retrieves a project graph.",
        "operationId": "GetProjectGraphContent",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The ID or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/n-quads": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "ProjectGraphContent"
        ],
        "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}/invitations/{projectInvitationId}": {
      "get": {
        "tags": [
          "ProjectInvitation"
        ],
        "summary": "Retrieves a project invitation for a specified project.",
        "operationId": "GetProjectInvitation",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "projectInvitationId",
            "in": "path",
            "description": "The ID of the project invitation to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the project invitation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectInvitationDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectInvitationDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Project invitation does not exist."
          }
        }
      },
      "delete": {
        "tags": [
          "ProjectInvitation"
        ],
        "summary": "Deletes a project invitation for a specified project.",
        "operationId": "DeleteProjectInvitation",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "projectInvitationId",
            "in": "path",
            "description": "The ID of the project invitation to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Project invitation 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}/invitations": {
      "get": {
        "tags": [
          "ProjectInvitation"
        ],
        "summary": "Retrieves all project invitations for a specified project.",
        "operationId": "GetProjectInvitations",
        "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 invitations.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectInvitationDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectInvitationDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProjectInvitation"
        ],
        "summary": "Creates a project invitation for a specified project.",
        "operationId": "CreateProjectInvitation",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The project invitation data for creation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectInvitationForProjectManipulationDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectInvitationForProjectManipulationDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectInvitationForProjectManipulationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Project invitation created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectInvitationDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectInvitationDtoResponse"
                }
              }
            }
          },
          "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": [
          "ProjectInvitation"
        ],
        "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/{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."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/publications/requests": {
      "post": {
        "tags": [
          "ProjectPublicationRequest"
        ],
        "summary": "Creates a new publication request.",
        "operationId": "CreatePublicationRequest",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The publication request data for creation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicationRequestForCreationDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicationRequestForCreationDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublicationRequestForCreationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Publication request created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectPublicationRequestDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectPublicationRequestDtoResponse"
                }
              }
            }
          },
          "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": [
          "ProjectPublicationRequest"
        ],
        "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}/publications/requests/{publicationRequestId}": {
      "get": {
        "tags": [
          "ProjectPublicationRequest"
        ],
        "summary": "Retrieves a publication request.",
        "operationId": "GetPublicationRequest",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The ID of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "publicationRequestId",
            "in": "path",
            "description": "The ID of the publication request.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the publication request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectPublicationRequestDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectPublicationRequestDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "400": {
            "description": "Provided input has a bad format."
          },
          "404": {
            "description": "Publication request does not exist or has been deleted."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/quotas/{resourceTypeId}": {
      "get": {
        "tags": [
          "ProjectQuota"
        ],
        "summary": "Retrieves a project quota for a specified project and resource type.",
        "operationId": "GetProjectQuota",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceTypeId",
            "in": "path",
            "description": "The ID of the resource type.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the project quota.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectQuotaDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectQuotaDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Project quota does not exist."
          }
        }
      },
      "put": {
        "tags": [
          "ProjectQuota"
        ],
        "summary": "Updates a project quota for a specified project and resource type.",
        "operationId": "UpdateProjectQuota",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceTypeId",
            "in": "path",
            "description": "The ID of the resource type.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The updated project quota data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectQuotaForUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectQuotaForUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectQuotaForUpdateDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Project quota 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."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/quotas": {
      "get": {
        "tags": [
          "ProjectQuota"
        ],
        "summary": "Retrieves all project quotas for a specified project.",
        "operationId": "GetProjectQuotas",
        "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 quotas.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectQuotaDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectQuotaDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "ProjectQuota"
        ],
        "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}/resources": {
      "post": {
        "tags": [
          "ProjectResource"
        ],
        "summary": "Creates a new resource for a specified project.",
        "operationId": "CreateResourceForProject",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The resource data for creation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceForCreationDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceForCreationDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceForCreationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceDtoResponse"
                }
              }
            }
          },
          "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": [
          "ProjectResource"
        ],
        "summary": "Retrieves all resources for a specified project.",
        "operationId": "GetResourcesForProject",
        "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 resources.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          }
        }
      },
      "options": {
        "tags": [
          "ProjectResource"
        ],
        "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}/resources/{resourceId}": {
      "get": {
        "tags": [
          "ProjectResource"
        ],
        "summary": "Retrieves a resource for a specified project.",
        "operationId": "GetResourceForProject",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "400": {
            "description": "Provided input has a bad format."
          },
          "404": {
            "description": "Resource does not exist or has been deleted."
          }
        }
      },
      "put": {
        "tags": [
          "ProjectResource"
        ],
        "summary": "Updates a resource for a specified project.",
        "operationId": "UpdateResourceForProject",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The updated resource data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceForUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceForUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceForUpdateDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource 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": [
          "ProjectResource"
        ],
        "summary": "Deletes a resource for a specified project.",
        "operationId": "DeleteResourceForProject",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource 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."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/quota": {
      "get": {
        "tags": [
          "ProjectResourceQuota"
        ],
        "summary": "Retrieves the resource quota for a specific resource in a project.",
        "operationId": "GetQuotaForResourceForProject",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "versionInfo",
            "in": "query",
            "description": "If versioning information should be loaded.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the resource quota.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceQuotaDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceQuotaDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          }
        }
      },
      "options": {
        "tags": [
          "ProjectResourceQuota"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resource-types": {
      "get": {
        "tags": [
          "ProjectResourceType"
        ],
        "summary": "Retrieves the available resource types information for a specific project.",
        "operationId": "GetAvailableResourceTypesInformationForProject",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the available resourceTypeInformation types information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceTypeInformationDtoIEnumerableResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceTypeInformationDtoIEnumerableResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "Provided input refers to entries that do not exist or have been deleted."
          }
        }
      },
      "options": {
        "tags": [
          "ProjectResourceType"
        ],
        "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}/subprojects": {
      "get": {
        "tags": [
          "ProjectSubProjects"
        ],
        "summary": "Retrieves all subprojects for a specified project.",
        "operationId": "GetSubProjectsForProject",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "IncludeOrganizations",
            "in": "query",
            "description": "Gets or sets a value indicating whether to retrieve the organizations.",
            "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 subprojects.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          }
        }
      },
      "options": {
        "tags": [
          "ProjectSubProjects"
        ],
        "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}/resources/{resourceId}/provenance/specific": {
      "get": {
        "tags": [
          "Provenance"
        ],
        "summary": "Retrieves the specific provenance information associated with a resource.",
        "operationId": "GetSpecificProvenance",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Path",
            "in": "query",
            "description": "Gets or sets the path of the metadata tree.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Version",
            "in": "query",
            "description": "Gets or sets the desired version.\r\nIf the version is null, the newest will be returned.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the specific metadata tree of a resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProvenanceDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProvenanceDtoResponse"
                }
              }
            }
          },
          "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": [
          "Provenance"
        ],
        "summary": "Updates existing specific provenance information of a resource.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "UpdateSpecificProvenance",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The updated provenance information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProvenanceForUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProvenanceForUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProvenanceForUpdateDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Provenance information 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."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/provenance": {
      "options": {
        "tags": [
          "Provenance"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/publication-service": {
      "get": {
        "tags": [
          "PublicationAdvisoryService"
        ],
        "summary": "Retrieves all relevant publication services for an organization.",
        "operationId": "GetPublicationServices",
        "parameters": [
          {
            "name": "SearchTerm",
            "in": "query",
            "description": "Gets or sets the search term used to filter organizations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Language",
            "in": "query",
            "description": "Gets or sets language of name or text (dataPublicationService).",
            "schema": {
              "$ref": "#/components/schemas/AcceptedLanguage"
            }
          },
          {
            "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 publication services.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicationAdvisoryServiceDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicationAdvisoryServiceDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "PublicationAdvisoryService"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/reports/project": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Download for the project report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetProjectReport",
        "responses": {
          "200": {
            "description": "Returns the report.",
            "content": {
              "application/json": { }
            }
          }
        }
      }
    },
    "/api/v2/reports/project/quota": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Download for the project quota report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetProjectQuotaReport",
        "responses": {
          "200": {
            "description": "Returns the report.",
            "content": {
              "application/json": { }
            }
          }
        }
      }
    },
    "/api/v2/reports/user": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Download for the user report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetUserReport",
        "responses": {
          "200": {
            "description": "Returns the report.",
            "content": {
              "application/json": { }
            }
          }
        }
      }
    },
    "/api/v2/reports/application-profile": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Download for the applicationprofile report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetApplicationProfileReport",
        "responses": {
          "200": {
            "description": "Returns the report.",
            "content": {
              "application/json": { }
            }
          }
        }
      }
    },
    "/api/v2/reports/resource": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Download for the resource report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetResourceReport",
        "responses": {
          "200": {
            "description": "Returns the report.",
            "content": {
              "application/json": { }
            }
          }
        }
      }
    },
    "/api/v2/reports/resource/quota": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Download for the resource quota report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetResourceQuotaReport",
        "responses": {
          "200": {
            "description": "Returns the report.",
            "content": {
              "application/json": { }
            }
          }
        }
      }
    },
    "/api/v2/reports/maintenance": {
      "get": {
        "tags": [
          "Report"
        ],
        "summary": "Download for the maintenance report.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "GetMaintenanceReport",
        "responses": {
          "200": {
            "description": "Returns the report.",
            "content": {
              "application/json": { }
            }
          }
        }
      }
    },
    "/api/v2/reports": {
      "options": {
        "tags": [
          "Report"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/resources/{resourceId}": {
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Retrieves a resource by its ID.",
        "operationId": "GetResource",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "Resource does not exist or has been deleted."
          }
        }
      }
    },
    "/api/v2/resources": {
      "options": {
        "tags": [
          "Resource"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/graphs/metadata/content": {
      "get": {
        "tags": [
          "ResourceGraphContent"
        ],
        "summary": "Retrieves a resource graph.",
        "operationId": "GetResourceGraphContent",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The ID of the project that the resource belongs to.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/n-quads": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "ResourceGraphContent"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/resource-types/types": {
      "get": {
        "tags": [
          "ResourceType"
        ],
        "summary": "Retrieves the entire global resource types information.",
        "operationId": "GetAllResourceTypesInformation",
        "responses": {
          "200": {
            "description": "Returns the entire global resource types information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceTypeInformationDtoIEnumerableResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceTypeInformationDtoIEnumerableResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/resource-types/types/{resourceTypeId}": {
      "get": {
        "tags": [
          "ResourceType"
        ],
        "summary": "Retrieves the resource type information for a specific resource type.",
        "operationId": "GetResourceTypeInformation",
        "parameters": [
          {
            "name": "resourceTypeId",
            "in": "path",
            "description": "The ID of the resource type to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the resource type information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceTypeInformationDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceTypeInformationDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource type does not exist."
          }
        }
      }
    },
    "/api/v2/resource-types": {
      "options": {
        "tags": [
          "ResourceType"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/resource-types/gitlab/projects": {
      "get": {
        "tags": [
          "ResourceTypeGitLab"
        ],
        "summary": "Retrieves all GitLab projects, that the user is a member of, based on the provided credentials.",
        "operationId": "GetAllGitlabProjects",
        "parameters": [
          {
            "name": "Domain",
            "in": "query",
            "description": "Gets domain/Host of the GitLab Provider.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri",
              "example": "https://git.rwth-aachen.de/"
            },
            "example": "https://git.rwth-aachen.de/"
          },
          {
            "name": "AccessToken",
            "in": "query",
            "description": "Gets gitLab Project or Group Access Token.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the GitLab projects.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GitlabProjectDtoIEnumerableResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GitlabProjectDtoIEnumerableResponse"
                }
              }
            }
          },
          "403": {
            "description": "GitLab access token is invalid."
          }
        }
      }
    },
    "/api/v2/resource-types/gitlab/projects/{gitlabProjectId}": {
      "get": {
        "tags": [
          "ResourceTypeGitLab"
        ],
        "summary": "Retrieves a single GitLab project, that the user is a member of, based on the provided credentials.",
        "operationId": "GetGitlabProject",
        "parameters": [
          {
            "name": "gitlabProjectId",
            "in": "path",
            "description": "The ID of the GitLab project.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Domain",
            "in": "query",
            "description": "Gets domain/Host of the GitLab Provider.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri",
              "example": "https://git.rwth-aachen.de/"
            },
            "example": "https://git.rwth-aachen.de/"
          },
          {
            "name": "AccessToken",
            "in": "query",
            "description": "Gets gitLab Project or Group Access Token.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the GitLab project.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GitlabProjectDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GitlabProjectDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "GitLab access token is invalid."
          }
        }
      }
    },
    "/api/v2/resource-types/gitlab/projects/{gitlabProjectId}/branches": {
      "get": {
        "tags": [
          "ResourceTypeGitLab"
        ],
        "summary": "Retrieves all branches of a GitLab project, that the user is a member of, based on the provided credentials.",
        "operationId": "GetAllGitlabBranchesForProject",
        "parameters": [
          {
            "name": "gitlabProjectId",
            "in": "path",
            "description": "The ID of the GitLab project.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Domain",
            "in": "query",
            "description": "Gets domain/Host of the GitLab Provider.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri",
              "example": "https://git.rwth-aachen.de/"
            },
            "example": "https://git.rwth-aachen.de/"
          },
          {
            "name": "AccessToken",
            "in": "query",
            "description": "Gets gitLab Project or Group Access Token.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the GitLab project.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GitlabBranchDtoIEnumerableResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GitlabBranchDtoIEnumerableResponse"
                }
              }
            }
          },
          "403": {
            "description": "GitLab access token is invalid."
          }
        }
      }
    },
    "/api/v2/resource-types/gitlab": {
      "options": {
        "tags": [
          "ResourceTypeGitLab"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/type/config/linked-data": {
      "get": {
        "tags": [
          "ResourceTypeOptions"
        ],
        "summary": "Retreives the Linked Data configuration options for a given resource.",
        "operationId": "GetResourceTypeConfigLinkedData",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project of that the user is at least member.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Linked Data configuration options for the provided resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkedDataOptionsDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkedDataOptionsDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "Provided input refers configuration options that do not exist for the resource."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/type/config/gitlab": {
      "get": {
        "tags": [
          "ResourceTypeOptions"
        ],
        "summary": "Retreives the GitLab configuration options for a given resource.",
        "operationId": "GetResourceTypeConfigGitLab",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project of that the user is at least member.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the GitLab configuration options for the provided resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GitLabOptionsDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GitLabOptionsDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "Provided input refers configuration options that do not exist for the resource."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/type/config/ds-nrw-web": {
      "get": {
        "tags": [
          "ResourceTypeOptions"
        ],
        "summary": "Retreives the DS NRW Web configuration options for a given resource.",
        "operationId": "GetResourceTypeConfigDsNrwWeb",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project of that the user is at least member.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the DS NRW Web configuration options for the provided resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStorageNrwWebOptionsDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStorageNrwWebOptionsDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "Provided input refers configuration options that do not exist for the resource."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/type/config/ds-nrw-s3": {
      "get": {
        "tags": [
          "ResourceTypeOptions"
        ],
        "summary": "Retreives the DS NRW S3 configuration options for a given resource.",
        "operationId": "GetResourceTypeConfigDsNrwS3",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project of that the user is at least member.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the DS NWR S3 configuration options for the provided resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStorageNrwS3OptionsDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStorageNrwS3OptionsDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "Provided input refers configuration options that do not exist for the resource."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/type/config/ds-nrw-s3-worm": {
      "get": {
        "tags": [
          "ResourceTypeOptions"
        ],
        "summary": "Retreives the DS NRW S3 WORM configuration options for a given resource.",
        "operationId": "GetResourceTypeConfigDsNrwS3Worm",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Id or slug of the project of that the user is at least member.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The ID of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the DS NRW S3 WORM configuration options for the provided resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStorageNrwS3WormOptionsDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStorageNrwS3WormOptionsDtoResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "Provided input refers configuration options that do not exist for the resource."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/type/config": {
      "options": {
        "tags": [
          "ResourceTypeOptions"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/roles/{roleId}": {
      "get": {
        "tags": [
          "Role"
        ],
        "summary": "Retrieves a role by ID.",
        "operationId": "GetRole",
        "parameters": [
          {
            "name": "roleId",
            "in": "path",
            "description": "The ID of the role.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the role.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Role does not exist."
          }
        }
      }
    },
    "/api/v2/roles": {
      "get": {
        "tags": [
          "Role"
        ],
        "summary": "Retrieves all roles.",
        "operationId": "GetRoles",
        "parameters": [
          {
            "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 roles.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Role"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/search": {
      "get": {
        "tags": [
          "Search"
        ],
        "summary": "Retrieves a search result by given search parameters.",
        "operationId": "GetSearchResults",
        "parameters": [
          {
            "name": "Query",
            "in": "query",
            "description": "Gets or sets the search query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "UseAdvancedSyntax",
            "in": "query",
            "description": "Gets or sets a value indicating whether set true for advanced Elasticsearch search syntax",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Languages",
            "in": "query",
            "description": "Gets or sets set the used languages",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "Category",
            "in": "query",
            "description": "Gets or sets set the category filter",
            "schema": {
              "$ref": "#/components/schemas/SearchCategoryType"
            }
          },
          {
            "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 search result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResultDtoPagedSearchResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResultDtoPagedSearchResponse"
                }
              }
            }
          },
          "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": [
          "Search"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/self": {
      "get": {
        "tags": [
          "Self"
        ],
        "summary": "Retrieves the current authenticated user.",
        "operationId": "GetCurrentUser",
        "responses": {
          "200": {
            "description": "Returns the current authenticated user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDtoResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Self"
        ],
        "summary": "Updates the current authenticated user.",
        "operationId": "UpdateCurrentUser",
        "requestBody": {
          "description": "The updated user data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserForUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UserForUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UserForUpdateDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "User updated."
          },
          "404": {
            "description": "Provided input refers to entries that do not exist or have been deleted."
          }
        }
      },
      "delete": {
        "tags": [
          "Self"
        ],
        "summary": "Deletes the current authenticated user.",
        "operationId": "DeleteCurrentUser",
        "responses": {
          "204": {
            "description": "User deleted."
          },
          "404": {
            "description": "Provided input refers to entries that do not exist or have been deleted."
          },
          "409": {
            "description": "User has active project roles."
          }
        }
      },
      "options": {
        "tags": [
          "Self"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/self/tos": {
      "post": {
        "tags": [
          "Self"
        ],
        "summary": "Accepts the current Terms Of Service for the current authenticated user.",
        "operationId": "AcceptCurrentTos",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserTermsOfServiceAcceptDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UserTermsOfServiceAcceptDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UserTermsOfServiceAcceptDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Terms of Service accepted."
          },
          "404": {
            "description": "Provided input refers to entries that do not exist or have been deleted."
          }
        }
      }
    },
    "/api/v2/self/emails": {
      "post": {
        "tags": [
          "Self"
        ],
        "summary": "Confirms the email of a user.",
        "operationId": "ConfirmUserEmail",
        "parameters": [
          {
            "name": "ConfirmationToken",
            "in": "query",
            "description": "Gets or initializes the confirmation token for user email confirmation.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Contact email confirmed."
          },
          "404": {
            "description": "Provided input refers to entries that do not exist or have been deleted."
          },
          "400": {
            "description": "Provided input has a bad format."
          }
        }
      }
    },
    "/api/v2/self/emails/resend": {
      "post": {
        "tags": [
          "Self"
        ],
        "summary": "Resends the confirmation email for a user.",
        "operationId": "ResendUserEmailConfirmation",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/self/identities": {
      "post": {
        "tags": [
          "Self"
        ],
        "summary": "Initiates user merging for the current user.",
        "operationId": "InitiateUserMerge",
        "parameters": [
          {
            "name": "IdentityProvider",
            "in": "query",
            "description": "Gets the identity provider from which user data is to be merged.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/IdentityProviders"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the user merge dto.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserMergeDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserMergeDtoResponse"
                }
              }
            }
          },
          "400": {
            "description": "Provided input has a bad format."
          }
        }
      }
    },
    "/api/v2/self/project-invitations": {
      "post": {
        "tags": [
          "Self"
        ],
        "summary": "Resolves a project invitation for the authenticated user.",
        "operationId": "ResolveProjectInvitation",
        "requestBody": {
          "description": "The project invitation resolve data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectInvitationResolveDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectInvitationResolveDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectInvitationResolveDto"
              }
            }
          }
        },
        "responses": {
          "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."
          }
        }
      }
    },
    "/api/v2/self/data-proccessing-consent": {
      "post": {
        "tags": [
          "Self"
        ],
        "summary": "Gives the consent for data processing for the current authenticated user.",
        "operationId": "GiveDataProcessingConsent",
        "responses": {
          "204": {
            "description": "Data processing consent given."
          },
          "404": {
            "description": "Provided input refers to entries that do not exist or have been deleted."
          }
        }
      }
    },
    "/api/v2/self/active-project-roles-count": {
      "get": {
        "tags": [
          "Self"
        ],
        "summary": "Retrieves the number of active project roles for the currently authenticated user.",
        "operationId": "GetActiveProjectRolesCount",
        "responses": {
          "200": {
            "description": "Returns the number of active project roles for the currently authenticated user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserProjectRoleCountDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserProjectRoleCountDtoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/self/api-tokens/{apiTokenId}": {
      "get": {
        "tags": [
          "SelfApiToken"
        ],
        "summary": "Retrieves an API token for the current authenticated user.",
        "operationId": "GetApiToken",
        "parameters": [
          {
            "name": "apiTokenId",
            "in": "path",
            "description": "The ID of the token.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the API token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiTokenDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiTokenDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "API token does not exist."
          }
        }
      },
      "delete": {
        "tags": [
          "SelfApiToken"
        ],
        "summary": "Revokes an API token for the current authenticated user.",
        "operationId": "RevokeToken",
        "parameters": [
          {
            "name": "apiTokenId",
            "in": "path",
            "description": "The ID of the token.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "API token revoked/deleted."
          },
          "400": {
            "description": "Provided input has a bad format."
          },
          "404": {
            "description": "Provided input refers to entries that do not exist or have been deleted."
          }
        }
      }
    },
    "/api/v2/self/api-tokens": {
      "get": {
        "tags": [
          "SelfApiToken"
        ],
        "summary": "Retrieves all API tokens for the current authenticated user.",
        "operationId": "GetAllApiTokens",
        "parameters": [
          {
            "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 API tokens of the current user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiTokenDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiTokenDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "SelfApiToken"
        ],
        "summary": "Creates an API token for the current authenticated user.",
        "operationId": "CreateApiToken",
        "requestBody": {
          "description": "The API token data for creation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiTokenForCreationDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiTokenForCreationDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ApiTokenForCreationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "API token created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiTokenDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiTokenDtoResponse"
                }
              }
            }
          },
          "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": [
          "SelfApiToken"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/self/session": {
      "get": {
        "tags": [
          "SelfSession"
        ],
        "summary": "Initiate the login workflow with the default (NFDI4Ing AAI) provider.",
        "operationId": "Login",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "options": {
        "tags": [
          "SelfSession"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/self/session/{externalAuthenticatorId}": {
      "get": {
        "tags": [
          "SelfSession"
        ],
        "summary": "Initiate the login workflow with specific provider.",
        "operationId": "LoginWithProvider",
        "parameters": [
          {
            "name": "externalAuthenticatorId",
            "in": "path",
            "description": "The ID of the external authenticator to use for login.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/self/session/merge/{externalAuthenticatorId}": {
      "get": {
        "tags": [
          "SelfSession"
        ],
        "summary": "Initiate the merge workflow with specific provider.",
        "operationId": "Merge",
        "parameters": [
          {
            "name": "externalAuthenticatorId",
            "in": "path",
            "description": "The ID of the external authenticator to use for login.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/self/session/logout": {
      "post": {
        "tags": [
          "SelfSession"
        ],
        "summary": "Initiate the Log out workflow.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/storage/{encodedPath}": {
      "head": {
        "tags": [
          "Storage"
        ],
        "summary": "Checks if a file or folder exists at the specified path within the given project and resource.",
        "operationId": "HeadFileFromStorage",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The url encoded path of the file.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "version",
            "in": "query",
            "description": "The version to get. Null will default to the latest.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "File or folder exists. Metadata is returned via response headers."
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "File or folder not found at the specified path."
          },
          "400": {
            "description": "Invalid path or query parameters."
          }
        }
      },
      "delete": {
        "tags": [
          "Storage"
        ],
        "summary": "Deletes a file or folder at the specified path within the given project and resource.",
        "operationId": "DeleteFileFromStorage",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The url encoded path of the file.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Blob deleted."
          },
          "404": {
            "description": "Blob does not exist."
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/storage": {
      "get": {
        "tags": [
          "Storage"
        ],
        "summary": "Lists the contents of a directory in the storage tree.",
        "operationId": "ListFilesFromStorage",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Gets or sets the field name used for ordering the results.\r\n\r\n`Sorting is not yet supported for the file tree endpoint, but this property is included for consistency with other query parameter classes and to allow for future extensibility.`.\r\nUse \"asc\" or \"desc\" as the direction.\r\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Prefix",
            "in": "query",
            "description": "Gets or sets the prefix filter.\r\n\r\n\r\nThe prefix to filter the storage objects by.\r\nSlashes are taken into account when filtering by prefix.\r\nThe forwads slash (/) character is treated as the path separator.\r\nThe lookup is only done for one level.\r\nTo look into the next level, include the trailing slash to indicate the next level of the tree.\r\n",
            "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"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paged list of file tree entries for the specified resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileTreeDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileTreeDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "Resource not found."
          },
          "400": {
            "description": "Invalid query parameters."
          }
        }
      },
      "options": {
        "tags": [
          "Storage"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/storage/{encodedPath}/content": {
      "get": {
        "tags": [
          "StorageContent"
        ],
        "summary": "Retrieves the raw content of a file, optionally at a specific version.",
        "operationId": "GetStorageRaw",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The url encoded path of the file.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the raw file content.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "302": {
            "description": "Redirects to the file download URL."
          },
          "403": {
            "description": "User is missing authorization requirements."
          },
          "404": {
            "description": "The specified file was not found."
          },
          "400": {
            "description": "Invalid path or query parameters."
          }
        }
      },
      "post": {
        "tags": [
          "StorageContent"
        ],
        "summary": "Uploads a new file with raw content.",
        "operationId": "PostStorageRaw",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The url encoded path of the file.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Blob created."
          },
          "400": {
            "description": "Blob already exists."
          },
          "415": {
            "description": "Blob is not of the type \"multipart/form-data\""
          },
          "413": {
            "description": "Blob is to large."
          }
        }
      },
      "put": {
        "tags": [
          "StorageContent"
        ],
        "summary": "Updates or overwrites a file with new raw content.",
        "operationId": "PutStorageRaw",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "description": "The url encoded path of the file.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Blob updated."
          },
          "400": {
            "description": "Blob already exists."
          },
          "415": {
            "description": "Blob is not of the type \"multipart/form-data\""
          },
          "413": {
            "description": "Blob is to large."
          }
        }
      },
      "options": {
        "tags": [
          "StorageContent"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "encodedPath",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/system/status/internal": {
      "get": {
        "tags": [
          "SystemStatus"
        ],
        "summary": "Retrieves the internal messages.",
        "operationId": "GetInternalMessages",
        "parameters": [
          {
            "name": "StartDateAfter",
            "in": "query",
            "description": "Gets or sets will only return messages that have their start date after this date (UTC).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "StartDateBefore",
            "in": "query",
            "description": "Gets or sets will only return messages that have their start date before this date (UTC).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "EndDateAfter",
            "in": "query",
            "description": "Gets or sets will only return messages that have their end date after this date (UTC).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "EndDateBefore",
            "in": "query",
            "description": "Gets or sets will only return messages that have their end date before this date (UTC).",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Type",
            "in": "query",
            "description": "Gets or sets filter messages by their type  (e.g. information, warning, error).",
            "schema": {
              "$ref": "#/components/schemas/MessageType"
            }
          },
          {
            "name": "SearchTerm",
            "in": "query",
            "description": "Gets or sets filter messages by text contained in the messages or title.",
            "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"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "The desired language.",
            "schema": {
              "$ref": "#/components/schemas/AcceptedLanguage"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the internal message.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageDtoPagedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/system/status/noc": {
      "get": {
        "tags": [
          "SystemStatus"
        ],
        "summary": "Retrieves the NOC messages.",
        "operationId": "GetNocMessages",
        "parameters": [
          {
            "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"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "The desired language.",
            "schema": {
              "$ref": "#/components/schemas/AcceptedLanguage"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the NOC messages.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageDtoPagedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/system/status/noc/active": {
      "get": {
        "tags": [
          "SystemStatus"
        ],
        "summary": "Retrieves the NOC messages.",
        "operationId": "GetActiveNocMessages",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "The desired language.",
            "schema": {
              "$ref": "#/components/schemas/AcceptedLanguage"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the active NOC messages.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageDtoIEnumerableResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageDtoIEnumerableResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/system/status": {
      "options": {
        "tags": [
          "SystemStatus"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/titles/{titleId}": {
      "get": {
        "tags": [
          "Title"
        ],
        "summary": "Retrieves a title by ID.",
        "operationId": "GetTitle",
        "parameters": [
          {
            "name": "titleId",
            "in": "path",
            "description": "The ID of the title.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the title.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TitleDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TitleDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Title does not exist."
          }
        }
      }
    },
    "/api/v2/titles": {
      "get": {
        "tags": [
          "Title"
        ],
        "summary": "Retrieves all titles.",
        "operationId": "GetTitles",
        "parameters": [
          {
            "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 titles.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TitleDtoIEnumerableResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TitleDtoIEnumerableResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Title"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/tos": {
      "get": {
        "tags": [
          "Tos"
        ],
        "summary": "Retrieves the current Terms of Service version.",
        "operationId": "GetTos",
        "responses": {
          "200": {
            "description": "Returns the current Terms of Service version.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TermsOfServiceDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TermsOfServiceDtoResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Tos"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/trees/files": {
      "get": {
        "tags": [
          "Tree"
        ],
        "summary": "Retrieves the file tree associated with a resource.",
        "description": "The `OrderBy` query is currently not supported.",
        "operationId": "GetFileTree",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Path",
            "in": "query",
            "description": "Gets or sets the path of the file tree.",
            "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 file tree of a resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileTreeDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileTreeDtoPagedResponse"
                }
              }
            }
          },
          "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."
          }
        },
        "deprecated": true
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/trees/metadata": {
      "get": {
        "tags": [
          "Tree"
        ],
        "summary": "Retrieves the metadata tree associated with a resource.",
        "operationId": "GetMetadataTree",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Path",
            "in": "query",
            "description": "Gets or sets the path of the metadata tree.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Format",
            "in": "query",
            "description": "Gets or sets the format of the RDF data.",
            "schema": {
              "$ref": "#/components/schemas/RdfFormat"
            }
          },
          {
            "name": "IncludeExtractedMetadata",
            "in": "query",
            "description": "Gets or sets a value indicating whether gets or sets if extracted metadata should be included.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeProvenance",
            "in": "query",
            "description": "Gets or sets a value indicating whether gets or sets if provenance metadata should be included.",
            "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 metadata tree of a resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataTreeDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataTreeDtoPagedResponse"
                }
              }
            }
          },
          "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."
          }
        },
        "deprecated": true
      },
      "post": {
        "tags": [
          "Tree"
        ],
        "summary": "Creates a new metadata tree for a resource.",
        "operationId": "CreateMetadataTree",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The metadata tree data for creation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataTreeForCreationDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataTreeForCreationDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataTreeForCreationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Metadata tree created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataTreeDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataTreeDtoResponse"
                }
              }
            }
          },
          "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."
          }
        },
        "deprecated": true
      },
      "put": {
        "tags": [
          "Tree"
        ],
        "summary": "Updates an existing metadata tree of a resource.",
        "operationId": "UpdateMetadataTree",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The updated metadata tree data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataTreeForUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataTreeForUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataTreeForUpdateDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Metadata tree 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."
          }
        },
        "deprecated": true
      },
      "delete": {
        "tags": [
          "Tree"
        ],
        "summary": "Deletes (invalidates) a metadata tree associated with a resource.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "DeleteMetadataTree",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The dto for the deletion.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataTreeForDeletionDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataTreeForDeletionDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataTreeForDeletionDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Metadata tree 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."
          }
        },
        "deprecated": true
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/trees/metadata/specific": {
      "get": {
        "tags": [
          "Tree"
        ],
        "summary": "Retrieves the specific metadata tree associated with a resource.",
        "operationId": "GetSpecificMetadataTree",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Path",
            "in": "query",
            "description": "Gets or sets the path of the metadata tree.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Format",
            "in": "query",
            "description": "Gets or sets the format of the RDF data.",
            "schema": {
              "$ref": "#/components/schemas/RdfFormat"
            }
          },
          {
            "name": "IncludeExtractedMetadata",
            "in": "query",
            "description": "Gets or sets a value indicating whether gets or sets if extracted metadata should be included.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeProvenance",
            "in": "query",
            "description": "Gets or sets a value indicating whether gets or sets if provenance should be included.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Version",
            "in": "query",
            "description": "Gets or sets the desired version.\r\nIf the version is null, the newest will be returned.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the specific metadata tree of a resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataTreeDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataTreeDtoResponse"
                }
              }
            }
          },
          "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."
          }
        },
        "deprecated": true
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/trees/metadata/extracted": {
      "post": {
        "tags": [
          "Tree"
        ],
        "summary": "Creates a new extracted metadata tree for a resource.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "CreateExtractedMetadataTree",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The metadata tree data for creation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractedMetadataTreeForCreationDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractedMetadataTreeForCreationDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractedMetadataTreeForCreationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Extracted Metadata tree created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataTreeDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataTreeDtoResponse"
                }
              }
            }
          },
          "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."
          }
        },
        "deprecated": true
      },
      "put": {
        "tags": [
          "Tree"
        ],
        "summary": "Updates an existing metadata tree of a resource.",
        "description": "<p><strong>Required JWT roles for access:</strong> <code>administrator</code>.</p>",
        "operationId": "UpdateExtractedMetadataTree",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The unique identifier or slug of the project.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifier of the resource.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The updated metadata tree data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractedMetadataTreeForUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractedMetadataTreeForUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractedMetadataTreeForUpdateDto"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Metadata tree 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."
          }
        },
        "deprecated": true
      }
    },
    "/api/v2/projects/{projectId}/resources/{resourceId}/trees": {
      "options": {
        "tags": [
          "Tree"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/users": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Retrieves all users.",
        "operationId": "GetUsers",
        "parameters": [
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Gets or sets the field by which the search results are ordered. Defaults to \"firstName\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SearchTerm",
            "in": "query",
            "description": "Gets or sets the search term.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "IncludeUserWithUnconfirmedEmailAddress",
            "in": "query",
            "description": "Gets or sets a value indicating whether users with unconfirmed EmailAddress should be returend.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the users.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicUserDtoIEnumerableResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicUserDtoIEnumerableResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          }
        }
      },
      "options": {
        "tags": [
          "User"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/user-notifications/{notificationId}": {
      "get": {
        "tags": [
          "UserNotificationOptOut"
        ],
        "summary": "Retrieves a user notification opt out for a specified notification.",
        "operationId": "GetUserNotification",
        "parameters": [
          {
            "name": "notificationId",
            "in": "path",
            "description": "The Id of the notification.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the user notification opt out.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserNotificationOptOutDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserNotificationOptOutDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "User notification does not exist."
          }
        }
      }
    },
    "/api/v2/user-notifications": {
      "get": {
        "tags": [
          "UserNotificationOptOut"
        ],
        "summary": "Retrieves all user notification opt outs of the current user.",
        "operationId": "GetUserNotifications",
        "parameters": [
          {
            "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 user notification opt outs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserNotificationOptOutDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserNotificationOptOutDtoPagedResponse"
                }
              }
            }
          },
          "403": {
            "description": "User is missing authorization requirements."
          }
        }
      },
      "post": {
        "tags": [
          "UserNotificationOptOut"
        ],
        "summary": "Creates a user notification opt out for a specified user.",
        "operationId": "CreateUserNotification",
        "requestBody": {
          "description": "The user notification opt out data for creation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserNotificationForCreationDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UserNotificationForCreationDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UserNotificationForCreationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "User notification opt out created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserNotificationOptOutDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserNotificationOptOutDtoResponse"
                }
              }
            }
          },
          "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": [
          "UserNotificationOptOut"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/user-notifications/{id}": {
      "delete": {
        "tags": [
          "UserNotificationOptOut"
        ],
        "summary": "Deletes a user notification opt out for a specified user.",
        "operationId": "DeleteUserNotification",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Id of the user notification opt out.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "User notification opt out 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/visibilities/{visibilityId}": {
      "get": {
        "tags": [
          "Visibility"
        ],
        "summary": "Retrieves a visibility by ID.",
        "operationId": "GetVisibility",
        "parameters": [
          {
            "name": "visibilityId",
            "in": "path",
            "description": "The ID of the visibility.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the visibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VisibilityDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VisibilityDtoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Visibility does not exist."
          }
        }
      }
    },
    "/api/v2/visibilities": {
      "get": {
        "tags": [
          "Visibility"
        ],
        "summary": "Retrieves all visibilities.",
        "operationId": "GetVisibilities",
        "parameters": [
          {
            "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 visibilities.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VisibilityDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VisibilityDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Visibility"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/vocabularies": {
      "get": {
        "tags": [
          "Vocabulary"
        ],
        "summary": "Retrieves top-level instances from vocabularies.",
        "operationId": "GetVocabularies",
        "parameters": [
          {
            "name": "SearchTerm",
            "in": "query",
            "description": "Gets or sets the search term used to filter vocabularies.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Language",
            "in": "query",
            "description": "Gets or sets the language for which the vocabularies are requested.",
            "schema": {
              "$ref": "#/components/schemas/AcceptedLanguage"
            }
          },
          {
            "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 top-level vocabularies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VocabularyDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VocabularyDtoPagedResponse"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Vocabulary"
        ],
        "summary": "Responds with the HTTP methods allowed for the endpoint.",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v2/vocabularies/{vocabulary}/raw": {
      "get": {
        "tags": [
          "Vocabulary"
        ],
        "summary": "Retrieves a raw vocabulary by its identifier.",
        "operationId": "GetRawVocabulary",
        "parameters": [
          {
            "name": "vocabulary",
            "in": "path",
            "description": "The URI of the vocabulary.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the raw vocabulary.",
            "content": {
              "text/turtle": {
                "schema": {
                  "type": "string"
                }
              },
              "application/ld+json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/vocabularies/instances": {
      "get": {
        "tags": [
          "Vocabulary"
        ],
        "summary": "Retrieves vocabulary instances.",
        "operationId": "GetVocabularyInstances",
        "parameters": [
          {
            "name": "Class",
            "in": "query",
            "description": "Gets or sets the URI class, which is a required field.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          },
          {
            "name": "SearchTerm",
            "in": "query",
            "description": "Gets or sets the search term used to filter vocabulary instances.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Language",
            "in": "query",
            "description": "Gets or sets the language for which the vocabulary instances are requested.",
            "schema": {
              "$ref": "#/components/schemas/AcceptedLanguage"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Gets or sets number of items per page. The maximum number of items per page is `150`.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "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": "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 vocabulary instances.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VocabularyInstanceDtoPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VocabularyInstanceDtoPagedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/vocabularies/instances/{instance}": {
      "get": {
        "tags": [
          "Vocabulary"
        ],
        "summary": "Retrieves a single instance from a vocabulary.",
        "description": "Could be a top-level instance, or an intermediate-level instance from a vocabulary.",
        "operationId": "GetVocabularyInstance",
        "parameters": [
          {
            "name": "instance",
            "in": "path",
            "description": "The URI of the vocabulary instance to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "The preferred language for the instance data.",
            "schema": {
              "$ref": "#/components/schemas/AcceptedLanguage"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the vocabulary instance.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VocabularyInstanceDtoResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/VocabularyInstanceDtoResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AcceptedLanguage": {
        "enum": [
          "de",
          "en"
        ],
        "type": "string",
        "description": "Accepted languages by the API."
      },
      "ActivityLogDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "apiPath": {
            "type": "string"
          },
          "httpAction": {
            "type": "string"
          },
          "controllerName": {
            "type": "string",
            "nullable": true
          },
          "actionName": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "activityTimestamp": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) for an activity log."
      },
      "ActivityLogDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivityLogDto"
            },
            "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
      },
      "ApiTokenDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier of the API token.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "Gets the name associated with the API token."
          },
          "creationDate": {
            "type": "string",
            "description": "Gets the date when the API token was created.",
            "format": "date-time"
          },
          "expiryDate": {
            "type": "string",
            "description": "Gets the expiry date of the API token.",
            "format": "date-time"
          },
          "token": {
            "type": "string",
            "description": "Gets or sets the actual token used for authentication.",
            "nullable": true
          },
          "owner": {
            "$ref": "#/components/schemas/UserMinimalDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents an API token used for authentication."
      },
      "ApiTokenDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiTokenDto"
            },
            "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
      },
      "ApiTokenDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ApiTokenDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApiTokenForCreationDto": {
        "required": [
          "expiresInDays",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or sets the name of the API token."
          },
          "expiresInDays": {
            "maximum": 370,
            "minimum": 1,
            "type": "integer",
            "description": "Gets or sets the expiration duration of the token in days.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the creation of an API token."
      },
      "ApplicationProfileDto": {
        "required": [
          "uri"
        ],
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Gets the URI associated with the application profile.",
            "format": "uri"
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name for the application profile.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Gets the description of the application profile.",
            "nullable": true
          },
          "definition": {
            "$ref": "#/components/schemas/RdfDefinitionDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents an application profile data transfer object."
      },
      "ApplicationProfileDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationProfileDto"
            },
            "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
      },
      "ApplicationProfileDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ApplicationProfileDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApplicationProfileForCreationDto": {
        "required": [
          "definition",
          "name",
          "uri"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the name of the application profile."
          },
          "uri": {
            "type": "string",
            "description": "Gets or initializes the URI of the application profile.",
            "format": "uri"
          },
          "definition": {
            "$ref": "#/components/schemas/RdfDefinitionForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the creation of an application profile."
      },
      "ApplicationProfileForCreationDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ApplicationProfileForCreationDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApplicationProfileForResourceCreationDto": {
        "required": [
          "uri"
        ],
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Gets or initializes the URI of the resource for the application profile.",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the creation of an application profile for a resource."
      },
      "ApplicationProfileMinimalDto": {
        "required": [
          "uri"
        ],
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Gets the URI associated with the application profile.",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "description": "Represents a minimalistic application profile data transfer object."
      },
      "BackfillRequestDto": {
        "type": "object",
        "properties": {
          "batchSize": {
            "type": "integer",
            "format": "int32"
          },
          "dryRun": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "BackfillResultDto": {
        "type": "object",
        "properties": {
          "backfillName": {
            "type": "string"
          },
          "processedCount": {
            "type": "integer",
            "format": "int64"
          },
          "publishedCount": {
            "type": "integer",
            "format": "int64"
          },
          "failedCount": {
            "type": "integer",
            "format": "int64"
          },
          "skippedCount": {
            "type": "integer",
            "format": "int64"
          },
          "dryRun": {
            "type": "boolean"
          },
          "duration": {
            "type": "string",
            "format": "date-span"
          }
        },
        "additionalProperties": false
      },
      "CoscineHttpMethod": {
        "enum": [
          "GET",
          "HEAD",
          "POST",
          "PUT",
          "DELETE"
        ],
        "type": "string",
        "description": "An enumeration representing the supported HTTP verbs."
      },
      "CoscineRoleDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Gets or sets the name of the role (e.g. \"User\", \"QuotaAdmin\")."
          }
        },
        "additionalProperties": false,
        "description": "Data Transfer Object (DTO) that represents a user role within Coscine.///"
      },
      "CoscineVisibility": {
        "enum": [
          "ProjectMembers",
          "Public"
        ],
        "type": "string",
        "description": "An enumeration representing the supported visibilities verbs."
      },
      "CreateDatasourceDto": {
        "type": "object",
        "properties": {
          "resourceTypeOptionId": {
            "type": "string",
            "description": "Gets or initializes the unique identifier of the resource type option.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object for creating a datasource."
      },
      "CreateDatasourceDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CreateDatasourceDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DataHamsterKpiDto": {
        "type": "object",
        "properties": {
          "measurementId": {
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "start": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "additionalInfo": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "query": {
            "type": "string",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "DataHamsterKpiDtoIEnumerableResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DataHamsterKpiDto"
            },
            "nullable": true
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DataHamsterKpiDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DataHamsterKpiDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DataStorageNrwS3OptionsDto": {
        "required": [
          "accessKeyRead",
          "accessKeyWrite",
          "bucketName",
          "endpoint",
          "secretKeyRead",
          "secretKeyWrite"
        ],
        "type": "object",
        "properties": {
          "bucketName": {
            "type": "string",
            "description": "Gets the name of the bucket associated with DataStorage.nrw S3."
          },
          "accessKeyRead": {
            "type": "string",
            "description": "Gets the access key for reading from the DataStorage.nrw S3 bucket."
          },
          "secretKeyRead": {
            "type": "string",
            "description": "Gets the secret key for reading from the DataStorage.nrw S3 bucket."
          },
          "accessKeyWrite": {
            "type": "string",
            "description": "Gets the access key for writing to the DataStorage.nrw S3 bucket."
          },
          "secretKeyWrite": {
            "type": "string",
            "description": "Gets the secret key for writing to the DataStorage.nrw S3 bucket."
          },
          "endpoint": {
            "type": "string",
            "description": "Gets the endpoint for the DataStorage.nrw S3 bucket."
          },
          "size": {
            "$ref": "#/components/schemas/QuotaDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for DataStorage.nrw S3 options."
      },
      "DataStorageNrwS3OptionsDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DataStorageNrwS3OptionsDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DataStorageNrwS3ResourceTypeOptionsForManipulationDto": {
        "required": [
          "quota"
        ],
        "type": "object",
        "properties": {
          "quota": {
            "$ref": "#/components/schemas/QuotaForManipulationDto"
          },
          "lifecycleOptions": {
            "$ref": "#/components/schemas/LifecycleOptionsForManipulationDto"
          },
          "replicationGroup": {
            "$ref": "#/components/schemas/DsNrwReplicationGroupDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for manipulating DataStorage.nrw S3 resource type options."
      },
      "DataStorageNrwS3WormOptionsDto": {
        "required": [
          "accessKeyRead",
          "accessKeyWrite",
          "bucketName",
          "endpoint",
          "secretKeyRead",
          "secretKeyWrite"
        ],
        "type": "object",
        "properties": {
          "bucketName": {
            "type": "string",
            "description": "Gets the name of the bucket associated with DataStorage.nrw S3 WORM."
          },
          "accessKeyRead": {
            "type": "string",
            "description": "Gets the access key for reading from the DataStorage.nrw S3 WORM bucket."
          },
          "secretKeyRead": {
            "type": "string",
            "description": "Gets the secret key for reading from the DataStorage.nrw S3 WORM bucket."
          },
          "accessKeyWrite": {
            "type": "string",
            "description": "Gets the access key for writing to the DataStorage.nrw S3 WORM bucket."
          },
          "secretKeyWrite": {
            "type": "string",
            "description": "Gets the secret key for writing to the DataStorage.nrw S3 WORM bucket."
          },
          "endpoint": {
            "type": "string",
            "description": "Gets the endpoint for the RDS DataStorage.nrw WORM bucket."
          },
          "size": {
            "$ref": "#/components/schemas/QuotaDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for DataStorage.nrw S3 WORM options."
      },
      "DataStorageNrwS3WormOptionsDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DataStorageNrwS3WormOptionsDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DataStorageNrwS3WormResourceTypeOptionsForManipulationDto": {
        "required": [
          "quota"
        ],
        "type": "object",
        "properties": {
          "quota": {
            "$ref": "#/components/schemas/QuotaForManipulationDto"
          },
          "lifecycleOptions": {
            "$ref": "#/components/schemas/LifecycleOptionsForManipulationDto"
          },
          "replicationGroup": {
            "$ref": "#/components/schemas/DsNrwReplicationGroupDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for manipulating DataStorage.nrw S3 WORM resource type options."
      },
      "DataStorageNrwWebOptionsDto": {
        "required": [
          "bucketName"
        ],
        "type": "object",
        "properties": {
          "bucketName": {
            "type": "string",
            "description": "Gets the name of the bucket associated with DataStorage.nrw Web."
          },
          "size": {
            "$ref": "#/components/schemas/QuotaDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for DataStorage.nrw Web options."
      },
      "DataStorageNrwWebOptionsDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DataStorageNrwWebOptionsDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DataStorageNrwWebResourceTypeOptionsForManipulationDto": {
        "required": [
          "quota"
        ],
        "type": "object",
        "properties": {
          "quota": {
            "$ref": "#/components/schemas/QuotaForManipulationDto"
          },
          "lifecycleOptions": {
            "$ref": "#/components/schemas/LifecycleOptionsForManipulationDto"
          },
          "replicationGroup": {
            "$ref": "#/components/schemas/DsNrwReplicationGroupDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for manipulating DataStorage.nrw Web resource type options."
      },
      "DefaultOrganizationQuotaDto": {
        "type": "object",
        "properties": {
          "resourceTypeId": {
            "type": "string",
            "description": "Gets or sets the resource type id of the default quota.",
            "format": "uuid"
          },
          "defaultQuota": {
            "type": "integer",
            "description": "Gets or sets the default quota value.",
            "format": "int32"
          },
          "defaultMaxQuota": {
            "type": "integer",
            "description": "Gets or sets the default max quota value.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Represents the default quota of an organization."
      },
      "DeployedGraphDto": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Gets or sets graph URI and identifier.",
            "format": "uri"
          },
          "fileHashes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Gets or sets collection of file hashes associated with the graph."
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for deployed graph details."
      },
      "DeployedGraphDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeployedGraphDto"
            },
            "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
      },
      "DisciplineDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier for the discipline.",
            "format": "uuid"
          },
          "uri": {
            "type": "string",
            "description": "Gets the URI associated with the discipline."
          },
          "displayNameDe": {
            "type": "string",
            "description": "Gets the display name of the discipline in German."
          },
          "displayNameEn": {
            "type": "string",
            "description": "Gets the display name of the discipline in English."
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object for a discipline."
      },
      "DisciplineDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisciplineDto"
            },
            "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
      },
      "DisciplineDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DisciplineDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "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."
      },
      "DisciplineForResourceManipulationDto": {
        "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 resource manipulation."
      },
      "DisciplineForUserManipulationDto": {
        "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 user manipulation."
      },
      "DsNrwReplicationGroup": {
        "enum": [
          "RWTH-UDE",
          "UZK-UPB"
        ],
        "type": "string"
      },
      "DsNrwReplicationGroupDto": {
        "enum": [
          "RWTH-UDE",
          "UZK-UPB"
        ],
        "type": "string",
        "description": "Possible replication groups for the DS NRW."
      },
      "ExtractedMetadataTreeForCreationDto": {
        "required": [
          "definition",
          "id",
          "path",
          "provenance"
        ],
        "type": "object",
        "properties": {
          "path": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the path of the metadata tree."
          },
          "id": {
            "type": "string",
            "description": "Gets the id of the new metadata tree.",
            "format": "uri"
          },
          "definition": {
            "$ref": "#/components/schemas/RdfDefinitionForManipulationDto"
          },
          "provenance": {
            "$ref": "#/components/schemas/ProvenanceParametersDto"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the creation of a metadata tree.\r\nExtends the base class Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.MetadataTreeForManipulationDto."
      },
      "ExtractedMetadataTreeForUpdateDto": {
        "required": [
          "definition",
          "id",
          "path",
          "provenance"
        ],
        "type": "object",
        "properties": {
          "path": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the path of the metadata tree."
          },
          "id": {
            "type": "string",
            "description": "Gets the id of the to update metadata tree.",
            "format": "uri"
          },
          "definition": {
            "$ref": "#/components/schemas/RdfDefinitionForManipulationDto"
          },
          "provenance": {
            "$ref": "#/components/schemas/ProvenanceParametersDto"
          },
          "forceNewMetadataVersion": {
            "type": "boolean",
            "description": "Gets a value indicating whether gets or initializes a flag for creating a new metadata version."
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the update of a metadata tree.\r\nInherits from the base class Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.MetadataTreeForManipulationDto."
      },
      "FileActionDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Gets or sets the presigned URL associated with the file action.",
            "format": "uri"
          },
          "method": {
            "$ref": "#/components/schemas/FileActionHttpMethod"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for file actions, including the URL and HTTP method."
      },
      "FileActionHttpMethod": {
        "enum": [
          "GET",
          "POST",
          "PUT",
          "DELETE"
        ],
        "type": "string",
        "description": "Represents the possible HTTP methods associated with file actions."
      },
      "FileActionsDto": {
        "type": "object",
        "properties": {
          "download": {
            "$ref": "#/components/schemas/FileActionDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for a collection of file actions, including download action details."
      },
      "FileSystemStorageOptionsDto": {
        "required": [
          "directory"
        ],
        "type": "object",
        "properties": {
          "directory": {
            "type": "string",
            "description": "Gets the directory where the files are stored."
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for FileSystemStorage options."
      },
      "FileTreeDto": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Gets the path of the tree item."
          },
          "type": {
            "$ref": "#/components/schemas/TreeDataType"
          },
          "directory": {
            "type": "string",
            "description": "Gets the directory of the file."
          },
          "name": {
            "type": "string",
            "description": "Gets the name of the file."
          },
          "extension": {
            "type": "string",
            "description": "Gets the extension of the file."
          },
          "size": {
            "type": "integer",
            "description": "Gets the size of the file in bytes.",
            "format": "int64"
          },
          "creationDate": {
            "type": "string",
            "description": "Gets the creation date of the file.",
            "format": "date-time",
            "nullable": true
          },
          "changeDate": {
            "type": "string",
            "description": "Gets the last change date of the file.",
            "format": "date-time",
            "nullable": true
          },
          "actions": {
            "$ref": "#/components/schemas/FileActionsDto"
          },
          "hidden": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether determines if the specific tree entry is hidden."
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for a file within a tree structure, extending the base TreeDto."
      },
      "FileTreeDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FileTreeDto"
            },
            "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
      },
      "FixedValueForResourceManipulationDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "Gets or initializes the value of the fixed resource value.",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Gets or initializes the type of the fixed resource value.",
            "nullable": true
          },
          "datatype": {
            "type": "string",
            "description": "Gets or initializes the data type URI of the fixed resource value.",
            "format": "uri",
            "nullable": true
          },
          "targetClass": {
            "type": "string",
            "description": "Gets the target class of the provided value (e.g., \"https://purl.org/coscine/ap/base/\").",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the manipulation of a fixed value associated with a resource."
      },
      "GitLabOptionsDto": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "description": "Gets the project ID associated with GitLab.",
            "format": "int32"
          },
          "repoUrl": {
            "type": "string",
            "description": "Gets the repository URL for GitLab.",
            "nullable": true
          },
          "accessToken": {
            "type": "string",
            "description": "Gets the access token for GitLab.",
            "nullable": true
          },
          "branch": {
            "type": "string",
            "description": "Gets the branch for GitLab.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for GitLab options."
      },
      "GitLabOptionsDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/GitLabOptionsDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GitlabBranchDto": {
        "required": [
          "canPush",
          "default",
          "developersCanMerge",
          "developersCanPush",
          "merged",
          "name",
          "protected"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Gets the name of the GitLab branch."
          },
          "merged": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the branch is merged."
          },
          "protected": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the branch is protected."
          },
          "default": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the branch is set as default."
          },
          "developersCanPush": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if developers can push changes to the branch."
          },
          "developersCanMerge": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if developers can merge changes into the branch."
          },
          "canPush": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the user can push changes to the branch."
          }
        },
        "additionalProperties": false,
        "description": "Represents a GitLab branch data transfer object (DTO)."
      },
      "GitlabBranchDtoIEnumerableResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GitlabBranchDto"
            },
            "nullable": true
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GitlabProjectDto": {
        "required": [
          "archived",
          "createdAt",
          "defaultBranch",
          "description",
          "httpUrlToRepo",
          "id",
          "lastActivityAt",
          "name",
          "nameWithNamespace",
          "path",
          "pathWithNamespace",
          "sshUrlToRepo",
          "webUrl"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Gets the unique identifier for the GitLab project.",
            "format": "int32"
          },
          "archived": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the GitLab project is archived."
          },
          "name": {
            "type": "string",
            "description": "Gets the name of the GitLab project."
          },
          "nameWithNamespace": {
            "type": "string",
            "description": "Gets the full name of the GitLab project including namespace."
          },
          "description": {
            "type": "string",
            "description": "Gets a brief description of the GitLab project."
          },
          "defaultBranch": {
            "type": "string",
            "description": "Gets the default branch of the GitLab project."
          },
          "path": {
            "type": "string",
            "description": "Gets the path of the GitLab project."
          },
          "pathWithNamespace": {
            "type": "string",
            "description": "Gets the path of the GitLab project including namespace."
          },
          "lastActivityAt": {
            "type": "string",
            "description": "Gets the timestamp of the last activity related to the GitLab project."
          },
          "createdAt": {
            "type": "string",
            "description": "Gets the creation timestamp of the GitLab project."
          },
          "webUrl": {
            "type": "string",
            "description": "Gets the URL to view the GitLab project in a web browser."
          },
          "httpUrlToRepo": {
            "type": "string",
            "description": "Gets the HTTP URL to access the GitLab project repository."
          },
          "sshUrlToRepo": {
            "type": "string",
            "description": "Gets the SSH URL to access the GitLab project repository."
          }
        },
        "additionalProperties": false,
        "description": "Represents a GitLab project data transfer object (DTO)."
      },
      "GitlabProjectDtoIEnumerableResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GitlabProjectDto"
            },
            "nullable": true
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GitlabProjectDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/GitlabProjectDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GitlabResourceTypeOptionsForCreationDto": {
        "required": [
          "accessToken",
          "branch",
          "projectId",
          "repoUrl",
          "tosAccepted"
        ],
        "type": "object",
        "properties": {
          "branch": {
            "minLength": 1,
            "type": "string",
            "description": "Gets the branch associated with the GitLab resource."
          },
          "accessToken": {
            "minLength": 1,
            "type": "string",
            "description": "Gets the access token for authentication with GitLab."
          },
          "repoUrl": {
            "type": "string",
            "description": "Gets the repository URL for the GitLab resource.",
            "format": "uri"
          },
          "projectId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Gets the project ID associated with the GitLab resource.",
            "format": "int32"
          },
          "tosAccepted": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether the terms of service for the GitLab resource are accepted."
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for creating GitLab resource type options."
      },
      "GitlabResourceTypeOptionsForUpdateDto": {
        "required": [
          "accessToken",
          "branch"
        ],
        "type": "object",
        "properties": {
          "branch": {
            "minLength": 1,
            "type": "string",
            "description": "Gets the branch associated with the GitLab resource."
          },
          "accessToken": {
            "minLength": 1,
            "type": "string",
            "description": "Gets the access token for authentication with GitLab."
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for updating GitLab resource type options."
      },
      "HandleDto": {
        "type": "object",
        "properties": {
          "pid": {
            "$ref": "#/components/schemas/PidDto"
          },
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HandleValueDto"
            }
          }
        },
        "additionalProperties": false
      },
      "HandleDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HandleDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "HandleForUpdateDto": {
        "required": [
          "values"
        ],
        "type": "object",
        "properties": {
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HandleValueForUpdateDto"
            }
          }
        },
        "additionalProperties": false
      },
      "HandleValueDto": {
        "type": "object",
        "properties": {
          "idx": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "string"
          },
          "parsed_data": { },
          "data": {
            "type": "string"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "ttl_type": {
            "type": "integer",
            "format": "int32"
          },
          "ttl": {
            "type": "integer",
            "format": "int32"
          },
          "refs": {
            "type": "array",
            "items": { }
          },
          "privs": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "HandleValueForUpdateDto": {
        "required": [
          "parsed_data",
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Gets the data type of the handle."
          },
          "parsed_data": {
            "description": "Gets the parsed data of the handle."
          },
          "idx": {
            "type": "integer",
            "description": "Gets the id of the handle.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing updating a handle."
      },
      "HashParametersDto": {
        "required": [
          "algorithmName",
          "value"
        ],
        "type": "object",
        "properties": {
          "algorithmName": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the hash algorithm name."
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the hash value."
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing Hash Parameters in a request."
      },
      "IdentityProviderDto": {
        "required": [
          "displayName",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier for the identity provider.",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name of the identity provider."
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for an identity provider."
      },
      "IdentityProviders": {
        "enum": [
          "Shibboleth",
          "ORCiD"
        ],
        "type": "string",
        "description": "Specifies the supported external authentication services."
      },
      "LanguageDto": {
        "required": [
          "abbreviation",
          "displayName",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier for the language.",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name of the language."
          },
          "abbreviation": {
            "type": "string",
            "description": "Gets the abbreviation for the language."
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for language details."
      },
      "LanguageDtoIEnumerableResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LanguageDto"
            },
            "nullable": true
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LanguageDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/LanguageDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LanguageForUserManipulationDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets or initializes the identifier of the language.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing a language for user manipulation."
      },
      "LicenseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier for the license.",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name of the license."
          },
          "url": {
            "type": "string",
            "description": "Gets the Uri of the license.",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for license details."
      },
      "LicenseDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LicenseDto"
            },
            "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
      },
      "LicenseDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/LicenseDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LicenseForResourceManipulationDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets or initializes the identifier of the license.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing a license for resource manipulation."
      },
      "LifecycleOptionsForManipulationDto": {
        "type": "object",
        "properties": {
          "abortIncompleteMultipartAfterDays": {
            "maximum": 365,
            "minimum": 7,
            "type": "integer",
            "description": "Gets the number of days after which incomplete multipart uploads are automatically aborted.\r\nA value of `null` means no rule is applied.",
            "format": "int32",
            "nullable": true
          },
          "noncurrentVersionExpireAfterDays": {
            "maximum": 365,
            "minimum": 7,
            "type": "integer",
            "description": "Gets the number of days after which noncurrent (previous) object versions expire.\r\nA value of `null` means no rule is applied.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for manipulating lifecycle options on an S3 bucket."
      },
      "LinkedDataOptionsDto": {
        "type": "object",
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for Linked Data options."
      },
      "LinkedDataOptionsDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/LinkedDataOptionsDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LinkedDataResourceTypeOptionsForManipulationDto": {
        "type": "object",
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for manipulating linked data resource type options."
      },
      "MaintenanceDto": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "description": "Gets the maintenance title."
          },
          "href": {
            "type": "string",
            "description": "Gets the URL related to the maintenance.",
            "format": "uri"
          },
          "type": {
            "type": "string",
            "description": "Gets the type of maintenance."
          },
          "body": {
            "type": "string",
            "description": "Gets the description of the maintenance."
          },
          "startsDate": {
            "type": "string",
            "description": "Gets the start date of the maintenance, if available.",
            "format": "date-time",
            "nullable": true
          },
          "endsDate": {
            "type": "string",
            "description": "Gets the end date of the maintenance, if available.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This class represents a maintenance with its significant properties, which is returned from the API."
      },
      "MaintenanceDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaintenanceDto"
            },
            "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
      },
      "MessageDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets or sets iD of the message."
          },
          "body": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Gets message body in multiple languages as key-value pairs. \r\nThe key is the ISO 639-1 Alpha-2 two-letter language code, and the value is the message in that language.",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/MessageType"
          },
          "title": {
            "type": "string",
            "description": "Gets title of the message.",
            "nullable": true
          },
          "href": {
            "type": "string",
            "description": "Gets uRL related to the message.",
            "format": "uri",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Gets start date of the message (UTC).",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Gets end date of the message (UTC).",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MessageDtoIEnumerableResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageDto"
            },
            "nullable": true
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MessageDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageDto"
            },
            "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
      },
      "MessageType": {
        "enum": [
          "Disturbance",
          "PartialDisturbance",
          "Maintenance",
          "PartialMaintenance",
          "LimitedOperation",
          "Interruption",
          "Change",
          "Hint",
          "Warning",
          "Information"
        ],
        "type": "string",
        "description": "Defines the various types of messages."
      },
      "MetadataTreeDto": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Gets the path of the tree item."
          },
          "type": {
            "$ref": "#/components/schemas/TreeDataType"
          },
          "id": {
            "type": "string",
            "description": "Gets the id of the specific metadata tree.",
            "format": "uri"
          },
          "version": {
            "type": "string",
            "description": "Gets the version associated with the metadata."
          },
          "availableVersions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Gets the collection of available versions related to the metadata."
          },
          "definition": {
            "$ref": "#/components/schemas/RdfDefinitionDto"
          },
          "extracted": {
            "$ref": "#/components/schemas/MetadataTreeExtractedDto"
          },
          "provenance": {
            "$ref": "#/components/schemas/ProvenanceDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) for metadata within a tree structure, extending the base TreeDto."
      },
      "MetadataTreeDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MetadataTreeDto"
            },
            "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
      },
      "MetadataTreeDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MetadataTreeDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MetadataTreeExtractedDto": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Gets the path of the tree item."
          },
          "type": {
            "$ref": "#/components/schemas/TreeDataType"
          },
          "metadataId": {
            "type": "string",
            "description": "Gets the identifier of the metadata extraction graph.",
            "format": "uri"
          },
          "rawDataId": {
            "type": "string",
            "description": "Gets the identifier of the raw data extraction graph.",
            "format": "uri",
            "nullable": true
          },
          "definition": {
            "$ref": "#/components/schemas/RdfDefinitionDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) for extracted metadata within a tree structure, extending the base TreeDto."
      },
      "MetadataTreeForCreationDto": {
        "required": [
          "definition",
          "path"
        ],
        "type": "object",
        "properties": {
          "path": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the path of the metadata tree."
          },
          "definition": {
            "$ref": "#/components/schemas/RdfDefinitionForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the creation of a metadata tree.\r\nExtends the base class Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.MetadataTreeForManipulationDto."
      },
      "MetadataTreeForDeletionDto": {
        "required": [
          "invalidatedBy",
          "path",
          "version"
        ],
        "type": "object",
        "properties": {
          "path": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the path of the metadata tree."
          },
          "version": {
            "type": "integer",
            "description": "Gets or initializes the version of the metadata tree to be deleted.",
            "format": "int64"
          },
          "invalidatedBy": {
            "type": "string",
            "description": "Gets or initializes the invalidation entity.",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) for deleting a specific version of metadata."
      },
      "MetadataTreeForUpdateDto": {
        "required": [
          "definition",
          "path"
        ],
        "type": "object",
        "properties": {
          "path": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the path of the metadata tree."
          },
          "definition": {
            "$ref": "#/components/schemas/RdfDefinitionForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the update of a metadata tree.\r\nInherits from the base class Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.MetadataTreeForManipulationDto."
      },
      "MetadataUpdateAdminParameters": {
        "required": [
          "definition"
        ],
        "type": "object",
        "properties": {
          "definition": {
            "$ref": "#/components/schemas/RdfDefinitionForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents parameters for updating metadata in an administrative context."
      },
      "MetadataVersionNodeDto": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "path": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "generatedAtTime": {
            "type": "string",
            "format": "date-time"
          },
          "isInvalidated": {
            "type": "boolean"
          },
          "isRevision": {
            "type": "boolean"
          },
          "hasVariant": {
            "type": "boolean"
          },
          "hasExtracted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "MetadataVersionNodeDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MetadataVersionNodeDto"
            },
            "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
      },
      "MetadataVersionNodeDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MetadataVersionNodeDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NotificationDto": {
        "required": [
          "category",
          "id",
          "isOptional"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets or sets unique identifier for the project notification.",
            "format": "uuid"
          },
          "category": {
            "type": "string",
            "description": "Gets or sets category of the notification."
          },
          "isOptional": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether field which clarifies if the notification is optional or not."
          }
        },
        "additionalProperties": false,
        "description": "Represents a minimal data transfer object (DTO) for a notification."
      },
      "NotificationDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NotificationDto"
            },
            "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
      },
      "NotificationDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/NotificationDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OrganizationDto": {
        "required": [
          "displayName",
          "uri"
        ],
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Gets the ROR (Research Organization Registry) ID of the organization.",
            "format": "uri"
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name of the organization."
          },
          "email": {
            "type": "string",
            "description": "Gets or sets the email address of the organization.",
            "nullable": true
          },
          "publicationAdvisoryService": {
            "$ref": "#/components/schemas/PublicationAdvisoryServiceDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) for an organization, including its ROR (Research Organization Registry) ID, display name, and email address."
      },
      "OrganizationDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrganizationDto"
            },
            "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
      },
      "OrganizationDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OrganizationDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "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 a value indicating whether gets or initializes if the organization is responsible."
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing an organization for project manipulation."
      },
      "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."
      },
      "PidDto": {
        "required": [
          "prefix",
          "suffix"
        ],
        "type": "object",
        "properties": {
          "prefix": {
            "type": "string",
            "description": "Gets the prefix of the PID."
          },
          "suffix": {
            "type": "string",
            "description": "Gets the suffix of the PID."
          },
          "identifier": {
            "type": "string",
            "description": "Gets the constructed PID by combining the prefix and suffix (\"{Prefix}/{Suffix}\").",
            "readOnly": true
          },
          "type": {
            "$ref": "#/components/schemas/PidType"
          },
          "isEntityValid": {
            "type": "boolean",
            "description": "Gets a value indicating whether the linked entity is considered valid."
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) for a PID (Persistent Identifier)."
      },
      "PidDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PidDto"
            },
            "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
      },
      "PidDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PidDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PidRequestDto": {
        "required": [
          "email",
          "message",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the name associated with the PID request."
          },
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the email associated with the PID request.",
            "format": "email"
          },
          "message": {
            "maxLength": 5000,
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the message for the PID request."
          },
          "sendConfirmationEmail": {
            "type": "boolean",
            "description": "Gets a value indicating whether gets or initializes whether to send a confirmation email for the PID request."
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing a PID request."
      },
      "PidType": {
        "enum": [
          "project",
          "resource"
        ],
        "type": "string",
        "description": "Specifies the type of PID."
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "ProjectAdminDto": {
        "required": [
          "description",
          "disciplines",
          "endDate",
          "id",
          "name",
          "organizations",
          "pid",
          "slug",
          "startDate",
          "visibility"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets unique identifier for the project.",
            "format": "uuid"
          },
          "pid": {
            "type": "string",
            "description": "Gets or sets persistent identifier for the project."
          },
          "name": {
            "type": "string",
            "description": "Gets name of the project."
          },
          "description": {
            "type": "string",
            "description": "Gets description of the project."
          },
          "startDate": {
            "type": "string",
            "description": "Gets start date of the project.",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "Gets end date of the project.",
            "format": "date-time"
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Gets collection of keywords associated with the project.",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "description": "Gets display name of the project.",
            "nullable": true
          },
          "principleInvestigators": {
            "type": "string",
            "description": "Gets principal investigators involved in the project.",
            "nullable": true
          },
          "grantId": {
            "type": "string",
            "description": "Gets grant ID associated with the project.",
            "nullable": true
          },
          "visibility": {
            "$ref": "#/components/schemas/VisibilityDto"
          },
          "disciplines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisciplineDto"
            },
            "description": "Gets disciplines related to the project."
          },
          "organizations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectOrganizationDto"
            },
            "description": "Gets or sets organizations associated with the project."
          },
          "slug": {
            "type": "string",
            "description": "Gets slug for the project."
          },
          "creator": {
            "$ref": "#/components/schemas/UserMinimalDto"
          },
          "creationDate": {
            "type": "string",
            "description": "Gets date of creation of the project.",
            "format": "date-time",
            "nullable": true
          },
          "subProjects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectDto"
            },
            "description": "Gets or sets collection of sub-projects associated with this project.",
            "nullable": true,
            "deprecated": true
          },
          "parent": {
            "$ref": "#/components/schemas/ProjectMinimalDto"
          },
          "projectExternalId": {
            "$ref": "#/components/schemas/ProjectExternalIdDto"
          },
          "deleted": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether the project is marked as deleted."
          },
          "projectResources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectResourceMinimalDto"
            },
            "description": "Gets collection of minimal project resource details associated with the project."
          },
          "projectRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectRoleMinimalDto"
            },
            "description": "Gets collection of minimal project role details associated with the project."
          },
          "projectQuota": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectQuotaDto"
            },
            "description": "Gets or sets collection of project quotas associated with the project."
          },
          "publicationRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectPublicationRequestDto"
            },
            "description": "Gets or sets collection of project publication requests associated with the project."
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) for an administrative view of a project.\r\nExtends the base information in Coscine.Api.Core.Shared.DataTransferObjects.ReturnObjects.ProjectDto."
      },
      "ProjectAdminDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectAdminDto"
            },
            "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
      },
      "ProjectDto": {
        "required": [
          "description",
          "disciplines",
          "endDate",
          "id",
          "name",
          "organizations",
          "pid",
          "slug",
          "startDate",
          "visibility"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets unique identifier for the project.",
            "format": "uuid"
          },
          "pid": {
            "type": "string",
            "description": "Gets or sets persistent identifier for the project."
          },
          "name": {
            "type": "string",
            "description": "Gets name of the project."
          },
          "description": {
            "type": "string",
            "description": "Gets description of the project."
          },
          "startDate": {
            "type": "string",
            "description": "Gets start date of the project.",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "Gets end date of the project.",
            "format": "date-time"
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Gets collection of keywords associated with the project.",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "description": "Gets display name of the project.",
            "nullable": true
          },
          "principleInvestigators": {
            "type": "string",
            "description": "Gets principal investigators involved in the project.",
            "nullable": true
          },
          "grantId": {
            "type": "string",
            "description": "Gets grant ID associated with the project.",
            "nullable": true
          },
          "visibility": {
            "$ref": "#/components/schemas/VisibilityDto"
          },
          "disciplines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisciplineDto"
            },
            "description": "Gets disciplines related to the project."
          },
          "organizations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectOrganizationDto"
            },
            "description": "Gets or sets organizations associated with the project."
          },
          "slug": {
            "type": "string",
            "description": "Gets slug for the project."
          },
          "creator": {
            "$ref": "#/components/schemas/UserMinimalDto"
          },
          "creationDate": {
            "type": "string",
            "description": "Gets date of creation of the project.",
            "format": "date-time",
            "nullable": true
          },
          "subProjects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectDto"
            },
            "description": "Gets or sets collection of sub-projects associated with this project.",
            "nullable": true,
            "deprecated": true
          },
          "parent": {
            "$ref": "#/components/schemas/ProjectMinimalDto"
          },
          "projectExternalId": {
            "$ref": "#/components/schemas/ProjectExternalIdDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) for project information."
      },
      "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
      },
      "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
      },
      "ProjectExternalIdDto": {
        "required": [
          "externalId",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the identifier for the mapping from Coscine project to an external.",
            "format": "uuid"
          },
          "externalId": {
            "type": "string",
            "description": "Gets the external project id."
          },
          "type": {
            "type": "string",
            "description": "Gets the external entity type."
          }
        },
        "additionalProperties": false
      },
      "ProjectForCreationDto": {
        "required": [
          "description",
          "disciplines",
          "name",
          "organizations",
          "principleInvestigators",
          "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,
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the principal investigators associated with the project."
          },
          "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."
      },
      "ProjectForUpdateDto": {
        "required": [
          "description",
          "disciplines",
          "name",
          "organizations",
          "principleInvestigators",
          "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,
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the principal investigators associated with the project."
          },
          "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."
      },
      "ProjectInvitationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets or sets unique identifier for the invitation.",
            "format": "uuid"
          },
          "expirationDate": {
            "type": "string",
            "description": "Gets or sets expiration date of the invitation.",
            "format": "date-time"
          },
          "email": {
            "type": "string",
            "description": "Gets or sets email associated with the invitation."
          },
          "issuer": {
            "$ref": "#/components/schemas/PublicUserDto"
          },
          "project": {
            "$ref": "#/components/schemas/ProjectMinimalDto"
          },
          "role": {
            "$ref": "#/components/schemas/RoleMinimalDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) for project invitations."
      },
      "ProjectInvitationDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectInvitationDto"
            },
            "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
      },
      "ProjectInvitationDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProjectInvitationDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProjectInvitationForProjectManipulationDto": {
        "required": [
          "email",
          "roleId"
        ],
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string",
            "description": "Gets or initializes the identifier of the role associated with the invitation.",
            "format": "uuid"
          },
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "Gets or initializes the email address of the invited user.",
            "format": "email"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing an invitation for project manipulation."
      },
      "ProjectInvitationResolveDto": {
        "required": [
          "token"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Gets or initializes the token associated with resolving the project invitation.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) for resolving a project invitation."
      },
      "ProjectMinimalDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets 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": "Gets the ROR (Research Organization Registry) ID of the organization.",
            "format": "uri"
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name of the organization."
          },
          "email": {
            "type": "string",
            "description": "Gets or sets the email address of the organization.",
            "nullable": true
          },
          "publicationAdvisoryService": {
            "$ref": "#/components/schemas/PublicationAdvisoryServiceDto"
          },
          "responsible": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether 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."
      },
      "ProjectPublicationRequestDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets unique identifier for the project publication request.",
            "format": "uuid"
          },
          "project": {
            "$ref": "#/components/schemas/ProjectMinimalDto"
          },
          "publicationServiceRorId": {
            "type": "string",
            "description": "Gets identifier for the publication service used for this request.",
            "format": "uri"
          },
          "creator": {
            "$ref": "#/components/schemas/UserMinimalDto"
          },
          "dateCreated": {
            "type": "string",
            "description": "Gets the date and time when the request was created.",
            "format": "date-time"
          },
          "message": {
            "type": "string",
            "description": "Gets optional message associated with the publication request.",
            "nullable": true
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceMinimalDto"
            },
            "description": "Gets collection of the resources involved in the publication request."
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) for a project publication request."
      },
      "ProjectPublicationRequestDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProjectPublicationRequestDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProjectQuotaDto": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "description": "Gets or sets identifier of the project.",
            "format": "uuid"
          },
          "totalUsed": {
            "$ref": "#/components/schemas/QuotaDto"
          },
          "totalReserved": {
            "$ref": "#/components/schemas/QuotaDto"
          },
          "allocated": {
            "$ref": "#/components/schemas/QuotaDto"
          },
          "maximum": {
            "$ref": "#/components/schemas/QuotaDto"
          },
          "resourceType": {
            "$ref": "#/components/schemas/ResourceTypeMinimalDto"
          },
          "resourceQuotas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceQuotaDto"
            },
            "description": "Gets or sets quota information for individual resources of the selected project's resource type.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) containing quota information for a project."
      },
      "ProjectQuotaDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectQuotaDto"
            },
            "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
      },
      "ProjectQuotaDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProjectQuotaDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProjectQuotaForUpdateDto": {
        "required": [
          "allocated"
        ],
        "type": "object",
        "properties": {
          "allocated": {
            "$ref": "#/components/schemas/QuotaForManipulationDto"
          },
          "maximum": {
            "$ref": "#/components/schemas/QuotaForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the update of project quotas."
      },
      "ProjectResourceMinimalDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "Gets or sets identifier of the resource.",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "description": "Gets or sets identifier of the project associated with the resource.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents a minimal data transfer object (DTO) for a project resource."
      },
      "ProjectRoleDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets 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."
      },
      "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
      },
      "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
      },
      "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."
      },
      "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."
      },
      "ProjectRoleMinimalDto": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "description": "Gets or sets identifier of the project associated with the role.",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "description": "Gets or sets identifier of the user associated with the role.",
            "format": "uuid"
          },
          "roleId": {
            "type": "string",
            "description": "Gets or sets identifier of the role.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents a minimal data transfer object (DTO) for a project role."
      },
      "ProvenanceDto": {
        "required": [
          "id",
          "variants",
          "wasRevisionOf"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the id of the current metadata graph.",
            "format": "uri"
          },
          "generatedAt": {
            "type": "string",
            "description": "Gets or sets the date and time when the metadata was generated.",
            "format": "date-time",
            "nullable": true
          },
          "wasRevisionOf": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "description": "Gets the adapted versions from the specific metadata tree."
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VariantDto"
            },
            "description": "Gets the variants of the specific metadata tree."
          },
          "similarityToLastVersion": {
            "type": "number",
            "description": "Gets the similarity to the last version.",
            "format": "double",
            "nullable": true
          },
          "wasInvalidatedBy": {
            "type": "string",
            "description": "Gets information if the specific metadata tree was invalidated by something.",
            "format": "uri",
            "nullable": true
          },
          "hashParameters": {
            "$ref": "#/components/schemas/HashParametersDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) for provenance information."
      },
      "ProvenanceDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProvenanceDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProvenanceForUpdateDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "wasRevisionOf": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "description": "Gets the adapted versions from the specific metadata tree."
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VariantDto"
            },
            "description": "Gets the variants of the specific metadata tree."
          },
          "wasInvalidatedBy": {
            "type": "string",
            "description": "Gets information if the specific metadata tree was invalidated by something.",
            "format": "uri",
            "nullable": true
          },
          "similarityToLastVersion": {
            "type": "number",
            "description": "Gets the similarity to the last version.",
            "format": "double",
            "nullable": true
          },
          "metadataExtractorVersion": {
            "type": "string",
            "description": "Gets or initializes the version of the metadata extractor.",
            "nullable": true
          },
          "hashParameters": {
            "$ref": "#/components/schemas/HashParametersDto"
          },
          "id": {
            "type": "string",
            "description": "Gets the id of the specific metadata tree.",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the update of provenance\r\nInherits from the base class Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.ProvenanceParametersDto."
      },
      "ProvenanceParametersDto": {
        "type": "object",
        "properties": {
          "wasRevisionOf": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "description": "Gets the adapted versions from the specific metadata tree."
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VariantDto"
            },
            "description": "Gets the variants of the specific metadata tree."
          },
          "wasInvalidatedBy": {
            "type": "string",
            "description": "Gets information if the specific metadata tree was invalidated by something.",
            "format": "uri",
            "nullable": true
          },
          "similarityToLastVersion": {
            "type": "number",
            "description": "Gets the similarity to the last version.",
            "format": "double",
            "nullable": true
          },
          "metadataExtractorVersion": {
            "type": "string",
            "description": "Gets or initializes the version of the metadata extractor.",
            "nullable": true
          },
          "hashParameters": {
            "$ref": "#/components/schemas/HashParametersDto"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing Provenance Parameters in a request."
      },
      "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)."
      },
      "PublicUserDtoIEnumerableResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicUserDto"
            },
            "nullable": true
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "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."
      },
      "PublicationAdvisoryServiceDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicationAdvisoryServiceDto"
            },
            "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
      },
      "PublicationRequestForCreationDto": {
        "required": [
          "publicationServiceRorId",
          "resourceIds"
        ],
        "type": "object",
        "properties": {
          "publicationServiceRorId": {
            "minLength": 1,
            "type": "string",
            "description": "Gets the data publication service's ror id."
          },
          "resourceIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Gets the resource guids."
          },
          "message": {
            "type": "string",
            "description": "Gets a message of the requester.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the creation of a publication request."
      },
      "QuotaDto": {
        "required": [
          "unit",
          "value"
        ],
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "description": "Gets or sets the value of the quota.",
            "format": "float"
          },
          "unit": {
            "$ref": "#/components/schemas/QuotaUnit"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for quota values."
      },
      "QuotaForManipulationDto": {
        "required": [
          "unit",
          "value"
        ],
        "type": "object",
        "properties": {
          "value": {
            "minimum": 0,
            "type": "integer",
            "description": "Gets the numerical value of the quota. Must be a positive System.Int64.",
            "format": "int64"
          },
          "unit": {
            "$ref": "#/components/schemas/QuotaUnit"
          }
        },
        "additionalProperties": false,
        "description": "Represents a data transfer object (DTO) used for manipulating quota values."
      },
      "QuotaUnit": {
        "enum": [
          "https://qudt.org/vocab/unit/BYTE",
          "https://qudt.org/vocab/unit/KibiBYTE",
          "https://qudt.org/vocab/unit/MebiBYTE",
          "https://qudt.org/vocab/unit/GibiBYTE",
          "https://qudt.org/vocab/unit/TebiBYTE",
          "https://qudt.org/vocab/unit/PebiBYTE"
        ],
        "type": "string",
        "description": "Specifies the unit of quota."
      },
      "RdfDefinitionDto": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "Gets the content of the RDF definition.",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Gets the type of the RDF definition.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for RDF (Resource Description Framework) definition details."
      },
      "RdfDefinitionDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RdfDefinitionDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RdfDefinitionForManipulationDto": {
        "required": [
          "content",
          "type"
        ],
        "type": "object",
        "properties": {
          "content": {
            "minLength": 1,
            "type": "string",
            "description": "Gets the content of the RDF definition."
          },
          "type": {
            "$ref": "#/components/schemas/RdfFormat"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) used for manipulating RDF definitions."
      },
      "RdfFormat": {
        "enum": [
          "text/turtle",
          "application/ld+json",
          "application/x-trig",
          "application/n-quads"
        ],
        "type": "string",
        "description": "Specifies the RDF <i>(Resource Description Framework)</i> format."
      },
      "RdfPatchDocumentDto": {
        "type": "object",
        "properties": {
          "operations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RdfPatchOperationDto"
            },
            "description": "Gets or sets the list of operations in the RDF Patch document."
          }
        },
        "additionalProperties": false,
        "description": "Represents an RDF Patch document containing a series of operations."
      },
      "RdfPatchOperationDto": {
        "type": "object",
        "properties": {
          "operationType": {
            "$ref": "#/components/schemas/RdfPatchOperationType"
          },
          "changes": {
            "$ref": "#/components/schemas/RdfDefinitionForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a single operation in an RDF Patch document."
      },
      "RdfPatchOperationType": {
        "enum": [
          "A",
          "D"
        ],
        "type": "string",
        "description": "Represents the types of operations that can be performed in an RDF Patch document."
      },
      "RdmoImportDto": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string",
            "description": "Gets the version of the RDMO export format.",
            "nullable": true
          },
          "import_type": {
            "type": "string",
            "description": "Gets the import type declared by the envelope (e.g. `rdmo`).",
            "nullable": true
          },
          "catalog_title": {
            "type": "string",
            "description": "Gets the title of the RDMO catalog the project belongs to.",
            "nullable": true
          },
          "catalog_uri": {
            "type": "string",
            "description": "Gets the URI of the RDMO catalog the project belongs to.",
            "nullable": true
          },
          "project_id": {
            "type": "string",
            "description": "Gets the identifier of the project within RDMO.",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RdmoImportItemDto"
            },
            "description": "Gets the attribute/value pairs describing the project."
          },
          "jwt": {
            "type": "string",
            "description": "Gets the signed JWT that vouches for the integrity and origin of the envelope, if present.",
            "nullable": true
          }
        },
        "additionalProperties": { },
        "description": "Data transfer object representing an RDMO project export envelope used to import a project into Coscine."
      },
      "RdmoImportItemDto": {
        "type": "object",
        "properties": {
          "attribute_uri": {
            "type": "string",
            "description": "Gets the URI identifying the attribute this value belongs to.",
            "nullable": true
          },
          "question": {
            "type": "string",
            "description": "Gets the RDMO question the value answers.",
            "nullable": true
          },
          "set": {
            "type": "string",
            "description": "Gets the RDMO set the value belongs to.",
            "nullable": true
          },
          "values": {
            "description": "Gets the raw value, kept verbatim so the canonical JWT payload hash can be reproduced losslessly."
          }
        },
        "additionalProperties": { },
        "description": "A single RDMO attribute/value pair within an Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.RdmoImportDto."
      },
      "RdsOptionsDto": {
        "required": [
          "bucketName"
        ],
        "type": "object",
        "properties": {
          "bucketName": {
            "type": "string",
            "description": "Gets the name of the bucket associated with RDS."
          },
          "size": {
            "$ref": "#/components/schemas/QuotaDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for RDS options."
      },
      "RdsResourceTypeOptionsForManipulationDto": {
        "required": [
          "quota"
        ],
        "type": "object",
        "properties": {
          "quota": {
            "$ref": "#/components/schemas/QuotaForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for manipulating RDS Web resource type options."
      },
      "RdsS3OptionsDto": {
        "required": [
          "accessKeyRead",
          "accessKeyWrite",
          "bucketName",
          "endpoint",
          "secretKeyRead",
          "secretKeyWrite"
        ],
        "type": "object",
        "properties": {
          "bucketName": {
            "type": "string",
            "description": "Gets the name of the bucket associated with RDS S3."
          },
          "accessKeyRead": {
            "type": "string",
            "description": "Gets the access key for reading from the RDS S3 bucket."
          },
          "secretKeyRead": {
            "type": "string",
            "description": "Gets the secret key for reading from the RDS S3 bucket."
          },
          "accessKeyWrite": {
            "type": "string",
            "description": "Gets the access key for writing to the RDS S3 bucket."
          },
          "secretKeyWrite": {
            "type": "string",
            "description": "Gets the secret key for writing to the RDS S3 bucket."
          },
          "endpoint": {
            "type": "string",
            "description": "Gets the endpoint for the RDS S3 bucket."
          },
          "size": {
            "$ref": "#/components/schemas/QuotaDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for RDS S3 options."
      },
      "RdsS3ResourceTypeOptionsForManipulationDto": {
        "required": [
          "quota"
        ],
        "type": "object",
        "properties": {
          "quota": {
            "$ref": "#/components/schemas/QuotaForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for manipulating RDS S3 resource type options."
      },
      "RdsS3WormOptionsDto": {
        "required": [
          "accessKeyRead",
          "accessKeyWrite",
          "bucketName",
          "endpoint",
          "secretKeyRead",
          "secretKeyWrite"
        ],
        "type": "object",
        "properties": {
          "bucketName": {
            "type": "string",
            "description": "Gets the name of the bucket associated with RDS S3 WORM."
          },
          "accessKeyRead": {
            "type": "string",
            "description": "Gets the access key for reading from the RDS S3 WORM bucket."
          },
          "secretKeyRead": {
            "type": "string",
            "description": "Gets the secret key for reading from the RDS S3 WORM bucket."
          },
          "accessKeyWrite": {
            "type": "string",
            "description": "Gets the access key for writing to the RDS S3 WORM bucket."
          },
          "secretKeyWrite": {
            "type": "string",
            "description": "Gets the secret key for writing to the RDS S3 WORM bucket."
          },
          "endpoint": {
            "type": "string",
            "description": "Gets the endpoint for the RDS S3 WORM bucket."
          },
          "size": {
            "$ref": "#/components/schemas/QuotaDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for RDS S3 WORM options."
      },
      "RdsS3WormResourceTypeOptionsForManipulationDto": {
        "required": [
          "quota"
        ],
        "type": "object",
        "properties": {
          "quota": {
            "$ref": "#/components/schemas/QuotaForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for manipulating RDS S3 WORM resource type options."
      },
      "ResourceAdminDto": {
        "required": [
          "applicationProfile",
          "deleted",
          "description",
          "disciplines",
          "displayName",
          "fixedValues",
          "name",
          "pid",
          "projectResources",
          "type",
          "visibility"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets unique identifier for the resource.",
            "format": "uuid"
          },
          "pid": {
            "type": "string",
            "description": "Gets or sets persistent identifier for the resource."
          },
          "type": {
            "$ref": "#/components/schemas/ResourceTypeDto"
          },
          "name": {
            "type": "string",
            "description": "Gets name of the resource."
          },
          "displayName": {
            "type": "string",
            "description": "Gets display name of the resource."
          },
          "description": {
            "type": "string",
            "description": "Gets description of the resource."
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Gets keywords associated with the resource.",
            "nullable": true
          },
          "license": {
            "$ref": "#/components/schemas/LicenseDto"
          },
          "usageRights": {
            "type": "string",
            "description": "Gets usage rights associated with the resource.",
            "nullable": true
          },
          "metadataLocalCopy": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether a local copy of the metadata is available for the resource."
          },
          "metadataExtraction": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether metadata extraction is enabled for the resource."
          },
          "applicationProfile": {
            "$ref": "#/components/schemas/ApplicationProfileMinimalDto"
          },
          "fixedValues": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FixedValueForResourceManipulationDto"
                }
              }
            },
            "description": "Gets fixed values associated with resource manipulation.\r\nThis dictionary may contain multiple levels and is structured as follows:\r\nDictionary (Key: string) -> Dictionary (Key: string) -> List of FixedValueForResourceManipulationDto."
          },
          "disciplines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisciplineDto"
            },
            "description": "Gets disciplines associated with the resource."
          },
          "visibility": {
            "$ref": "#/components/schemas/VisibilityDto"
          },
          "dateCreated": {
            "type": "string",
            "description": "Gets date when the resource was created.",
            "format": "date-time",
            "nullable": true
          },
          "creator": {
            "$ref": "#/components/schemas/UserMinimalDto"
          },
          "archived": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether the resource is archived."
          },
          "maintenanceMode": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether indicates whether the resource is in maintenance mode."
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectMinimalDto"
            },
            "description": "Gets or sets the projects associated with the resource.",
            "nullable": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether the resource is deleted."
          },
          "projectResources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectResourceMinimalDto"
            },
            "description": "Gets collection of minimal project resource details associated with this resource."
          },
          "resourceQuota": {
            "$ref": "#/components/schemas/ResourceQuotaDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for administrative purposes with additional resource details."
      },
      "ResourceAdminDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceAdminDto"
            },
            "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
      },
      "ResourceContentPageColumnsDto": {
        "type": "object",
        "properties": {
          "always": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Gets set of columns that should always be displayed in the content view."
          }
        },
        "additionalProperties": false,
        "description": "Represents a set of columns to be displayed in the content view."
      },
      "ResourceContentPageDto": {
        "type": "object",
        "properties": {
          "readOnly": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether the resource is read-only."
          },
          "metadataView": {
            "$ref": "#/components/schemas/ResourceContentPageMetadataViewDto"
          },
          "entriesView": {
            "$ref": "#/components/schemas/ResourceContentPageEntriesViewDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the content page details for a resource."
      },
      "ResourceContentPageEntriesViewDto": {
        "type": "object",
        "properties": {
          "columns": {
            "$ref": "#/components/schemas/ResourceContentPageColumnsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents information about the resource type for the columns within the entries view Vue component."
      },
      "ResourceContentPageMetadataViewDto": {
        "type": "object",
        "properties": {
          "editableDataUrl": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether indicates if a data URL can be provided and is editable."
          },
          "editableKey": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether indicates if a key can be provided and is editable."
          }
        },
        "additionalProperties": false,
        "description": "Represents the metadata view for a resource's content page."
      },
      "ResourceCreationPageDto": {
        "type": "object",
        "properties": {
          "components": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Gets list of Lists containing all the resource type specific components for the steps in the resource creation page."
          }
        },
        "additionalProperties": false,
        "description": "Represents the structure of resource type-specific components for steps in the resource creation page."
      },
      "ResourceDto": {
        "required": [
          "applicationProfile",
          "description",
          "disciplines",
          "displayName",
          "fixedValues",
          "name",
          "pid",
          "type",
          "visibility"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets unique identifier for the resource.",
            "format": "uuid"
          },
          "pid": {
            "type": "string",
            "description": "Gets or sets persistent identifier for the resource."
          },
          "type": {
            "$ref": "#/components/schemas/ResourceTypeDto"
          },
          "name": {
            "type": "string",
            "description": "Gets name of the resource."
          },
          "displayName": {
            "type": "string",
            "description": "Gets display name of the resource."
          },
          "description": {
            "type": "string",
            "description": "Gets description of the resource."
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Gets keywords associated with the resource.",
            "nullable": true
          },
          "license": {
            "$ref": "#/components/schemas/LicenseDto"
          },
          "usageRights": {
            "type": "string",
            "description": "Gets usage rights associated with the resource.",
            "nullable": true
          },
          "metadataLocalCopy": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether a local copy of the metadata is available for the resource."
          },
          "metadataExtraction": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether metadata extraction is enabled for the resource."
          },
          "applicationProfile": {
            "$ref": "#/components/schemas/ApplicationProfileMinimalDto"
          },
          "fixedValues": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FixedValueForResourceManipulationDto"
                }
              }
            },
            "description": "Gets fixed values associated with resource manipulation.\r\nThis dictionary may contain multiple levels and is structured as follows:\r\nDictionary (Key: string) -> Dictionary (Key: string) -> List of FixedValueForResourceManipulationDto."
          },
          "disciplines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisciplineDto"
            },
            "description": "Gets disciplines associated with the resource."
          },
          "visibility": {
            "$ref": "#/components/schemas/VisibilityDto"
          },
          "dateCreated": {
            "type": "string",
            "description": "Gets date when the resource was created.",
            "format": "date-time",
            "nullable": true
          },
          "creator": {
            "$ref": "#/components/schemas/UserMinimalDto"
          },
          "archived": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether the resource is archived."
          },
          "maintenanceMode": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether indicates whether the resource is in maintenance mode."
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectMinimalDto"
            },
            "description": "Gets or sets the projects associated with the resource.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for resource details."
      },
      "ResourceDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceDto"
            },
            "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
      },
      "ResourceDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ResourceDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ResourceForCreationDto": {
        "required": [
          "applicationProfile",
          "description",
          "disciplines",
          "name",
          "resourceTypeId",
          "resourceTypeOptions",
          "visibility"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Gets the name of the resource."
          },
          "displayName": {
            "maxLength": 25,
            "type": "string",
            "description": "Gets the display name of the resource.",
            "nullable": true
          },
          "description": {
            "maxLength": 10000,
            "minLength": 1,
            "type": "string",
            "description": "Gets the description of the resource."
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Gets the keywords associated with the resource.",
            "nullable": true
          },
          "fixedValues": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FixedValueForResourceManipulationDto"
                }
              }
            },
            "description": "Gets fixed values associated with the resource.",
            "nullable": true
          },
          "license": {
            "$ref": "#/components/schemas/LicenseForResourceManipulationDto"
          },
          "usageRights": {
            "maxLength": 200,
            "type": "string",
            "description": "Gets the usage rights description of the resource.",
            "nullable": true
          },
          "metadataLocalCopy": {
            "type": "boolean",
            "description": "Gets if a local copy for the metadata should be created.",
            "nullable": true
          },
          "visibility": {
            "$ref": "#/components/schemas/VisibilityForResourceManipulationDto"
          },
          "disciplines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisciplineForResourceManipulationDto"
            },
            "description": "Gets the disciplines associated with the resource."
          },
          "resourceTypeId": {
            "type": "string",
            "description": "Gets the identifier of the resource type associated with the resource.",
            "format": "uuid"
          },
          "applicationProfile": {
            "$ref": "#/components/schemas/ApplicationProfileForResourceCreationDto"
          },
          "resourceTypeOptions": {
            "$ref": "#/components/schemas/ResourceTypeOptionsForCreationDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) used for creating a resource.\r\nInherits properties from Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.ResourceForManipulationDto."
      },
      "ResourceForUpdateDto": {
        "required": [
          "archived",
          "description",
          "disciplines",
          "name",
          "visibility"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Gets the name of the resource."
          },
          "displayName": {
            "maxLength": 25,
            "type": "string",
            "description": "Gets the display name of the resource.",
            "nullable": true
          },
          "description": {
            "maxLength": 10000,
            "minLength": 1,
            "type": "string",
            "description": "Gets the description of the resource."
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Gets the keywords associated with the resource.",
            "nullable": true
          },
          "fixedValues": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FixedValueForResourceManipulationDto"
                }
              }
            },
            "description": "Gets fixed values associated with the resource.",
            "nullable": true
          },
          "license": {
            "$ref": "#/components/schemas/LicenseForResourceManipulationDto"
          },
          "usageRights": {
            "maxLength": 200,
            "type": "string",
            "description": "Gets the usage rights description of the resource.",
            "nullable": true
          },
          "metadataLocalCopy": {
            "type": "boolean",
            "description": "Gets if a local copy for the metadata should be created.",
            "nullable": true
          },
          "visibility": {
            "$ref": "#/components/schemas/VisibilityForResourceManipulationDto"
          },
          "disciplines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisciplineForResourceManipulationDto"
            },
            "description": "Gets the disciplines associated with the resource."
          },
          "archived": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether the resource is archived."
          },
          "resourceTypeOptions": {
            "$ref": "#/components/schemas/ResourceTypeOptionsForUpdateDto"
          },
          "maintenanceMode": {
            "type": "boolean",
            "description": "Gets indicates whether the resource is in maintenance mode.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) used for updating a resource.\r\nInherits properties from Coscine.Api.Core.Shared.DataTransferObjects.ParameterObjects.ResourceForManipulationDto."
      },
      "ResourceMinimalDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets unique identifier for the resource.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents a minimal Data Transfer Object (DTO) for a resource, containing essential identifiers."
      },
      "ResourceQuotaDto": {
        "required": [
          "resource"
        ],
        "type": "object",
        "properties": {
          "resource": {
            "$ref": "#/components/schemas/ResourceMinimalDto"
          },
          "usedPercentage": {
            "type": "number",
            "description": "Gets or sets the percentage of quota used by the resource.",
            "format": "float",
            "nullable": true
          },
          "used": {
            "$ref": "#/components/schemas/QuotaDto"
          },
          "versions": {
            "$ref": "#/components/schemas/QuotaDto"
          },
          "reserved": {
            "$ref": "#/components/schemas/QuotaDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) containing quota information for a resource."
      },
      "ResourceQuotaDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ResourceQuotaDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ResourceTypeDto": {
        "required": [
          "generalType",
          "specificType"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier of the resource type.",
            "format": "uuid"
          },
          "generalType": {
            "type": "string",
            "description": "Gets the general type of the resource."
          },
          "specificType": {
            "type": "string",
            "description": "Gets the specific type of the resource."
          },
          "options": {
            "$ref": "#/components/schemas/ResourceTypeOptionsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a resource type."
      },
      "ResourceTypeInformationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets or sets the unique identifier of the resource type.",
            "format": "uuid"
          },
          "generalType": {
            "type": "string",
            "description": "Gets the general type of the resource.",
            "nullable": true
          },
          "specificType": {
            "type": "string",
            "description": "Gets the specific type of the resource.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/ResourceTypeStatus"
          },
          "canCreate": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type supports creation."
          },
          "canRead": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type supports reading."
          },
          "canSetResourceReadonly": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type supports read-only."
          },
          "canUpdate": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type supports updating."
          },
          "canUpdateResource": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type supports updating (not an Object)."
          },
          "canDelete": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type supports deletion."
          },
          "canDeleteResource": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type supports deletion (not an Object)."
          },
          "canList": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type supports listing."
          },
          "canCreateLinks": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type supports linking."
          },
          "canCopyLocalMetadata": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether indicates whether local backup of metadata is supported."
          },
          "isArchived": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type is archived."
          },
          "isQuotaAvailable": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type supports quota."
          },
          "isQuotaAdjustable": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type quota can be changed."
          },
          "supportsVersioning": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether indicates if the resource type supports versioning."
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates if the resource type is enabled.",
            "readOnly": true
          },
          "resourceCreation": {
            "$ref": "#/components/schemas/ResourceCreationPageDto"
          },
          "resourceContent": {
            "$ref": "#/components/schemas/ResourceContentPageDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents information about a resource type."
      },
      "ResourceTypeInformationDtoIEnumerableResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceTypeInformationDto"
            },
            "nullable": true
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ResourceTypeInformationDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ResourceTypeInformationDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ResourceTypeMinimalDto": {
        "required": [
          "id",
          "specificType"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier of the resource type.",
            "format": "uuid"
          },
          "specificType": {
            "type": "string",
            "description": "Gets the specific type of the resource."
          }
        },
        "additionalProperties": false,
        "description": "Represents a minimal Data Transfer Object (DTO) for a resource type."
      },
      "ResourceTypeOptionsDto": {
        "type": "object",
        "properties": {
          "linkedData": {
            "$ref": "#/components/schemas/LinkedDataOptionsDto"
          },
          "gitLab": {
            "$ref": "#/components/schemas/GitLabOptionsDto"
          },
          "rds": {
            "$ref": "#/components/schemas/RdsOptionsDto"
          },
          "rdsS3": {
            "$ref": "#/components/schemas/RdsS3OptionsDto"
          },
          "rdsS3Worm": {
            "$ref": "#/components/schemas/RdsS3WormOptionsDto"
          },
          "fileSystemStorage": {
            "$ref": "#/components/schemas/FileSystemStorageOptionsDto"
          },
          "dataStorageNrwWeb": {
            "$ref": "#/components/schemas/DataStorageNrwWebOptionsDto"
          },
          "dataStorageNrwS3": {
            "$ref": "#/components/schemas/DataStorageNrwS3OptionsDto"
          },
          "dataStorageNrwS3Worm": {
            "$ref": "#/components/schemas/DataStorageNrwS3WormOptionsDto"
          }
        },
        "additionalProperties": false,
        "description": "**Deprecated:** The ResourceTypeOptionsDto is gettingendpoints at \"/projects/{projectId}/resources/{resourceId}/type/config/\".\r\nRepresents the options available for different resource types."
      },
      "ResourceTypeOptionsForCreationDto": {
        "type": "object",
        "properties": {
          "linkedResourceTypeOptions": {
            "$ref": "#/components/schemas/LinkedDataResourceTypeOptionsForManipulationDto"
          },
          "gitlabResourceTypeOptions": {
            "$ref": "#/components/schemas/GitlabResourceTypeOptionsForCreationDto"
          },
          "rdsResourceTypeOptions": {
            "$ref": "#/components/schemas/RdsResourceTypeOptionsForManipulationDto"
          },
          "rdsS3ResourceTypeOptions": {
            "$ref": "#/components/schemas/RdsS3ResourceTypeOptionsForManipulationDto"
          },
          "rdsS3WormResourceTypeOptions": {
            "$ref": "#/components/schemas/RdsS3WormResourceTypeOptionsForManipulationDto"
          },
          "dataStorageNrwWebResourceTypeOptions": {
            "$ref": "#/components/schemas/DataStorageNrwWebResourceTypeOptionsForManipulationDto"
          },
          "dataStorageNrwS3ResourceTypeOptions": {
            "$ref": "#/components/schemas/DataStorageNrwS3ResourceTypeOptionsForManipulationDto"
          },
          "dataStorageNrwS3WormResourceTypeOptions": {
            "$ref": "#/components/schemas/DataStorageNrwS3WormResourceTypeOptionsForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for creating options related to any resource type."
      },
      "ResourceTypeOptionsForUpdateDto": {
        "type": "object",
        "properties": {
          "linkedResourceTypeOptions": {
            "$ref": "#/components/schemas/LinkedDataResourceTypeOptionsForManipulationDto"
          },
          "gitlabResourceTypeOptions": {
            "$ref": "#/components/schemas/GitlabResourceTypeOptionsForUpdateDto"
          },
          "rdsResourceTypeOptions": {
            "$ref": "#/components/schemas/RdsResourceTypeOptionsForManipulationDto"
          },
          "rdsS3ResourceTypeOptions": {
            "$ref": "#/components/schemas/RdsS3ResourceTypeOptionsForManipulationDto"
          },
          "rdsS3WormResourceTypeOptions": {
            "$ref": "#/components/schemas/RdsS3WormResourceTypeOptionsForManipulationDto"
          },
          "dataStorageNrwWebResourceTypeOptions": {
            "$ref": "#/components/schemas/DataStorageNrwWebResourceTypeOptionsForManipulationDto"
          },
          "dataStorageNrwS3ResourceTypeOptions": {
            "$ref": "#/components/schemas/DataStorageNrwS3ResourceTypeOptionsForManipulationDto"
          },
          "dataStorageNrwS3WormResourceTypeOptions": {
            "$ref": "#/components/schemas/DataStorageNrwS3WormResourceTypeOptionsForManipulationDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) used for updating options related to any resource type."
      },
      "ResourceTypeStatus": {
        "enum": [
          "hidden",
          "active"
        ],
        "type": "string",
        "description": "Specifies the status of a resource type."
      },
      "RoleDto": {
        "required": [
          "description",
          "displayName",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier of the role.",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name of the role."
          },
          "description": {
            "type": "string",
            "description": "Gets the description of the role."
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for a role."
      },
      "RoleDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoleDto"
            },
            "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
      },
      "RoleDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RoleDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RoleMinimalDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier of the role.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) containing minimal information about a role."
      },
      "SearchCategory": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Gets or sets the name of the search category."
          },
          "count": {
            "type": "integer",
            "description": "Gets or sets the count of occurrences for the search category.",
            "format": "int64"
          }
        },
        "additionalProperties": false,
        "description": "Represents a search category with a name and count of occurrences."
      },
      "SearchCategoryType": {
        "enum": [
          "None",
          "https://purl.org/coscine/terms/structure#Metadata",
          "https://purl.org/coscine/terms/structure#Project",
          "https://purl.org/coscine/terms/structure#Resource"
        ],
        "type": "string",
        "description": "Specifies the search item type."
      },
      "SearchResultDto": {
        "required": [
          "source",
          "type",
          "uri"
        ],
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Gets the URI associated with the search result.",
            "format": "uri"
          },
          "type": {
            "$ref": "#/components/schemas/SearchCategoryType"
          },
          "source": {
            "description": "Gets the dynamic source data for the search result."
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for search results."
      },
      "SearchResultDtoPagedSearchResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchResultDto"
            },
            "nullable": true
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchCategory"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StorageDataHamsterKpiDto": {
        "type": "object",
        "properties": {
          "reserved": {
            "$ref": "#/components/schemas/DataHamsterKpiDto"
          },
          "used": {
            "$ref": "#/components/schemas/DataHamsterKpiDto"
          }
        },
        "additionalProperties": false
      },
      "StorageDataHamsterKpiDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/StorageDataHamsterKpiDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StorageNodeDto": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "path": {
            "type": "string"
          },
          "prefix": {
            "type": "string",
            "description": "Gets the prefix of the node."
          },
          "name": {
            "type": "string",
            "description": "Gets the name of the node."
          },
          "hasMetadata": {
            "type": "boolean"
          },
          "hasData": {
            "type": "boolean"
          },
          "hasChildren": {
            "type": "boolean"
          },
          "links": {
            "$ref": "#/components/schemas/StorageNodeLinks"
          }
        },
        "additionalProperties": false
      },
      "StorageNodeDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StorageNodeDto"
            },
            "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
      },
      "StorageNodeDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/StorageNodeDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StorageNodeLinks": {
        "type": "object",
        "properties": {
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "data": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "children": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "self": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "links": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        },
        "additionalProperties": false
      },
      "TermsOfServiceDto": {
        "required": [
          "href",
          "isCurrent",
          "version"
        ],
        "type": "object",
        "properties": {
          "version": {
            "type": "string",
            "description": "Gets the version of the terms of service."
          },
          "href": {
            "type": "string",
            "description": "Gets the URI point to the content of ToS' version",
            "format": "uri"
          },
          "isCurrent": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether these terms of service are current or not."
          }
        },
        "additionalProperties": false,
        "description": "Represents the Data Transfer Object (DTO) for terms of service information."
      },
      "TermsOfServiceDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TermsOfServiceDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TitleDto": {
        "required": [
          "displayName",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the identifier for the title.",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "description": "Gets the displayed name of the title."
          }
        },
        "additionalProperties": false,
        "description": "Represents the Data Transfer Object (DTO) for title information."
      },
      "TitleDtoIEnumerableResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TitleDto"
            },
            "nullable": true
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TitleDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TitleDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TitleForUserManipulationDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier of the title.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for manipulating a user's title."
      },
      "TreeDataType": {
        "enum": [
          "Tree",
          "Leaf"
        ],
        "type": "string",
        "description": "Represents the types of nodes within a hierarchical tree structure."
      },
      "UserDto": {
        "required": [
          "areToSAccepted",
          "disciplines",
          "displayName",
          "emails",
          "id",
          "identities",
          "organizations"
        ],
        "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
          },
          "emails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserEmailDto"
            },
            "description": "Gets the email addresses associated with the user."
          },
          "title": {
            "$ref": "#/components/schemas/TitleDto"
          },
          "language": {
            "$ref": "#/components/schemas/LanguageDto"
          },
          "areToSAccepted": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether indicates if the terms of service are accepted by the user."
          },
          "createdAt": {
            "type": "string",
            "description": "Gets the date and time (UTC) when the user account was created.",
            "format": "date-time",
            "nullable": true
          },
          "latestActivity": {
            "type": "string",
            "description": "Gets the date and time of the latest activity of the user.",
            "format": "date-time",
            "nullable": true
          },
          "disciplines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisciplineDto"
            },
            "description": "Gets the disciplines associated with the user."
          },
          "organizations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserOrganizationDto"
            },
            "description": "Gets or sets the organizations associated with the user."
          },
          "identities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdentityProviderDto"
            },
            "description": "Gets the identity providers associated with the user."
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CoscineRoleDto"
            },
            "description": "Gets or sets the coscine roles associated with the user."
          },
          "dataProcessingConsentAt": {
            "type": "string",
            "description": "Gets or sets the date and time when the user give consent to the proccessing of data.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for user-related information."
      },
      "UserDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserDto"
            },
            "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
      },
      "UserDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UserDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UserEmailDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Gets the email address of the user.",
            "nullable": true
          },
          "isConfirmed": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether the email address is confirmed."
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Gets a value indicating whether indicates whether the email address is the primary one for the user."
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for user email information."
      },
      "UserForUpdateDto": {
        "required": [
          "disciplines",
          "email",
          "familyName",
          "givenName",
          "language"
        ],
        "type": "object",
        "properties": {
          "givenName": {
            "minLength": 1,
            "type": "string",
            "description": "Gets the user's given name."
          },
          "familyName": {
            "minLength": 1,
            "type": "string",
            "description": "Gets the user's family name."
          },
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "Gets the user's email address.",
            "format": "email"
          },
          "title": {
            "$ref": "#/components/schemas/TitleForUserManipulationDto"
          },
          "language": {
            "$ref": "#/components/schemas/LanguageForUserManipulationDto"
          },
          "organization": {
            "type": "string",
            "description": "Gets the user's organization.",
            "nullable": true
          },
          "disciplines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisciplineForUserManipulationDto"
            },
            "description": "Gets the disciplines associated with the user for manipulation."
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for updating user details."
      },
      "UserMergeDto": {
        "required": [
          "token"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Gets the token required for merging user accounts."
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for merging user accounts."
      },
      "UserMergeDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UserMergeDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UserMinimalDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier for the user.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents a minimal Data Transfer Object (DTO) for user information."
      },
      "UserNotificationForCreationDto": {
        "required": [
          "notificationId"
        ],
        "type": "object",
        "properties": {
          "notificationId": {
            "type": "string",
            "description": "Gets the id of the notification.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object (DTO) representing the creation of a user notification."
      },
      "UserNotificationOptOutDto": {
        "required": [
          "id",
          "notificationId",
          "userId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets or sets unique identifier for the user notification.",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "description": "Gets or sets unique identifier of the user.",
            "format": "uuid"
          },
          "notificationId": {
            "type": "string",
            "description": "Gets or sets unique identifier of the notification.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents a minimal data transfer object (DTO) for a user notification."
      },
      "UserNotificationOptOutDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserNotificationOptOutDto"
            },
            "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
      },
      "UserNotificationOptOutDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UserNotificationOptOutDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UserOrganizationDto": {
        "required": [
          "displayName",
          "readOnly"
        ],
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "Gets the ROR (Research Organization Registry) ID of the organization.",
            "format": "uri",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name of the organization."
          },
          "email": {
            "type": "string",
            "description": "Gets or sets the email address of the organization.",
            "nullable": true
          },
          "defaultQuota": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DefaultOrganizationQuotaDto"
            },
            "description": "Gets or sets the default quota of the organization.",
            "nullable": true
          },
          "readOnly": {
            "type": "boolean",
            "description": "Gets a value indicating whether the organization's details can be modified."
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for user-related organization information, inheriting from OrganizationDto."
      },
      "UserProjectRoleCountDto": {
        "type": "object",
        "properties": {
          "activeProjectRolesTotal": {
            "type": "integer",
            "description": "Gets the total number of active project roles associated with the current authenticated user.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object containing the number of active project roles for a user."
      },
      "UserProjectRoleCountDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UserProjectRoleCountDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UserTermsOfServiceAcceptDto": {
        "required": [
          "version"
        ],
        "type": "object",
        "properties": {
          "version": {
            "minLength": 1,
            "type": "string",
            "description": "Gets the version of the terms of service being accepted."
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for accepting the terms of service by a user."
      },
      "VariantDto": {
        "type": "object",
        "properties": {
          "graphName": {
            "type": "string",
            "description": "Name of the graph.",
            "format": "uri"
          },
          "similarity": {
            "type": "number",
            "description": "Similarity value 0-1",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Represents the variants of this specific metadata tree."
      },
      "VisibilityDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the identifier for the visibility setting.",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name for the visibility setting."
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for visibility settings."
      },
      "VisibilityDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VisibilityDto"
            },
            "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
      },
      "VisibilityDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VisibilityDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "VisibilityForProjectManipulationDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets 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."
      },
      "VisibilityForResourceManipulationDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Gets the unique identifier of the visibility setting.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents the data transfer object (DTO) for manipulating the visibility of a resource."
      },
      "VocabularyDto": {
        "required": [
          "classUri",
          "graphUri"
        ],
        "type": "object",
        "properties": {
          "graphUri": {
            "type": "string",
            "description": "Gets the URI of the graph containing the vocabulary.",
            "format": "uri"
          },
          "classUri": {
            "type": "string",
            "description": "Gets the URI of the top-level parent class in the vocabulary.",
            "format": "uri"
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name of the vocabulary.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Gets the description of the vocabulary.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for vocabulary details."
      },
      "VocabularyDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VocabularyDto"
            },
            "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
      },
      "VocabularyInstanceDto": {
        "required": [
          "graphUri"
        ],
        "type": "object",
        "properties": {
          "graphUri": {
            "type": "string",
            "description": "Gets the URI of the graph containing the vocabulary.",
            "format": "uri"
          },
          "instanceUri": {
            "type": "string",
            "description": "Gets or sets the URI of the instance.",
            "format": "uri"
          },
          "typeUri": {
            "type": "string",
            "description": "Gets the URI representing the type of the instance.",
            "format": "uri",
            "nullable": true
          },
          "subClassOfUri": {
            "type": "string",
            "description": "Gets the URI of the direct parent class.",
            "format": "uri",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "description": "Gets the display name of the vocabulary instance.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Gets the description of the vocabulary instance.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a Data Transfer Object (DTO) for vocabulary instance details."
      },
      "VocabularyInstanceDtoPagedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VocabularyInstanceDto"
            },
            "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
      },
      "VocabularyInstanceDtoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VocabularyInstanceDto"
          },
          "isSuccess": {
            "type": "boolean",
            "readOnly": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "JWT Authorization header using the Bearer scheme.",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ],
  "tags": [
    {
      "name": "Admin",
      "description": "Endpoints for admin functionality."
    },
    {
      "name": "ApplicationProfile",
      "description": "Endpoints for the applications profiles."
    },
    {
      "name": "Blob",
      "description": "Endpoints for the Binary Large Objects (BLOBs)."
    },
    {
      "name": "DataHamsterReport",
      "description": "Controller for generating and downloading project-related reports."
    },
    {
      "name": "Discipline",
      "description": "Endpoints for the disciplines."
    },
    {
      "name": "Graph",
      "description": "Controller for managing storage operations for project resources."
    },
    {
      "name": "GraphMetadataContent",
      "description": "Controller responsible for accessing and managing RDF metadata content\r\nassociated with specific graph nodes of a project resource."
    },
    {
      "name": "GraphMetadata",
      "description": "Controller for managing metadata version history and retrieval\r\nfor project resources and graph nodes."
    },
    {
      "name": "Handle",
      "description": "Endpoints for the handles."
    },
    {
      "name": "Language",
      "description": "Endpoints for the languages."
    },
    {
      "name": "License",
      "description": "Endpoints for the licenses."
    },
    {
      "name": "Maintenance",
      "description": "Endpoints for the maintenances."
    },
    {
      "name": "Notification",
      "description": "Endpoints for the notifications."
    },
    {
      "name": "Organization",
      "description": "Endpoints for the organizations."
    },
    {
      "name": "Pid",
      "description": "Endpoints for the pids."
    },
    {
      "name": "Project",
      "description": "Endpoints for the projects."
    },
    {
      "name": "ProjectGraphContent",
      "description": "Endpoints for the graphs of projects."
    },
    {
      "name": "ProjectInvitation",
      "description": "Endpoints for the project invitations."
    },
    {
      "name": "ProjectMember",
      "description": "Endpoints for the project members."
    },
    {
      "name": "ProjectPublicationRequest",
      "description": "Endpoints for the projects."
    },
    {
      "name": "ProjectQuota",
      "description": "Endpoints for the project quotas."
    },
    {
      "name": "ProjectResource",
      "description": "Endpoints for the project resources."
    },
    {
      "name": "ProjectResourceQuota",
      "description": "Endpoints for the resource quotas."
    },
    {
      "name": "ProjectResourceType",
      "description": "Endpoints for the resource types."
    },
    {
      "name": "ProjectSubProjects",
      "description": "Endpoints for the sub-projects."
    },
    {
      "name": "Provenance",
      "description": "Endpoints for the provenance information."
    },
    {
      "name": "PublicationAdvisoryService",
      "description": "Endpoints for the publication services."
    },
    {
      "name": "Report",
      "description": "Controller for generating and downloading project-related reports."
    },
    {
      "name": "Resource",
      "description": "Endpoints for the resources."
    },
    {
      "name": "ResourceGraphContent",
      "description": "Endpoints for the graphs of resources."
    },
    {
      "name": "ResourceType",
      "description": "Endpoints for the resource types."
    },
    {
      "name": "ResourceTypeGitLab",
      "description": "Endpoints for the gitlab resource types."
    },
    {
      "name": "ResourceTypeOptions",
      "description": "Endpoints for the resource types."
    },
    {
      "name": "Role",
      "description": "Endpoints for the roles."
    },
    {
      "name": "Search",
      "description": "Endpoints for search."
    },
    {
      "name": "SelfApiToken",
      "description": "Endpoints for the api tokens of a user."
    },
    {
      "name": "Self",
      "description": "Endpoints for the current authenticated user."
    },
    {
      "name": "SelfSession",
      "description": "Endpoints for the current current session."
    },
    {
      "name": "StorageContent",
      "description": "Provides endpoints for managing raw file content in blob storage for project resources,\r\nincluding downloading, uploading, and updating files."
    },
    {
      "name": "Storage",
      "description": "Provides endpoints for managing blob storage operations for project resources,\r\nsuch as checking existence and deleting files or folders."
    },
    {
      "name": "SystemStatus",
      "description": "Endpoints for system status messages."
    },
    {
      "name": "Title",
      "description": "Endpoints for the titles."
    },
    {
      "name": "Tos",
      "description": "Endpoints for the terms of services (tos)."
    },
    {
      "name": "Tree",
      "description": "Endpoints for the file and metadata trees."
    },
    {
      "name": "User",
      "description": "Endpoints for the users."
    },
    {
      "name": "UserNotificationOptOut",
      "description": "Endpoints for the user notification opt outs."
    },
    {
      "name": "Visibility",
      "description": "Endpoints for the visibilities."
    },
    {
      "name": "Vocabulary",
      "description": "Endpoints for the Endpoints for the vocabularies."
    }
  ]
}