Skip to content

Instantly share code, notes, and snippets.

@Vishal023
Last active October 30, 2023 10:03
Show Gist options
  • Save Vishal023/fe72297f809754a2f6ce5cbd52b77929 to your computer and use it in GitHub Desktop.
Save Vishal023/fe72297f809754a2f6ce5cbd52b77929 to your computer and use it in GitHub Desktop.
Open API Spec for "3d Repo IO"
{
"openapi": "3.0.0",
"info": {
"title": "3D Repo IO",
"version": "5.4.2"
},
"servers": [
{
"url": "https://www.3drepo.io:443/api/v5"
}
],
"security": [
{
"keyAuth": []
}
],
"paths": {
"/sso/aad/authenticate": {
"get": {
"description": "Returns a link to Microsoft's authentication page and then to a URI provided upon success",
"tags": [
"Aad"
],
"operationId": "aadAuthenticate",
"parameters": [
{
"in": "query",
"name": "redirectUri",
"schema": {
"type": "string"
},
"description": "a URI to redirect to when authentication finished"
}
],
"responses": {
"200": {
"description": "returns a link to Microsoft's authentication page and then to a provided URI upon success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"link": {
"type": "string",
"description": "link to Microsoft's authenticator"
}
}
}
}
}
}
}
}
},
"/sso/aad/signup": {
"post": {
"description": "Redirects the user to Microsoft's authentication page and signs the user up. Upon successful signup the user is redirected to the URI provided. In case an error is occured during the signup process the user is redirected to the provided URI with the error code specified in the query. See schemas/errorCodes for more details.",
"tags": [
"Aad"
],
"operationId": "aadSignup",
"parameters": [
{
"in": "query",
"name": "redirectUri",
"schema": {
"type": "string"
},
"description": "a URI to redirect to when authentication finished"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"username",
"countryCode",
"mailListAgreed"
],
"properties": {
"username": {
"type": "string",
"description": "The username of the user",
"example": "username123"
},
"countryCode": {
"type": "string",
"description": "The country code of the user",
"example": "GB"
},
"company": {
"type": "string",
"description": "The company of the user",
"example": "3D Repo"
},
"mailListAgreed": {
"type": "boolean",
"description": "Whether the user has signed up for the latest news and tutorials",
"example": true
},
"captcha": {
"type": "string",
"description": "The reCAPTCHA token generated from the sign up form",
"example": "5LcN0ysfAAAAAHpnld1tAweI7DKU7dswmwnHWYcB"
}
}
}
}
}
},
"responses": {
"302": {
"description": "Redirects the user to Microsoft's authentication page and then to a provided URI upon success"
},
"401": {
"$ref": "#/components/responses/invalidArguments"
}
}
}
},
"/sso/aad/link": {
"get": {
"description": "Returns a link to Microsoft's authentication page and links the users account to SSO. Upon successful link the user is redirected to the URI provided. In case an error is occured during the link process the user is redirected to the provided URI with the error code specified in the query. See schemas/errorCodes for more details.",
"tags": [
"Aad"
],
"operationId": "aadLink",
"parameters": [
{
"in": "query",
"name": "redirectUri",
"schema": {
"type": "string"
},
"description": "a URI to redirect to when authentication finished"
}
],
"responses": {
"200": {
"description": "returns a link to Microsoft's authentication page and then to a provided URI upon success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"link": {
"type": "string",
"description": "link to Microsoft's authenticator"
}
}
}
}
}
}
}
}
},
"/sso/unlink": {
"post": {
"description": "Unlinks an SSO user's account from SSO",
"tags": [
"Sso"
],
"operationId": "ssoUnlink",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"password"
],
"properties": {
"password": {
"type": "string",
"description": "The new password of the user",
"example": "password123"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Unlinks the users account from SSO"
},
"401": {
"$ref": "#/components/responses/invalidArguments"
}
}
}
},
"/teamspaces/{teamspace}/jobs": {
"get": {
"description": "Get the list of jobs within this teamspace",
"tags": [
"Teamspaces"
],
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"operationId": "jobList",
"responses": {
"200": {
"description": "Return the list of jobs within the teamspace",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"description": "Job name",
"example": "Architect"
},
"color": {
"type": "string",
"description": "Color that represents the job, in hex",
"example": "#AA00BB"
}
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}": {
"post": {
"description": "Add a new model to the specified project the user is admin of",
"tags": [
"Models"
],
"operationId": "addModel",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"name",
"unit",
"type"
],
"properties": {
"name": {
"type": "string",
"example": "Lego House Architecture",
"description": "Name of the model - this has to be unique within the project",
"maxLength": 120
},
"unit": {
"type": "string",
"enum": [
"mm",
"cm",
"dm",
"m",
"ft"
],
"example": "mm",
"description": "Unit of measurement"
},
"desc": {
"type": "string",
"example": "The Architecture model of the Lego House",
"description": "Model description",
"maxLength": 50
},
"code": {
"type": "string",
"example": "LEGO_ARCHIT_001",
"description": "Model reference code"
},
"type": {
"type": "string",
"example": "Architecture",
"description": "Model type"
},
"surveyPoints": {
"type": "array",
"description": "Survey points for model location",
"items": {
"type": "object",
"properties": {
"position": {
"description": "The point coordinate that maps to the latLong value (should be in OpenGL axis conventions)",
"type": "array",
"items": {
"type": "number",
"example": 23.45,
"minItems": 3,
"maxItems": 3
}
},
"latLong": {
"type": "array",
"description": "The latitude and longitude of the survey point",
"items": {
"type": "number",
"example": 23.45,
"minItems": 2,
"maxItems": 2
}
}
}
}
},
"angleFromNorth": {
"type": "integer",
"example": 100,
"description": "Angle from North in degrees"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Model ID",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "Model ID",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/projectNotFound"
}
}
},
"get": {
"description": "Get a list of models within the specified project the user has access to",
"tags": [
"Models"
],
"operationId": "getModelList",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
}
],
"responses": {
"200": {
"description": "returns list of models",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"models": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Model ID",
"example": "02b05cb0-0057-11ec-8d97-41a278fb55fd"
},
"name": {
"type": "string",
"description": "name of the model",
"example": "Complete structure"
},
"role": {
"$ref": "#/components/schemas/roles"
},
"isFavourite": {
"type": "boolean",
"description": "whether the model is a favourited item for the user"
}
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/containerNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/favourites": {
"patch": {
"description": "Add models to the user's favourites list",
"tags": [
"Models"
],
"operationId": "appendModels",
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "ID of project",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"models": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "adds the models found in the request body to the user's favourites list"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
},
"delete": {
"description": "Remove models from the user's favourites list",
"tags": [
"Models"
],
"operationId": "deleteModels",
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "ID of project",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ids",
"description": "list of model ids to remove (comma separated)",
"in": "query",
"schema": {
"type": "string"
},
"example": "a54e8776-da7c-11ec-9d64-0242ac120002,aaa1ffaa-da7c-11ec-9d64-0242ac120002"
}
],
"responses": {
"200": {
"description": "removes the models found in the request body from the user's favourites list"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/stats": {
"get": {
"description": "Get the statistics and general information about a model",
"tags": [
"Models"
],
"operationId": "getModelStats",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Model ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "returns the statistics of a model",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "Model code",
"example": "STR-01"
},
"status": {
"type": "string",
"description": "Current status of the model",
"example": "ok"
},
"containers": {
"type": "array",
"description": "The IDs of the models the model consists of",
"items": {
"type": "string",
"format": "uuid"
}
},
"tickets": {
"type": "object",
"properties": {
"issues": {
"type": "integer",
"description": "The number of non closed issues of the model"
},
"risks": {
"type": "integer",
"description": "The number of unmitigated risks of the model"
}
}
},
"desc": {
"type": "string",
"description": "Model description",
"example": "Floor 1 MEP with Facade"
},
"lastUpdated": {
"type": "integer",
"description": "Timestamp(ms) of when any of the submodels was updated",
"example": 1630598072000
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}": {
"delete": {
"description": "Delete model from project the user is admin of",
"tags": [
"Models"
],
"operationId": "deleteModel",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Model ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Model removed."
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/containerNotFound"
}
}
},
"patch": {
"description": "Updates the settings of a model",
"tags": [
"Models"
],
"operationId": "updateModelSettings",
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "ID of project",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "ID of model",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"example": "model1"
},
"desc": {
"type": "string",
"example": "description1"
},
"surveyPoints": {
"type": "array",
"items": {
"type": "object",
"properties": {
"position": {
"type": "array",
"items": {
"type": "number",
"example": 23.45
}
},
"latLong": {
"type": "array",
"items": {
"type": "number",
"example": 23.45
}
}
}
}
},
"angleFromNorth": {
"type": "integer",
"example": 100
},
"unit": {
"type": "string",
"enum": [
"mm",
"cm",
"dm",
"m",
"ft"
],
"example": "mm"
},
"defaultView": {
"type": "string",
"format": "uuid",
"example": "374bb150-065f-11ec-8edf-ab0f7cc84da8"
},
"defaultLegend": {
"type": "string",
"format": "uuid",
"example": "374bb150-065f-11ec-8edf-ab0f7cc84da8"
}
}
}
}
}
},
"responses": {
"200": {
"description": "updates the settings of the model"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
},
"get": {
"description": "Get the model settings of model",
"tags": [
"Models"
],
"operationId": "getModelSettings",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Model ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "returns the model settings of a model",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/modelSettings"
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/groups/export": {
"post": {
"description": "Export a list of groups from the container/federation",
"tags": [
"Groups"
],
"operationId": "ExportModelGroups",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "List of group ids to export",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "returns list of groups",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/group"
}
}
}
},
"400": {
"$ref": "#/components/responses/invalidArguments"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/groups/import": {
"post": {
"description": "Import a list of groups",
"tags": [
"Groups"
],
"operationId": "ImportModelGroups",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "List of group ids to import",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"groups": {
"$ref": "#/components/schemas/group"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Imported successfully"
},
"400": {
"$ref": "#/components/responses/invalidArguments"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/tickets/{ticket}/comments/{comment}": {
"get": {
"description": "Get the details of a comment",
"tags": [
"Tickets"
],
"operationId": "getComment",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ticket",
"description": "Ticket ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "comment",
"description": "Comment ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "comment have been successfully retrieved",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "The ID of the comment",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
},
"message": {
"type": "string",
"example": "Example message",
"description": "Content of the comment"
},
"images": {
"type": "array",
"description": "The images of the comment",
"items": {
"type": "string",
"format": "uuid",
"description": "The Id of the comment image",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
}
},
"history": {
"type": "array",
"description": "The update history of the comment",
"properties": {
"timestamp": {
"type": "number",
"example": 1632821119000,
"description": "Timestamp of the update"
},
"message": {
"type": "string",
"example": "Example message",
"description": "The content of the comment"
},
"images": {
"type": "array",
"description": "The images of the comment",
"items": {
"type": "string",
"format": "uuid",
"description": "The Id of the comment image",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
}
}
}
},
"deleted": {
"type": "boolean",
"example": true,
"description": "Whether or not the comment is deleted"
},
"author": {
"type": "string",
"example": "username1",
"description": "The username of the comment's author"
},
"createdAt": {
"type": "number",
"example": 1632821119000,
"description": "Timestamp of when the comment was created"
},
"updatedAt": {
"type": "number",
"example": 1632821119000,
"description": "Timestamp of when the comment was last updated"
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
},
"put": {
"description": "Update a ticket comment. The current images or comment are inserted into the history array of the comment",
"tags": [
"Tickets"
],
"operationId": "updateComment",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ticket",
"description": "Ticket ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "comment",
"description": "Comment ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Content of the comment",
"example": "Example message"
},
"images": {
"description": "Images of the comment",
"type": "array",
"items": {
"type": "string",
"description": "Image in a Base64 format or an ID of an image currently used in the comment"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "comment has been successfully updated"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
},
"delete": {
"description": "Delete a ticket comment",
"tags": [
"Tickets"
],
"operationId": "deleteComment",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ticket",
"description": "Ticket ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "comment",
"description": "Comment ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "comment has been successfully deleted"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/tickets/{ticket}/comments": {
"get": {
"description": "Get the comments of a ticket",
"tags": [
"Tickets"
],
"operationId": "getComments",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ticket",
"description": "Ticket ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "comments have been successfully retrieved",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "The ID of the comment",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
},
"message": {
"type": "string",
"example": "Example message",
"description": "Content of the comment"
},
"images": {
"type": "array",
"description": "The images of the comment",
"items": {
"type": "string",
"format": "uuid",
"description": "The Id of the comment image",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
}
},
"deleted": {
"type": "boolean",
"example": true,
"description": "Whether or not the comment is deleted"
},
"author": {
"type": "string",
"example": "username1",
"description": "The username of the comment's author"
},
"createdAt": {
"type": "number",
"example": 1632821119000,
"description": "Timestamp of when the comment was created"
},
"updatedAt": {
"type": "number",
"example": 1632821119000,
"description": "Timestamp of when the comment was last updated"
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
},
"post": {
"description": "Create a ticket comment",
"tags": [
"Tickets"
],
"operationId": "createComment",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ticket",
"description": "Ticket ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Content of the comment",
"example": "Example message"
},
"images": {
"description": "Images of the comment",
"type": "array",
"items": {
"type": "string",
"description": "Image in a Base64 format"
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "comment has been successfully created"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/tickets/{ticket}/groups/{group}": {
"get": {
"description": "Get the details of a group associated to a ticket",
"tags": [
"Tickets"
],
"operationId": "getGroup",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ticket",
"description": "Ticket ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "group",
"description": "Group ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "revId",
"description": "Revision ID to get objects. By default it will query base on the latest revision",
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Details of a group",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ticketGroup"
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
},
"patch": {
"description": "Update a group",
"tags": [
"Tickets"
],
"operationId": "updateGroup",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ticket",
"description": "Ticket ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "group",
"description": "Group ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ticketGroup"
}
}
}
},
"responses": {
"200": {
"description": "group has been successfully updated"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/tickets/templates": {
"get": {
"description": "Get the the available ticket templates for this model",
"tags": [
"Tickets"
],
"operationId": "getModelTicketTemplates",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "showDeprecated",
"description": "Indicate if the response should return deprecated schemas (default is false)",
"in": "query",
"required": false,
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"description": "returns an array of template names and ids",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"templates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "The ID of the template",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
},
"name": {
"type": "string",
"example": "Risk"
}
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/tickets/templates/{template}": {
"get": {
"description": "Get the full definition of a template",
"tags": [
"Tickets"
],
"operationId": "getModelTicketTemplateDetails",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "template",
"description": "Template ID",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "showDeprecated",
"description": "Indicate if the response should return deprecated properties/modules (default is false)",
"in": "query",
"required": false,
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"description": "returns the definition of a template",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ticketTemplate"
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/tickets": {
"post": {
"description": "Create a ticket. The Schema of the payload depends on the ticket template being used",
"tags": [
"Tickets"
],
"operationId": "createTicket",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/ Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"format": "uuid",
"description": "Template id this ticket is based on"
},
"title": {
"type": "string",
"description": "Title of the ticket",
"example": "Doorway too narrow"
},
"properties": {
"type": "object",
"description": "properties within the ticket",
"properties": {
"Description": {
"type": "string",
"description": "A detailed description of the ticket",
"example": "The door way is too narrow for disable access"
},
"CustomProperty1": {
"type": "string",
"description": "Any custom properties in the ticket should be filled in this way",
"example": "Data1"
}
}
},
"modules": {
"type": "object",
"description": "modules within the ticket",
"properties": {
"Module1": {
"type": "object",
"description": "properties within Module1",
"properties": {
"Property1": {
"type": "string",
"description": "Any properties in the module should be filled in this way",
"example": "Data1"
}
}
}
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "ticket has been successfully added, returns the id of the newly created ticket",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
},
"get": {
"description": "Get all tickets within the model",
"tags": [
"Tickets"
],
"operationId": "GetTicketList",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "returns an array of tickets",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"tickets": {
"type": "array",
"items": {
"type": "object",
"description": "schema is subject to the template the ticket follows",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "id of the ticket",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
},
"type": {
"type": "string",
"format": "uuid",
"description": "template id",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
},
"title": {
"type": "string",
"description": "ticket title",
"example": "Missing door"
},
"number": {
"type": "number",
"description": "ticket number",
"example": 1
},
"properties": {
"type": "object",
"description": "ticket properties"
},
"modules": {
"type": "object",
"description": "ticket modules and their properties"
}
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/tickets/{ticket}": {
"get": {
"description": "Get ticket by ID",
"tags": [
"Tickets"
],
"operationId": "GetTicket",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ticket",
"description": "Ticket ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "showDeprecated",
"description": "Indicate if the response should return deprecated properties/modules (default is false)",
"in": "query",
"required": false,
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"description": "returns the ticket as a json object",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "schema is subject to the template the ticket follows",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "id of the ticket",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
},
"type": {
"type": "string",
"format": "uuid",
"description": "template id",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
},
"title": {
"type": "string",
"description": "ticket title",
"example": "Missing door"
},
"number": {
"type": "number",
"description": "ticket number",
"example": 1
},
"properties": {
"type": "object",
"description": "ticket properties"
},
"modules": {
"type": "object",
"description": "ticket modules and their properties"
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
},
"patch": {
"description": "Update a ticket. The Schema of the payload depends on the ticket template being used",
"tags": [
"Tickets"
],
"operationId": "updateTicket",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ticket",
"description": "Ticket ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Title of the ticket",
"example": "Doorway too narrow"
},
"properties": {
"type": "object",
"description": "properties within the ticket",
"properties": {
"Description": {
"type": "string",
"description": "A detailed description of the ticket",
"example": "The door way is too narrow for disable access"
},
"CustomProperty1": {
"type": "string",
"description": "Any custom properties in the ticket should be filled in this way",
"example": "Data1"
}
}
},
"modules": {
"type": "object",
"description": "modules within the ticket",
"properties": {
"Module1": {
"type": "object",
"description": "properties within Module1",
"properties": {
"Property1": {
"type": "string",
"description": "Any properties in the module should be filled in this way",
"example": "Data1"
}
}
}
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "ticket has been successfully updated"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/tickets/{ticket}/resources/{resource}": {
"get": {
"description": "Get the binary resource associated with the given ticket",
"tags": [
"Tickets"
],
"operationId": "getTicketResource",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "ticket",
"description": "Ticket ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "resource",
"description": "Resource ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "downloads the binary file",
"content": {
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/views": {
"get": {
"description": "Get the list of views available within the model",
"tags": [
"Views"
],
"operationId": "ViewsList",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "returns list of views",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"views": {
"type": "array",
"items": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "unique identifier for the view"
},
"name": {
"type": "string",
"description": "name of the view",
"example": "Floor 1"
},
"hasThumbnail": {
"type": "boolean",
"description": "indicates whether a thumbnail is available for the view"
}
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/federationNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/{type}/{model}/views/{view}/thumbnail": {
"get": {
"description": "Get the thumbnail of the view specified",
"tags": [
"Views"
],
"operationId": "ViewThumbnail",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "type",
"description": "Model type",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"containers",
"federations"
]
}
},
{
"name": "model",
"description": "Container/Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "view",
"description": "View ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "returns a png of the thumbnail",
"content": {
"image/png": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/thumbnailNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/containers/{container}/metadata/{metadata}": {
"patch": {
"description": "Adds, removes or edits custom metadata of an element of a 3D model. If a metadata does not exist it is added and if it exists it is updated. To remove a metadata provide null value.",
"tags": [
"Metadata"
],
"operationId": "updateCustomMetadata",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "container",
"description": "Container ID",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "metadata",
"description": "Metadata ID",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"metadata": {
"description": "The metadata to be added, removed or updated",
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"description": "The key of the metadata",
"type": "string",
"maxLength": 120,
"example": "Length (mm)"
},
"value": {
"description": "The value of the metadata",
"oneOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"example": 100
}
}
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "Adds, removes or edits metadata of an element of a 3D model"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/containers/{container}/revisions": {
"get": {
"description": "Get a list of revisions of a container",
"tags": [
"Revisions"
],
"operationId": "getContainerRevisions",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "container",
"description": "Container ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "showVoid",
"description": "Include void revisions or not",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "returns list of revisions",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"revisions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"description": "Revision ID",
"example": "ef0855b6-4cc7-4be1-b2d6-c032dce7806a"
},
"author": {
"type": "string",
"description": "name of the creator of the revision",
"example": "someUser"
},
"timestamp": {
"type": "string",
"description": "Revision creation date",
"example": "2018-06-28T11:15:47.000Z"
}
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
},
"post": {
"description": "Create a new revision.",
"tags": [
"Revisions"
],
"operationId": "createNewContainerRevision",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "container",
"description": "Container ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"tag": {
"description": "Unique revision name",
"type": "string",
"example": "rev01"
},
"desc": {
"description": "Description of the revision",
"type": "string",
"example": "Initial design"
},
"importAnimations": {
"type": "boolean",
"description": "Whether animations should be imported (Only relevant for .SPM uploads)"
},
"timezone": {
"description": "Timezone of the revision",
"type": "string",
"example": "Europe/Berlin"
},
"file": {
"type": "string",
"format": "binary"
}
},
"required": [
"tag",
"file"
]
}
}
}
},
"responses": {
"200": {
"description": "creates a new revision"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/containers/{container}/revisions/{revision}": {
"patch": {
"description": "Update a revision. Currently only the void status can be updated.",
"tags": [
"Revisions"
],
"operationId": "updateContainerRevisionStatus",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "container",
"description": "Container ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "revision",
"description": "Revision ID or Revision tag",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"void": {
"description": "The new status value",
"type": "boolean"
}
},
"required": [
"status"
]
}
}
}
},
"responses": {
"200": {
"description": "updates the status of the revision"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/containers/{container}/revisions/{revision}/files": {
"get": {
"description": "Downloads the model files of the selected revision",
"tags": [
"Revisions"
],
"operationId": "downloadContainerRevisionFiles",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "container",
"description": "Container ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "revision",
"description": "Revision ID or Revision tag",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "downloads the revision files",
"content": {
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}/federations/{federation}/revisions": {
"post": {
"description": "Create a new revision.",
"tags": [
"Revisions"
],
"operationId": "createNewFederationRevision",
"parameters": [
{
"name": "teamspace",
"description": "Name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Project ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "federation",
"description": "Federation ID",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"containers": {
"description": "array of container Ids to federate together",
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"containers"
]
}
}
}
},
"responses": {
"200": {
"description": "The request is sent successfully."
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
},
"404": {
"$ref": "#/components/responses/teamspaceNotFound"
}
}
}
},
"/teamspaces/{teamspace}/projects": {
"get": {
"description": "Get a list of projects within the specified teamspace the user has access to",
"tags": [
"Projects"
],
"operationId": "getProjectList",
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "returns list of projects",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Project ID",
"example": "ef0857b6-4cc7-4be1-b2d6-c032dce7806a"
},
"name": {
"type": "string",
"description": "name of the project",
"example": "project1"
},
"isAdmin": {
"type": "boolean",
"description": "whether the user is an admin"
}
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
},
"post": {
"description": "Creates a new project",
"tags": [
"Projects"
],
"operationId": "createProject",
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the new project",
"example": "project 1"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Create a new project",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "The id of the new project",
"example": "ef0857b6-4cc7-4be1-b2d6-c032dce7806a"
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/projects/{project}": {
"delete": {
"description": "Deletes a project",
"tags": [
"Projects"
],
"operationId": "deleteProject",
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Id of the project",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "Delete a project"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
},
"patch": {
"description": "Edits a project",
"tags": [
"Projects"
],
"operationId": "updateProject",
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Id of the project",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The new name of the project",
"example": "project 1"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Update the project settings"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
},
"get": {
"description": "Gets a project",
"tags": [
"Projects"
],
"operationId": "getProjectSettings",
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"description": "Id of the project",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "returns a project",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the project",
"example": "project1"
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/settings/tickets/templates": {
"post": {
"description": "Add a new ticket tempate to the teamspace",
"tags": [
"Teamspaces"
],
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"operationId": "addTicketTemplate",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ticketTemplate"
}
}
}
},
"responses": {
"200": {
"description": "template has been successfully added, returns the id of the newly created template",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid"
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
},
"get": {
"description": "Get the list of templates within this teamspace",
"tags": [
"Teamspaces"
],
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"operationId": "ticketTemplateList",
"responses": {
"200": {
"description": "Return the list of templates within the teamspace",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"templates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"_id": {
"type": "string",
"description": "id of the template",
"format": "uuid"
},
"name": {
"type": "string",
"description": "name of the template"
},
"code": {
"type": "string",
"description": "a 3 letter code representing the template"
},
"deprecated": {
"description": "indicates the template is deprecated and no longer in use",
"type": "boolean"
}
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/settings/tickets/templates/{template}": {
"put": {
"description": "Updates an existing ticket template",
"tags": [
"Teamspaces"
],
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "template",
"description": "id of the template",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"operationId": "updateTicketTemplate",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ticketTemplate"
}
}
}
},
"responses": {
"200": {
"description": "template has been successfully updated"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
},
"get": {
"description": "Get a ticket template",
"tags": [
"Teamspaces"
],
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "template",
"description": "id of the template",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"operationId": "getTicketTemplate",
"responses": {
"200": {
"description": "returns the details of a template",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ticketTemplate"
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/settings/tickets/riskCategories": {
"get": {
"description": "Get the list of risk categories",
"tags": [
"Teamspaces"
],
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"operationId": "getRiskCategories",
"responses": {
"200": {
"description": "returns the array of risk categories",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"riskCategories": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"Commerical Issue",
"Environmental Issue",
"Safety Issue - Struck"
]
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces": {
"get": {
"description": "Get a list of teamspaces the user has access to",
"tags": [
"Teamspaces"
],
"operationId": "getTeamspaceList",
"responses": {
"200": {
"description": "returns list of teamspace",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"teamspaces": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "name of the teamspace",
"example": "teamspace1"
},
"isAdmin": {
"type": "boolean",
"description": "whether the user is an admin"
}
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/members": {
"get": {
"description": "Get the list of members within the teamspace",
"tags": [
"Teamspaces"
],
"operationId": "getTeamspaceMembers",
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "returns list of teamspace members with their basic information",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "User name",
"example": "johnPaul01"
},
"firstName": {
"type": "string",
"description": "First name",
"example": "John"
},
"lastName": {
"type": "string",
"description": "Last name",
"example": "Paul"
},
"company": {
"type": "string",
"description": "Name of the company",
"example": "3D Repo Ltd"
},
"job": {
"type": "string",
"description": "Job within the teamspace",
"example": "Project Manager"
}
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/avatar": {
"get": {
"description": "Gets the avatar of the teamspace",
"tags": [
"Teamspaces"
],
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"operationId": "getTeamspaceAvatar",
"responses": {
"200": {
"description": "Gets the avatar of the Teamspace",
"content": {
"image/png": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/quota": {
"get": {
"description": "Gets quota information about a user",
"tags": [
"Teamspaces"
],
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"operationId": "getQuotaInfo",
"responses": {
"200": {
"description": "Gets the quota information of the user",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"freeTier": {
"type": "boolean",
"description": "Whether or not the user has a paid subscription",
"example": true
},
"expiryDate": {
"type": "number",
"description": "The closest expiry date of a users active plan (in epoch)",
"example": 1233445
},
"data": {
"type": "object",
"properties": {
"used": {
"type": "number",
"description": "The number of bytes the user is currently using",
"example": 1000000
},
"available": {
"type": "number",
"description": "The number of bytes the user can use",
"example": 1000000
}
}
},
"seats": {
"type": "object",
"properties": {
"used": {
"type": "number",
"description": "The number of collaborators the user is currently using",
"example": 1000000
},
"available": {
"type": "number",
"description": "The number of collaborators the user can use",
"example": 1000000
}
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/members/{username}": {
"delete": {
"description": "Removes the user from the teamspace",
"tags": [
"Teamspaces"
],
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "username",
"description": "the username of the user to be removed",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"operationId": "removeTeamspaceMember",
"responses": {
"200": {
"description": "Removes the user from the teamspace"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/teamspaces/{teamspace}/members/{member}/avatar": {
"get": {
"description": "Gets the avatar of a member of the teamspace",
"tags": [
"Teamspaces"
],
"parameters": [
{
"name": "teamspace",
"description": "name of teamspace",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "member",
"description": "username of teamspace member",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"operationId": "getTeamspaceMemberAvatar",
"responses": {
"200": {
"description": "Gets the avatar of a member of a teamspace",
"content": {
"image/png": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/login": {
"post": {
"description": "Logs a user in",
"tags": [
"Auth"
],
"operationId": "login",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The username or email of the user",
"example": "username1"
},
"password": {
"type": "string",
"description": "The password of the user",
"example": "password1"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Authenticates the user and establish a session"
},
"400": {
"$ref": "#/components/responses/tooManyLoginAttempts"
},
"401": {
"$ref": "#/components/responses/alreadyLoggedIn"
}
}
},
"get": {
"description": "Gets the username of the logged in user",
"tags": [
"Auth"
],
"operationId": "getUsername",
"responses": {
"200": {
"description": "Returns the username of the user currently logged in",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"username": {
"type": "string",
"description": "The username of the user",
"example": "Username1"
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/logout": {
"post": {
"description": "Logs a user out",
"tags": [
"Auth"
],
"operationId": "logout",
"responses": {
"200": {
"description": "User is logged out and session is destroyed."
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/user": {
"get": {
"description": "Gets the profile of the logged in user",
"tags": [
"User"
],
"operationId": "getProfile",
"responses": {
"200": {
"description": "Returns the details of the user currently logged in",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"username": {
"type": "string",
"description": "The username of the user",
"example": "Username1"
},
"firstName": {
"type": "string",
"description": "The first name of the user",
"example": "Jason"
},
"lastName": {
"type": "string",
"description": "The last name of the user",
"example": "Voorhees"
},
"email": {
"type": "string",
"description": "The email of the user",
"example": "jason@vorhees.com"
},
"company": {
"type": "string",
"description": "Name of the company",
"example": "3D Repo"
},
"countryCode": {
"type": "string",
"description": "Country Code",
"example": "GB"
},
"hasAvatar": {
"type": "boolean",
"description": "Whether or not the user has an avatar",
"example": true
},
"apiKey": {
"type": "string",
"description": "The API key of the user",
"example": "23b61deadbba098fec517dc4fcc84d68"
},
"isSso": {
"type": "boolean",
"description": "Whether or not the user is an SSO user",
"example": true
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
},
"put": {
"description": "Updates the profile of the logged in user",
"tags": [
"User"
],
"operationId": "updateProfile",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firstName": {
"type": "string",
"description": "The first name of the user (applies only to non SSO users)",
"example": "Jason"
},
"lastName": {
"type": "string",
"description": "The last name of the user (applies only to non SSO users)",
"example": "Voorhees"
},
"email": {
"type": "string",
"description": "The email of the user (applies only to non SSO users)",
"example": "jason@vorhees.com",
"format": "email"
},
"company": {
"type": "string",
"description": "Name of the company",
"example": "3D Repo"
},
"countryCode": {
"type": "string",
"description": "Country Code",
"example": "GB"
},
"oldPassword": {
"type": "string",
"description": "The old password of the user (applies only to non SSO users)",
"example": "password12345",
"format": "password"
},
"newPassword": {
"type": "string",
"description": "The new password of the user (applies only to non SSO users)",
"example": "password12345",
"format": "password"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Updates the details of the user"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
},
"post": {
"description": "Signs a user up and sends a verification email to the email address provided",
"tags": [
"User"
],
"operationId": "signUp",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"username",
"email",
"password",
"firstName",
"lastName",
"countryCode",
"mailListAgreed"
],
"properties": {
"username": {
"type": "string",
"description": "The username of the user",
"example": "username123"
},
"email": {
"type": "string",
"description": "The email of the user",
"example": "example@email.com",
"format": "email"
},
"password": {
"type": "string",
"description": "The password of the user",
"example": "newPassword123!"
},
"firstName": {
"type": "string",
"description": "The first name of the user",
"example": "Nick"
},
"lastName": {
"type": "string",
"description": "The last name of the user",
"example": "Wilson"
},
"countryCode": {
"type": "string",
"description": "The country code of the user",
"example": "GB"
},
"company": {
"type": "string",
"description": "The company of the user",
"example": "3D Repo"
},
"mailListAgreed": {
"type": "boolean",
"description": "Whether the user has signed up for the latest news and tutorials",
"example": true
},
"captcha": {
"type": "string",
"description": "The reCAPTCHA token generated from the sign up form",
"example": "5LcN0ysfAAAAAHpnld1tAweI7DKU7dswmwnHWYcB"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Signs a user up and sends a verification email to the email address provided"
},
"400": {
"$ref": "#/components/responses/invalidArguments"
}
}
}
},
"/user/key": {
"post": {
"description": "Generates a new API key for the logged in user",
"tags": [
"User"
],
"operationId": "generateApiKey",
"responses": {
"200": {
"description": "Generates a new API key for the user",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"apiKey": {
"type": "string",
"description": "The new API key of the user",
"example": "20f947a673dce5419ce187ca7998a68f"
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
},
"delete": {
"description": "Deletes the API key of the logged in user",
"tags": [
"User"
],
"operationId": "deleteApiKey",
"responses": {
"200": {
"description": "Deletes the details of the user"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/user/avatar": {
"get": {
"description": "Gets the avatar of the logged in user",
"tags": [
"User"
],
"operationId": "getAvatar",
"responses": {
"200": {
"description": "Gets the avatar of the user",
"content": {
"image/png": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
},
"put": {
"description": "Uploads new avatar for the logged in user",
"tags": [
"User"
],
"operationId": "uploadAvatar",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"file": {
"type": "string",
"format": "binary"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Uploads a new avatar for the user"
},
"401": {
"$ref": "#/components/responses/notLoggedIn"
}
}
}
},
"/user/password": {
"post": {
"description": "Sends an email to the user with a reset password link",
"tags": [
"User"
],
"operationId": "forgotPassword",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The username or email of the user",
"example": "nick.wilson@email.com"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Sends an email to the user with a reset password link"
}
}
},
"put": {
"description": "Resets the user password",
"tags": [
"User"
],
"operationId": "resetPassword",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"type": "string",
"description": "The username of the user",
"example": "username123"
},
"newPassword": {
"type": "string",
"description": "The new password of the user",
"example": "newPassword123!"
},
"token": {
"type": "string",
"description": "The reset password token",
"example": "c0f6b97ae5a9c210ee050a9ada3faabc"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Resets the user password"
},
"400": {
"$ref": "#/components/responses/invalidArguments"
}
}
}
},
"/user/verify": {
"post": {
"description": "Verifies a user and the user teamspace is initialised",
"tags": [
"User"
],
"operationId": "verify",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"username",
"token"
],
"properties": {
"username": {
"type": "string",
"description": "The username of the user",
"example": "username123"
},
"token": {
"type": "string",
"description": "The verification token of the user",
"example": "c0f6b97ae5a9c210ee050a9ada3faabc"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Verifies a user and the user teamspace is initialised"
},
"400": {
"$ref": "#/components/responses/invalidArguments"
}
}
}
}
},
"components": {
"responses": {
"ok": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "OK"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "OK"
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 200
}
}
}
}
}
},
"notLoggedIn": {
"description": "You are not logged in.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "NOT_LOGGED_IN"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "You are not logged in."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 401
}
}
}
}
}
},
"alreadyLoggedIn": {
"description": "You are already logged in.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "ALREADY_LOGGED_IN"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "You are already logged in."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 401
}
}
}
}
}
},
"notAuthorized": {
"description": "You do not have sufficient access rights for this action.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "NOT_AUTHORIZED"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "You do not have sufficient access rights for this action."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 401
}
}
}
}
}
},
"licenceExpired": {
"description": "Licence expired.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "LICENCE_EXPIRED"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Licence expired."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 401
}
}
}
}
}
},
"tooManyLoginAttempts": {
"description": "Too many unsuccessful login attempts! Account locked.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "TOO_MANY_LOGIN_ATTEMPTS"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Too many unsuccessful login attempts! Account locked."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 400
}
}
}
}
}
},
"userNotVerified": {
"description": "Account not yet verified. Please check your email.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "USER_NOT_VERIFIED"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Account not yet verified. Please check your email."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 400
}
}
}
}
}
},
"incorrectUsernameOrPassword": {
"description": "Incorrect username or password.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "INCORRECT_USERNAME_OR_PASSWORD"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Incorrect username or password."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 400
}
}
}
}
}
},
"incorrectPassword": {
"description": "Incorrect password.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "INCORRECT_PASSWORD"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Incorrect password."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 400
}
}
}
}
}
},
"ssoNotAvailable": {
"description": "Single sign on provider not available.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "SSO_NOT_AVAILABLE"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Single sign on provider not available."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 500
}
}
}
}
}
},
"nonSsoUser": {
"description": "Single sign on is not enabled for this user.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "NON_SSO_USER"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Single sign on is not enabled for this user."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 400
}
}
}
}
}
},
"ssoUser": {
"description": "Single sign on is already enabled for this user.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "SSO_USER"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Single sign on is already enabled for this user."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 400
}
}
}
}
}
},
"unknown": {
"description": "Unknown error occured. Please contact support.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "UNKNOWN"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Unknown error occured. Please contact support."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 500
}
}
}
}
}
},
"userNotFound": {
"description": "User not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "USER_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "User not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"teamspaceNotFound": {
"description": "Teamspace not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "TEAMSPACE_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Teamspace not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"ssoRestricted": {
"description": "This teamspace only accepts Single Signed On users. Please link your account with an authority.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "SSO_RESTRICTED"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "This teamspace only accepts Single Signed On users. Please link your account with an authority."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 401
}
}
}
}
}
},
"domainRestricted": {
"description": "Your email does not belong in a domain that is accepted by this teamspace. Please contact your teamspace administrator.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "DOMAIN_RESTRICTED"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Your email does not belong in a domain that is accepted by this teamspace. Please contact your teamspace administrator."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 401
}
}
}
}
}
},
"projectNotFound": {
"description": "Project not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "PROJECT_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Project not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"modelNotFound": {
"description": "Model not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "MODEL_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Model not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"federationNotFound": {
"description": "Federation not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "FEDERATION_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Federation not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"containerNotFound": {
"description": "Container not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "CONTAINER_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Container not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"containerIsSubModel": {
"description": "Container is a submodel.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "CONTAINER_IS_SUB_MODEL"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Container is a submodel."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 400
}
}
}
}
}
},
"revisionNotFound": {
"description": "Revision not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "REVISION_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Revision not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"groupNotFound": {
"description": "Group not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "GROUP_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Group not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"metadataNotFound": {
"description": "Metadata not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "METADATA_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Metadata not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"templateNotFound": {
"description": "Template not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "TEMPLATE_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Template not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"ticketNotFound": {
"description": "Ticket not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "TICKET_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Ticket not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"commentNotFound": {
"description": "Comment not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "COMMENT_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Comment not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"unsupportedFileFormat": {
"description": "The file format is not supported.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "UNSUPPORTED_FILE_FORMAT"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "The file format is not supported."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 400
}
}
}
}
}
},
"maxSizeExceeded": {
"description": "The file is bigger than the maximum size allowed.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "MAX_SIZE_EXCEEDED"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "The file is bigger than the maximum size allowed."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 400
}
}
}
}
}
},
"quotaLimitExceeded": {
"description": "Insufficient quota.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "QUOTA_LIMIT_EXCEEDED"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Insufficient quota."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 401
}
}
}
}
}
},
"fileNotFound": {
"description": "No file can be downloaded.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "FILE_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "No file can be downloaded."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"viewNotFound": {
"description": "View not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "VIEW_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "View not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"thumbnailNotFound": {
"description": "Thumbnail not available.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "THUMBNAIL_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Thumbnail not available."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"legendNotFound": {
"description": "Legend not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "LEGEND_NOT_FOUND"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Legend not found."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 404
}
}
}
}
}
},
"invalidArguments": {
"description": "The arguments provided are not valid.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "INVALID_ARGUMENTS"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "The arguments provided are not valid."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 400
}
}
}
}
}
},
"queueConnectionError": {
"description": "There was a problem connecting to the queue. Please contact support.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "QUEUE_CONNECTION_ERROR"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "There was a problem connecting to the queue. Please contact support."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 500
}
}
}
}
}
},
"queueInsertionFailed": {
"description": "Failed to insert an item into the queue. Please contact support.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "3D Repo error code",
"example": "QUEUE_INSERTION_FAILED"
},
"message": {
"type": "string",
"description": "A descriptive reason for the error",
"example": "Failed to insert an item into the queue. Please contact support."
},
"place": {
"type": "string",
"description": "Endpoint this error came from",
"example": "GET /v5/teamspaces"
},
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP status code",
"example": 500
}
}
}
}
}
}
},
"schemas": {
"roles": {
"type": "string",
"enum": [
"admin",
"collaborator",
"commenter",
"viewer"
],
"description": "Possible Values:<br/><br/>* `admin` - Administrator of the container/federation<br/><br/>* `collaborator` - User has `commenter` right, plus the ability to upload new revisions<br/><br/>* `commenter` - User has `viewer` rights, plus write access to tickets, groups and views<br/><br/>* `viewer` - User has read access to the project"
},
"errorCodes": {
"type": "string",
"enum": [
1,
2,
3,
4,
5
],
"description": "Error codes: <br/><br/>* `1` - A non SSO account with the same email already exists<br/><br/>* `2` - An SSO account witht he same email already exists<br/><br/>* `3` - The user is non SSO<br/><br/>* `4` - The user was not found<br/><br/>* `5` - Unknown"
},
"ticketTemplate": {
"description": "Custom ticket Template",
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the ticket",
"example": "Risk"
},
"code": {
"type": "string",
"description": "A 3 character code for the template",
"example": "RSK",
"minLength": 3,
"maxLength": 3
},
"config": {
"type": "object",
"properties": {
"comments": {
"type": "boolean",
"description": "Comments enabled (default: false)"
},
"issueProperties": {
"type": "boolean",
"description": "Include issue properties (default: false)"
},
"defaultView": {
"type": "boolean",
"description": "Include a default view with image (default: false)"
},
"defaultImage": {
"type": "boolean",
"description": "Include a default image - this will be ignored if defaultView is set to true (default: false)"
},
"pin": {
"type": "boolean",
"description": "Include a pin (default: false)"
}
}
},
"deprecated": {
"type": "boolean",
"description": "Denotes if this template is no longer in used",
"example": false
},
"properties": {
"description": "Properties within a ticket or module",
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the prop",
"example": "Floor"
},
"type": {
"type": "string",
"description": "Property type",
"example": "oneOf",
"enum": [
"text",
"longText",
"boolean",
"date",
"number",
"oneOf",
"manyOf",
"image",
"view",
"measurements",
"coords"
]
},
"deprecated": {
"type": "boolean",
"description": "Denotes if this prop is no longer in use",
"example": false
},
"required": {
"type": "boolean",
"description": "If this prop is required (default: false)",
"example": true
},
"values": {
"type": "array",
"description": "list of possible values (only applicable if type is oneOf or manyOf",
"items": {
"type": "string"
},
"example": [
"Level 1",
"Level 2",
"Basement"
]
}
}
}
},
"modules": {
"description": "Configure a custom or preset module",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the module",
"example": "BCF Reference"
},
"type": {
"type": "string",
"description": "Preset module name"
},
"deprecated": {
"type": "boolean",
"description": "Denotes if this module is no longer in use",
"example": false
},
"properties": {
"description": "Properties within a ticket or module",
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the prop",
"example": "Floor"
},
"type": {
"type": "string",
"description": "Property type",
"example": "oneOf",
"enum": [
"text",
"longText",
"boolean",
"date",
"number",
"oneOf",
"manyOf",
"image",
"view",
"measurements",
"coords"
]
},
"deprecated": {
"type": "boolean",
"description": "Denotes if this prop is no longer in use",
"example": false
},
"required": {
"type": "boolean",
"description": "If this prop is required (default: false)",
"example": true
},
"values": {
"type": "array",
"description": "list of possible values (only applicable if type is oneOf or manyOf",
"items": {
"type": "string"
},
"example": [
"Level 1",
"Level 2",
"Basement"
]
}
}
}
}
}
}
}
}
},
"group": {
"description": "Group data",
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the group"
},
"color": {
"type": "array",
"description": "color for the group. Must be an array of 3 or 4 values between 0 to 255",
"items": {
"type": "integer",
"minLength": 3,
"maxLength": 4
},
"example": [
0,
0,
255
]
},
"name": {
"type": "string",
"description": "name of the group",
"example": "Level 1 Facades"
},
"description": {
"type": "string",
"description": "Description of the group",
"example": "All facades on level 1"
},
"author": {
"type": "string",
"description": "Author of the group",
"example": "JaneDoe"
},
"updatedBy": {
"type": "string",
"description": "The user who last updated the group",
"example": "JohnDoe"
},
"createdAt": {
"type": "number",
"description": "Timestamp when the group was created, epoch time in ms",
"example": 1632821117000
},
"updatedAt": {
"type": "number",
"description": "Timestamp when the group was last updated, epoch time in ms",
"example": 1632821119000
},
"rules": {
"type": "array",
"items": {
"type": "object",
"properties": {
"prop": {
"type": "string",
"description": "The BIM data prop to query",
"example": "Floor"
},
"operator": {
"type": "string",
"enum": [
"IS_EMPTY",
"IS_NOT_EMPTY",
"IS",
"IS_NOT",
"CONTAINS",
"NOT_CONTAINS",
"REGEX",
"EQUALS",
"NOT_EQUALS",
"GT",
"GTE",
"LT",
"LTE",
"IN_RANGE",
"NOT_IN_RANGE"
],
"description": "Operator value on this prop",
"example": "EQUALS"
},
"value": {
"type": "array",
"description": "The values to use in respective of the operator. This is evaluated under the union (OR) logic",
"items": {
"type": "number",
"example": 1
}
}
}
},
"description": "List of rules for the smart group. Rules are evaluated under a intersection (AND) logic"
},
"objects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"account": {
"type": "string",
"example": "Company A",
"description": "Teamspace the objects belong in"
},
"model": {
"type": "string",
"format": "uuid",
"description": "Model ID"
},
"shared_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"description": "shared_ids of the meshes that belong in this group"
}
},
"ifc_guids": {
"type": "array",
"items": {
"type": "string",
"description": "IFC GUIDS that belong in this group",
"example": "P6hfZFcXRWKz/AAALJY/Zg"
}
}
}
}
}
}
},
"ticketGroup": {
"description": "Group data",
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the group"
},
"name": {
"type": "string",
"description": "name of the group",
"example": "Level 1 Facades"
},
"description": {
"type": "string",
"description": "Description of the group",
"example": "All facades on level 1"
},
"rules": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"description": "The BIM data prop to query",
"example": "Floor"
},
"operator": {
"type": "string",
"enum": [
"IS_EMPTY",
"IS_NOT_EMPTY",
"IS",
"IS_NOT",
"CONTAINS",
"NOT_CONTAINS",
"REGEX",
"EQUALS",
"NOT_EQUALS",
"GT",
"GTE",
"LT",
"LTE",
"IN_RANGE",
"NOT_IN_RANGE"
],
"description": "Operator value on this prop",
"example": "EQUALS"
},
"value": {
"type": "array",
"description": "The values to use in respective of the operator. This is evaluated under the union (OR) logic",
"items": {
"type": "number",
"example": 1
}
}
}
},
"description": "List of rules for the smart group. Rules are evaluated under a intersection (AND) logic"
},
"objects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"container": {
"type": "string",
"format": "uuid",
"description": "Model ID"
},
"_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"description": "_ids of the meshes that belong in this group"
}
}
}
}
}
}
},
"modelSettings": {
"description": "The settings of the model",
"type": "object",
"properties": {
"_id": {
"type": "string",
"format": "uuid",
"description": "Model ID",
"example": "3549ddf6-885d-4977-87f1-eeac43a0e818"
},
"name": {
"type": "string",
"description": "The name of the model",
"example": "Lego tree"
},
"desc": {
"type": "string",
"description": "The description of the model",
"example": "Model description"
},
"type": {
"type": "string",
"description": "The type of the model",
"example": "Structural"
},
"surveyPoints": {
"type": "array",
"description": "The survey points of the model",
"items": {
"type": "object",
"properties": {
"position": {
"type": "array",
"description": "The point coordinate that maps to the latLong value (should be in OpenGL axis conventions)",
"items": {
"type": "number",
"example": "23.56"
},
"minItems": 3,
"maxItems": 3
},
"latLong": {
"type": "array",
"description": "The latitude and longitude of the survey point",
"items": {
"type": "number",
"example": "23.56"
},
"minItems": 2,
"maxItems": 2
}
}
}
},
"angleFromNorth": {
"type": "integer",
"description": "The angle from north of the model",
"example": 150
},
"timestamp": {
"type": "integer",
"example": "1629976656315",
"description": "The date the last model was uploaded (in ms)"
},
"status": {
"type": "string",
"description": "The status of the model",
"example": "ok"
},
"defaultView": {
"type": "string",
"format": "uuid",
"description": "The ID of the view that is being used as default view",
"example": "3549ddf6-885d-4977-87f1-eeac43a0e818"
},
"defaultLegend": {
"type": "string",
"format": "uuid",
"description": "The ID of the legend that is being used as default legend",
"example": "3549ddf6-885d-4977-87f1-eeac43a0e818"
},
"unit": {
"type": "string",
"description": "The units of the model",
"example": "mm",
"enum": [
"mm",
"cm",
"dm",
"m",
"ft"
]
},
"code": {
"type": "string",
"description": "The code of the model",
"example": "MOD1"
},
"errorReason": {
"type": "object",
"description": "The the reason the model upload failed",
"properties": {
"message": {
"type": "string",
"description": "The error message",
"example": "System error occured. Please contact support."
},
"timestamp": {
"type": "integer",
"description": "The date the error occured (in ms)",
"example": "1629976656315"
},
"errorCode": {
"type": "string",
"description": "The error code",
"example": 14
}
}
}
}
}
},
"securitySchemes": {
"keyAuth": {
"type": "apiKey",
"in": "query",
"name": "key"
}
}
},
"tags": []
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment