{
  "openapi": "3.0.1",
  "info": {
    "title": "Comos.Walkinside.WebApi 1.0",
    "version": "1.0"
  },
  "paths": {
    "/imports/{id}": {
      "get": {
        "tags": [
          "Imports"
        ],
        "summary": "Get import attempt item by id.",
        "operationId": "Imports_GetByIdAsync",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Import attempt id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "303": {
            "description": "Redirect",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Import"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Import"
                }
              }
            }
          }
        }
      }
    },
    "/jobs": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Gets jobs.",
        "description": "Retrieves a list of jobs.",
        "operationId": "Jobs_GetAll",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Job"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/jobs/{id}": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Gets a job.",
        "description": "Retrieves details of a specific job.",
        "operationId": "Jobs_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Job id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Job"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/jobs/{id}/actions/cancel": {
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "Cancels a job.",
        "description": "Cancels an ongoing job.",
        "operationId": "Jobs_Cancel",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "A job id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/labels": {
      "get": {
        "tags": [
          "Labels"
        ],
        "summary": "Gets labels.",
        "description": "Retrieves a list of all labels.",
        "operationId": "Labels_GetAll",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Label"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Labels"
        ],
        "summary": "Creates a label.",
        "description": "Adds a new label.",
        "operationId": "Labels_CreateAsync",
        "requestBody": {
          "description": "The Label.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrUpdateLabel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrUpdateLabel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrUpdateLabel"
              }
            }
          }
        },
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Label"
                }
              }
            }
          }
        }
      }
    },
    "/labels/{id}": {
      "delete": {
        "tags": [
          "Labels"
        ],
        "summary": "Deletes a label.",
        "description": "Removes an existing label.",
        "operationId": "Labels_DeleteAsync",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Label id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "202": {
            "description": "Accepted"
          }
        }
      },
      "get": {
        "tags": [
          "Labels"
        ],
        "summary": "Gets a label by id.",
        "operationId": "Labels_GetById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The label id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Label"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Labels"
        ],
        "summary": "Updates a label.",
        "description": "Modifies label details.",
        "operationId": "Labels_UpdateAsync",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Label Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The Label.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrUpdateLabel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrUpdateLabel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrUpdateLabel"
              }
            }
          }
        },
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Label"
                }
              }
            }
          }
        }
      }
    },
    "/projectlabels/{id}/labels/{labelId}": {
      "delete": {
        "tags": [
          "ProjectLabels"
        ],
        "summary": "Remove assigned label of project.",
        "operationId": "ProjectLabels_RemoveProjectLabelAsync",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "labelId",
            "in": "path",
            "description": "The label id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProjectLabels"
        ],
        "summary": "Assign label to project.",
        "operationId": "ProjectLabels_AssignProjectLabelAsync",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "labelId",
            "in": "path",
            "description": "The label id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          }
        }
      }
    },
    "/projects": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "Gets projects.",
        "description": "Retrieves a list of all projects.",
        "operationId": "Projects_GetAll",
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Project"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Projects"
        ],
        "summary": "Creates a project.",
        "description": "Uploads a new project.",
        "operationId": "Projects_Create",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "uploadFile"
                ],
                "type": "object",
                "properties": {
                  "uploadFile": {
                    "type": "file",
                    "description": "Upload File",
                    "format": "formData"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        }
      }
    },
    "/projects/{id}": {
      "delete": {
        "tags": [
          "Projects"
        ],
        "summary": "Deletes a project.",
        "description": "Removes an existing project.",
        "operationId": "Projects_DeleteById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "Gets Upload Attempt by Id.",
        "operationId": "Projects_GetById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Project Id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Projects"
        ],
        "summary": "Upgrades a Project.",
        "operationId": "Projects_UpgradeAsync",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "uniqueAttributeName",
            "in": "query",
            "description": "Unique attribute name.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "uploadFile"
                ],
                "type": "object",
                "properties": {
                  "uploadFile": {
                    "type": "file",
                    "description": "Upload File",
                    "format": "formData"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Projects"
        ],
        "summary": "Updates project metadata.",
        "description": "Modifies project details such as display name and description.",
        "operationId": "Projects_UpdateProjectMetadata",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The project metadata.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectMetadata"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectMetadata"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectMetadata"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          }
        }
      }
    },
    "/projects/{id}/share": {
      "delete": {
        "tags": [
          "Projects"
        ],
        "summary": "Unshare a project to one or multiple users.",
        "operationId": "Projects_UnshareProject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "project id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "user ids",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Projects"
        ],
        "summary": "Share a project to one or multiple users.",
        "operationId": "Projects_ShareProject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "project id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "user ids",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}/actions/restore/{id}": {
      "post": {
        "tags": [
          "Backups"
        ],
        "summary": "Restores a project using a backup.",
        "operationId": "Backups_RestoreAsync",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "Project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Project backup id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}/backups": {
      "get": {
        "tags": [
          "Backups"
        ],
        "summary": "Gets all project backups.",
        "operationId": "Backups_GetAllAsync",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "Project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectBackup"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Backups"
        ],
        "summary": "Creates a project backup.",
        "operationId": "Backups_CreateAsync",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "Project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}/backups/{id}": {
      "delete": {
        "tags": [
          "Backups"
        ],
        "summary": "Deletes a project backup.",
        "operationId": "Backups_DeleteById",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "Project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Project backup id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Backups"
        ],
        "summary": "Gets a project backup.",
        "operationId": "Backups_GetByIdAsync",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "Project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Project backup id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectBackup"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}/branches": {
      "get": {
        "tags": [
          "Branches"
        ],
        "summary": "Get branches.",
        "operationId": "Branches_GetAllAsync",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "names",
            "in": "query",
            "description": "Names of the branches.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "kind",
            "in": "query",
            "description": "The supported kind of branches, 0 for CAD branches, 1 for FRT branches.",
            "schema": {
              "$ref": "#/components/schemas/BranchKind"
            }
          },
          {
            "name": "ids",
            "in": "query",
            "description": "Ids of the branches.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "attributeName",
            "in": "query",
            "description": "Attribute name of the branches.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "attributeValue",
            "in": "query",
            "description": "Attribute value of the branches.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Branch"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}/branches/{branchId}/attributes": {
      "get": {
        "tags": [
          "BranchAttributes"
        ],
        "summary": "Get branch attributes for the branch.",
        "operationId": "BranchAttributes_GetBranchAttributesById",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "branchId",
            "in": "path",
            "description": "The branch id.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BranchAttribute"
                  }
                }
              }
            }
          },
          "501": {
            "description": "Server Error"
          }
        }
      }
    },
    "/projects/{projectId}/branches/{id}": {
      "get": {
        "tags": [
          "Branches"
        ],
        "summary": "Get branch by id.",
        "operationId": "Branches_GetByIdAsync",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "Project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Branch id.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Branch"
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}/branches/query": {
      "post": {
        "tags": [
          "Branches"
        ],
        "summary": "Get branches.",
        "operationId": "Branches_GetAllPostAsync",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The Project id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "Filters to apply.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BranchFilters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BranchFilters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BranchFilters"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Branch"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}/scenarios": {
      "get": {
        "tags": [
          "Scenarios"
        ],
        "summary": "Gets scenarios.",
        "description": "Retrieves a list of all scenarios within a project.",
        "operationId": "Scenarios_GetAll",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Scenario"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}/scenarios/{scenarioId}": {
      "get": {
        "tags": [
          "Scenarios"
        ],
        "summary": "Gets a scenario.",
        "description": "Retrieves details of a specific scenario.",
        "operationId": "Scenarios_GetScenarioByIdAsync",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scenarioId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Scenario"
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}/viewpoints": {
      "get": {
        "tags": [
          "Viewpoints"
        ],
        "summary": "Gets viewpoints.",
        "description": "Retrieves a list of all viewpoints within a project.",
        "operationId": "Viewpoints_GetAll",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Viewpoint"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Viewpoints"
        ],
        "summary": "Creates a viewpoint.",
        "description": "Adds a new viewpoint to a project.",
        "operationId": "Viewpoints_Create",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateViewpoint"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateViewpoint"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateViewpoint"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Viewpoint"
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}/viewpoints/{id}": {
      "delete": {
        "tags": [
          "Viewpoints"
        ],
        "summary": "Deletes a viewpoint.",
        "description": "Removes an existing viewpoint.",
        "operationId": "Viewpoints_DeleteById",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Viewpoint"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Viewpoints"
        ],
        "summary": "Updates a viewpoint.",
        "description": "Modifies viewpoint details.",
        "operationId": "Viewpoints_Update",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateViewpoint"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateViewpoint"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateViewpoint"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Viewpoint"
                }
              }
            }
          }
        }
      }
    },
    "/usergroups": {
      "get": {
        "tags": [
          "UserGroups"
        ],
        "summary": "Gets all the user groups.",
        "operationId": "UserGroups_GetAll",
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserGroup"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Gets all Users Information.",
        "operationId": "Users_GetAll",
        "parameters": [
          {
            "name": "loginname",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserInfo"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Creates a user.",
        "description": "Adds a new user to the system.",
        "operationId": "Users_CreateUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUser"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUser"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUser"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfo"
                }
              }
            }
          }
        }
      }
    },
    "/users/{id}": {
      "delete": {
        "tags": [
          "Users"
        ],
        "summary": "Deletes a user.",
        "description": "Removes an existing user.",
        "operationId": "Users_DeleteById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfo"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Gets user information.",
        "description": "Retrieves information about a specific user.",
        "operationId": "Users_GetById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "User id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfo"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Users"
        ],
        "summary": "Updates user information.",
        "description": "Modifies user details.",
        "operationId": "Users_UpdateUser",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The user id of target user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "New user information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUser"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUser"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUser"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfo"
                }
              }
            }
          }
        }
      }
    },
    "/users/me": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Gets User Information.",
        "operationId": "Users_GetUserInfo",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfo"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Users"
        ],
        "summary": "Updates user information.",
        "operationId": "Users_UpdateMe",
        "requestBody": {
          "description": "New user information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUser"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUser"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUser"
              }
            }
          }
        },
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfo"
                }
              }
            }
          }
        }
      }
    },
    "/users/token": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Gets a Jwt token for current user.",
        "description": "Obtains a JWT token for immersive services to work with 3D services.",
        "operationId": "Users_RequestToken",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Action": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Action name."
          }
        },
        "additionalProperties": false,
        "description": "Represents scenario action."
      },
      "Branch": {
        "required": [
          "ancestorNames",
          "ancestors",
          "children",
          "id",
          "kind",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Branch id."
          },
          "name": {
            "type": "string",
            "description": "Branch name."
          },
          "kind": {
            "$ref": "#/components/schemas/BranchKind"
          },
          "ancestors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Branch ancestors."
          },
          "ancestorNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Branch ancestor names."
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BranchChild"
            },
            "description": "Branch children."
          }
        },
        "additionalProperties": false,
        "description": "Branch info."
      },
      "BranchAttribute": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The name of the attribute."
          },
          "value": {
            "type": "string",
            "description": "The value of the attribute.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a named attribute for a branch."
      },
      "BranchChild": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Branch id."
          },
          "name": {
            "type": "string",
            "description": "Branch name."
          }
        },
        "additionalProperties": false,
        "description": "Branch child info."
      },
      "BranchFilters": {
        "type": "object",
        "properties": {
          "names": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Names of the branches.",
            "nullable": true
          },
          "kind": {
            "$ref": "#/components/schemas/BranchKind"
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Ids of the branches.",
            "nullable": true
          },
          "attributeName": {
            "type": "string",
            "description": "Attribute name of the branches.",
            "nullable": true
          },
          "attributeValue": {
            "type": "string",
            "description": "Attribute value of the branches.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Branch query filters."
      },
      "BranchKind": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9
        ],
        "type": "integer",
        "description": "The kind of hierarchy to which the branch belongs.",
        "format": "int32"
      },
      "CreateOrUpdateLabel": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The Label Name."
          }
        },
        "additionalProperties": false,
        "description": "Represents project's label."
      },
      "CreateUser": {
        "required": [
          "displayName",
          "loginName",
          "usergroup"
        ],
        "type": "object",
        "properties": {
          "loginName": {
            "maxLength": 400,
            "minLength": 3,
            "type": "string",
            "description": "The user login name."
          },
          "displayName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The user display name."
          },
          "usergroup": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "The user's usergroup."
          }
        },
        "additionalProperties": false,
        "description": "Represents information regarding create user contract."
      },
      "CreateViewpoint": {
        "required": [
          "direction",
          "name",
          "position"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The viewpoint name."
          },
          "position": {
            "$ref": "#/components/schemas/Point3d"
          },
          "direction": {
            "$ref": "#/components/schemas/Vector3d"
          },
          "thumbnail": {
            "type": "string",
            "description": "The thumbnail.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents create viewpoint contract."
      },
      "Import": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The import Id.",
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/ImportStatus"
          },
          "creationDateTimeUtc": {
            "type": "string",
            "description": "The import creation date time in UTC.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Represents import project contract."
      },
      "ImportStatus": {
        "enum": [
          0,
          1,
          -1
        ],
        "type": "integer",
        "description": "Represents import project status.",
        "format": "int32"
      },
      "Job": {
        "required": [
          "creationDateTimeUtc",
          "creatorId",
          "description",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Job's identifier.",
            "format": "uuid"
          },
          "creatorId": {
            "type": "string",
            "description": "Job's creator identifier.",
            "format": "uuid"
          },
          "creationDateTimeUtc": {
            "type": "string",
            "description": "Creation date.",
            "format": "date-time"
          },
          "startDateTimeUtc": {
            "type": "string",
            "description": "Start date.",
            "format": "date-time",
            "nullable": true
          },
          "endDateTimeUtc": {
            "type": "string",
            "description": "End date.",
            "format": "date-time",
            "nullable": true
          },
          "description": {
            "minLength": 1,
            "type": "string",
            "description": "Job's description."
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "failureReason": {
            "type": "string",
            "description": "Failure reason if the job execution failed.",
            "nullable": true
          },
          "result": {
            "type": "string",
            "description": "Result uri if any.",
            "format": "uri",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a job contract."
      },
      "JobStatus": {
        "enum": [
          0,
          1,
          2,
          3,
          4
        ],
        "type": "integer",
        "description": "Job status.",
        "format": "int32"
      },
      "Label": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The Label Id.",
            "format": "uuid"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The Label Name."
          }
        },
        "additionalProperties": false,
        "description": "Represents project's label."
      },
      "Point3d": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "description": "The x-axis value.",
            "format": "double"
          },
          "y": {
            "type": "number",
            "description": "The y-axis value.",
            "format": "double"
          },
          "z": {
            "type": "number",
            "description": "The z-axis value.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Represents point 3d."
      },
      "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": { }
      },
      "Project": {
        "required": [
          "latestCADUpgradeDateTimeUtc"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The project id.",
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/ProjectStatus"
          },
          "displayName": {
            "type": "string",
            "description": "The display name.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The description.",
            "nullable": true
          },
          "creationDateTimeUtc": {
            "type": "string",
            "description": "The creation date.",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string",
            "description": "The created by user id.",
            "format": "uuid"
          },
          "reservedUrl": {
            "type": "string",
            "description": "The reserved url.",
            "nullable": true
          },
          "sharedWithUsers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SharedWithUserInfo"
            },
            "description": "The shared user information list.",
            "nullable": true
          },
          "latestCADUpgradeDateTimeUtc": {
            "type": "string",
            "description": "The most recent CAD upgrade timestamp.",
            "format": "date-time"
          },
          "labels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Label"
            },
            "description": "Assigned project labels.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents project contract."
      },
      "ProjectBackup": {
        "required": [
          "createdBy",
          "creationDateTimeUtc",
          "id",
          "projectId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The backup id.",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "description": "The project id.",
            "format": "uuid"
          },
          "createdBy": {
            "type": "string",
            "description": "The backup creator id.",
            "format": "uuid"
          },
          "creationDateTimeUtc": {
            "type": "string",
            "description": "The backup creation date.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Represents project backup contract."
      },
      "ProjectMetadata": {
        "required": [
          "displayName"
        ],
        "type": "object",
        "properties": {
          "displayName": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "description": "The project display name."
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "The project description.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents project meta data contract."
      },
      "ProjectStatus": {
        "enum": [
          1000,
          1002
        ],
        "type": "integer",
        "description": "Represents published project status.",
        "format": "int32"
      },
      "Scenario": {
        "required": [
          "actions",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Scenario id.",
            "format": "int64"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Scenario name."
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Action"
            },
            "description": "Scenario action list."
          }
        },
        "additionalProperties": false,
        "description": "Represents scenario."
      },
      "SharedWithUserInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The user id.",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "description": "The display name.",
            "nullable": true
          },
          "group": {
            "type": "string",
            "description": "The user group.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents user info with whom the project is shared contract."
      },
      "UpdateUser": {
        "type": "object",
        "properties": {
          "displayName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The display name.",
            "nullable": true
          },
          "group": {
            "type": "string",
            "description": "The user group.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents update user contract."
      },
      "UpdateViewpoint": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The viewpoint name.",
            "nullable": true
          },
          "position": {
            "$ref": "#/components/schemas/Point3d"
          },
          "direction": {
            "$ref": "#/components/schemas/Vector3d"
          },
          "thumbnail": {
            "type": "string",
            "description": "The thumbnail.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents update viewpoint contract."
      },
      "UserGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "User group id.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "User group name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents User group contract."
      },
      "UserInfo": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "description": "The display name.",
            "nullable": true
          },
          "group": {
            "$ref": "#/components/schemas/UserGroup"
          },
          "id": {
            "type": "string",
            "description": "The user id.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents user information contract."
      },
      "Vector3d": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "description": "The x-axis value.",
            "format": "double"
          },
          "y": {
            "type": "number",
            "description": "The y-axis value.",
            "format": "double"
          },
          "z": {
            "type": "number",
            "description": "The z-axis value.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Represents vector3d."
      },
      "Viewpoint": {
        "required": [
          "creatorId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The viewpoint id.",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "The name.",
            "nullable": true
          },
          "position": {
            "$ref": "#/components/schemas/Point3d"
          },
          "direction": {
            "$ref": "#/components/schemas/Vector3d"
          },
          "thumbnail": {
            "type": "string",
            "description": "The thumbnail.",
            "nullable": true
          },
          "creatorId": {
            "type": "string",
            "description": "Viewpoint creator id.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents viewpoint."
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "bearerAuth": [ ]
    }
  ]
}