{
  "openapi": "3.0.4",
  "info": {
    "title": "EMI 3.0 API Server",
    "version": "v1"
  },
  "paths": {
    "/api/Account/google": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Authenticates a User using a Google Web Token",
        "requestBody": {
          "description": "Google Web Token",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/Account/microsoft": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Authenticates a User using a Microsoft Login Web Token",
        "requestBody": {
          "description": "Token",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/Account/apple": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Authenticates a User using a Apple Authorisation Code",
        "requestBody": {
          "description": "Token",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/Actions": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Returns the Actions for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Actions edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Actions assigned to a Site Application"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Creates a new Action for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Action Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Action ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "json"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Actions/{id}": {
      "patch": {
        "tags": [
          "Actions"
        ],
        "summary": "Patches an existing Action",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Action ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Action successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "Actions"
        ],
        "summary": "Deletes an existing Action",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Action ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/AIConfigurations": {
      "get": {
        "tags": [
          "AIConfigurations"
        ],
        "summary": "Returns all AI configurations. Webapp-wide; SuperAdmin only.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AIConfigurationResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      },
      "post": {
        "tags": [
          "AIConfigurations"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AIConfigurationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/AIConfigurations/{id}": {
      "get": {
        "tags": [
          "AIConfigurations"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIConfigurationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      },
      "patch": {
        "tags": [
          "AIConfigurations"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      },
      "delete": {
        "tags": [
          "AIConfigurations"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/AIConfigurations/{id}/test": {
      "post": {
        "tags": [
          "AIConfigurations"
        ],
        "summary": "Sends a tiny \"Reply with OK\" probe to the configured provider and reports success or the\nprovider's error message verbatim.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/AIGlossaries/SiteApp/{siteAppId}": {
      "get": {
        "tags": [
          "AIGlossaries"
        ],
        "summary": "Returns all glossary entries for a Site Application.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AIGlossaryResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/AIGlossaries": {
      "post": {
        "tags": [
          "AIGlossaries"
        ],
        "summary": "Creates a single glossary entry. Replaces any existing entry with the same\nSiteAppID + TargetLanguage + SourceTerm (case-insensitive).",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AIGlossaryPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/AIGlossaries/{id}": {
      "put": {
        "tags": [
          "AIGlossaries"
        ],
        "summary": "Updates an existing glossary entry in place. Used by the \"Edit\" affordance\non the Translation Glossary page. The SiteAppID is taken from the existing\nrow and cannot be changed via this endpoint.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AIGlossaryPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "AIGlossaries"
        ],
        "summary": "Soft-deletes a glossary entry.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/AIGlossaries/BulkImport": {
      "post": {
        "tags": [
          "AIGlossaries"
        ],
        "summary": "Bulk imports glossary entries for a single target language. Existing entries\nmatching SiteAppID + TargetLanguage + SourceTerm (case-insensitive) are replaced.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AIGlossaryBulkImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkImportResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/AIGlossaries/ImportCsv": {
      "post": {
        "tags": [
          "AIGlossaries"
        ],
        "summary": "Imports glossary entries from a CSV file (multipart upload). Columns:\nSourceTerm, TargetTerm, Context. The target language is supplied as a\nform field — each file covers a single locale, matching the JSON\nBulkImport endpoint above.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "File",
                  "SiteAppID"
                ],
                "type": "object",
                "properties": {
                  "SiteAppID": {
                    "type": "integer",
                    "format": "int32"
                  },
                  "TargetLanguage": {
                    "type": "string",
                    "format": "json"
                  },
                  "File": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "SiteAppID": {
                  "style": "form"
                },
                "TargetLanguage": {
                  "style": "form"
                },
                "File": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkImportResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/AIGlossaries/SiteApp/{siteAppId}/Export": {
      "get": {
        "tags": [
          "AIGlossaries"
        ],
        "summary": "Returns the current glossary entries for a Site App as a CSV download.\nOptionally filters to a single target language; when omitted, every\nlocale's entries are included (with TargetLanguage as a leading column\nfor clarity in mixed-locale exports).",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "targetLanguage",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/AIGlossaries/Template": {
      "get": {
        "tags": [
          "AIGlossaries"
        ],
        "summary": "Returns an empty CSV with just the header row, for users to download\nand fill in before importing.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "targetLanguage",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/AIProviders": {
      "get": {
        "tags": [
          "AIProviders"
        ],
        "summary": "Returns the list of available AI providers. Until the AI module is fully wired,\nthis list mirrors the EMI3.AI.Models.AIProviderType enum statically.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AIProviderResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/AITranslations/translate": {
      "post": {
        "tags": [
          "AITranslations"
        ],
        "summary": "Synchronously translates a list of strings to the target language using\nthe active AI configuration.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AITranslateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AITranslateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/Applications/{id}/customcaptions": {
      "get": {
        "tags": [
          "Applications"
        ],
        "summary": "Returns the Custom Captions for an Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Custom Captions for an Application"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Read"
        ]
      }
    },
    "/api/app/version-status": {
      "get": {
        "tags": [
          "AppVersion"
        ],
        "summary": "Classifies the caller's app version against the active policy and returns any prompt to show.",
        "parameters": [
          {
            "name": "platform",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "appId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "build",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VersionStatusResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/app/version-policies": {
      "get": {
        "tags": [
          "AppVersion"
        ],
        "summary": "The configured app version policies for admin editing.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/app/version-policy": {
      "put": {
        "tags": [
          "AppVersion"
        ],
        "summary": "Creates or updates the app version policy for a platform.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AppVersionPolicy"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppVersionPolicy"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AppVersionPolicy"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AppVersionPolicy"
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/audits/search": {
      "post": {
        "tags": [
          "Audits"
        ],
        "summary": "Returns a page of Audit History rows for the current site application.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuditSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the matching audit history rows"
          },
          "400": {
            "description": "Invalid filter (unknown entity type/action, bad timeframe or sort)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/audits/count": {
      "post": {
        "tags": [
          "Audits"
        ],
        "summary": "Returns the number of Audit History rows matching the filter, capped at\n10,000 (capped=true) so a broad filter cannot force a full-table count.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuditHistoryFilterContext"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the count"
          },
          "400": {
            "description": "Invalid filter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/audits/users": {
      "get": {
        "tags": [
          "Audits"
        ],
        "summary": "Returns the users of the current site application for the Person filter,\nmirroring the Feedback users endpoint (real User IDs, matching what the\naudit trail stores in UserID).",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the users"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/audits/restore": {
      "post": {
        "tags": [
          "Audits"
        ],
        "summary": "Restores a soft-deleted record from the Audit History report. Returns\n409 with requiresConfirmation when a duplicate warning must be\nacknowledged first (resend with confirmDuplicate: true).",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuditRestoreRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Restored"
          },
          "400": {
            "description": "Cannot be restored (unknown type, not found, not deleted)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Requires confirmation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Analytics/averagetimes": {
      "get": {
        "tags": [
          "AverageTimesReport"
        ],
        "summary": "Returns the Average Times Graph Data\n\nThe data returned includes a Depth Property that indicates the level of data being returned:\n - V (Average Times by Model Version)\n - S (Average Times by Stage)\n - Z (Average Times by Zone)\n - T (Average Times by Task)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional if Model Version is defined)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID (optional if Model is defined)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionRoleId",
            "in": "query",
            "description": "The Model Version Role ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionIntervalId",
            "in": "query",
            "description": "The Model Version Interval ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteAssetRegisterId",
            "in": "query",
            "description": "The Site Asset ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionStageId",
            "in": "query",
            "description": "The Model Version Stage ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionZoneId",
            "in": "query",
            "description": "The Model Version Zone ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The Start Date Filter (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The End Date Filter (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "occurrence",
            "in": "query",
            "description": "The last X services to include in data (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Average Times Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read, Analytics Read"
        ]
      }
    },
    "/api/ChangeStatusReasons": {
      "get": {
        "tags": [
          "ChangeStatusReasons"
        ],
        "summary": "Returns the Change Status Reasons for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Change Status Reasons edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Change Status Reasons"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "ChangeStatusReasons"
        ],
        "summary": "Creates a new Site Application Change Status Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Change Status Reason Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeStatusReasonPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Change Status Reason ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ChangeStatusReasons/{id}": {
      "patch": {
        "tags": [
          "ChangeStatusReasons"
        ],
        "summary": "Patches an existing Site Application Change Status Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Change Status Reason ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Change Status Reason successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeStatusReasonRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "ChangeStatusReasons"
        ],
        "summary": "Deletes an existing Site Application Change Status Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Change Status Reason ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ClientDocuments": {
      "get": {
        "tags": [
          "ClientDocuments"
        ],
        "summary": "Returns the Client Documents for a Client",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Client Documents edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Client Documents"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "post": {
        "tags": [
          "ClientDocuments"
        ],
        "summary": "Creates a new Client Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Client Document Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientDocumentPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Client Document ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/ClientDocuments/{id}": {
      "delete": {
        "tags": [
          "ClientDocuments"
        ],
        "summary": "Deletes an existing Client Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client Document ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/ClientNotes": {
      "get": {
        "tags": [
          "ClientNotes"
        ],
        "summary": "Returns the Client Notes for a Client",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Client Notes edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Client Notes"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "post": {
        "tags": [
          "ClientNotes"
        ],
        "summary": "Creates a new Client Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Client Note Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientNotePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Client Note ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/ClientNotes/{id}": {
      "patch": {
        "tags": [
          "ClientNotes"
        ],
        "summary": "Updates a Client Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ClientNotePostRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientNotePostRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientNotePostRequest"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "delete": {
        "tags": [
          "ClientNotes"
        ],
        "summary": "Deletes an existing Client Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/Clients/{id}": {
      "get": {
        "tags": [
          "Clients"
        ],
        "summary": "Returns a Client's Details",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Client's Details"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "patch": {
        "tags": [
          "Clients"
        ],
        "summary": "Patches an existing Client",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Client successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/Clients/{id}/KeyContacts": {
      "get": {
        "tags": [
          "Clients"
        ],
        "summary": "Returns the Key Contacts for a Client",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Key Contacts for a Client"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/Clients/{id}/upload": {
      "post": {
        "tags": [
          "Clients"
        ],
        "summary": "Prepares a Presigned URL for a Binary Document in the Client Document Context",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "File Type Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/Clients/{clientId}/uploadUserList": {
      "post": {
        "tags": [
          "Clients"
        ],
        "summary": "Prepares a Presigned URL for an Client User List to be uploaded.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "description": "Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Filename",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/Clients/{id}/importusers": {
      "post": {
        "tags": [
          "Clients"
        ],
        "summary": "Import a List of Client Users from a file that was uploaded.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Document Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Import"
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/Clients/downloadImportTemplate": {
      "get": {
        "tags": [
          "Clients"
        ],
        "summary": "Provides a sample User CSV Template file for use with the Client User Import feature.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "responses": {
          "200": {
            "description": "Sample CSV Document",
            "content": {
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/File"
                }
              }
            }
          },
          "400": {
            "description": "Error generating the document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserNotes": {
      "get": {
        "tags": [
          "ClientUserNotes"
        ],
        "summary": "Returns the Notes for a Client User",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsClientAdmin</li><li>Users Read</li></ul>",
        "parameters": [
          {
            "name": "clientUserId",
            "in": "query",
            "description": "The Client User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Client User Notes edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Client User Notes"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsClientAdmin, Users Read"
        ]
      },
      "post": {
        "tags": [
          "ClientUserNotes"
        ],
        "summary": "Creates a new Client User Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsClientAdmin</li><li>Users Edit</li></ul>",
        "requestBody": {
          "description": "Client User Note Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientUserNotePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Client User Note ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsClientAdmin, Users Edit"
        ]
      }
    },
    "/api/ClientUserNotes/{id}/translate": {
      "post": {
        "tags": [
          "ClientUserNotes"
        ],
        "summary": "Translates one note into the caller's language and stores the result\nso later readers get it without another AI call. Used for notes\nthat predate eager translation.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsClientAdmin</li><li>Users Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "IsClientAdmin, Users Read"
        ]
      }
    },
    "/api/ClientUserNotes/{id}": {
      "patch": {
        "tags": [
          "ClientUserNotes"
        ],
        "summary": "Updates a Client User Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsClientAdmin</li><li>Users Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ClientUserNotePostRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientUserNotePostRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientUserNotePostRequest"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsClientAdmin, Users Edit"
        ]
      },
      "delete": {
        "tags": [
          "ClientUserNotes"
        ],
        "summary": "Deletes an existing Client User Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsClientAdmin</li><li>Users Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsClientAdmin, Users Edit"
        ]
      }
    },
    "/api/ClientUsers": {
      "get": {
        "tags": [
          "ClientUsers"
        ],
        "summary": "Returns the Users for a Client",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page to return",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of elements to return per page (Maximum 100)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search Filter",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting Order",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "Field to Sort By",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "siteIds",
            "in": "query",
            "description": "The Site IDs to filter (comma-separated, supports multiple)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Client Users edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Client Users"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      },
      "post": {
        "tags": [
          "ClientUsers"
        ],
        "summary": "Attaches a user to a Client (If the User already exists, then they will be added to the client.  If not,\na User will be registered against the email address and invited)",
        "requestBody": {
          "description": "Client User Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientUserPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Client User ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/ClientUsers/count": {
      "get": {
        "tags": [
          "ClientUsers"
        ],
        "summary": "Returns the Count of Users for a Client",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search Filter",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "siteIds",
            "in": "query",
            "description": "The Site IDs to filter (comma-separated, supports multiple)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Client Users edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the count of Client Users"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/ClientUsers/{id}": {
      "get": {
        "tags": [
          "ClientUsers"
        ],
        "summary": "Gets a specific Client User's Details",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Client User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Client User details"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "No record found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "ClientUsers"
        ],
        "summary": "Patches an existing Client User",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "User successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientUserRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ClientUsers"
        ],
        "summary": "Deletes an existing Client User",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/ClientUsers/{id}/access": {
      "get": {
        "tags": [
          "ClientUsers"
        ],
        "summary": "Returns the Client User's Access Settings",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Client User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Client User Access Settings"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/ClientUsers/{id}/sites": {
      "get": {
        "tags": [
          "ClientUsers"
        ],
        "summary": "Returns the Client User's Accessible Sites",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Client User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Accessible Sites"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/ClientUserSiteApps": {
      "get": {
        "tags": [
          "ClientUserSiteApps"
        ],
        "summary": "Returns the Users for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Read</li><li>IsClientAdmin</li><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The Site Application ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page to return",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of elements to return per page (Maximum 100)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search Filter",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting Order",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "The Field to Sort by",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "excludeKeyContacts",
            "in": "query",
            "description": "Exclude any Key Contacts from the Results",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs to Filter (comma-separated, supports multiple)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Client Users edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Client Users"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Users Read, IsClientAdmin, IsAdmin"
        ]
      },
      "post": {
        "tags": [
          "ClientUserSiteApps"
        ],
        "summary": "Assigns User Access to a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>Users Full</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Client User Site App Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientUserSiteAppPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Client User Site ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, Users Full, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserSiteApps/count": {
      "get": {
        "tags": [
          "ClientUserSiteApps"
        ],
        "summary": "Returns the Count of Users for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Read</li><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "Search Filter",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The Site Application ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs to Filter (comma-separated, supports multiple)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Client Users edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the count of Client Users",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Users Read, IsAdmin"
        ]
      }
    },
    "/api/ClientUserSiteApps/{id}": {
      "get": {
        "tags": [
          "ClientUserSiteApps"
        ],
        "summary": "Gets a specific Site Application User",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Client User Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Client User Site Application details"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "No record found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Read"
        ]
      },
      "patch": {
        "tags": [
          "ClientUserSiteApps"
        ],
        "summary": "Patches an existing Client User Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsClientAdmin</li><li>Users Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "User successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientUserSiteAppRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsClientAdmin, Users Edit"
        ]
      },
      "delete": {
        "tags": [
          "ClientUserSiteApps"
        ],
        "summary": "Removes Site Application Access to a Client User",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>Users Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User Site App ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, Users Full"
        ]
      }
    },
    "/api/ClientUserSiteApps/getByUserId/{userId}": {
      "get": {
        "tags": [
          "ClientUserSiteApps"
        ],
        "summary": "Gets a Site Application User by a given User ID.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Read</li></ul>",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The Site Application User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Site Application User details"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "No record found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Read"
        ]
      }
    },
    "/api/ClientUserSiteApps/{id}/access": {
      "get": {
        "tags": [
          "ClientUserSiteApps"
        ],
        "summary": "Returns the Client User's Site Application Access",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>Users Read</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Site Application User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the access settings for a Site Application User"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "IsAdmin, Users Read, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserSiteApps/addUser": {
      "post": {
        "tags": [
          "ClientUserSiteApps"
        ],
        "summary": "Attaches a user to a Site Application (If the User already exists, then they will be added to the client \nand Site Application.  If not, a User will be registered against the email address and invited)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Full</li></ul>",
        "requestBody": {
          "description": "User Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientUserSiteAppAddUserPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Client User Site Application ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Full"
        ]
      }
    },
    "/api/ClientUserSiteApps/{id}/servicemodels": {
      "delete": {
        "tags": [
          "ClientUserSiteApps"
        ],
        "summary": "Removes all of the Model Exclusions for Service Access to the User's Mobile Access (Allowing access to all models)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>Users Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User Site App ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, Users Full"
        ]
      }
    },
    "/api/ClientUserSiteAppServiceDepartments": {
      "post": {
        "tags": [
          "ClientUserSiteAppServiceDepartments"
        ],
        "summary": "Assigns Client User Access to a Site Application's Department",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Edit</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Client User Site App Service Department Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientUserSiteAppServiceDepartmentPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Client User Site Service Department ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Edit, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserSiteAppServiceDepartments/{id}": {
      "delete": {
        "tags": [
          "ClientUserSiteAppServiceDepartments"
        ],
        "summary": "Removes Site Application Department Access to a User",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User Site App Service Department ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Edit, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserSiteAppServiceModels": {
      "post": {
        "tags": [
          "ClientUserSiteAppServiceModels"
        ],
        "summary": "Assigns User Access to a Model's Services",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Edit</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Client User Site App Service Model Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientUserSiteAppServiceModelPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Client User Site Service Model ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Edit, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserSiteAppServiceModels/{id}": {
      "delete": {
        "tags": [
          "ClientUserSiteAppServiceModels"
        ],
        "summary": "Removes a Model's Service Access to a Client User",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User Site App Service Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Edit, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserSiteAppServiceRoles": {
      "post": {
        "tags": [
          "ClientUserSiteAppServiceRoles"
        ],
        "summary": "Assigns User Access to a Site Application's Role",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Edit</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Client User Site App Service Role Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientUserSiteAppServiceRolePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Client User Site Service Role ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Edit, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserSiteAppServiceRoles/{id}": {
      "delete": {
        "tags": [
          "ClientUserSiteAppServiceRoles"
        ],
        "summary": "Removes Site Application Role Access to a User",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User Site App Service Role ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Edit, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserSites/{id}/siteapps": {
      "get": {
        "tags": [
          "ClientUserSites"
        ],
        "summary": "Returns the Client User's Accessible Site Applications",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Client User Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Accessible Site Applications"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "IsAdmin, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserSites": {
      "post": {
        "tags": [
          "ClientUserSites"
        ],
        "summary": "Assigns Client User Access to a Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Client User Site Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientUserSitePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Client User Site ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsClientAdmin"
        ]
      }
    },
    "/api/ClientUserSites/{id}": {
      "patch": {
        "tags": [
          "ClientUserSites"
        ],
        "summary": "Patches an existing Client User Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsClientAdmin</li><li>Users Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "User successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientUserSiteRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsClientAdmin, Users Edit"
        ]
      },
      "delete": {
        "tags": [
          "ClientUserSites"
        ],
        "summary": "Removes a Client User's access to a Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Client User Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsClientAdmin"
        ]
      }
    },
    "/api/CMEditReasons": {
      "get": {
        "tags": [
          "CMEditReasons"
        ],
        "summary": "Returns the CM Edit Reasons for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the CM Edit Reasons edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application CM Edit Reasons"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "CMEditReasons"
        ],
        "summary": "Creates a new Site Application CM Edit Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application CM Edit Reason Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CMEditReasonPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application CM Edit Reason ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/CMEditReasons/{id}": {
      "patch": {
        "tags": [
          "CMEditReasons"
        ],
        "summary": "Patches an existing Site Application CM Edit Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application CM Edit Reason ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application CM Edit Reason successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CMEditReasonRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "CMEditReasons"
        ],
        "summary": "Deletes an existing Site Application CM Edit Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application CM Edit Reason ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Analytics/completedServiceAnalysis": {
      "get": {
        "tags": [
          "CompletedServiceAnalysis"
        ],
        "summary": "Returns the Service Times for a Service",
        "description": "Sample request:\n\n    GET /api/Analytics/completedServiceAnalysis?startDate=2024-01-01T00:00:00Z&endDate=2024-12-31T23:59:59Z<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "operationId": "GetServiceTimes",
        "parameters": [
          {
            "name": "StartDate",
            "in": "query",
            "description": "Start date for filtering services (defaults to 1 year ago if not specified)",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2024-01-01T00:00:00Z"
            },
            "example": "2024-01-01T00:00:00Z"
          },
          {
            "name": "EndDate",
            "in": "query",
            "description": "End date for filtering services (defaults to current date if not specified)",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2024-12-31T23:59:59Z"
            },
            "example": "2024-12-31T23:59:59Z"
          },
          {
            "name": "SiteDepartmentIds",
            "in": "query",
            "description": "Optional filter by Site Department IDs (supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "example": [
                1,
                2,
                3
              ]
            },
            "example": [
              1,
              2,
              3
            ]
          },
          {
            "name": "ModelId",
            "in": "query",
            "description": "Optional filter by Model ID",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 2
            },
            "example": 2
          },
          {
            "name": "SiteAssetRegisterId",
            "in": "query",
            "description": "Optional filter by Site Asset ID",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": 3
            },
            "example": 3
          },
          {
            "name": "ModelVersionIntervalId",
            "in": "query",
            "description": "Optional filter by interval Id",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": "3032 (4 Weekly)"
            },
            "example": "3032 (4 Weekly)"
          },
          {
            "name": "ModelVersionRoleId",
            "in": "query",
            "description": "Optional filter by Model Version Role Id",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": "345 (Technician)"
            },
            "example": "345 (Technician)"
          },
          {
            "name": "ServiceId",
            "in": "query",
            "description": "Optional Service ID for detailed analysis",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ModelVersionStageId",
            "in": "query",
            "description": "Optional Model Version Stage ID for stage-level analysis",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ModelVersionZoneId",
            "in": "query",
            "description": "Optional Model Version Zone ID for zone-level analysis",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Occurrence",
            "in": "query",
            "description": "Optional number of services to look back on as a maximum\n<example>100</example>",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Service Times",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetServiceTimesResponse"
                }
              }
            }
          },
          "400": {
            "description": "If the date range is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Analytics/completedvsoutstanding": {
      "get": {
        "tags": [
          "CompletedVsOutstandingDefectsReport"
        ],
        "summary": "Returns the Completed vs Outstanding Defects Graph Data",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "defectTypeId",
            "in": "query",
            "description": "The Defect Type ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "defectRiskRatingId",
            "in": "query",
            "description": "The Defect Risk Rating ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Defect Date (default is 1 year ago)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Defect Date (default is now)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "defectStatusId",
            "in": "query",
            "description": "The Defect Status ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Complete vs Outstanding Defects Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/completedvsoutstandingmodified": {
      "get": {
        "tags": [
          "CompletedVsOutstandingDefectsReport"
        ],
        "summary": "Returns the Completed vs Outstanding Defects Graph Data",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "defectTypeId",
            "in": "query",
            "description": "The Defect Type ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "defectRiskRatingId",
            "in": "query",
            "description": "The Defect Risk Rating ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Defect Date (default is 1 year ago)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Defect Date (default is now)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "defectStatusID",
            "in": "query",
            "description": "The Defect Status ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Complete vs Outstanding Defects Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/conditionMonitoringQuestions": {
      "get": {
        "tags": [
          "ConditionMonitoringReport"
        ],
        "summary": "Returns the Condition Monitoring Questions for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ModelVersionRoleID",
            "in": "query",
            "description": "The Role ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ModelVersionIntervalID",
            "in": "query",
            "description": "The Interval ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ModelVersionArrangementID",
            "in": "query",
            "description": "The Arrangement ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Condition Monitoring Questions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsGetConditionMonitoringQuestionsRespones"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/conditionmonitoring": {
      "get": {
        "tags": [
          "ConditionMonitoringReport"
        ],
        "summary": "Returns the Condition Monitoring Responses for a given Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskQuestionId",
            "in": "query",
            "description": "The Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteAssetRegisterId",
            "in": "query",
            "description": "Site Asset Register ID (optional). Retained for existing clients; combined with siteAssetRegisterIds when both are supplied.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteAssetRegisterIds",
            "in": "query",
            "description": "Site Asset Register IDs (optional, supports multiple). Omit for all assets.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelVersionStageId",
            "in": "query",
            "description": "The Model Version Stage ID (optional)",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionZoneId",
            "in": "query",
            "description": "The Model Version Zone ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The Start Date Filter (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The End Date Filter (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Condition Monitoring Responses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalyticsGetConditionMonitoringDataRespones"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/conditionmonitoring/historicalassets": {
      "get": {
        "tags": [
          "ConditionMonitoringReport"
        ],
        "summary": "Returns the site assets on a Model that are no longer selectable Model Assets",
        "description": "Complements GET api/ModelAssets/available so a report can offer every asset whose Model Asset link\nwas made inactive or deleted, whether or not it has readings, plus any unlinked asset with readings.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of historical assets",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConditionMonitoringHistoricalAsset"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/conditionmonitoring/{id}": {
      "post": {
        "tags": [
          "ConditionMonitoringReport"
        ],
        "summary": "Edit a Condition Monitoring data point value",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Analytics Full</li><li>Analytics Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ServiceTaskQuestion ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The edit request containing new value and reason",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CMDataEditRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CMDataEditRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CMDataEditRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CMDataEditRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated data point",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConditionMonitoringDataPoint"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Data point not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Analytics Full, Analytics Edit"
        ]
      }
    },
    "/api/Analytics/conditionmonitoring/alert": {
      "get": {
        "tags": [
          "ConditionMonitoringReport"
        ],
        "summary": "Returns the Condition Monitoring alert trigger configuration for a question.\nReads from the development model version's question when available, otherwise the active version.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Analytics Full</li><li>Analytics Edit</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskQuestionId",
            "in": "query",
            "description": "A ModelVersionTaskQuestion ID identifying the question (any version)",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the alert configuration"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Question not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Analytics Full, Analytics Edit"
        ]
      },
      "post": {
        "tags": [
          "ConditionMonitoringReport"
        ],
        "summary": "Saves the Condition Monitoring alert trigger configuration for a question.\nThe configuration is applied to the matching question on both the active and the development model version.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Analytics Full</li><li>Analytics Edit</li><li>Models Full</li><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "The alert configuration",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CMAlertConfigRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CMAlertConfigRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CMAlertConfigRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CMAlertConfigRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Alert configuration saved"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Question not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Analytics Full, Analytics Edit, Models Full, Models Edit"
        ]
      }
    },
    "/api/ContentTranslations": {
      "get": {
        "tags": [
          "ContentTranslations"
        ],
        "summary": "The current siteApp's stored translations for one entity type -\nevery locale, or one when locale is given.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "entityType",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "put": {
        "tags": [
          "ContentTranslations"
        ],
        "summary": "Upserts translations for the current siteApp (shared with its Site's\nother siteApps for Site-owned content). Values are stored with\na snapshot and hash of the server-side source text; an empty value\nremoves the stored translation. All items save or none do.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentTranslationSaveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ContentTranslations/export": {
      "get": {
        "tags": [
          "ContentTranslations"
        ],
        "summary": "Every live translatable definition string with its source text and\nthe stored translations for the requested locales - including\ndefinitions with no translation yet, which per-type reads omit.\nBacks the CSV export on the definition screens.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "locales",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/ContentTranslations/sources": {
      "put": {
        "tags": [
          "ContentTranslations"
        ],
        "summary": "Bulk update of the definition source texts themselves (the CSV\nimport's Original column). All items validate before any write:\nunknown entities and duplicate names within a type reject the whole\nbatch. Renames flow through the normal save pipeline, so auditing\nand the automatic AI retranslation of stale AI rows both apply.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentSourceSaveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ContentTranslations/summary": {
      "get": {
        "tags": [
          "ContentTranslations"
        ],
        "summary": "Site-wide translation summary across every registered definition\ntype: how many translatable definitions exist, and how many are\ntranslated per locale. missing = totalDefinitions - a locale's count.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/ContentTranslations/translatemissing": {
      "post": {
        "tags": [
          "ContentTranslations"
        ],
        "summary": "Translates every missing string of the requested definition types\nfor one locale, server-side - the screens only hold a page of rows,\nso a client-side sweep would stop at whatever happened to be\nloaded. Chunked, with each chunk saved as it lands; a mid-run\nfailure keeps what finished and the caller re-runs for the rest.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentTranslateMissingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ContentTranslations/translatemissing/background": {
      "post": {
        "tags": [
          "ContentTranslations"
        ],
        "summary": "Starts translating every missing string of the requested types for\none locale in the background server - for content too large to\nsweep within a request (a site's asset register). Returns the run to\npoll; an active run for the same content and locale is returned\ninstead of starting a second one.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentTranslateMissingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ContentTranslations/translatemissing/runs/{id}": {
      "get": {
        "tags": [
          "ContentTranslations"
        ],
        "summary": "Progress of one background translation run.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/ContentTranslations/translatemissing/runs/active": {
      "get": {
        "tags": [
          "ContentTranslations"
        ],
        "summary": "The run still working on these types and locale, if any - so a\nscreen opened mid-run picks its progress back up.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "types",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/DefectImages": {
      "get": {
        "tags": [
          "DefectImages"
        ],
        "summary": "Returns the Images for a Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "defectId",
            "in": "query",
            "description": "The Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Defect Images edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Defect Images",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectImagesGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/DefectImages/{id}": {
      "delete": {
        "tags": [
          "DefectImages"
        ],
        "summary": "Deletes a Defect Image",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect Image ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/DefectNotes": {
      "get": {
        "tags": [
          "DefectNotes"
        ],
        "summary": "Returns the Defect Notes for a Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "defectId",
            "in": "query",
            "description": "The Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Defect Notes edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Defect Notes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectNotesGet"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      },
      "post": {
        "tags": [
          "DefectNotes"
        ],
        "summary": "Creates a new Defect Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "requestBody": {
          "description": "Defect Note Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectNotePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Defect Note ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/DefectNotes/{id}/translate": {
      "post": {
        "tags": [
          "DefectNotes"
        ],
        "summary": "Translates one note into the caller's language and stores the result\nso later readers get it without another AI call. Used for notes\nthat predate eager translation.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/DefectNotes/{id}": {
      "patch": {
        "tags": [
          "DefectNotes"
        ],
        "summary": "Updates a Defect Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DefectNotePostRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectNotePostRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectNotePostRequest"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Full"
        ]
      },
      "delete": {
        "tags": [
          "DefectNotes"
        ],
        "summary": "Deletes a  Defect Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Full"
        ]
      }
    },
    "/api/DefectParts": {
      "get": {
        "tags": [
          "DefectParts"
        ],
        "summary": "Returns the Parts for a Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "defectId",
            "in": "query",
            "description": "The Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Defect Parts edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Defect Parts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectPartsGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      },
      "post": {
        "tags": [
          "DefectParts"
        ],
        "summary": "Creates a new Defect Part",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "requestBody": {
          "description": "Defect Part Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectPartPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Defect Part ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/DefectParts/{id}": {
      "patch": {
        "tags": [
          "DefectParts"
        ],
        "summary": "Patches an existing Defect Part",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect Part ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Defect Part successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectPartRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      },
      "delete": {
        "tags": [
          "DefectParts"
        ],
        "summary": "Deletes a  Defect Part",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect Part ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "json"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/DefectRiskRatings": {
      "get": {
        "tags": [
          "DefectRiskRatings"
        ],
        "summary": "Returns the Defect Risk Ratings for an Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li><li>Settings Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Defect Risk Ratings edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Defect Risk Ratings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectRiskRatingsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read, Settings Read, Analytics Read"
        ]
      },
      "post": {
        "tags": [
          "DefectRiskRatings"
        ],
        "summary": "Creates a new Defect Risk Rating",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Defect Risk Rating Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectRiskRatingPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Defect Risk Rating ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/DefectRiskRatings/{id}": {
      "patch": {
        "tags": [
          "DefectRiskRatings"
        ],
        "summary": "Patches a Defect Risk Rating",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Defect Risk Rating ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Application successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectRiskRatingRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "DefectRiskRatings"
        ],
        "summary": "Deletes a Defect Risk Rating",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Defect Risk Rating ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Defects/autocomplete/{search}": {
      "get": {
        "tags": [
          "Defects"
        ],
        "summary": "Returns Autocomplete Suggestions for a Defect Search",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "path",
            "description": "The Search Criteria",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Chips",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectsGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects/autocomplete": {
      "get": {
        "tags": [
          "Defects"
        ],
        "summary": "Returns Autocomplete Suggestions for a Defect Search, with the search term taken from the query string",
        "description": "Kept as a separate action (rather than a second [HttpGet] template on Autocomplete) because\n[ApiController] infers a parameter's binding source once per action across all its route\ntemplates: with both templates on one action, \"search\" gets bound as [FromRoute] for both,\nso this route would never see the query string.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Chips",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectsGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects": {
      "get": {
        "tags": [
          "Defects"
        ],
        "summary": "Returns the Defects for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Page Size (to a Maximum of 100)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "The Sort Field",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The Sort Order (asc for ascending or desc for descending)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "defectStatusType",
            "in": "query",
            "description": "The Defect Status Type Code",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "defectStatusID",
            "in": "query",
            "description": "The Defect Status ID to Filter",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteDepartmentID",
            "in": "query",
            "description": "The Site Department ID to Filter",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The Date to Filter Defects From",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The Date to Filter Defects To",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns Defects that have been created or modified since the specified Date. (Optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "includeDeleted",
            "in": "query",
            "description": "Include deleted records in the results (default: false)",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "onlySAPErrors",
            "in": "query",
            "description": "show only Defects that have SAP Errors",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Defects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectsGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      },
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Registers a Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Full</li></ul>",
        "requestBody": {
          "description": "Defect Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Defect ID",
            "content": {
              "plain/text": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Full"
        ]
      }
    },
    "/api/Defects/Search": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Returns the Defects for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "requestBody": {
          "description": "Search Filters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the list of Defects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectsGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects/Search/ids": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Returns the ordered list of Defect IDs matching the given search/filter/sort,\nwith no pagination. Powers client-side Next/Previous navigation on the Defect\ndetail page: the frontend fetches this once per search and caches it, rather\nthan re-querying on every click.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "requestBody": {
          "description": "Search Filters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the ordered list of Defect IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects/SAPDefectExport": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Export List of Defect to SAP",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "requestBody": {
          "description": "Search Filters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the list of Defects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectsGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects/count": {
      "get": {
        "tags": [
          "Defects"
        ],
        "summary": "Returns the Count of Defects for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "defectStatusType",
            "in": "query",
            "description": "The Defect Status Type Code",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "defectStatusID",
            "in": "query",
            "description": "The Defect Status ID to Filter",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteDepartmentID",
            "in": "query",
            "description": "The Site Department ID to Filter",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The Date to Filter Defects From",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The Date to Filter Defects To",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Defects edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the count of Defects"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      },
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Returns the Count of Defects for a Site Application with advanced filtering",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "requestBody": {
          "description": "The search parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the count of Defects"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects/{id}": {
      "get": {
        "tags": [
          "Defects"
        ],
        "summary": "Returns a Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a Defect",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectsGetDefectResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      },
      "patch": {
        "tags": [
          "Defects"
        ],
        "summary": "Patches an existing Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Defect successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      },
      "delete": {
        "tags": [
          "Defects"
        ],
        "summary": "Deletes an existing Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Full"
        ]
      }
    },
    "/api/Defects/{id}/detailstranslation": {
      "get": {
        "tags": [
          "Defects"
        ],
        "summary": "The caller's-language rendering of the defect's details, when one is\nstored. Separate from the main GET so existing consumers keep their\nresponse shape.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects/{id}/translatedetails": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Translates the defect's details into the caller's language and stores\nthe result for later readers. Used for defects that predate eager\ntranslation.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects/{id}/uploadAudio": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Uploads an Audio to be attached to a Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "description": "File to Upload",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "json"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Full"
        ]
      }
    },
    "/api/Defects/{id}/audio": {
      "delete": {
        "tags": [
          "Defects"
        ],
        "summary": "Removes an Audio that was allocated to a Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Presigned URL",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "json"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/Defects/{id}/uploadImage": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Uploads an Image to be attached to a Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "temporaryId",
            "in": "query",
            "description": "Optional temporary ID to associate the image before the defect is saved",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "description": "File to Upload",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DefectsUploadImageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Full"
        ]
      }
    },
    "/api/Defects/{id}/raiseNotification": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Raises the defect into an external system such as SAP",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "json"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/Defects/{id}/update": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Post to an existing Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Post Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Defect successfully updated"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/Defects/{id}/changestatus": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Changes the Status of a Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Status Change Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectStatusChangePostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns Defect Status ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/Defects/backfill-completion-dates": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "One-time platform-admin backfill of CompletionDate across EVERY site application\nin the database. Deliberately bypasses tenant scoping (super admin only) and\npopulates currently-completed defects that have no CompletionDate yet, using the\nmost recent audited transition into a completed status, falling back to the\ndefect's last-modified/created date when no such history exists.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the number of defects updated"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/Defects/{id}/acknowledge": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Acknowledge a Defect",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Defect acknowledged successfully"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Defect not found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/Defects/{id}/read": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Mark a defect as read for the current user in the context of a service. Tracks read status per service, allowing the same defect to be tracked across multiple services.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains ServiceID - can be any service in the same site, not just the defect's original service",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DefectMarkReadRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectMarkReadRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectMarkReadRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DefectMarkReadRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Defect marked as read successfully"
          },
          "400": {
            "description": "Invalid ServiceID or service not found in current site",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Defect not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects/unacknowledged": {
      "get": {
        "tags": [
          "Defects"
        ],
        "summary": "Get list of unacknowledged defect IDs for the current site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns list of unacknowledged defect IDs",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects/{id}/parts/downloadImportTemplate": {
      "get": {
        "tags": [
          "Defects"
        ],
        "summary": "Provides a sample Defect Parts CSV Template file for use with the import feature.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sample CSV Document",
            "content": {
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/File"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Defect not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Defects/{id}/parts/upload": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Prepares a Presigned URL for a Defect Parts list to be uploaded.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Filename",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Defect not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/Defects/{id}/parts/import": {
      "post": {
        "tags": [
          "Defects"
        ],
        "summary": "Import a list of Defect Parts from a file that was uploaded.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Document Key",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DefectPartsImportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectPartsImportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectPartsImportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DefectPartsImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully Imported"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Defect not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Edit"
        ]
      }
    },
    "/api/Analytics/defectsByDepartment": {
      "get": {
        "tags": [
          "DefectsByDepartmentReport"
        ],
        "summary": "Returns the Defects by Department Graph Data\n            \nThe data returned includes a Depth Property that indicates the level of data being returned:\n - D (Defects by Department)\n - A (Defects by Asset)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "defectRiskRatingId",
            "in": "query",
            "description": "The Defect Risk Rating ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "defectTypeId",
            "in": "query",
            "description": "The Defect Type ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Defects by Department"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/defectsByRiskRating": {
      "get": {
        "tags": [
          "DefectsByRiskRatingReport"
        ],
        "summary": "Returns the Defects by Risk Rating Graph Data\n            \nThe data returned includes a Depth Property that indicates the level of data being returned:\n - R (Defects by Risk Rating)\n - A (Defects by Asset)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "defectRiskRatingId",
            "in": "query",
            "description": "The Defect Risk Rating ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "onlyNewDefects",
            "in": "query",
            "description": "Show only new/unacknowledged defects (optional)",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Defects by Risk Rating"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/defectsByStatus": {
      "get": {
        "tags": [
          "DefectsByStatusReport"
        ],
        "summary": "Returns the Defects by Status Graph Data\n            \nThe data returned includes a Depth Property that indicates the level of data being returned:\n - S (Defects by Status)\n - A (Defects by Asset)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "defectStatusId",
            "in": "query",
            "description": "The Defect Status ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "defectRiskRatingId",
            "in": "query",
            "description": "The Defect Risk Rating ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "defectTypeId",
            "in": "query",
            "description": "The Defect Type ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "onlyNewDefects",
            "in": "query",
            "description": "Show only new/unacknowledged defects (optional)",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Defects by Status"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/defectsBySystem": {
      "get": {
        "tags": [
          "DefectsBySystemReport"
        ],
        "summary": "Returns the Defects by System Graph Data\n            \nThe data returned includes a Depth Property that indicates the level of data being returned:\n - S (Defects by System)\n - A (Defects by Asset)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "defectSystemId",
            "in": "query",
            "description": "The Defect System ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "defectRiskRatingId",
            "in": "query",
            "description": "The Defect Risk Rating ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Defects by Risk Rating"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/defectsByType": {
      "get": {
        "tags": [
          "DefectsByTypeReport"
        ],
        "summary": "Returns the Defects by Type Graph Data\n            \nThe data returned includes a Depth Property that indicates the level of data being returned:\n - T (Defects by Type)\n - A (Defects by Asset)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "defectTypeId",
            "in": "query",
            "description": "The Defect Type ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "defectRiskRatingId",
            "in": "query",
            "description": "The Defect Risk Rating ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Defects by Type"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/defectsRegistered": {
      "get": {
        "tags": [
          "DefectsRegisteredReport"
        ],
        "summary": "Returns the Defects Registered Graph Data\n            \nThe data returned includes a Depth Property that indicates the level of data being returned:\n - A (Defects by Asset)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "defectTypeId",
            "in": "query",
            "description": "The Defect Type ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "defectRiskRatingId",
            "in": "query",
            "description": "The Defect Risk Rating ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Defect Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "defectStatusType",
            "in": "query",
            "description": "The Defect Status Type (optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "notificationRaised",
            "in": "query",
            "description": "Whether a Notification has been raised for the Defect (optional)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "siteAssetRegisterId",
            "in": "query",
            "description": "The Site Asset Register ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Defects Registered"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read, Analytics Read"
        ]
      }
    },
    "/api/DefectStatuses": {
      "get": {
        "tags": [
          "DefectStatuses"
        ],
        "summary": "Returns the Defect Statuses for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Defect Statuses edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Defect Statuses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectStatusesGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, Defects Read"
        ]
      },
      "post": {
        "tags": [
          "DefectStatuses"
        ],
        "summary": "Creates a new Defect Status",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Defect Status Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectStatusPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Defect Status ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/DefectStatuses/{id}": {
      "patch": {
        "tags": [
          "DefectStatuses"
        ],
        "summary": "Patches an existing Defect Status",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Defect Status ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Defect Status successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectStatusRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "DefectStatuses"
        ],
        "summary": "Deletes an existing Site Application Defect Status",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Defect Status ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/DefectTypes": {
      "get": {
        "tags": [
          "DefectTypes"
        ],
        "summary": "Returns the Defect Types for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Defect Types edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Defect Types",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectTypesGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, Defects Read"
        ]
      },
      "post": {
        "tags": [
          "DefectTypes"
        ],
        "summary": "Creates a new Defect Type",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Defect Type Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefectTypePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Defect Type ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/DefectTypes/{id}": {
      "patch": {
        "tags": [
          "DefectTypes"
        ],
        "summary": "Patches an existing Defect Type",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Defect Type ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Defect Type successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefectTypeRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "DefectTypes"
        ],
        "summary": "Deletes an existing Defect Type",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Defect Type ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Feedback": {
      "get": {
        "tags": [
          "Feedback"
        ],
        "summary": "Returns the Feedback for a single Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Page Size (to a Maximum of 100)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The Feedback Date to Filter From",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The Feedback Date to Filter To",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "statusType",
            "in": "query",
            "description": "The Status Filter - C for Completed Statuses and O for Outstanding",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "feedbackStatusID",
            "in": "query",
            "description": "Filter by Status ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "myFeedback",
            "in": "query",
            "description": "Filter Feedback to those Assigned to or created by the User, or assigned to the User's Position",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "siteDepartmentIDs",
            "in": "query",
            "description": "Site Department IDs filter (can provide multiple values)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "The Sort Field",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The Sort Order (asc for ascending or desc for descending)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Feedback edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "userId",
            "in": "query",
            "description": "Filter Feedback by specific user ID - shows feedback created by, assigned to, or assigned to user's position",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Feedback"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      },
      "post": {
        "tags": [
          "Feedback"
        ],
        "summary": "Creates a new Feedback",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Full</li></ul>",
        "requestBody": {
          "description": "Feedback Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Feedback ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Full"
        ]
      }
    },
    "/api/Feedback/count": {
      "get": {
        "tags": [
          "Feedback"
        ],
        "summary": "Returns the Count of Feedback Items for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "fromDate",
            "in": "query",
            "description": "The Feedback Date to Filter From",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The Feedback Date to Filter To",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "statusType",
            "in": "query",
            "description": "The Status Filter - C for Completed Statuses and O for Outstanding",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "feedbackStatusID",
            "in": "query",
            "description": "Filter by Status ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "myFeedback",
            "in": "query",
            "description": "Filter Feedback to those Assigned to or created by the User, or assigned to the User's Position",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "siteDepartmentIDs",
            "in": "query",
            "description": "Site Department IDs filter (can provide multiple values)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Feedback counted since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "userId",
            "in": "query",
            "description": "Filter Feedback by specific user ID - shows feedback created by, assigned to, or assigned to user's position",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Count of Feedback Elements including total and unread counts",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              },
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              },
              "text/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/Feedback/users": {
      "get": {
        "tags": [
          "Feedback"
        ],
        "summary": "Returns the list of Users for filtering Feedback in a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The Site Application ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search Filter (matches first or last name)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Users"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/Feedback/AvailableUsers": {
      "get": {
        "tags": [
          "Feedback"
        ],
        "summary": "Returns the list of Users for a Site Application, optionally filtered by Position and Department",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "positionId",
            "in": "query",
            "description": "Optional Position ID to filter users by position",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteDepartmentId",
            "in": "query",
            "description": "Optional Site Department ID to filter users by department",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Users"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/Feedback/tasks": {
      "get": {
        "tags": [
          "Feedback"
        ],
        "summary": "Returns available Model Version Tasks for selection when editing a Feedback Item",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionStageId",
            "in": "query",
            "description": "The Model Version Stage ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionZoneId",
            "in": "query",
            "description": "The Model Version Zone ID (optional - further filters tasks to those assigned to this zone)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionRoleId",
            "in": "query",
            "description": "The Model Version Role ID (optional - further filters tasks to those assigned to this role)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionIntervalId",
            "in": "query",
            "description": "The Model Version Interval ID (optional - further filters tasks to those assigned to this interval)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of tasks"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Stage not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/Feedback/{id}": {
      "get": {
        "tags": [
          "Feedback"
        ],
        "summary": "Returns a Feedback Item",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Feedback ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a Feedback"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      },
      "patch": {
        "tags": [
          "Feedback"
        ],
        "summary": "Patches an existing Feedback",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Feedback ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Feedback successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedbackRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Edit"
        ]
      },
      "delete": {
        "tags": [
          "Feedback"
        ],
        "summary": "Deletes an existing Feedback",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Feedback ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Full"
        ]
      }
    },
    "/api/Feedback/{id}/fieldstranslation": {
      "get": {
        "tags": [
          "Feedback"
        ],
        "summary": "Uploads an Image to be attached to a Feedback",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Feedback ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload to S3"
          },
          "400": {
            "description": "Invalid FileType"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/Feedback/{id}/translatefields": {
      "post": {
        "tags": [
          "Feedback"
        ],
        "summary": "Translates the feedback's free text into the caller's language and\nstores the result for later readers. Used for feedback that\npredates eager translation.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/Feedback/{id}/uploadImage": {
      "post": {
        "tags": [
          "Feedback"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "temporaryId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedbackImage"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Full"
        ]
      }
    },
    "/api/Feedback/{id}/mark-read": {
      "post": {
        "tags": [
          "Feedback"
        ],
        "summary": "Mark a Feedback as read for the current user",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Feedback ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Feedback marked as read successfully"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - This feedback is not assigned to you",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Feedback not found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/Feedback/unread/count": {
      "get": {
        "tags": [
          "Feedback"
        ],
        "summary": "Get count of unread feedback for the current user",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns count of unread feedback",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              },
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              },
              "text/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/Feedback/unread": {
      "get": {
        "tags": [
          "Feedback"
        ],
        "summary": "Get list of unread feedback IDs for the current user",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns list of unread feedback IDs",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/Feedback/{id}/uploadDocument": {
      "post": {
        "tags": [
          "Feedback"
        ],
        "summary": "Prepares a Presigned URL for a Feedback Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Feedback ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "File Name Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Full"
        ]
      }
    },
    "/api/FeedbackClassifications": {
      "get": {
        "tags": [
          "FeedbackClassifications"
        ],
        "summary": "Returns the Feedback Classifications for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Feedback Classifications edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Feedback Classifications"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "FeedbackClassifications"
        ],
        "summary": "Creates a new Feedback Classification",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Feedback Classification Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackClassificationPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Feedback Classification ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/FeedbackClassifications/{id}": {
      "patch": {
        "tags": [
          "FeedbackClassifications"
        ],
        "summary": "Patches an existing Feedback Classification",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Feedback Classification ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Feedback Classification successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedbackClassificationRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "FeedbackClassifications"
        ],
        "summary": "Deletes a Feedback Classification",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Feedback Classification ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/FeedbackDocuments": {
      "get": {
        "tags": [
          "FeedbackDocuments"
        ],
        "summary": "Returns the Documents for a Feedback",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "feedbackId",
            "in": "query",
            "description": "The Feedback ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Feedback Documents edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Feedback Documents"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      },
      "post": {
        "tags": [
          "FeedbackDocuments"
        ],
        "summary": "Creates a new Feedback Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Full</li></ul>",
        "requestBody": {
          "description": "Feedback Document Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackDocumentPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Feedback Document ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Full"
        ]
      }
    },
    "/api/FeedbackDocuments/{id}": {
      "delete": {
        "tags": [
          "FeedbackDocuments"
        ],
        "summary": "Deletes a Feedback Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Feedback Document ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Full"
        ]
      }
    },
    "/api/FeedbackImages": {
      "get": {
        "tags": [
          "FeedbackImages"
        ],
        "summary": "Returns the Images for a Feedback",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "feedbackId",
            "in": "query",
            "description": "The Feedback ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Feedback Images edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Feedback Images"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/FeedbackImages/{id}": {
      "delete": {
        "tags": [
          "FeedbackImages"
        ],
        "summary": "Deletes an existing Feedback Image",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Feedback Image ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Full"
        ]
      }
    },
    "/api/FeedbackNotes": {
      "get": {
        "tags": [
          "FeedbackNotes"
        ],
        "summary": "Returns the Feedback Notes for a Feedback",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "feedbackId",
            "in": "query",
            "description": "The Feedback ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Feedback Notes edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Feedback Notes"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      },
      "post": {
        "tags": [
          "FeedbackNotes"
        ],
        "summary": "Creates a new Feedback Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Edit</li></ul>",
        "requestBody": {
          "description": "Feedback Note Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackNotePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Feedback Note ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Edit"
        ]
      }
    },
    "/api/FeedbackNotes/{id}/translate": {
      "post": {
        "tags": [
          "FeedbackNotes"
        ],
        "summary": "Translates one note into the caller's language and stores the result\nso later readers get it without another AI call. Used for notes\nthat predate eager translation.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/FeedbackNotes/{id}": {
      "patch": {
        "tags": [
          "FeedbackNotes"
        ],
        "summary": "Updates a Feedback Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Feedback Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/FeedbackNotePostRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedbackNotePostRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedbackNotePostRequest"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Full"
        ]
      },
      "delete": {
        "tags": [
          "FeedbackNotes"
        ],
        "summary": "Deletes a Feedback Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Feedback Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Full"
        ]
      }
    },
    "/api/FeedbackPriorities": {
      "get": {
        "tags": [
          "FeedbackPriorities"
        ],
        "summary": "Returns the Feedback Priorities for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Feedback Priorities edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Feedback Priorities"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "FeedbackPriorities"
        ],
        "summary": "Creates a new Feedback Priority",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Feedback Priority Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackPriorityPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Feedback Priority ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/FeedbackPriorities/{id}": {
      "patch": {
        "tags": [
          "FeedbackPriorities"
        ],
        "summary": "Patches an existing Site Application Feedback Priority",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Feedback Priority ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Feedback Priority successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedbackPriorityRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "FeedbackPriorities"
        ],
        "summary": "Deletes an existing Feedback Priority",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Feedback Priority ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/FeedbackStatuses": {
      "get": {
        "tags": [
          "FeedbackStatuses"
        ],
        "summary": "Returns the Feedback Statuses for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Feedback Statuses edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Feedback Statuses"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "FeedbackStatuses"
        ],
        "summary": "Creates a new Feedback Status",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Feedback Status Details",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackStatusPostRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackStatusPostRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackStatusPostRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackStatusPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Feedback Status ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/FeedbackStatuses/{id}": {
      "patch": {
        "tags": [
          "FeedbackStatuses"
        ],
        "summary": "Patches an existing Feedback Status",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Feedback Status ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Feedback Status successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedbackStatusRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "FeedbackStatuses"
        ],
        "summary": "Deletes an existing Feedback Status",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Feedback Status ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/History/modelversions/{id}": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Model Version History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Version History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/History/modelassets": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Model Asset History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Asset History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/History/modelversionarrangements": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Model Arrangement History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Version Arrangement History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/History/modelversionstages": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Model Version Stage History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Version Stage History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/History/modelversionzones": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Model Version Zone History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Version Zone History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/History/modelversionintervals": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Model Version Interval History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Version Interval History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/History/modelversionroles": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Model Version Role History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Version Role History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/History/modelversionquestions": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Model Version Question History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Version Question History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/History/modelversiontasks": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Model Version Task History for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Version Task History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/History/defects/{id}": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Defect Detail History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Defect ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Defect detail History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/History/clientUserSiteApp/{id}": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the User Detail History",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Client User Site App ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the User Detail History",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClientUserSiteAppHistoryResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/History/services/{id}": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Service Detail History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Service Detail History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/History/feedbacks/{id}": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Feedback Detail History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Feedback ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Feedback Detail History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read"
        ]
      }
    },
    "/api/History/noticeboards": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Noticeboard List History",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The Site App ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Noticeboard List History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/History/sitesettings": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Site Setting History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "description": "The Site  ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Site Setting History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteassetregisters": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Site Asset Register History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "description": "The Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Site Asset Register History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/sitedepartments": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Site Department History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "description": "The Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Site Department History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappdetails": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Details History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "description": "The Site ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Details History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteapppausereasons": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Pause Reasons History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Pause Reasons History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappstopreasons": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Stop Reasons History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Stop Reasons History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappskipreasons": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Skip Reasons History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp SkipReasons History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappmissingparttoolreasons": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Missing Part Tool Reasons History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Missing Part Tool Reasons History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappchangestatusreasons": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Change Status Reasons History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Change Status Reasons History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappmodelstatuses": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Model Statuses History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Model Statuses History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappmodeltypes": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Model Types History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Model Types History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappactions": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Action History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Actions History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappsystems": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Systems History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Systems History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappoperatingmodes": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Operating Modes History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Operating Modes History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteapplubricants": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Lubricants History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Operating Modes History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteapppositions": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Positions History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Positions History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteapproles": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Roles History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Roles History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappdefectriskratings": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Defect Risk Ratings History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Defect Risk Ratings History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappdefectstatuses": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Defect Statuses History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Defect Statuses History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappdefecttypes": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Defect Types History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Defect Types History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappfeedbackclassifications": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Feedback Classifications History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Feedback Classifications History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappfeedbackpriorities": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Feedback Priorities History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Feedback Priorities History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/siteappfeedbackstatuses": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the SiteApp Feedback Statuses History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The SiteApp ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SiteApp Feedback Statuses History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/History/applicationdetails": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Application Details History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Application Details History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationpauses": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the App Pause History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns App Pause History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationstopreasons": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the App Stop Reasons History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns App Stop Reasons History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationcmeditreasons": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the App CM Edit Reasons History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns App CM Edit Reasons History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationskipreasons": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Skip Reasons History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Skip Reasons History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationmissingparttoolreasons": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Missing Part Tool Reasons History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Missing Part Tool Reasons History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationchangestatusreasons": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Change Status Reasons History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Change Status Reasons History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationmodelstatuses": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the App Model Statuses History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns App Model Statuses History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationmodeltypes": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Model Types History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Model Types History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationactions": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Action History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Action History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationsystems": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the System History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns System History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationoperatingmodes": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Operating Modes History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Operating Modes History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationpositions": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Positions History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Positions History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationroles": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Roles History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Roles History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationdefectriskratings": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Defect Risk Ratings History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Defect Risk Ratings History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationdefectstatuses": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Defect Statuses History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Defect Statuses History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationdefecttypes": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Defect Types History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Defect Types History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationfeedbackclassifications": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Feedback Classifications History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Feedback Classifications History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationfeedbackpriorities": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Feedback Priorities History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Feedback Priorities History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/applicationfeedbackstatuses": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns the Feedback Statuses History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Feedback Statuses History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/clientdetails": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns Client Details History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Client Details History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/History/userdetails": {
      "get": {
        "tags": [
          "History"
        ],
        "summary": "Returns User History",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "description": "The User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns User History"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/IntegrationDefinitions": {
      "get": {
        "tags": [
          "IntegrationDefinitions"
        ],
        "summary": "Returns the list of available integration types",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns list of available integrations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IntegrationDefinitionResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/IntegrationInstances": {
      "get": {
        "tags": [
          "IntegrationInstances"
        ],
        "summary": "Returns the Integration Instances for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Page Size (to a Maximum of 100)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "The Sort Field",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The Sort Order (asc for ascending or desc for descending)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Integration Instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IntegrationInstanceResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "IntegrationInstances"
        ],
        "summary": "Creates a new Integration Instance",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Integration Instance details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IntegrationInstanceRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Integration Instance ID",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/IntegrationInstances/count": {
      "get": {
        "tags": [
          "IntegrationInstances"
        ],
        "summary": "Returns the count of Integration Instances",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the count of Integration Instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/IntegrationInstances/{id}": {
      "get": {
        "tags": [
          "IntegrationInstances"
        ],
        "summary": "Returns a specific Integration Instance",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Integration Instance ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Integration Instance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntegrationInstanceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "put": {
        "tags": [
          "IntegrationInstances"
        ],
        "summary": "Updates an existing Integration Instance",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Integration Instance ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Updated Integration Instance details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IntegrationInstanceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated"
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "patch": {
        "tags": [
          "IntegrationInstances"
        ],
        "summary": "Partially updates an Integration Instance",
        "description": "Sample request:\n\n\n[\n    {\n        \"op\": \"replace\",\n        \"path\": \"/name\",\n        \"value\": \"Updated SAP Integration\"\n    },\n    {\n        \"op\": \"replace\",\n        \"path\": \"/settings\",\n        \"value\": {\n            \"DefectStatusID\": 2,\n            \"NotificationRaisedId\": 3,\n            \"DaysAgo\": 15,\n            \"SyncDelayHours\": 6,\n            \"SyncTimeOfDay\": [\"08:00:00\", \"16:00:00\"]\n        }\n    },\n    {\n        \"op\": \"replace\",\n        \"path\": \"/isActive\",\n        \"value\": false\n    }\n]<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Integration Instance ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "JSON Patch Document",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated"
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "IntegrationInstances"
        ],
        "summary": "Deletes an Integration Instance",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Integration Instance ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/IntegrationInstances/{id}/sync": {
      "post": {
        "tags": [
          "IntegrationInstances"
        ],
        "summary": "Manually triggers a sync for a specific integration instance",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Integration Instance ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sync completed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntegrationSyncResponse"
                }
              }
            }
          },
          "400": {
            "description": "Sync failed or integration doesn't support manual sync",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Integration instance not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      }
    },
    "/api/Jobs/{jobId}/status": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Gets the current status of a background job",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique job identifier (GUID)",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the job status",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Job not found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - user not authenticated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/localisation/bundle": {
      "get": {
        "tags": [
          "Localisation"
        ],
        "summary": "The merged translation bundle for the caller's site and the requested\nlocale. Anonymous requests (e.g. the pre-login preload hint) get the\nfile-layer defaults with no tenant overrides.",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json",
              "default": "en"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "304": {
            "description": "Not Modified"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/localisation/keys": {
      "get": {
        "tags": [
          "Localisation"
        ],
        "summary": "Every key the application defines, with its default forms for the requested\nlocale (falling back to English for untranslated keys). en.po is the source\nof truth for which keys exist; feeds the Site Terminology screen's key list\nand per-locale default display. With a siteAppId, the defaults are the values\nthat siteApp inherits: parent-scope overrides (Application, then Client)\nlayered over the shipped forms.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Read</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json",
              "default": "en"
            }
          },
          {
            "name": "siteAppId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Read, Settings Edit, IsClientAdmin"
        ]
      }
    },
    "/api/localisation/missing-keys": {
      "post": {
        "tags": [
          "Localisation"
        ],
        "summary": "Engineering-facing Phase 3 check: given the keys the frontend uses (from\nthe extract-i18n-keys manifest), returns those absent from the locale's\nmerged .po layer. Zero missing for \"en\" is the Phase 3 exit criterion.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Read</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MissingKeysRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Read, Settings Edit, IsClientAdmin"
        ]
      }
    },
    "/api/localisation/overrides": {
      "get": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Read</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Read, Settings Edit, IsClientAdmin"
        ]
      },
      "put": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertOverrideTermRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Edit, IsClientAdmin"
        ]
      },
      "delete": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "key",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Edit, IsClientAdmin"
        ]
      }
    },
    "/api/localisation/applications/{applicationId}/overrides": {
      "get": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "applicationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      },
      "put": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "applicationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertOverrideTermRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      },
      "delete": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "applicationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "key",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/localisation/clients/{clientId}/overrides": {
      "get": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "put": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertOverrideTermRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "delete": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "key",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/localisation/siteapps/{siteAppId}/overrides": {
      "get": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Read</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Read, Settings Edit, IsClientAdmin"
        ]
      },
      "put": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertOverrideTermRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Edit, IsClientAdmin"
        ]
      },
      "delete": {
        "tags": [
          "LocalisationOverrides"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "key",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Edit, IsClientAdmin"
        ]
      }
    },
    "/api/localisation/siteapps/{siteAppId}/overrides/copy": {
      "post": {
        "tags": [
          "LocalisationOverrides"
        ],
        "summary": "Copies every overridden term from one locale to another for a site app.\nMigration helper: sites that historically kept translated text (e.g.\nSpanish) in their captions can replicate the backfilled \"en\" terminology\ninto the real locale (es-MX), keep both, and tidy each independently.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CopyOverridesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Edit, IsClientAdmin"
        ]
      }
    },
    "/api/Lubricants": {
      "get": {
        "tags": [
          "Lubricants"
        ],
        "summary": "Returns the Lubricants",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Lubricants edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Lubricants"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "Lubricants"
        ],
        "summary": "Creates a new Lubricant",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Lubricant Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LubricantPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Lubricant ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Lubricants/{id}": {
      "patch": {
        "tags": [
          "Lubricants"
        ],
        "summary": "Patches an existing Lubricant",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Lubricant ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Lubricant successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LubricantRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "Lubricants"
        ],
        "summary": "Deletes a Lubricant",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Lubricant ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/maintenance-banner": {
      "get": {
        "tags": [
          "MaintenanceBanner"
        ],
        "summary": "The active maintenance banner with the caller's dismissed state, or null when none is showing.\n            The message arrives in the reader's language when a translation is stored.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceBannerResponse"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "MaintenanceBanner"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MaintenanceBannerUpsertRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaintenanceBannerUpsertRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MaintenanceBannerUpsertRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MaintenanceBannerUpsertRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceBannerResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      },
      "delete": {
        "tags": [
          "MaintenanceBanner"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/maintenance-banner/dismiss": {
      "post": {
        "tags": [
          "MaintenanceBanner"
        ],
        "summary": "Dismisses the active banner for the caller.",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/maintenance-banner/current": {
      "get": {
        "tags": [
          "MaintenanceBanner"
        ],
        "summary": "The configured banner for admin editing, regardless of its visible window, or null.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceBannerResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/maintenance-banner/translations": {
      "get": {
        "tags": [
          "MaintenanceBanner"
        ],
        "summary": "The stored translations of the current banner's message for one\nlocale, plus the shipped locale catalogue and per-locale progress for\nthe admin language dropdown. Same shape as the release-notes endpoint.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      },
      "put": {
        "tags": [
          "MaintenanceBanner"
        ],
        "summary": "Upserts the banner-message translation for one locale. An empty value\nremoves it; the source is snapshotted for \"source changed\" detection.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BannerTranslationSaveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/maintenance-banner/translate": {
      "post": {
        "tags": [
          "MaintenanceBanner"
        ],
        "summary": "AI-translates the banner message into a locale and returns the draft\nfor review - nothing is stored until the admin saves.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/Analytics/missingPartsTools": {
      "get": {
        "tags": [
          "MissingPartsToolsReport"
        ],
        "summary": "Returns the Missing Parts and Tools Graph Data\n            \nThe data returned includes a Depth Property that indicates the level of data being returned:\n - R (Missing Parts and Tools by Reason)\n - P (Missing Parts and Tools by Part/Tool)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "missingPartToolId",
            "in": "query",
            "description": "Missing Part or Tool ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Missing Part/Tool Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Missing Part/Tool Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Missing Parts and Tools Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read, Analytics Read"
        ]
      }
    },
    "/api/MissingPartToolReasons": {
      "get": {
        "tags": [
          "MissingPartToolReasons"
        ],
        "summary": "Returns the available Missing Part/Tool Reasons for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Missing Part/Tool Reasons edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Missing Part/Tool Reasons"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "MissingPartToolReasons"
        ],
        "summary": "Creates a new Missing Part/Tool Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Missing Part/Tool Reason Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MissingPartToolReasonPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Missing Part/Tool ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/MissingPartToolReasons/{id}": {
      "patch": {
        "tags": [
          "MissingPartToolReasons"
        ],
        "summary": "Patches a Missing Part/Tool Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Mising Part or Tool Reason ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Missing Part/Tool Reason successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MissingPartToolReasonRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "MissingPartToolReasons"
        ],
        "summary": "Deletes a Missing Part/Tool Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Missing Part/Tool Reason ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ModelAssets": {
      "get": {
        "tags": [
          "ModelAssets"
        ],
        "summary": "Returns the Model Asset Allocations for a Model",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Model Assets edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Assets"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read, Services Read"
        ]
      },
      "post": {
        "tags": [
          "ModelAssets"
        ],
        "summary": "Creates a new Model Asset",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li><li>Assets Full</li></ul>",
        "requestBody": {
          "description": "Model Asset Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelAssetPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Asset ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full, Assets Full"
        ]
      }
    },
    "/api/ModelAssets/available": {
      "get": {
        "tags": [
          "ModelAssets"
        ],
        "summary": "Returns the Active Model Assets for a Model",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li><li>Services Edit</li></ul>",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Assets"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read, Services Edit"
        ]
      }
    },
    "/api/ModelAssets/{id}": {
      "patch": {
        "tags": [
          "ModelAssets"
        ],
        "summary": "Patches a Model Asset",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Asset ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Asset successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelAssetRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelAssets"
        ],
        "summary": "Deletes a Model Asset",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Asset ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelDocuments": {
      "get": {
        "tags": [
          "ModelDocuments"
        ],
        "summary": "Returns the Documents for a Model",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the Model Documents edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Documents"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelDocuments"
        ],
        "summary": "Creates a new Model Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Document Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelDocumentPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Document ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelDocuments/{id}": {
      "delete": {
        "tags": [
          "ModelDocuments"
        ],
        "summary": "Deletes a Model Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Document ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelImportActions/{id}": {
      "patch": {
        "tags": [
          "ModelImportActions"
        ],
        "summary": "Patches a Model Import Action",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Import Action ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Import Action successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelImportActionRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelImportLubricants/{id}": {
      "patch": {
        "tags": [
          "ModelImportLubricants"
        ],
        "summary": "Patches a Model Import Lubricant",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Import Lubricant ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Import Lubricant successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelImportLubricantRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelImportOperatingModes/{id}": {
      "patch": {
        "tags": [
          "ModelImportOperatingModes"
        ],
        "summary": "Patches an Model Import Operating Mode",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Import Operating Mode ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Import Operating Mode successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelImportOperatingModeRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelImportRoles/{id}": {
      "patch": {
        "tags": [
          "ModelImportRoles"
        ],
        "summary": "Patches a Model Import Role",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Import Role ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Import Role successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelImportRoleRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, Models Edit"
        ]
      }
    },
    "/api/ModelImports": {
      "get": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Returns the Model Imports for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the list of Models to be Imported to the Site Application"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelImports/{id}": {
      "get": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Returns a Model that is awaiting Import",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Import ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Details of a Model awaiting import"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "patch": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Patches a Model Import",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Import ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Import successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelImportRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Deletes a Model Import",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Import ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelImports/{id}/definitiontranslations": {
      "get": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Whether the siteApp's definition set-up (actions, lubricants,\noperating modes, systems and roles) is translated into the imported\nmodel's language. A model authored in a language other than the\nsiteApp's primary reads those definitions through their translations,\nand mapping can pick any of them, so the whole set-up must be\ncomplete before the import is started.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model Import ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The model's language and the definitions still missing a translation in it"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelImports/upload": {
      "post": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Prepares a Presigned URL for a EMI 3.0 Model Upload",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "File Type Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelImports/clients": {
      "get": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Returns Clients that User can transfer model to",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the list of Client"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelImports/sites": {
      "get": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Returns Sites that User has access to for a given Client ID",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Sites"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelImports/applications": {
      "get": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Returns Applications that User can transfer a model to for a given Site ID",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "description": "The Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelType",
            "in": "query",
            "description": "Model type \"A\" or \"F\"",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of site"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelImports/prepare": {
      "post": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Prepares an EMI Document for Import into EMI3 (This process will place the model\ninto the Model Import List, which allows the User to tune all of the settings before\ncommitting to the import into their Site Application)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "File Key",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Model Import ID for the uploaded model"
          },
          "400": {
            "description": "Invalid Key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelImports/transfer": {
      "post": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Prepares a Model Version ID to a Different Site Application for Model Import",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "File Key",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelTransferRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Model Import ID for the uploaded model",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelImports/{id}/import": {
      "post": {
        "tags": [
          "ModelImports"
        ],
        "summary": "Imports a tuned model from the Model Import List into their Site Application.  This step\nis completed after a User has completed tuning the model for Import)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Import ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelImportImportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelImportImportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelImportImportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelImportImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Model and Version ID for the imported model"
          },
          "400": {
            "description": "Error during Import",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelImportSystems/{id}": {
      "patch": {
        "tags": [
          "ModelImportSystems"
        ],
        "summary": "Patches a Model Import System",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Import System ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Import System successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelImportSystemRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelIntervalTaskListNos": {
      "get": {
        "tags": [
          "ModelIntervalTaskListNos"
        ],
        "summary": "Returns the Task List Numbers for a Model Interval Group Number",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "intervalGroupId",
            "in": "query",
            "description": "The Interval Group ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Task List Numbers"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelIntervalTaskListNos"
        ],
        "summary": "Creates a new Model Interval Task List Number",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Interval Task List Number Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelIntervalTaskListNoPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Interval Task List Number ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelIntervalTaskListNos/usage": {
      "get": {
        "tags": [
          "ModelIntervalTaskListNos"
        ],
        "summary": "Checks whether a Task List Number is already used elsewhere - another interval in\nthis model, or a different model entirely - so the UI can show a non-blocking\nwarning (EMI3-1511). It does not prevent the value being saved either way.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "The Task List Number text to check",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model the value is being added/edited on",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "excludeIntervalGroupId",
            "in": "query",
            "description": "The Interval Group the value already belongs to, if editing an existing one, so it\nisn't reported as colliding with itself",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the usage matches",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskListNoUsageResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Model not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelIntervalTaskListNos/{id}": {
      "patch": {
        "tags": [
          "ModelIntervalTaskListNos"
        ],
        "summary": "Patches a Model Interval Task List Number",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Interval Task List Number ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Interval Task List Number successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelIntervalTaskListNoRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelIntervalTaskListNos"
        ],
        "summary": "Deletes a Model Interval Task List Number",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Interval Task List Number ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelNotes": {
      "get": {
        "tags": [
          "ModelNotes"
        ],
        "summary": "Returns the Model Notes for a single Model",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Notes"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelNotes"
        ],
        "summary": "Creates a new Model Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Note Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelNotePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Note ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelNotes/{id}/translate": {
      "post": {
        "tags": [
          "ModelNotes"
        ],
        "summary": "Translates one note into the caller's language and stores the result\nso later readers get it without another AI call. Used for notes\nthat predate eager translation.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelNotes/{id}": {
      "patch": {
        "tags": [
          "ModelNotes"
        ],
        "summary": "Updates a Model Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ModelNotePostRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelNotePostRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelNotePostRequest"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      },
      "delete": {
        "tags": [
          "ModelNotes"
        ],
        "summary": "Deletes a Model Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/Models": {
      "get": {
        "tags": [
          "Models"
        ],
        "summary": "Returns the Models for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "Text to be Filtered",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "modelStatusId",
            "in": "query",
            "description": "Model Status ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteDepartmentId",
            "in": "query",
            "description": "Site Department ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Models"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "Models"
        ],
        "summary": "Creates a new Model",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model and Version ID"
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/Models/search": {
      "post": {
        "tags": [
          "Models"
        ],
        "summary": "Returns the Models for a Site Application with advanced filtering, sorting, and pagination",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "requestBody": {
          "description": "Search request containing filters, sorting options, and pagination parameters",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelSearchPostRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelSearchPostRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelSearchPostRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Models"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/Models/count": {
      "post": {
        "tags": [
          "Models"
        ],
        "summary": "Returns the Count of Models for a Site Application with advanced filtering",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "requestBody": {
          "description": "Search request containing filters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the count of Site Application Models",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/Models/deleted": {
      "get": {
        "tags": [
          "Models"
        ],
        "summary": "Returns the Deleted Models for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Models"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/Models/{id}/restore": {
      "post": {
        "tags": [
          "Models"
        ],
        "summary": "Restore a Site Application Model.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Restored"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/Models/published": {
      "get": {
        "tags": [
          "Models"
        ],
        "summary": "Returns the Published Models for a Site Application (Published Models may be used when registering and undertaking Services)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li><li>Services Full</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "isMobile",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Published Site Application Models"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read, Services Full, Analytics Read"
        ]
      }
    },
    "/api/Models/{id}/versions": {
      "get": {
        "tags": [
          "Models"
        ],
        "summary": "Returns the Versions for a Site Application Model",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Versions"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/Models/{id}/publishedVersions": {
      "get": {
        "tags": [
          "Models"
        ],
        "summary": "Returns the Published Versions for a Site Application Model",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Published Model Versions"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/Models/{id}": {
      "patch": {
        "tags": [
          "Models"
        ],
        "summary": "Patches a Model",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model successfully updated"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "Models"
        ],
        "summary": "Deletes a Site Application Model.",
        "description": "Models can not be deleted if they have been published.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/Models/duplicate": {
      "post": {
        "tags": [
          "Models"
        ],
        "summary": "Copies an existing Model Version into a new Model.  \nThis currently allows for Duplications within a Site Application only.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelDuplicateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model ID"
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/Models/duplicateAndTranslate": {
      "post": {
        "tags": [
          "Models"
        ],
        "summary": "Creates a ModelImport row that mirrors the source ModelVersion and lands the\ncaller on the existing Model Map review page. The user picks the target\nlanguage on the review page and clicks Complete; the existing\nPOST /api/ModelImports/{id}/import flow then materialises the new ModelVersion\nand enqueues the translation job. Name/Model/Type/SerialNumberRange are\ninherited from the source ModelVersion and may be edited on the review page.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Source ModelID and ModelVersionID to duplicate",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelDuplicateAndTranslateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the new Model Import ID"
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/Models/{id}/uploadDocument": {
      "post": {
        "tags": [
          "Models"
        ],
        "summary": "Prepares a Presigned URL for a Model Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "File Type Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/Models/autocomplete/{search}": {
      "get": {
        "tags": [
          "Models"
        ],
        "summary": "Returns Autocomplete Suggestions for a Model Search",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "path",
            "description": "The Search Criteria",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Chips"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/Models/autocomplete": {
      "get": {
        "tags": [
          "Models"
        ],
        "summary": "Returns Autocomplete Suggestions for a Model Search, with the search term taken from the query string",
        "description": "Kept as a separate action (rather than a second [HttpGet] template on Autocomplete) because\n[ApiController] infers a parameter's binding source once per action across all its route\ntemplates: with both templates on one action, \"search\" gets bound as [FromRoute] for both,\nso this route would never see the query string.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Chips"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelStatuses": {
      "get": {
        "tags": [
          "ModelStatuses"
        ],
        "summary": "Returns the Model Statuses for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Model Statuses"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "ModelStatuses"
        ],
        "summary": "Creates a new Model Status",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Model Status Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelStatusPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Model Status ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ModelStatuses/{id}": {
      "patch": {
        "tags": [
          "ModelStatuses"
        ],
        "summary": "Patches a Site Application Model Status",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Model Status ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Model Status successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelStatusRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelStatuses"
        ],
        "summary": "Deletes a Model Status",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Model Status ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ModelTaskNotes": {
      "get": {
        "tags": [
          "ModelTaskNotes"
        ],
        "summary": "Returns the Notes for a Model Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "description": "Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "taskGroupId",
            "in": "query",
            "description": "Task Group ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Task Notes"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelTaskNotes"
        ],
        "summary": "Attaches a note to a Model Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Task Note Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelTaskNotePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Task Note ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelTaskNotes/{id}/translate": {
      "post": {
        "tags": [
          "ModelTaskNotes"
        ],
        "summary": "Translates one note into the caller's language and stores the result\nso later readers get it without another AI call. Used for notes\nthat predate eager translation.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelTaskNotes/{id}": {
      "patch": {
        "tags": [
          "ModelTaskNotes"
        ],
        "summary": "Updates an existing Model Task Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Task Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ModelTaskNotePutRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelTaskNotePutRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelTaskNotePutRequest"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      },
      "delete": {
        "tags": [
          "ModelTaskNotes"
        ],
        "summary": "Deletes a Model Task Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Task Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelTypes": {
      "get": {
        "tags": [
          "ModelTypes"
        ],
        "summary": "Returns the Model Types for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Model Types"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "ModelTypes"
        ],
        "summary": "Creates a new Model Type",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Model Type Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelTypePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Type's ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ModelTypes/{id}": {
      "patch": {
        "tags": [
          "ModelTypes"
        ],
        "summary": "Patches a Site Application Model Type",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Application Model Type ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Application successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelTypeRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelTypes"
        ],
        "summary": "Deletes a Site Application Model Type",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Model Type ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ModelVersionArrangements": {
      "get": {
        "tags": [
          "ModelVersionArrangements"
        ],
        "summary": "Returns the Arrangements for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li><li>Services Full</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "description": "Return names in the user's language (end-user pickers); model authoring keeps the source names",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Arrangements"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read, Services Full"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionArrangements"
        ],
        "summary": "Creates a new Model Version Arrangement",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Version Arrangement Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionArrangementPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Arrangement ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionArrangements/available": {
      "get": {
        "tags": [
          "ModelVersionArrangements"
        ],
        "summary": "Returns list of Arrangements for current active ModelVersion",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li><li>Services Full</li></ul>",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model  ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Arrangements"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read, Services Full"
        ]
      }
    },
    "/api/ModelVersionArrangements/{id}": {
      "get": {
        "tags": [
          "ModelVersionArrangements"
        ],
        "summary": "Returns the details of an Arrangement",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model Version Arrangement ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Version Arrangement"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "patch": {
        "tags": [
          "ModelVersionArrangements"
        ],
        "summary": "Patches an existing Model Version Arrangement",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Arrangement ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Arrangement successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionArrangementRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionArrangements"
        ],
        "summary": "Deletes a Model Version Arrangement",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Arrangement ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionDepartments/available": {
      "get": {
        "tags": [
          "ModelVersionDepartments"
        ],
        "summary": "Returns the available Departments for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Full</li><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Departments that are available to the Model"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Full, Defects Read"
        ]
      }
    },
    "/api/ModelVersionDepartments/servicedepartment/{modelVersionRoleId}/{modelVersionId}": {
      "get": {
        "tags": [
          "ModelVersionDepartments"
        ],
        "summary": "Returns the Deparments that avaliable",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionRoleId",
            "in": "path",
            "description": "The Model Version Role ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionId",
            "in": "path",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Departments"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionDepartments": {
      "get": {
        "tags": [
          "ModelVersionDepartments"
        ],
        "summary": "Returns all Departments and their availability for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li><li>Services Edit</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Departments that are allocated to the Model Version"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read, Services Edit"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionDepartments"
        ],
        "summary": "Allocates a Department to a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Department Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionDepartmentPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Department ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionDepartments/{id}": {
      "delete": {
        "tags": [
          "ModelVersionDepartments"
        ],
        "summary": "Detaches a Department from a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Department ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionIntervalIncludes": {
      "get": {
        "tags": [
          "ModelVersionIntervalIncludes"
        ],
        "summary": "Returns the Included Intervals for a Model Version Interval",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionIntervalId",
            "in": "query",
            "description": "The Model Version Interval ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Intervals that are included during selection of the Model Version Interval"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionIntervalIncludes"
        ],
        "summary": "Allocates a Model Role to a Model Version Interval",
        "description": "This is used for the Auto-Include Intervals feature when setting the Intervals for a Task.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Version Interval Include Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionIntervalIncludePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Interval Include ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionIntervalIncludes/{id}": {
      "delete": {
        "tags": [
          "ModelVersionIntervalIncludes"
        ],
        "summary": "Deallocates an Interval Inclusion from a Model Version Interval",
        "description": "This is used for the Auto-Include Intervals feature when setting the Intervals for a Task.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Interval Include ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionIntervals": {
      "get": {
        "tags": [
          "ModelVersionIntervals"
        ],
        "summary": "Returns the Intervals for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "description": "Return interval names in the caller's language (end-user pickers); model authoring reads the source",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Intervals"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionIntervals"
        ],
        "summary": "Creates a new Interval for the Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Version Interval Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionIntervalPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Interval ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionIntervals/{id}": {
      "get": {
        "tags": [
          "ModelVersionIntervals"
        ],
        "summary": "Returns the details of a single Interval",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model Version Interval ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Model Version Interval"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "patch": {
        "tags": [
          "ModelVersionIntervals"
        ],
        "summary": "Patches a Model Version Interval",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Interval ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Interval successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionIntervalRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionIntervals"
        ],
        "summary": "Deletes a Model Version Interval",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Interval ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionIntervals/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionIntervals"
        ],
        "summary": "Repositions a ModelVersionInterval above or below another interval.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionInterval ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionQuestionOptions": {
      "get": {
        "tags": [
          "ModelVersionQuestionOptions"
        ],
        "summary": "Returns the Options for a Model Version Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionQuestionId",
            "in": "query",
            "description": "The Model Version Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Options that are allocated to the Model Version Question"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionQuestionOptions"
        ],
        "summary": "Adds an Option to a Model Version Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Version Question Option Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionQuestionOptionPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Question Option ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionQuestionOptions/{id}": {
      "patch": {
        "tags": [
          "ModelVersionQuestionOptions"
        ],
        "summary": "Patches a Model Version Question Option",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Question Option ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Question Option successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionQuestionOptionRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionQuestionOptions"
        ],
        "summary": "Deletes an Option from a Model Version Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Question Option ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionQuestionRoles": {
      "post": {
        "tags": [
          "ModelVersionQuestionRoles"
        ],
        "summary": "Allocates a Model Role to a Model Version Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Version Question Role Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionQuestionRolePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Question Role ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionQuestionRoles/{id}": {
      "delete": {
        "tags": [
          "ModelVersionQuestionRoles"
        ],
        "summary": "Deallocates a Role from a Model Version Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Question Role ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionQuestions": {
      "get": {
        "tags": [
          "ModelVersionQuestions"
        ],
        "summary": "Returns the Questions for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The Search Filter (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Questions"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionQuestions"
        ],
        "summary": "Creates a new Model Version Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Version Question Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionQuestionPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionQuestions/{id}/Duplicate": {
      "post": {
        "tags": [
          "ModelVersionQuestions"
        ],
        "summary": "Duplicates a Model Version Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Returns the created Model Version Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionQuestions/{id}": {
      "patch": {
        "tags": [
          "ModelVersionQuestions"
        ],
        "summary": "Patches a Model Version Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Question successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionQuestionRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionQuestions"
        ],
        "summary": "Deletes an existing Model Version Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionQuestions/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionQuestions"
        ],
        "summary": "Repositions a ModelVersionQuestion above or below another question.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionQuestion ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionRoles": {
      "get": {
        "tags": [
          "ModelVersionRoles"
        ],
        "summary": "Returns the Roles for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li><li>Services Edit</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Roles"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read, Services Edit"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionRoles"
        ],
        "summary": "Creates a new Model Version Role",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Version Role Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionRolePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Role ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionRoles/byinterval/{modelVersionIntervalId}": {
      "get": {
        "tags": [
          "ModelVersionRoles"
        ],
        "summary": "Returns the Roles that have tasks for a Model Version Interval",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionIntervalId",
            "in": "path",
            "description": "The Model Version Interval ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "isMobile",
            "in": "query",
            "description": "Whether the request is coming from the Mobile Application",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Roles"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/ModelVersionRoles/{id}": {
      "patch": {
        "tags": [
          "ModelVersionRoles"
        ],
        "summary": "Patches a Model Version Role",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Role ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Role successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionRoleRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionRoles"
        ],
        "summary": "Deletes a Model Version Role",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Role ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersions/{modelVersionId}/translationsummary": {
      "get": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Per-language translation summary for a model version: how many of\nits translatable strings exist, how many are translated per enabled\nsite language, and how many are out of date (source changed since\ntranslation - split into AI rows, which self-refresh, and\nhuman-edited rows awaiting review).",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersions/{modelVersionId}/translationlanguages": {
      "post": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Adds a language to a model version's translation work. The model\ndetail Languages section lists only added languages; translation\nitself runs separately.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelTranslationLanguageRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersions/{modelVersionId}/translationlanguages/{locale}/retry": {
      "post": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Re-runs the background translation for a language whose previous\nrun failed. The set-up gate is checked again, so a retry after\nfixing the definitions reports what is still missing.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersions/{modelVersionId}/translationlanguages/{locale}/translatemissing": {
      "post": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Synchronously translates the MISSING strings of the requested\ncontent types for one of the model's added languages - the current\ntab's scope, run inline so the screen can show its result\nimmediately. Stale and human-edited rows are left untouched.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TranslateMissingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersions/{modelVersionId}": {
      "get": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Returns a single Model Version's Details",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "path",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the details of a Model Version"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersions": {
      "post": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Creates a new Model Version from an Existing Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Version Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionPublishRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersions/{id}/PasteTask": {
      "post": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Pastes a Task (By Task ID) to a Model Version.  The Task will be appended to\nthe end of the Task List.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Source Model Version Task ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionPasteTaskRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersions/{id}/PasteQuestion": {
      "post": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Pastes a Question to a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Source Model Version Question ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionPasteQuestionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersions/{id}/ServiceLayout": {
      "get": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Returns the Service Layout for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ModelVersionRoleID",
            "in": "query",
            "description": "Role ID Filter",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ModelVersionIntervalID",
            "in": "query",
            "description": "Interval ID Filter",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ModelVersionArrangementID",
            "in": "query",
            "description": "Arrangement ID Filter",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "description": "Return the names in the user's language when translated",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Service Layout"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersions/{id}": {
      "patch": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Patches a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersions/{id}/revert": {
      "post": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Reverts a previously published Model Version as the Active Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Model Version successfully updated"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersions/{id}/uploadImage": {
      "post": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Uploads an Image to be used for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "description": "File to Upload",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersion"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersions/{id}/remapWorkbookFields": {
      "post": {
        "tags": [
          "ModelVersions"
        ],
        "summary": "Super-admin data fix: moves content between the workbook fields of every task on a\nModel Version, for workbook content captured under the wrong fields. The mapping is\ntarget field -> source field and must be a permutation over the fields it mentions,\nso content is never lost or duplicated. Custom caption settings are not touched.\nRuns as a dry-run preview unless dryRun is explicitly false.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The target-to-source field mapping and dry-run flag",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkbookFieldRemapRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkbookFieldRemapRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkbookFieldRemapRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkbookFieldRemapRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Summary of the remap (a preview when dry-run)"
          },
          "400": {
            "description": "Invalid mapping",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/ModelVersionStages": {
      "get": {
        "tags": [
          "ModelVersionStages"
        ],
        "summary": "Returns the Stages for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "description": "Return names in the user's language (end-user pickers); model authoring keeps the source names",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Stages"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionStages"
        ],
        "summary": "Creates a new Model Version Stage",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Version Stage Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionStagePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Stage ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionStages/{id}": {
      "patch": {
        "tags": [
          "ModelVersionStages"
        ],
        "summary": "Patches a Model Version Stage",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Stage ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Stage successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionStageRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionStages"
        ],
        "summary": "Deletes a Model Version Stage",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Stage ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionStages/{id}/uploadImage": {
      "post": {
        "tags": [
          "ModelVersionStages"
        ],
        "summary": "Uploads an Image to be used for a Model Version Stage",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Stage ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "description": "File to Upload",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload"
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionStages/{id}/uploadImage/{locale}": {
      "post": {
        "tags": [
          "ModelVersionStages"
        ],
        "summary": "Uploads the image readers of locale see in place\nof the stage's own image. Stored in the translation overlay as a\nmanual replacement; the original image is untouched.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Stage ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "description": "One of the model's translation languages",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "description": "File to Upload",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionStages/{id}/image/{locale}": {
      "delete": {
        "tags": [
          "ModelVersionStages"
        ],
        "summary": "Removes the stage's locale image; readers fall\nback to the stage's own image.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Stage ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "description": "The language whose image is removed",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionStages/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionStages"
        ],
        "summary": "Repositions a ModelVersionStage above or below another stage.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionStage ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskArrangements": {
      "get": {
        "tags": [
          "ModelVersionTaskArrangements"
        ],
        "summary": "Returns the Options for a Model Version Task Arrangement",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Arrangements that are allocated to the Model Version Task"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskArrangements"
        ],
        "summary": "Allocates an Arrangement to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Arrangement Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskArrangementPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Arrangement ID"
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskArrangements/{id}": {
      "delete": {
        "tags": [
          "ModelVersionTaskArrangements"
        ],
        "summary": "Deletes a Model Version Task Arrangement",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Arrangement ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskDocuments": {
      "get": {
        "tags": [
          "ModelVersionTaskDocuments"
        ],
        "summary": "Returns the Documents for a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Task Documents"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskDocuments"
        ],
        "summary": "Creates a new Model Version Task Documents",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Document Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskDocumentPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Document ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskDocuments/summary/intervalrole": {
      "get": {
        "tags": [
          "ModelVersionTaskDocuments"
        ],
        "summary": "Returns the Task Document attachments of a Model's published version\ngrouped by Interval and Role combination, with each combination's\ntotal size and the files that make it up. A service is performed for\na single Interval and Role, so each total is what a device downloads\nfor that service, and the largest of them is measured against the cap.\nCombinations without any attachments are omitted. Scoped to the\npublished version when the Model has one (EMI3-1491); otherwise falls\nback to the Dev version so a Model still in Development - with\nnothing published yet - still shows what it would download once it\nis (EMI3-1491 hotfix).",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Interval/Role attachment usage",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionAttachmentIntervalRoleUsageResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Model not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTaskDocuments/{id}": {
      "patch": {
        "tags": [
          "ModelVersionTaskDocuments"
        ],
        "summary": "Patches a Model Version Task Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Document ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Task Document successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskDocumentRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionTaskDocuments"
        ],
        "summary": "Deletes a Model Version Task Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Document ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskDocuments/upload": {
      "post": {
        "tags": [
          "ModelVersionTaskDocuments"
        ],
        "summary": "Prepares a Presigned URL for a Model Version Task Document",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "File Type Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameModelVersionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskDocuments/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionTaskDocuments"
        ],
        "summary": "Repositions a ModelVersionTaskDocument above or below another document.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionTaskDocument ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskImages": {
      "get": {
        "tags": [
          "ModelVersionTaskImages"
        ],
        "summary": "Returns the Images for a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Task Images"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTaskImages/{id}": {
      "patch": {
        "tags": [
          "ModelVersionTaskImages"
        ],
        "summary": "Patches a Model Version Task Image",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Image ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Task Image successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskImageRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionTaskImages"
        ],
        "summary": "Deletes a Model Version Task Image",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Image ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskImages/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionTaskImages"
        ],
        "summary": "Repositions a ModelVersionTaskImage above or below another image.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionTaskImage ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskIntervals": {
      "get": {
        "tags": [
          "ModelVersionTaskIntervals"
        ],
        "summary": "Returns the Intervals for a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Intervals that are allocated to the Model Version Task"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskIntervals"
        ],
        "summary": "Allocates a Interval to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Interval Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIntervalPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Interval ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskIntervals/{id}": {
      "delete": {
        "tags": [
          "ModelVersionTaskIntervals"
        ],
        "summary": "Deletes an Option from a Model Version Task Interval",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Interval ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskParts": {
      "get": {
        "tags": [
          "ModelVersionTaskParts"
        ],
        "summary": "Returns the Parts for a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Task Parts"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskParts"
        ],
        "summary": "Creates a new Model Version Task Part",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Part Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPartPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Part ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskParts/{id}": {
      "patch": {
        "tags": [
          "ModelVersionTaskParts"
        ],
        "summary": "Patches a Model Version Task Part",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Part ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Task Part successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskPartRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionTaskParts"
        ],
        "summary": "Deletes a Model Version Task Part",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Part ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskParts/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionTaskParts"
        ],
        "summary": "Repositions a ModelVersionTaskPart above or below another part.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionTaskPart ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskPermits": {
      "get": {
        "tags": [
          "ModelVersionTaskPermits"
        ],
        "summary": "Returns the Permits for a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Task Permits"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskPermits"
        ],
        "summary": "Creates a new Model Version Task Permit",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Permit Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPermitPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Permit ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskPermits/{id}": {
      "patch": {
        "tags": [
          "ModelVersionTaskPermits"
        ],
        "summary": "Patches a Model Version Task Permit",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Permit ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Task Permit successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskPermitRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionTaskPermits"
        ],
        "summary": "Deletes a Model Version Task Permit",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Permit ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskPermits/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionTaskPermits"
        ],
        "summary": "Repositions a ModelVersionTaskPermit above or below another permit.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionTaskPermit ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskQuestionOptions": {
      "get": {
        "tags": [
          "ModelVersionTaskQuestionOptions"
        ],
        "summary": "Returns the Options for a Model Version Task Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskQuestionId",
            "in": "query",
            "description": "The Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Options that are allocated to the Model Version Task Question"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskQuestionOptions"
        ],
        "summary": "Adds an Option to a Model Version Task Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Question Option Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskQuestionOptionPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Question Option ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskQuestionOptions/{id}": {
      "patch": {
        "tags": [
          "ModelVersionTaskQuestionOptions"
        ],
        "summary": "Patches a Model Version Task Question Option",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question Option ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Task Question Option successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskQuestionOptionRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionTaskQuestionOptions"
        ],
        "summary": "Deletes an Option from a Model Version Task Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question Option ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskQuestionOptions/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionTaskQuestionOptions"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskQuestions": {
      "get": {
        "tags": [
          "ModelVersionTaskQuestions"
        ],
        "summary": "Returns the Questions for a single Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Task Questions"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskQuestions"
        ],
        "summary": "Creates a new Model Version Task Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Question Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskQuestionPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskQuestions/{id}/Duplicate": {
      "post": {
        "tags": [
          "ModelVersionTaskQuestions"
        ],
        "summary": "Duplicates an Existing Task Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskQuestions/{id}": {
      "patch": {
        "tags": [
          "ModelVersionTaskQuestions"
        ],
        "summary": "Patches a Model Version Task Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Task Question successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskQuestionRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionTaskQuestions"
        ],
        "summary": "Deletes a Model Version Task Question",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskQuestions/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionTaskQuestions"
        ],
        "summary": "Repositions a ModelVersionTaskQuestion above or below another question.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionTaskQuestion ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskRoles": {
      "get": {
        "tags": [
          "ModelVersionTaskRoles"
        ],
        "summary": "Returns the Options for a Model Version Task Role",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Roles that are allocated to the Model Version Task"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskRoles"
        ],
        "summary": "Allocates a Role to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Role Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskRolePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Role ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskRoles/{id}": {
      "delete": {
        "tags": [
          "ModelVersionTaskRoles"
        ],
        "summary": "Deletes a Model Version Task Role",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Role ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks": {
      "get": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Returns the Tasks for a Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the page to load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Tasks"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Creates a new Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/paged": {
      "get": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Returns a filtered and sorted page of tasks for a Model Version.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "ModelVersionId",
            "in": "query",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "TextSearches",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "json"
              }
            }
          },
          {
            "name": "SortField",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "SortOrder",
            "in": "query",
            "schema": {
              "pattern": "^(asc|desc)$",
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "AnchorTaskId",
            "in": "query",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "RoleIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "IntervalIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "ZoneIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "StageIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "ArrangementIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskPagedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}": {
      "get": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Returns a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Tasks"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "patch": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Patches a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Task successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Deletes a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/Count": {
      "get": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Returns the Count of Tasks for a single Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the count of Model Version Tasks",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/autocomplete/{search}": {
      "get": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Returns autocomplete suggestions for task filter chips, scoped to a specific Model Version.\nSuggestions cover roles, intervals, zones, stages, and arrangements that exist in the version\nand whose names start with the search term.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID to scope suggestions to",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "path",
            "description": "Search text (minimum 3 characters)",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of chips",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/autocomplete": {
      "get": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Returns Autocomplete Suggestions for a Model Version Task Search, with the search term taken from the query string",
        "description": "Kept as a separate action (rather than a second [HttpGet] template on Autocomplete) because\n[ApiController] infers a parameter's binding source once per action across all its route\ntemplates: with both templates on one action, \"search\" gets bound as [FromRoute] for both,\nso this route would never see the query string.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID to scope suggestions to",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search text (minimum 3 characters)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of chips",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/search": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Returns a filtered list of Model Version Tasks, applying chip filters server-side\nagainst the full model version so results are not limited to rows already loaded on the client.\nNo paging is applied - all matching tasks are returned.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "requestBody": {
          "description": "Search and filter criteria",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the filtered list of Model Version Tasks"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Model Version not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/search/count": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Returns the count of Model Version Tasks matching the given filters. Used by the client\nso that \"select all\" with chips applied reflects the full filtered set, not just loaded rows.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "requestBody": {
          "description": "Search and filter criteria",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the count",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Model Version not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/duplicate": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Creates a new Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task ID",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/PasteQuestion": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Pastes an Existing Task Question to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Source Model Version Task Question ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPasteQuestionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/PasteQuestions": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Pastes a collection of Questions based from an Existing Task Question to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Source Model Version Task Question ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPasteQuestionsRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Question ID"
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/PastePart": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Pastes a Task Part to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Source Model Version Task Question ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPastePartRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/PasteTool": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Pastes a Task Tool to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Source Model Version Task Question ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPasteToolRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/PastePermit": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Pastes a Task Permit to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Source Model Version Task Question ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPastePermitRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/PasteImage": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Pastes a Task Image to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Source Model Version Task Question ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPasteImageRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/PasteDocument": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Pastes a Task Document to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Source Model Version Task Question ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPasteDocumentRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Question ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/uploadImage": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Uploads an Image to be used for a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "file"
                ],
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  },
                  "Description": {
                    "maxLength": 255,
                    "minLength": 0,
                    "type": "string",
                    "format": "json"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                },
                "Description": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskImage"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-duplicate": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Duplicates several Model Version Tasks in one request.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "The Model Version and the Task IDs to duplicate",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns how many Tasks were created and which IDs were skipped",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskBulkDuplicateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Malformed, empty, over the limit, or the Model Version is Published",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "The Model Version does not exist or is not visible to the caller",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-paste-questions": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Copies every Question from one Task onto several Tasks in one request.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkPasteQuestionsRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkPasteQuestionsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkPasteQuestionsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkPasteQuestionsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskBulkPasteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-paste-question": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Copies a single Question onto several Tasks in one request.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkPasteQuestionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkPasteQuestionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkPasteQuestionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkPasteQuestionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskBulkPasteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-delete": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Deletes several Model Version Tasks in one request.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "The Model Version and the Task IDs to delete",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns how many Tasks were deleted and which IDs were skipped",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskBulkDeleteResponse"
                }
              }
            }
          },
          "400": {
            "description": "The request was malformed, empty, or exceeded the per-request limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "The Model Version does not exist or is not visible to the caller",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-assign-roles": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Links/unlinks Roles across several Tasks.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskBulkAssignResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-assign-zones": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Links/unlinks Zones across several Tasks.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskBulkAssignResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-assign-stages": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Links/unlinks Stages across several Tasks.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskBulkAssignResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-assign-intervals": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Links/unlinks Intervals across several Tasks.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskBulkAssignResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-assign-arrangements": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Links/unlinks Arrangements across several Tasks.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskBulkAssignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskBulkAssignResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-assign-roles/summary": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Current Roles across a set of Tasks.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskRelationSummaryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-assign-zones/summary": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Current Zones across a set of Tasks.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskRelationSummaryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-assign-stages/summary": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Current Stages across a set of Tasks.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskRelationSummaryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-assign-intervals/summary": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Current Intervals across a set of Tasks.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskRelationSummaryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/bulk-assign-arrangements/summary": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Current Arrangements across a set of Tasks.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskIDsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskRelationSummaryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/downloadTaskImportTemplate": {
      "get": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Provides a sample Task CSV Template file for use with the import feature.",
        "responses": {
          "200": {
            "description": "Sample CSV Document",
            "content": {
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/File"
                }
              }
            }
          },
          "400": {
            "description": "Error generating the document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/ModelVersionTasks/upload": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Prepares a Presigned URL for a Task List to be uploaded.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Filename",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/import": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Import a List of Tasks from a file that was uploaded",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Document Key",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TasksImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully Imported"
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/parts/downloadImportTemplate": {
      "get": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Provides a sample Parts CSV Template file for use with the parts import feature.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sample CSV Document",
            "content": {
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/File"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/parts/upload": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Prepares a Presigned URL for a Task Parts list to be uploaded.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Filename",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTasks/{id}/parts/import": {
      "post": {
        "tags": [
          "ModelVersionTasks"
        ],
        "summary": "Import a list of Task Parts from a file that was uploaded.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Document Key and import options",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskPartsImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully Imported"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartRowResult"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskStages": {
      "get": {
        "tags": [
          "ModelVersionTaskStages"
        ],
        "summary": "Returns the Stages for a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Stages that are allocated to the Model Version Task"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskStages"
        ],
        "summary": "Allocates a Stage to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Stage Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskStagePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Stage ID"
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskStages/{id}": {
      "patch": {
        "tags": [
          "ModelVersionTaskStages"
        ],
        "summary": "Patches a Model Version Task Stage",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Stage ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Task Stage successfully updated"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionTaskStages"
        ],
        "summary": "Deletes a Stage from a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Stage ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskStages/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionTaskStages"
        ],
        "summary": "Repositions a ModelVersionTaskStage above or below another stage.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionTaskStage ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskTools": {
      "get": {
        "tags": [
          "ModelVersionTaskTools"
        ],
        "summary": "Returns the Tools for a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Task Tools"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskTools"
        ],
        "summary": "Creates a new Model Version Task Tool",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Tool Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskToolPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Tool ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskTools/{id}": {
      "patch": {
        "tags": [
          "ModelVersionTaskTools"
        ],
        "summary": "Patches a Model Version Task Tool",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Tool ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Task Tool successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionTaskToolRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionTaskTools"
        ],
        "summary": "Deletes a Model Version Task Tool",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Tool ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskTools/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionTaskTools"
        ],
        "summary": "Repositions a ModelVersionTaskTool above or below another tool.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionTaskTool ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskZones": {
      "get": {
        "tags": [
          "ModelVersionTaskZones"
        ],
        "summary": "Returns the Zones for a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionTaskId",
            "in": "query",
            "description": "The Model Version Task ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Zones that are allocated to the Model Version Task"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionTaskZones"
        ],
        "summary": "Allocates a Zone to a Model Version Task",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "requestBody": {
          "description": "Model Version Task Zone Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionTaskZonePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Task Zone ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskZones/{id}": {
      "patch": {
        "tags": [
          "ModelVersionTaskZones"
        ],
        "summary": "Patches a Model Version Task Zone",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Zone ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Task Zone successfully updated"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionTaskZones"
        ],
        "summary": "Deletes a Model Version Task Zone",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Task Zone ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionTaskZones/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionTaskZones"
        ],
        "summary": "Repositions a ModelVersionTaskZone above or below another zone.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionTaskZone ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/ModelVersionZones": {
      "get": {
        "tags": [
          "ModelVersionZones"
        ],
        "summary": "Returns the Zones for a single Model Version",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "modelVersionId",
            "in": "query",
            "description": "The Model Version ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "description": "Return names in the user's language (end-user pickers); model authoring keeps the source names",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Model Version Zones"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Read"
        ]
      },
      "post": {
        "tags": [
          "ModelVersionZones"
        ],
        "summary": "Creates a new Model Version Zone",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "requestBody": {
          "description": "Model Version Zone Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelVersionZonePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Model Version Zone ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionZones/{id}": {
      "patch": {
        "tags": [
          "ModelVersionZones"
        ],
        "summary": "Patches a Model Version Zone",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Zone ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Model Version Zone successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionZoneRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      },
      "delete": {
        "tags": [
          "ModelVersionZones"
        ],
        "summary": "Deletes a Model Version Zone",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Zone ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionZones/{id}/uploadImage": {
      "post": {
        "tags": [
          "ModelVersionZones"
        ],
        "summary": "Uploads an Image to be used for a Model Version Zone",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Zone ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "description": "File to Upload",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelVersionZone"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionZones/{id}/uploadImage/{locale}": {
      "post": {
        "tags": [
          "ModelVersionZones"
        ],
        "summary": "Uploads the image readers of locale see in place\nof the zone's own image. Stored in the translation overlay as a\nmanual replacement; the original image is untouched.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Zone ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "description": "One of the model's translation languages",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "description": "File to Upload",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionZones/{id}/image/{locale}": {
      "delete": {
        "tags": [
          "ModelVersionZones"
        ],
        "summary": "Removes the zone's locale image; readers fall\nback to the zone's own image.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Model Version Zone ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locale",
            "in": "path",
            "description": "The language whose image is removed",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Models Full"
        ]
      }
    },
    "/api/ModelVersionZones/{id}/reposition": {
      "post": {
        "tags": [
          "ModelVersionZones"
        ],
        "summary": "Repositions a ModelVersionZone above or below another zone.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Models Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The source ModelVersionZone ID to move",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reposition request (destination and direction)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepositionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reposition successful"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "x-required-policies": [
          "Models Edit"
        ]
      }
    },
    "/api/NoticeboardDepartments": {
      "get": {
        "tags": [
          "NoticeboardDepartments"
        ],
        "summary": "Returns the Departments for a Noticeboard",
        "description": "In the Mobile Application, only Users of that Department can see the Noticeboard Items if the Department is selected.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Noticeboards Read</li></ul>",
        "parameters": [
          {
            "name": "noticeboardId",
            "in": "query",
            "description": "The Noticeboard ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Departments that are allocated to the Noticeboard"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Noticeboards Read"
        ]
      },
      "post": {
        "tags": [
          "NoticeboardDepartments"
        ],
        "summary": "Allocates a Department to a Noticeboard",
        "description": "In the Mobile Application, only Users of that Department can see the Noticeboard Items if the Department is selected.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Noticeboards Full</li></ul>",
        "requestBody": {
          "description": "Noticeboard Department Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoticeboardDepartmentPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Noticeboard Department ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Noticeboards Full"
        ]
      }
    },
    "/api/NoticeboardDepartments/{id}": {
      "delete": {
        "tags": [
          "NoticeboardDepartments"
        ],
        "summary": "Detaches a Department from a Noticeboard",
        "description": "In the Mobile Application, only Users of that Department can see the Noticeboard Items if the Department is selected.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Noticeboards Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Noticeboard Department ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Noticeboards Full"
        ]
      }
    },
    "/api/Noticeboards": {
      "get": {
        "tags": [
          "Noticeboards"
        ],
        "summary": "Returns the Noticeboards for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Noticeboards Read</li></ul>",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Page Size (to a Maximum of 100)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search Filter",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "The Sort Field",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The Sort Order (asc for ascending or desc for descending)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Noticeboards"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Noticeboards Read"
        ]
      },
      "post": {
        "tags": [
          "Noticeboards"
        ],
        "summary": "Creates a new Noticeboard",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Noticeboards Full</li></ul>",
        "requestBody": {
          "description": "Noticeboard Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoticeboardPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Noticeboard ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Noticeboards Full"
        ]
      }
    },
    "/api/Noticeboards/myNoticeboards": {
      "get": {
        "tags": [
          "Noticeboards"
        ],
        "summary": "Returns the Noticeboards relevant to the User's JWT Token",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Noticeboards Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the list of Noticeboards"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Noticeboards Read"
        ]
      }
    },
    "/api/Noticeboards/count": {
      "get": {
        "tags": [
          "Noticeboards"
        ],
        "summary": "Returns the count of Noticeboards for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Noticeboards Read</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "Search Filter",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the count of Noticeboards",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Noticeboards Read"
        ]
      }
    },
    "/api/Noticeboards/upload": {
      "post": {
        "tags": [
          "Noticeboards"
        ],
        "summary": "Prepares a Presigned URL for a Binary Document for a Noticeboard Upload",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Noticeboards Full</li></ul>",
        "requestBody": {
          "description": "File Type Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Noticeboards Full"
        ]
      }
    },
    "/api/Noticeboards/{id}": {
      "patch": {
        "tags": [
          "Noticeboards"
        ],
        "summary": "Patches a Noticeboard",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Noticeboards Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Noticeboard ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Noticeboard successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoticeboardRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Noticeboards Edit"
        ]
      },
      "delete": {
        "tags": [
          "Noticeboards"
        ],
        "summary": "Deletes a Noticeboard",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Noticeboards Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Noticeboard ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Noticeboards Full"
        ]
      }
    },
    "/api/reports/generate": {
      "post": {
        "tags": [
          "OnDemandReports"
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateReportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateReportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateReportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateReportRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateReportAccepted"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateReportAccepted"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateReportAccepted"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/OperatingModes": {
      "get": {
        "tags": [
          "OperatingModes"
        ],
        "summary": "Returns the Operating Modes for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Operating Modes"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "OperatingModes"
        ],
        "summary": "Creates a new Site Application Operating Mode",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Operating Mode Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OperatingModePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Operating Mode ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/OperatingModes/{id}": {
      "patch": {
        "tags": [
          "OperatingModes"
        ],
        "summary": "Patches a Site Application Operating Mode",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Operating Mode ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Operating Mode successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperatingModeRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "OperatingModes"
        ],
        "summary": "Deletes a Site Application Operating Mode",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Operating Mode ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Analytics/overdueServices": {
      "get": {
        "tags": [
          "OverdueServicesReport"
        ],
        "summary": "Returns the Overdue Services Graph Data\n            \nThe data returned includes a Depth Property that indicates the level of data being returned:\n - R (Overdue Services by Role)\n - M (Overdue Services by Model)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "roleId",
            "in": "query",
            "description": "The Role ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Service Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Service Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Overdue Services Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read, Analytics Read"
        ]
      }
    },
    "/api/Pauses": {
      "get": {
        "tags": [
          "Pauses"
        ],
        "summary": "Returns the Pause Reasons for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Pause Reasons"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "Pauses"
        ],
        "summary": "Creates a new Site Application Pause Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Pause Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PausePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Pause ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pause"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Pauses/{id}": {
      "patch": {
        "tags": [
          "Pauses"
        ],
        "summary": "Patches a Site Application Pause Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Pause ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Application successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PauseRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "Pauses"
        ],
        "summary": "Deletes a Site Application Pause Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Pause ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Analytics/pausesByReason": {
      "get": {
        "tags": [
          "PausesByReasonReport"
        ],
        "summary": "Returns the Pauses by Reason Graph Data\n\nThe data returned includes a Depth Property that indicates the level of data being returned:\n - R (Pauses by Reason)\n - M (Pauses by Model)\n - A (Pauses by Asset)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "pauseId",
            "in": "query",
            "description": "The Pause ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Pause Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Pause Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Pauses by Reason Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read, Analytics Read"
        ]
      }
    },
    "/api/PauseSubcategories": {
      "get": {
        "tags": [
          "PauseSubcategories"
        ],
        "summary": "Returns the Pause Subcategories for a Site Application Pause",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "siteAppPauseId",
            "in": "query",
            "description": "The Site Application Pause ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Pause Subcategories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "PauseSubcategories"
        ],
        "summary": "Creates a new Site Application Pause Subcategory",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "requestBody": {
          "description": "Site Application Pause Subcategory Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PauseSubcategoryPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Pause Subcategory ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      }
    },
    "/api/PauseSubcategories/{id}": {
      "patch": {
        "tags": [
          "PauseSubcategories"
        ],
        "summary": "Patches a Site Application Pause Subcategory",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Pause Subcategory ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Pause Subcategory successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PauseSubcategoryRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "PauseSubcategories"
        ],
        "summary": "Deletes a Site Application Pause Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Pause Subcategory ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Analytics/plannedWorkCompliance": {
      "get": {
        "tags": [
          "PlannedWorkComplianceReport"
        ],
        "summary": "Returns the Planned Work Compliance Graph Data\n\nThe data returned includes a Depth Property that indicates the level of data being returned:\n - S (Planned Work Compliance by Status)\n - R (Planned Work Compliance by Role)\n - M (Planned Work Compliance by Model)\n - A (Planned Work Compliance by Asset)\n \nEach result includes a WorkStatus attribute that indicates whether the status\nrepresents \"Completed\" or \"Outstanding\" work, which can be used for higher-level reporting.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "description": "The Service Status (optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "roleId",
            "in": "query",
            "description": "The Role ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Service Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Service Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Planned Work Compliance Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read, Analytics Read"
        ]
      }
    },
    "/api/Positions": {
      "get": {
        "tags": [
          "Positions"
        ],
        "summary": "Returns the Positions for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsClientAdmin</li><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The Site Application ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Positions"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsClientAdmin, Settings Read"
        ]
      },
      "post": {
        "tags": [
          "Positions"
        ],
        "summary": "Creates a new Site Application Position",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Position Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PositionPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Application Position ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Positions/{id}/users": {
      "get": {
        "tags": [
          "Positions"
        ],
        "summary": "Returns the Users that are assigned to a Position",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Feedback Read</li><li>Users Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Position ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of users assigned to a Position"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Feedback Read, Users Read"
        ]
      }
    },
    "/api/Positions/{id}": {
      "patch": {
        "tags": [
          "Positions"
        ],
        "summary": "Patches a Site Application Position",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Position ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Position successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PositionRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "Positions"
        ],
        "summary": "Deletes a Site Application Position",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/product-updates/unread": {
      "get": {
        "tags": [
          "ProductUpdates"
        ],
        "summary": "Unread product updates for the caller, filtered to their platform.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductUpdateResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/product-updates/unread/count": {
      "get": {
        "tags": [
          "ProductUpdates"
        ],
        "summary": "Count of unread product updates for the caller's badge.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUpdateCountResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/product-updates": {
      "get": {
        "tags": [
          "ProductUpdates"
        ],
        "summary": "Paged history of published updates across all platforms, with per-row read state.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUpdateListResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProductUpdates"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdatePostRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdatePostRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdatePostRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdatePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUpdateResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/product-updates/admin": {
      "get": {
        "tags": [
          "ProductUpdates"
        ],
        "summary": "Admin management list: every update (all audiences, including future-dated drafts), unfiltered.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUpdateListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/product-updates/{id}": {
      "get": {
        "tags": [
          "ProductUpdates"
        ],
        "summary": "A single update with the caller's read state.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUpdateResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ProductUpdates"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdatePostRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdatePostRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdatePostRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdatePostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUpdateResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      },
      "delete": {
        "tags": [
          "ProductUpdates"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/product-updates/{id}/mark-read": {
      "post": {
        "tags": [
          "ProductUpdates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/product-updates/mark-all-read": {
      "post": {
        "tags": [
          "ProductUpdates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUpdateCountResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/product-updates/{id}/mark-unread": {
      "post": {
        "tags": [
          "ProductUpdates"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/product-updates/mark-all-unread": {
      "post": {
        "tags": [
          "ProductUpdates"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUpdateCountResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/product-updates/uploadImage": {
      "post": {
        "tags": [
          "ProductUpdates"
        ],
        "summary": "Uploads a hero image to S3 and returns its key to store on the update.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductUpdateImageUploadResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/product-updates/translations": {
      "get": {
        "tags": [
          "ProductUpdates"
        ],
        "summary": "The stored translations of every release note for one locale, plus the\nshipped locale catalogue for the admin language dropdown. Rows are\nsystem-global (null SiteAppID), matching the notes themselves.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      },
      "put": {
        "tags": [
          "ProductUpdates"
        ],
        "summary": "Upserts release-note translations for one locale. An empty value\nremoves the stored translation; sources are snapshotted so a later\nedit of the English text surfaces as \"source changed\".",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TranslationSaveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/product-updates/{id}/translate": {
      "post": {
        "tags": [
          "ProductUpdates"
        ],
        "summary": "AI-translates one release note's title and description into a locale\nand returns the drafts for review - nothing is stored until the admin\nsaves. Release notes are global, so no site glossary applies.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/Regions": {
      "get": {
        "tags": [
          "Regions"
        ],
        "summary": "Returns the Client Regions for a Client",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Regions"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "post": {
        "tags": [
          "Regions"
        ],
        "summary": "Creates a new Client Region",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Region Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegionPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Region ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/Regions/{id}": {
      "patch": {
        "tags": [
          "Regions"
        ],
        "summary": "Patches a Client Region",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Region ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Region successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegionRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "delete": {
        "tags": [
          "Regions"
        ],
        "summary": "Deletes a Region",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Region ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin"
        ]
      }
    },
    "/api/report-subscriptions": {
      "get": {
        "tags": [
          "ReportSubscriptions"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportSubscriptionDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportSubscriptionDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportSubscriptionDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ReportSubscriptions"
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReportSubscriptionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReportSubscriptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReportSubscriptionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReportSubscriptionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-subscriptions/{id}": {
      "get": {
        "tags": [
          "ReportSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ReportSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReportSubscriptionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReportSubscriptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReportSubscriptionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReportSubscriptionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ReportSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-subscriptions/{id}/toggle": {
      "patch": {
        "tags": [
          "ReportSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ToggleReportSubscriptionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToggleReportSubscriptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ToggleReportSubscriptionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ToggleReportSubscriptionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSubscriptionDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/report-subscriptions/{id}/run": {
      "post": {
        "tags": [
          "ReportSubscriptions"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RunNowResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunNowResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunNowResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/Roles": {
      "get": {
        "tags": [
          "Roles"
        ],
        "summary": "Returns the Roles for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Roles"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "Roles"
        ],
        "summary": "Creates a new Site Application Role",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Role Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RolePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Role ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Roles/{id}": {
      "patch": {
        "tags": [
          "Roles"
        ],
        "summary": "Patches a Site Application Role",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Role ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Role successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "Roles"
        ],
        "summary": "Deletes a Site Application Role",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Role ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/ServiceNotes": {
      "get": {
        "tags": [
          "ServiceNotes"
        ],
        "summary": "Returns the Notes for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "serviceId",
            "in": "query",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Service Notes"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      },
      "post": {
        "tags": [
          "ServiceNotes"
        ],
        "summary": "Creates a new Service Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Full</li></ul>",
        "requestBody": {
          "description": "Service Note Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceNotePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Service Note ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Full"
        ]
      }
    },
    "/api/ServiceNotes/{id}/translate": {
      "post": {
        "tags": [
          "ServiceNotes"
        ],
        "summary": "Translates one note into the caller's language and stores the result\nso later readers get it without another AI call. Used for notes\nthat predate eager translation.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - You do not have permission to access this resource."
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/ServiceNotes/{id}": {
      "patch": {
        "tags": [
          "ServiceNotes"
        ],
        "summary": "Updates a Service Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Service Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceNotePostRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceNotePostRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceNotePostRequest"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Full"
        ]
      },
      "delete": {
        "tags": [
          "ServiceNotes"
        ],
        "summary": "Deletes a Service Note",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Service Note ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Full"
        ]
      }
    },
    "/api/Services/autocomplete/{search}": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Returns autocomplete suggestions for services-related data",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "path",
            "description": "Search text (minimum 3 characters)",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns search suggestions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/autocomplete": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Returns autocomplete suggestions for services-related data, with the search term taken from the query string",
        "description": "Kept as a separate action (rather than a second [HttpGet] template on Autocomplete) because\n[ApiController] infers a parameter's binding source once per action across all its route\ntemplates: with both templates on one action, \"search\" gets bound as [FromRoute] for both,\nso this route would never see the query string.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "Search text (minimum 3 characters)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns search suggestions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      },
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Returns autocomplete suggestions for services-related data, scoped by whatever\nfilter chips are already applied - e.g. a Model or Asset chip narrows\nInterval/Role/Asset suggestions down to that model, instead of searching every\nmodel in the tenant.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "requestBody": {
          "description": "The search text and the filter chips already applied",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceAutocompleteRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns search suggestions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/grouped": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Returns the Services for a Site Application, Grouped by Work Order, Model and Interval",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "fromDate",
            "in": "query",
            "description": "Return Services from the specified Date (Optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "Return Services to the specified Date (Optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns Services that have been created or modified since the specified Date (Optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentID",
            "in": "query",
            "description": "Site Department ID (Optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusType",
            "in": "query",
            "description": "The General Status Type of the Service to Search (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "The Specific Status Code to Search (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page, to a Maximum of 100 (Default = 100)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search Text (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "The field to Sort by (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting Order (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "includeDeleted",
            "in": "query",
            "description": "Include deleted records in the results (default: false)",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Services",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/count": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Returns the Count of Services for a Site Application with advanced filtering",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "requestBody": {
          "description": "The search parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the count of Site Application Services",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Returns a Service's Details",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a Service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetServiceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      },
      "patch": {
        "tags": [
          "Services"
        ],
        "summary": "Patches a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Service successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Edit"
        ]
      },
      "delete": {
        "tags": [
          "Services"
        ],
        "summary": "Deletes a Service.",
        "description": "Services can not be deleted if they have been started.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Full"
        ]
      }
    },
    "/api/Services/me": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Returns available services that can be performed by the user in the EMI3 Mobile Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load (Optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Size of the Page, to a Maximum of 100 (Default = 100)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search Text (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "The field to Sort by (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting Order (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Services",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesMyServicesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/download": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Returns the Service Structure for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Service Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/conditionMonitoringQuestions": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Returns the Condition Monitoring Questions specific to a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Defects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetConditionMonitoringQuestionsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/cmdata/{serviceTaskQuestionId}": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Returns the Condition Monitoring Question Responses specific to a service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "serviceTaskQuestionId",
            "in": "path",
            "description": "The Service Task Question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Defects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetConditionMonitoringDataResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/servicetimes": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Gets the Service Times for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionStageId",
            "in": "query",
            "description": "The Model Version Stage ID. If null, returns data at the requested or default depth level",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelVersionZoneId",
            "in": "query",
            "description": "The Model Version Zone ID. Required if Stage has zones when drilling down",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "depth",
            "in": "query",
            "description": "Optional depth parameter: V (default) for summary view, S for stage view, Z for zone view, T for task view",
            "schema": {
              "type": "string",
              "format": "json",
              "default": "V"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Service Times",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetServiceTimesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/completedService": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Gets the Completed Service Report(New Endpoint)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "serviceId",
            "in": "query",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "TimeZone",
            "in": "query",
            "description": "use for recalculate UTC time to local time",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Completed Service Report"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/incompleteTasks": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Gets the Incompleted Tasks for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Incompleted Tasks for a Service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetIncompleteTasksResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/outstandingDefects": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Returns the Outstanding Defects relevant to a specific service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Defects Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Outstanding Defects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetDefectsByRoleResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Defects Read"
        ]
      }
    },
    "/api/Services/{id}/build": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Builds the Service's Structure so that it may be started on the Mobile Device",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Service Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetDefectsByRoleResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error building the service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesBuildServiceBadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/sessions": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Gets all of the Sessions undertaken on the Mobile Application for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Service Sessions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetSessionsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/missingpartstools": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Gets all of the Missing Parts and Tools for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Missing Parts and Tools",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetMissingPartsAndToolsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/skippedtasks": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Gets all of the Skipped Tasks for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Skipped Tasks",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetSkippedTasksResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/pauses": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Gets all of the Pauses for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Pauses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceGetPausesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/stops": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Gets all of Session Stops for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Service Stops",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetStopsReponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/statuschanges": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Gets all of the Status Changes for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Status Changes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetStatusChangesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/defects": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Returns the Defects for a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Defects that were registered for the Service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetDefectsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Registers a new Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Full</li></ul>",
        "requestBody": {
          "description": "Service Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServicePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the Service ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesPostBadRequest400ResponseResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Full"
        ]
      }
    },
    "/api/Services/downloadImportTemplate": {
      "get": {
        "tags": [
          "Services"
        ],
        "summary": "Provides a sample Service CSV Template file for use with the import feature.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Edit</li></ul>",
        "responses": {
          "200": {
            "description": "Sample CSV Document",
            "content": {
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/File"
                }
              }
            }
          },
          "400": {
            "description": "Error generating the document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Edit"
        ]
      }
    },
    "/api/Services/upload": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Prepares a Presigned URL for a Service List to be uploaded.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Full</li></ul>",
        "requestBody": {
          "description": "Filename",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesUploadServiceListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Full"
        ]
      }
    },
    "/api/Services/import": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Import a List of Services from a file that was uploaded",
        "requestBody": {
          "description": "Document Key",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully Imported"
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/Services/{id}/changestatus": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Changes the Status of a Service",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Service ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Status Change Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceStatusChangePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns Service Status Change ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "json"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Full"
        ]
      }
    },
    "/api/Services/changestatus": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Changes the Status of multiple Services",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Full</li></ul>",
        "requestBody": {
          "description": "Status Change Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceMultiStatusChangePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns Service Status Change ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "json"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Full"
        ]
      }
    },
    "/api/Services/{id}/start": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Starts a Service on a Mobile Device",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Service Started Successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/checkout": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Locks a Service to a specific User",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Service Started Successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/checkin": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Checks a Service In",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Service Started Successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/Services/{id}/undocheckout": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Undoes a Service Checkout",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Service Checked in Successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/{id}/reset": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Undoes a Service Checkout",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceResetPostRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceResetPostRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceResetPostRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceResetPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Service Checked in Successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Full"
        ]
      }
    },
    "/api/Services/{id}/sync": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Syncs the data entered from a Mobile Device",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceSyncPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Service Synced Successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceSyncResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/Search": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Search for services with advanced filtering options",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "requestBody": {
          "description": "The search parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the filtered list of services",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/Services/GroupedSearch": {
      "post": {
        "tags": [
          "Services"
        ],
        "summary": "Returns Services grouped by work order with nested service details.\nEach group contains summary information and ALL services for that work order.\n\nIMPORTANT: Response size varies based on services per work order.\n- PageSize controls number of work order GROUPS returned (not individual services)\n- Each group includes ALL its services regardless of count\n- A page with 10 groups could return 10-500+ total services depending on group sizes\n- Frontend should use smaller page sizes (e.g., 5-20) to manage response size",
        "requestBody": {
          "description": "The search parameters. PageSize applies to work order groups, not individual services.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceGroupedSearchPostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the grouped services with variable response size",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/Analytics/serviceStatusChangesByReason": {
      "get": {
        "tags": [
          "ServiceStatusChangesByReasonReport"
        ],
        "summary": "Returns the Service Status Changes by Reason Graph Data\n\nThe data returned includes a Depth Property that indicates the level of data being returned:\n - R (Service Status Changes by Reason)\n - M (Service Status Changes by Model)\n - A (Service Status Changes by Asset)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "changeStatusReasonId",
            "in": "query",
            "description": "The Service Status Change Reason ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Service Status Change Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Service Status Change Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Service Status Change by Reason Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read, Analytics Read"
        ]
      }
    },
    "/api/Analytics/stopsByReason": {
      "get": {
        "tags": [
          "ServiceStopsByReasonReport"
        ],
        "summary": "Returns the Service Stops by Reason Graph Data\n\nThe data returned includes a Depth Property that indicates the level of data being returned:\n - R (Service Stops by Reason)\n - M (Service Stops by Model)\n - A (Service Stops by Asset)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "stopReasonId",
            "in": "query",
            "description": "The Stop Reason ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Stop Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Stop Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Service Stops by Reason Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read, Analytics Read"
        ]
      }
    },
    "/api/ServiceTaskQuestions": {
      "get": {
        "tags": [
          "ServiceTaskQuestions"
        ],
        "summary": "Returns the image for a service task question.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "serviceTaskQuestionId",
            "in": "query",
            "description": "The service task question ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Returns only the task question image if edited since the specified date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the task question image, if present",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskQuestionImagesGetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/ServiceTaskQuestions/{id}/uploadImage": {
      "post": {
        "tags": [
          "ServiceTaskQuestions"
        ],
        "summary": "Uploads an image to be attached to a service task question.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Service task question ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "description": "File to upload",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the stored image keys",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceTaskQuestionsUploadImageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read"
        ]
      }
    },
    "/api/SiteAppKeyContacts/Site/{siteId}": {
      "get": {
        "tags": [
          "SiteAppKeyContacts"
        ],
        "summary": "Returns the Key Contacts for a Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Read</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "path",
            "description": "The Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Key Contacts"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Read, IsClientAdmin"
        ]
      }
    },
    "/api/SiteAppKeyContacts/SiteApp/{siteAppId}": {
      "get": {
        "tags": [
          "SiteAppKeyContacts"
        ],
        "summary": "Returns the Key Contacts for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "description": "The Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Key Contacts"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Read"
        ]
      }
    },
    "/api/SiteAppKeyContacts": {
      "post": {
        "tags": [
          "SiteAppKeyContacts"
        ],
        "summary": "Creates a new Key Contact",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Key Contact Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SiteAppKeyContactPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site App Key Contact ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Full"
        ]
      }
    },
    "/api/SiteAppKeyContacts/{id}": {
      "delete": {
        "tags": [
          "SiteAppKeyContacts"
        ],
        "summary": "Deletes a Site App Key Contact",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site App Key Contact ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller"
        ]
      }
    },
    "/api/SiteApps": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Returns the Site Applications for a Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "description": "The Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Applications"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "post": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Creates a new Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Site Application Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SiteAppPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/SiteApps/{id}": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Returns a Site Application",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the nominated Site Application"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Patches a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SiteAppRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Edit, IsClientAdmin"
        ]
      }
    },
    "/api/SiteApps/{id}/licenseData": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Returns the Licensing Data for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the License Data for a Site Application"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin, Settings Read"
        ]
      }
    },
    "/api/SiteApps/{id}/definitions": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Returns the Definition Tables for a Site Application for Mobile Devices",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Site Application's Definition Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/SiteApps/{siteId}/available": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Returns the Available Applications that can be Activated for the Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "path",
            "description": "The Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Available Applications for the Site"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/SiteApps/{siteAppId}/licenses": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Returns the Licenses that have been used for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Used Licenses for the Site Application"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/SiteApps/{siteAppId}/checkedOutServices": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Returns the Checked Out Services for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Checked Out Services for the Site Application"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/SiteApps/{siteAppId}/licensecount": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Returns a count of Licenses that have been used for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the count of Used Licenses for a Site Application",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      }
    },
    "/api/SiteApps/{id}/defaults": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Returns the Default Lookups for a Site Application",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the default lookups for a Site Application"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/SiteApps/{id}/customcaptions": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Returns the Custom Captions for a single Site Application",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the custom captions for a Site Application",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomCaption"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/SiteApps/{id}/modelExpiryReport": {
      "patch": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Enables or disables the Model Expiry Report feature for a Site Application",
        "description": "Kept as its own endpoint (rather than a field on the main Patch above) because\nthe setting lives in its own table, not on the SiteApp entity itself - SiteApp\nis already at MySQL's per-row byte limit from its large number of custom-caption\ncolumns.<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Whether the feature should be enabled, and the default Warning Days Before Expiry to seed models with",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelExpirySettingsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Setting successfully updated"
          },
          "400": {
            "description": "Enabled without a valid default, or the default is out of range",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Edit, IsClientAdmin"
        ]
      }
    },
    "/api/SiteApps/{id}/uploadDefectRiskRatingImage": {
      "post": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Uploads an Image to be used as a Site Application's Defect Risk Rating Image",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>Settings Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site App ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "description": "File to Upload",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL to the Image",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "json"
                }
              }
            }
          },
          "400": {
            "description": "Invalid FileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, Settings Edit, IsClientAdmin"
        ]
      }
    },
    "/api/SiteApps/{id}/DefectRiskRatingImage": {
      "delete": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Removes the Risk Rating Image from a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin, Settings Edit"
        ]
      }
    },
    "/api/SiteApps/{id}/uploadUserList": {
      "post": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Prepares a Presigned URL for a User List to be uploaded.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site App ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Filename",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/SiteApps/{id}/importusers": {
      "post": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Import a List of Site Application Users from a file that was uploaded.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site App ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Import Parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Import"
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/SiteApps/downloadImportTemplate": {
      "get": {
        "tags": [
          "SiteApps"
        ],
        "summary": "Provides a sample User CSV Template file for use with the import feature.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Full</li></ul>",
        "responses": {
          "200": {
            "description": "Sample CSV Document",
            "content": {
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/File"
                }
              }
            }
          },
          "400": {
            "description": "Error generating the document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Full"
        ]
      }
    },
    "/api/SiteAssetRegisters": {
      "get": {
        "tags": [
          "SiteAssetRegisters"
        ],
        "summary": "Returns the Asset Registers for a Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsClientAdmin</li><li>Assets Read</li><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "description": "The Site ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The Site App ID - Only used if the Site ID is not supplied",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The Page Number to Load",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The Page Size (to a Maximum of 100)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "The Sort Field (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The Sort Order (asc for ascending or desc for descending)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "description": "Optional parent filter. 0 = root assets only (ParentID IS NULL), N = children of asset N",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "level",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "rootsOnly",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Asset Registers"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsClientAdmin, Assets Read, Models Read"
        ]
      },
      "post": {
        "tags": [
          "SiteAssetRegisters"
        ],
        "summary": "Creates a new Site Asset Register entry",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Assets Full</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Site Asset Register Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SiteAssetRegisterPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Asset Register ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Assets Full, IsClientAdmin"
        ]
      }
    },
    "/api/SiteAssetRegisters/Count": {
      "get": {
        "tags": [
          "SiteAssetRegisters"
        ],
        "summary": "Returns the count of Asset Registers for a Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsClientAdmin</li><li>Assets Read</li><li>Models Read</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "description": "The Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The Search Criteria (Optional)",
            "schema": {
              "type": "string",
              "format": "json"
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "description": "Optional parent filter. 0 = root assets only (ParentID IS NULL), N = children of asset N",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "level",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "rootsOnly",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the count",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Site not found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsClientAdmin, Assets Read, Models Read"
        ]
      }
    },
    "/api/SiteAssetRegisters/downloadImportTemplate": {
      "get": {
        "tags": [
          "SiteAssetRegisters"
        ],
        "summary": "Downloads a CSV import template for Site Asset Registers",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Assets Edit</li><li>IsClientAdmin</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the CSV template file",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Assets Edit, IsClientAdmin"
        ]
      }
    },
    "/api/SiteAssetRegisters/{siteId}/uploadList": {
      "post": {
        "tags": [
          "SiteAssetRegisters"
        ],
        "summary": "Prepares a Presigned URL for an Asset Register List to be uploaded.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsClientAdmin</li><li>Assets Full</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "path",
            "description": "Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "File Type Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilenameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Presigned URL for upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Filename",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsClientAdmin, Assets Full"
        ]
      }
    },
    "/api/SiteAssetRegisters/{siteId}/import": {
      "post": {
        "tags": [
          "SiteAssetRegisters"
        ],
        "summary": "Import a List of Asset Registers from a file that was uploaded",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsClientAdmin</li><li>Assets Full</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "path",
            "description": "Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Document Key and Import flag",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the validation response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SiteAssetRegisterImportValidationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid file format or validation errors",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsClientAdmin, Assets Full"
        ]
      }
    },
    "/api/SiteAssetRegisters/{id}": {
      "patch": {
        "tags": [
          "SiteAssetRegisters"
        ],
        "summary": "Patches a Site Asset Register entry",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Assets Edit</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Asset Register ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Asset Register successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SiteAssetRegisterRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Assets Edit, IsClientAdmin"
        ]
      },
      "delete": {
        "tags": [
          "SiteAssetRegisters"
        ],
        "summary": "Deletes a Site Asset Register entry",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Assets Full</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Asset Register ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "400": {
            "description": "Asset is linked to one or more Models",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Assets Full, IsClientAdmin"
        ]
      }
    },
    "/api/SiteDepartments": {
      "get": {
        "tags": [
          "SiteDepartments"
        ],
        "summary": "Returns the Departments for a Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li><li>Settings Read</li><li>Models Read</li><li>Defects Read</li><li>Analytics Read</li><li>Services Read</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "query",
            "description": "The Site ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "siteAppId",
            "in": "query",
            "description": "The Site App ID - Only used if the Site ID is not supplied",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "localised",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Site Departments",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SiteDepartment"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin, Settings Read, Models Read, Defects Read, Analytics Read, Services Read"
        ]
      },
      "post": {
        "tags": [
          "SiteDepartments"
        ],
        "summary": "Creates a new Site Department",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Department Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SiteDepartmentPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Department ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin, Settings Full"
        ]
      }
    },
    "/api/SiteDepartments/{id}": {
      "patch": {
        "tags": [
          "SiteDepartments"
        ],
        "summary": "Patches a Site Department",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Department ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Department successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SiteDepartmentRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin, Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "SiteDepartments"
        ],
        "summary": "Deletes a Site Department",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Department ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin, Settings Full"
        ]
      }
    },
    "/api/localisation/captions": {
      "get": {
        "tags": [
          "SiteLocaleSettings"
        ],
        "summary": "The site's terminology as a CustomCaption DTO resolved for the requested\nlocale (site overrides over the locale's .po over en.po). Anonymous like the\nbundle: the tenant comes from the token, so callers without one get the\nshipped defaults. Lets the frontend get localised captions authoritatively\ninstead of deriving them from the bundle.",
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json",
              "default": "en"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/localisation/locales": {
      "get": {
        "tags": [
          "SiteLocaleSettings"
        ],
        "summary": "The locales this build ships a language file for. Inside a site app this\nis gated to the site's enabled list (for the mobile/web language picker);\noutside one, admins and client admins get the full shipped catalogue for\nthe settings editor.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/localisation/settings": {
      "get": {
        "tags": [
          "SiteLocaleSettings"
        ],
        "summary": "The current site's language settings, keyed off the SiteAppID claim (the same\ntoken chain the preference endpoints use). The web boot path reads this to gate\na user's locale preference against the site's enabled locales; 400 outside a\nsite app context.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/localisation/sites/{siteId}/settings": {
      "get": {
        "tags": [
          "SiteLocaleSettings"
        ],
        "summary": "The site's terminology settings, keyed by site rather than site app: every\n            site app of the site shares the same language configuration.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "put": {
        "tags": [
          "SiteLocaleSettings"
        ],
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "siteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLocaleSettingsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/localisation/preference": {
      "get": {
        "tags": [
          "SiteLocaleSettings"
        ],
        "summary": "The caller's own preferred locale for their current site, or null if unset.",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "SiteLocaleSettings"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPreferenceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SiteLocaleSettings"
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/localisation/users/{userId}/preference": {
      "get": {
        "tags": [
          "SiteLocaleSettings"
        ],
        "summary": "An admin's view of another user's raw stored preference for the caller's\n            current site (not the target user's site - the caller's, same as the self-service\n            endpoints). Fail-closed on a missing site app context.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Read</li><li>IsAdmin</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Read, IsAdmin, IsClientAdmin"
        ]
      },
      "put": {
        "tags": [
          "SiteLocaleSettings"
        ],
        "summary": "Admin edit of another user's preferred locale for the caller's current site.\n            A null or empty locale clears the preference. The preference service fail-closes\n            (400) when the target user has no active membership for that site; the resolved\n            locale in the response is what the TARGET user will see, not the caller.",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Users Edit</li><li>IsAdmin</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetUserPreferenceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Users Edit, IsAdmin, IsClientAdmin"
        ]
      }
    },
    "/api/Sites": {
      "get": {
        "tags": [
          "Sites"
        ],
        "summary": "Returns the Sites for a single Client",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Regions and Sites",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Region"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "post": {
        "tags": [
          "Sites"
        ],
        "summary": "Creates a Client Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "requestBody": {
          "description": "Site Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SitePostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/Sites/{id}": {
      "get": {
        "tags": [
          "Sites"
        ],
        "summary": "Returns a single Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the nominated Site"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read, IsAdmin, IsReseller, IsClientAdmin"
        ]
      },
      "patch": {
        "tags": [
          "Sites"
        ],
        "summary": "Patches a Client Site",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li><li>IsAdmin</li><li>IsReseller</li><li>IsClientAdmin</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SiteRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit, IsAdmin, IsReseller, IsClientAdmin"
        ]
      }
    },
    "/api/Analytics/skippedTasksByReason": {
      "get": {
        "tags": [
          "SkippedTasksByReasonReport"
        ],
        "summary": "Returns the Skipped Tasks by Reason Graph Data \n\nThe data returned includes a Depth Property that indicates the level of data being returned:\n - R (Skipped Tasks by Reason)\n - M (Skipped Tasks by Model)\n - A (Skipped Tasks by Asset)",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Services Read</li><li>Analytics Read</li></ul>",
        "parameters": [
          {
            "name": "skipReasonId",
            "in": "query",
            "description": "The Skip Reason ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The earliest Skip Task Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The latest Skip Task Date (optional)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "siteDepartmentIds",
            "in": "query",
            "description": "The Site Department IDs (optional, supports multiple)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "description": "The Model ID (optional)",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the Skipped Tasks by Reason Data"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Services Read, Analytics Read"
        ]
      }
    },
    "/api/SkipTaskReasons": {
      "get": {
        "tags": [
          "SkipTaskReasons"
        ],
        "summary": "Returns the Skip Task Reasons for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Skip Task Reasons",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkipTaskReason"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "SkipTaskReasons"
        ],
        "summary": "Creates a new Site Application Skip Task Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Skip Task Reason Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SkipTaskReasonPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Skip Task Reason ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/SkipTaskReasons/{id}": {
      "patch": {
        "tags": [
          "SkipTaskReasons"
        ],
        "summary": "Patches a Site Application Skip Task Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Skip Task Reason ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Skip Task Reason successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkipTaskReasonRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "SkipTaskReasons"
        ],
        "summary": "Deletes a Site Application Skip Task Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Skip Task Reason ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/StopReasons": {
      "get": {
        "tags": [
          "StopReasons"
        ],
        "summary": "Returns the Stop Reasons for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Stop Reasons",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StopReason"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "StopReasons"
        ],
        "summary": "Creates a Site Application Stop Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application Stop Reason Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StopReasonPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application Stop Reason ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/StopReasons/{id}": {
      "patch": {
        "tags": [
          "StopReasons"
        ],
        "summary": "Patches an existing Site Application Stop Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Stop Reason ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application Stop Reason successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StopReasonRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "StopReasons"
        ],
        "summary": "Deletes a Site Application Stop Reason",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application Stop Reason ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Systems": {
      "get": {
        "tags": [
          "Systems"
        ],
        "summary": "Returns the Systems for a Site Application",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Read</li></ul>",
        "responses": {
          "200": {
            "description": "Returns the list of Site Application Systems",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/System"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Read"
        ]
      },
      "post": {
        "tags": [
          "Systems"
        ],
        "summary": "Creates a Site Application System",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "requestBody": {
          "description": "Site Application System Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemPostRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the created Site Application System ID",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Systems/{id}": {
      "patch": {
        "tags": [
          "Systems"
        ],
        "summary": "Patches a Site Application system",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Edit</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application System ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site Application System successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Edit"
        ]
      },
      "delete": {
        "tags": [
          "Systems"
        ],
        "summary": "Deletes a Site Application System",
        "description": "<br/><br/><b>Required Policies:</b><ul style='list-style-type: disc; padding-left: 20px;'><li>Settings Full</li></ul>",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Site Application System ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        },
        "x-required-policies": [
          "Settings Full"
        ]
      }
    },
    "/api/Token/RefreshToken": {
      "post": {
        "tags": [
          "Token"
        ],
        "summary": "Refreshes a token",
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Refreshed Token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAuthResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid Token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/Token/RevokeToken": {
      "post": {
        "tags": [
          "Token"
        ],
        "summary": "Revokes a token",
        "responses": {
          "200": {
            "description": "Token revoked"
          },
          "400": {
            "description": "Token is required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Token not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/user-preferences/{key}": {
      "get": {
        "tags": [
          "UserPreferences"
        ],
        "summary": "The caller's stored value for this key in their current site app context, or 404 if unset.",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "UserPreferences"
        ],
        "summary": "Upserts the caller's value for this key. The request body is stored as-is;\n            the caller can only ever write their own row.",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "json"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/Users/me": {
      "patch": {
        "tags": [
          "Users"
        ],
        "summary": "Patches the logged in User",
        "requestBody": {
          "description": "Patch Details",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "User successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserRequest"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/Users/Login": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Authentication endpoint for Users",
        "requestBody": {
          "description": "Authentication credentials",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "User details, token and refresh token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAuthResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/Users/Logout": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Revokes a token",
        "responses": {
          "200": {
            "description": "Token revoked"
          },
          "400": {
            "description": "Token is required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "404": {
            "description": "Token not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFound404Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/Users/me/clients": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Returns the User's Client Access",
        "responses": {
          "200": {
            "description": "Returns the list of Client Users"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/Users/me/portal": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Returns the User's Portal Access",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Client Users",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalApp"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/Users/me/applications": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Returns the User's Portal Access",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "description": "The Client ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of Client Users",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PortalApp"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/Users/LoginToSiteApp/{siteAppId}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Connects the User to a Site Application",
        "parameters": [
          {
            "name": "siteAppId",
            "in": "path",
            "description": "Site App ID to connect to",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User details, token and refresh token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAuthResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error connecting to Site Application",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/Users/LoginToClientAdmin/{clientId}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Connects the User to a Client Admin Mode for a Client",
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "description": "Client ID to connect to",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User details, token and refresh token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAuthResponse"
                }
              }
            }
          },
          "400": {
            "description": "Error connecting to Client",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/Users/RegisterEmail": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Register Account",
        "requestBody": {
          "description": "Email Address",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetPasswordRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "200": {
            "description": "Reset Password Email Sent."
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/api/Users/ForgotPassword": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Sends a Forgot Password Email to a nominated Email Address",
        "requestBody": {
          "description": "Email Address",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForgotPasswordRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "200": {
            "description": "Reset Password Email Sent."
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/api/Users/ResetPassword": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Resets a User Password",
        "requestBody": {
          "description": "Reset Password Details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetPasswordRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Password Successfully Changed."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequest400Response"
                }
              }
            }
          }
        }
      }
    },
    "/api/Users/me/ChangePassword": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Change User Password",
        "requestBody": {
          "description": "Old and New Password",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserChangePasswordRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorised",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Unauthorized401Response"
                }
              }
            }
          },
          "200": {
            "description": "Password Successfully Changed."
          },
          "400": {
            "description": "Invalid Credentials"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AIConfigurationRequest": {
        "title": "AI Configuration Patch Operations",
        "required": [
          "isActive",
          "providerType"
        ],
        "type": "object",
        "properties": {
          "modelName": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "apiKey": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "endpointUrl": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "apiVersion": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "maxTokensPerRequest": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maxRetries": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "retryDelayMs": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "timeoutSeconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "translationSystemPrompt": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "providerType": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false,
        "description": "JSON Patch operations for updating an AI configuration"
      },
      "AIConfigurationResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "providerType": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "endpointUrl": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "apiVersion": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "maxTokensPerRequest": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maxRetries": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "retryDelayMs": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "timeoutSeconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "hasApiKey": {
            "type": "boolean"
          },
          "translationSystemPrompt": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AIGlossaryBulkImportEntry": {
        "required": [
          "sourceTerm",
          "targetTerm"
        ],
        "type": "object",
        "properties": {
          "sourceTerm": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "targetTerm": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "context": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AIGlossaryBulkImportRequest": {
        "required": [
          "entries",
          "siteAppID",
          "targetLanguage"
        ],
        "type": "object",
        "properties": {
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "targetLanguage": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "entries": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AIGlossaryBulkImportEntry"
            }
          }
        },
        "additionalProperties": false
      },
      "AIGlossaryPostRequest": {
        "required": [
          "siteAppID",
          "sourceTerm",
          "targetLanguage",
          "targetTerm"
        ],
        "type": "object",
        "properties": {
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "sourceTerm": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "targetTerm": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "targetLanguage": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "context": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AIGlossaryResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "sourceTerm": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "targetTerm": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "targetLanguage": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "context": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AIProviderResponse": {
        "type": "object",
        "properties": {
          "providerType": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AITranslateItem": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "translated": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AITranslateRequest": {
        "required": [
          "items",
          "targetLanguage"
        ],
        "type": "object",
        "properties": {
          "targetLanguage": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "country": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            }
          }
        },
        "additionalProperties": false
      },
      "AITranslateResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AITranslateItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Action": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ActionPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the action to be created",
            "format": "json",
            "example": "Submit"
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new action"
      },
      "ActionRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "AdminPrimaryLanguageRequest": {
        "required": [
          "locale"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "iDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "locale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false,
        "description": "Superadmin primary-language change for site applications or models,\naddressed by a single ID or a list of IDs (both accepted together)."
      },
      "AdminType": {
        "enum": [
          "0 - None",
          "1 - Admin",
          "2 - Reseller"
        ],
        "type": "integer",
        "format": "int32"
      },
      "AnalyticsGetConditionMonitoringDataRespones": {
        "type": "object",
        "properties": {
          "questionMetadata": {
            "$ref": "#/components/schemas/ConditionMonitoringQuestionMetadata"
          },
          "chartData": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConditionMonitoringDataPoint"
            },
            "description": "The condition monitoring chart data points.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the response model for retrieving condition monitoring data for a site asset."
      },
      "AnalyticsGetConditionMonitoringQuestionsRespones": {
        "type": "object",
        "properties": {
          "stageName": {
            "type": "string",
            "description": "The name of the stage in the condition monitoring process.",
            "format": "json",
            "nullable": true,
            "example": "Service"
          },
          "modelVersionStageID": {
            "type": "integer",
            "description": "The unique identifier for the model version stage.",
            "format": "int32",
            "example": 581
          },
          "zoneName": {
            "type": "string",
            "description": "The name of the zone associated with the condition monitoring.",
            "format": "json",
            "nullable": true,
            "example": "Zone 2"
          },
          "modelVersionZoneID": {
            "type": "integer",
            "description": "The unique identifier for the model version zone.",
            "format": "int32",
            "example": 355
          },
          "taskName": {
            "type": "string",
            "description": "The name of the task related to the condition monitoring.",
            "format": "json",
            "nullable": true,
            "example": "Inspect Lift Cylinder - RH"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier for the model version task.",
            "format": "int32",
            "example": 17197
          },
          "questionName": {
            "type": "string",
            "description": "The question posed regarding the condition of the equipment.",
            "format": "json",
            "nullable": true,
            "example": "Rate condition of LH Lift Cylinder (1 - Good, 5 - Poor)"
          },
          "modelVersionTaskQuestionID": {
            "type": "integer",
            "description": "The unique identifier for the model version task question.",
            "format": "int32",
            "example": 11157
          },
          "arrangementName": {
            "type": "string",
            "description": "The name(s) of the arrangement(s) assigned to the task, comma-separated if multiple.",
            "format": "json",
            "nullable": true,
            "example": "Standard, Heavy Duty"
          }
        },
        "additionalProperties": false,
        "description": "Represents the response model for retrieving condition monitoring questions related to a specific task and stage."
      },
      "AppVersionPolicy": {
        "required": [
          "appIdentifier",
          "platform"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "platform": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "appIdentifier": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "latestBuild": {
            "type": "integer",
            "format": "int32"
          },
          "latestVersion": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "minSupportedBuild": {
            "type": "integer",
            "format": "int32"
          },
          "sunsetDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "enforceUnsupported": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Application": {
        "required": [
          "actionRequiredCC",
          "actionRequiredPluralCC",
          "additionalPPECC",
          "additionalPPEPluralCC",
          "alertColor",
          "arrangementCC",
          "arrangementPluralCC",
          "assetCC",
          "assetMainWorkCenterCC",
          "assetMainWorkCenterPluralCC",
          "assetPlannerGroupCC",
          "assetPlannerGroupPluralCC",
          "assetPluralCC",
          "assetReferenceCC",
          "assetReferencePluralCC",
          "benefitCC",
          "benefitPluralCC",
          "changeRequiredCC",
          "changeRequiredPluralCC",
          "classificationCC",
          "classificationPluralCC",
          "color",
          "contaminationControlsCC",
          "contaminationControlsPluralCC",
          "controlsCC",
          "controlsPluralCC",
          "correctiveActionsCC",
          "correctiveActionsPluralCC",
          "customField1CC",
          "customField1PluralCC",
          "customField2CC",
          "customField2PluralCC",
          "customField3CC",
          "customField3PluralCC",
          "defectCC",
          "defectPluralCC",
          "defectStatusCC",
          "defectStatusPluralCC",
          "defectTypeCC",
          "defectTypePluralCC",
          "defectWorkOrderCC",
          "defectWorkOrderPluralCC",
          "departmentCC",
          "departmentPluralCC",
          "developerNameCC",
          "developerNamePluralCC",
          "feedbackCC",
          "feedbackPluralCC",
          "feedbackStatusCC",
          "feedbackStatusPluralCC",
          "intervalCC",
          "intervalPluralCC",
          "isolationsCC",
          "isolationsPluralCC",
          "locationCC",
          "locationPluralCC",
          "lubricantCC",
          "lubricantPluralCC",
          "makeCC",
          "makePluralCC",
          "modelCC",
          "modelPluralCC",
          "modelTemplateCC",
          "modelTemplatePluralCC",
          "modelTypeCC",
          "modelTypePluralCC",
          "name",
          "notificationNumberCC",
          "notificationNumberPluralCC",
          "operatingModeCC",
          "operatingModePluralCC",
          "otherInformationCC",
          "otherInformationPluralCC",
          "partCC",
          "partDescriptionCC",
          "partDescriptionPluralCC",
          "partNameCC",
          "partNamePluralCC",
          "partPluralCC",
          "partQuantityCC",
          "partQuantityPluralCC",
          "partStockNumberCC",
          "partStockNumberPluralCC",
          "pauseReasonCC",
          "pauseReasonPluralCC",
          "permitCC",
          "permitPluralCC",
          "positionCC",
          "positionPluralCC",
          "possibleHazardsCC",
          "possibleHazardsPluralCC",
          "priorityCC",
          "priorityPluralCC",
          "procedureCC",
          "procedurePluralCC",
          "projectNumberCC",
          "projectNumberPluralCC",
          "purposeCC",
          "purposePluralCC",
          "questionCC",
          "questionPluralCC",
          "riskRatingActionCC",
          "riskRatingActionPluralCC",
          "riskRatingCC",
          "riskRatingMatrixCC",
          "riskRatingMatrixPluralCC",
          "riskRatingPluralCC",
          "roleCC",
          "rolePluralCC",
          "safetyCriticalCC",
          "safetyCriticalPluralCC",
          "serialNumberRangeCC",
          "serialNumberRangePluralCC",
          "serviceCC",
          "servicePluralCC",
          "serviceWorkOrderCC",
          "serviceWorkOrderPluralCC",
          "skipReasonCC",
          "skipReasonPluralCC",
          "specificationCC",
          "specificationPluralCC",
          "stageCC",
          "stagePluralCC",
          "stopReasonCC",
          "stopReasonPluralCC",
          "systemCC",
          "systemPluralCC",
          "taskCC",
          "taskListNoCC",
          "taskListNoPluralCC",
          "taskPluralCC",
          "toolCC",
          "toolDescriptionCC",
          "toolDescriptionPluralCC",
          "toolPluralCC",
          "toolQuantityCC",
          "toolQuantityPluralCC",
          "tutorialCC",
          "tutorialPluralCC",
          "userCC",
          "userPluralCC",
          "userReferenceCC",
          "userReferencePluralCC",
          "workbookCC",
          "workbookPluralCC",
          "zoneCC",
          "zonePluralCC"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "purpose": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "logoKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "logoFilename": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "smallLogoKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "smallLogoFilename": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "mobileSmallWhiteAppLogoKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "mobileWhiteAppLogoKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "navigationLogoKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "watermarkKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isLogoTrademarked": {
            "type": "boolean"
          },
          "url": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "color": {
            "maxLength": 6,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "alertColor": {
            "maxLength": 6,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "isActive": {
            "type": "boolean"
          },
          "modelTemplateCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelTemplatePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "projectNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "projectNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "locationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "locationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "stageCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "stagePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "zoneCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "zonePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "intervalCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "intervalPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "taskListNoCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "taskListNoPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "questionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "questionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "taskCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "taskPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "actionRequiredCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "actionRequiredPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "operatingModeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "operatingModePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "systemCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "systemPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "safetyCriticalCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "safetyCriticalPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partQuantityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partQuantityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partNameCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partNamePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partDescriptionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partDescriptionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partStockNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partStockNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolQuantityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolQuantityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolDescriptionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolDescriptionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "lubricantCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "lubricantPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "workbookCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "workbookPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "purposeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "purposePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "procedureCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "procedurePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "possibleHazardsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "possibleHazardsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "additionalPPECC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "additionalPPEPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "specificationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "specificationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "contaminationControlsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "contaminationControlsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "otherInformationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "otherInformationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "correctiveActionsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "correctiveActionsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "isolationsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "isolationsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "controlsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "controlsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField1CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField1PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField2CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField2PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField3CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField3PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "makeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "makePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelTypeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelTypePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "developerNameCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "developerNamePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "roleCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "rolePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "tutorialCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "tutorialPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "changeRequiredCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "changeRequiredPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "benefitCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "benefitPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "classificationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "classificationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "priorityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "priorityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackStatusCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackStatusPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userReferenceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userReferencePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "positionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "positionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serviceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "servicePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serviceWorkOrderCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serviceWorkOrderPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pauseReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pauseReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "stopReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "stopReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "skipReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "skipReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectWorkOrderCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectWorkOrderPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectStatusCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectStatusPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectTypeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectTypePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingActionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingActionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingMatrixCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingMatrixPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "departmentCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "departmentPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetReferenceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetReferencePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetPlannerGroupCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetPlannerGroupPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetMainWorkCenterCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetMainWorkCenterPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serialNumberRangeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serialNumberRangePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "permitCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "permitPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "arrangementCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "arrangementPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "notificationNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "notificationNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "allowIndividualAssetModels": {
            "type": "boolean"
          },
          "allowFacilityBasedModels": {
            "type": "boolean"
          },
          "showLubricants": {
            "type": "boolean"
          },
          "showParts": {
            "type": "boolean"
          },
          "showOperatingMode": {
            "type": "boolean"
          },
          "showSystem": {
            "type": "boolean"
          },
          "showDefectParts": {
            "type": "boolean"
          },
          "showSerialNumberRange": {
            "type": "boolean"
          },
          "showServiceClientName": {
            "type": "boolean"
          },
          "showArrangements": {
            "type": "boolean"
          },
          "actionRequireds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAction"
            },
            "nullable": true
          },
          "changeStatusReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationChangeStatusReason"
            },
            "nullable": true
          },
          "defectRiskRatings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationDefectRiskRating"
            },
            "nullable": true
          },
          "defectStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationDefectStatus"
            },
            "nullable": true
          },
          "defectTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationDefectType"
            },
            "nullable": true
          },
          "feedbackClassifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationFeedbackClassification"
            },
            "nullable": true
          },
          "feedbackPriorities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationFeedbackPriority"
            },
            "nullable": true
          },
          "feedbackStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationFeedbackStatus"
            },
            "nullable": true
          },
          "missingPartToolReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationMissingPartToolReason"
            },
            "nullable": true
          },
          "modelStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationModelStatus"
            },
            "nullable": true
          },
          "modelTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationModelType"
            },
            "nullable": true
          },
          "operatingModes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationOperatingMode"
            },
            "nullable": true
          },
          "pauses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationPause"
            },
            "nullable": true
          },
          "positions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationPosition"
            },
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationRole"
            },
            "nullable": true
          },
          "skipTaskReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationSkipTaskReason"
            },
            "nullable": true
          },
          "stopReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationStopReason"
            },
            "nullable": true
          },
          "cmEditReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationCMEditReason"
            },
            "nullable": true
          },
          "systems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationSystem"
            },
            "nullable": true
          },
          "siteApps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SiteApp"
            },
            "nullable": true
          },
          "defaultDefectStatus": {
            "$ref": "#/components/schemas/ApplicationDefectStatus"
          },
          "defaultDefectStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackClassification": {
            "$ref": "#/components/schemas/ApplicationFeedbackClassification"
          },
          "defaultFeedbackClassificationID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackPriority": {
            "$ref": "#/components/schemas/ApplicationFeedbackPriority"
          },
          "defaultFeedbackPriorityID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackStatus": {
            "$ref": "#/components/schemas/ApplicationFeedbackStatus"
          },
          "defaultFeedbackStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultModelStatus": {
            "$ref": "#/components/schemas/ApplicationModelStatus"
          },
          "defaultModelStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultOperatingMode": {
            "$ref": "#/components/schemas/ApplicationOperatingMode"
          },
          "defaultOperatingModeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultSafetyCriticalDefectRiskRating": {
            "$ref": "#/components/schemas/ApplicationDefectRiskRating"
          },
          "defaultSafetyCriticalDefectRiskRatingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "logoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "navigationLogoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "smallLogoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "mobileWhiteAppLogoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "mobileSmallWhiteAppLogoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "watermarkURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApplicationAction": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationActionPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the application action (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationCMEditReason": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ApplicationCMEditReasonPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the CM edit reason (maximum length: 100 characters)",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationCMEditReasonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the CM edit reason (maximum length: 100 characters)",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationChangeStatusReason": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ApplicationChangeStatusReasonPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the status change reason (maximum length: 50 characters)",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationChangeStatusReasonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationDefectRiskRating": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "action": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApplicationDefectRiskRatingPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the defect risk rating (maximum length: 50 characters)",
            "format": "json"
          },
          "action": {
            "type": "string",
            "description": "The action associated with the defect risk rating",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApplicationDefectRiskRatingRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "action": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApplicationDefectStatus": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationDefectStatusPostRequest": {
        "required": [
          "applicationID",
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the defect status (maximum length: 50 characters)",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The type of defect status (single character)\nO - Outstanding\nC-  Complete",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationDefectStatusRequest": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationDefectType": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationDefectTypePostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the defect type (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationDefectTypeRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationFeedbackClassification": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationFeedbackClassificationPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the feedback classification (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationFeedbackClassificationRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationFeedbackPriority": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationFeedbackPriorityPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the feedback priority (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationFeedbackPriorityRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationFeedbackStatus": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationFeedbackStatusPostRequest": {
        "required": [
          "applicationID",
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application for which feedback status is being submitted.",
            "format": "int32",
            "example": 123
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name associated with the feedback status.",
            "format": "json",
            "example": "Completed Maintenance"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The type of feedback status being submitted, represented as a single character.\nAcceptable values are 'C' for Complete and 'O' for Outstanding.",
            "format": "json",
            "example": "C"
          }
        },
        "additionalProperties": false,
        "description": "Request model for submitting feedback status for an application."
      },
      "ApplicationFeedbackStatusRequest": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationMissingPartToolReason": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ApplicationMissingPartToolReasonPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the missing part/tool reason (maximum length: 50 characters)",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationMissingPartToolReasonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationModelStatus": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "publish": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ApplicationModelStatusPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the model status (maximum length: 50 characters)",
            "format": "json"
          },
          "publish": {
            "type": "boolean",
            "description": "Indicates whether the model status should be published"
          }
        },
        "additionalProperties": false
      },
      "ApplicationModelStatusRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "publish": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ApplicationModelType": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationModelTypePostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the model type (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationModelTypeRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationOperatingMode": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationOperatingModePostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the operating mode (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationOperatingModeRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationPause": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          },
          "pauseSubcategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationPauseSubcategory"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApplicationPausePostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the pause category (maximum length: 50 characters)",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          },
          "pauseSubcategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationPauseSubcategoryPostRequest"
            },
            "description": "Collection of pause subcategories associated with this pause category",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApplicationPauseRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationPauseSubcategory": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "applicationPause": {
            "$ref": "#/components/schemas/ApplicationPause"
          },
          "applicationPauseID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationPauseSubcategoryPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationPauseID": {
            "type": "integer",
            "description": "The unique identifier of the parent pause category",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the pause subcategory (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationPauseSubcategoryRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationPosition": {
        "required": [
          "analyticsAccess",
          "assetAccess",
          "defaultPage",
          "defectAccess",
          "feedbackAccess",
          "modelAccess",
          "name",
          "noticeboardAccess",
          "serviceAccess",
          "settingsAccess",
          "userAccess"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "noticeboardAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "settingsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serviceAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "analyticsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "allowPublish": {
            "type": "boolean"
          },
          "defaultPage": {
            "$ref": "#/components/schemas/DefaultPageType"
          }
        },
        "additionalProperties": false
      },
      "ApplicationPositionPostRequest": {
        "required": [
          "analyticsAccess",
          "applicationID",
          "assetAccess",
          "defaultPage",
          "defectAccess",
          "feedbackAccess",
          "modelAccess",
          "name",
          "noticeboardAccess",
          "serviceAccess",
          "settingsAccess",
          "userAccess"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the position (maximum length: 50 characters)",
            "format": "json"
          },
          "modelAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for model functionality. Options:\nF - Full Access\nE - Edit\nR - Read Only\nN - No Access",
            "format": "json"
          },
          "noticeboardAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for noticeboard functionality. Options:\nF - Full Access\nE - Edit\nR - Read Only\nN - No Access",
            "format": "json"
          },
          "feedbackAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for feedback functionality. Options:\nF - Full Access\nE - Edit\nR - Read Only\nN - No Access",
            "format": "json"
          },
          "userAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for user management functionality. Options:\nF - Full Access\nE - Edit\nR - Read Only\nN - No Access",
            "format": "json"
          },
          "settingsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for settings functionality. Options:\nF - Full Access\nE - Edit\nR - Read Only\nN - No Access",
            "format": "json"
          },
          "serviceAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for service functionality. Options:\nF - Full Access\nE - Edit\nR - Read Only\nN - No Access",
            "format": "json"
          },
          "defectAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for defect management functionality. Options:\nF - Full Access\nE - Edit\nR - Read Only\nN - No Access",
            "format": "json"
          },
          "analyticsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for analytics functionality. Options:\nF - Full Access\nE - Edit\nR - Read Only\nN - No Access",
            "format": "json"
          },
          "assetAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for asset management functionality. Options:\nF - Full Access\nE - Edit\nR - Read Only\nN - No Access",
            "format": "json"
          },
          "allowPublish": {
            "type": "boolean",
            "description": "Indicates whether the position has permission to publish content"
          },
          "defaultPage": {
            "$ref": "#/components/schemas/DefaultPageType"
          }
        },
        "additionalProperties": false
      },
      "ApplicationPositionRequest": {
        "required": [
          "analyticsAccess",
          "assetAccess",
          "defaultPage",
          "defectAccess",
          "feedbackAccess",
          "modelAccess",
          "name",
          "noticeboardAccess",
          "serviceAccess",
          "settingsAccess",
          "userAccess"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "noticeboardAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "settingsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serviceAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "analyticsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "allowPublish": {
            "type": "boolean"
          },
          "defaultPage": {
            "$ref": "#/components/schemas/DefaultPageType"
          }
        },
        "additionalProperties": false
      },
      "ApplicationPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the application (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationRequest": {
        "required": [
          "alertColor",
          "arrangementCC",
          "arrangementPluralCC",
          "color",
          "name",
          "notificationNumberCC",
          "notificationNumberPluralCC",
          "permitCC",
          "permitPluralCC",
          "serialNumberRangeCC",
          "serialNumberRangePluralCC"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "logoKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "navigationLogoKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "logoFilename": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "smallLogoKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "smallLogoFilename": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "mobileSmallWhiteAppLogoKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "mobileWhiteAppLogoKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "watermarkKey": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "color": {
            "maxLength": 6,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "alertColor": {
            "maxLength": 6,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "purpose": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isLogoTrademarked": {
            "type": "boolean"
          },
          "url": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defaultModelStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultDefectStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackClassificationID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackPriorityID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultOperatingModeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultSafetyCriticalDefectRiskRatingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "modelTemplateCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelTemplatePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "projectNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "projectNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "locationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "locationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stageCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stagePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "zoneCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "zonePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "intervalCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "intervalPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskListNoCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskListNoPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "questionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "questionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "actionRequiredCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "actionRequiredPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "operatingModeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "operatingModePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "systemCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "systemPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "safetyCriticalCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "safetyCriticalPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partQuantityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partQuantityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partNameCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partNamePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partDescriptionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partDescriptionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partStockNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partStockNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolQuantityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolQuantityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolDescriptionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolDescriptionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "lubricantCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "lubricantPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "workbookCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "workbookPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "purposeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "purposePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "procedureCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "procedurePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "possibleHazardsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "possibleHazardsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "additionalPPECC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "additionalPPEPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "specificationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "specificationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "contaminationControlsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "contaminationControlsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "otherInformationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "otherInformationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "correctiveActionsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "correctiveActionsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isolationsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isolationsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "controlsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "controlsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField1CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField1PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField2CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField2PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField3CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField3PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "makeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "makePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelTypeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelTypePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "developerNameCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "developerNamePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "roleCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "rolePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "tutorialCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "tutorialPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "changeRequiredCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "changeRequiredPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "benefitCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "benefitPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "classificationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "classificationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "priorityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "priorityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackStatusCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackStatusPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userReferenceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userReferencePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "positionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "positionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "servicePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceWorkOrderCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceWorkOrderPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "pauseReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "pauseReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stopReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stopReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "skipReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "skipReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectWorkOrderCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectWorkOrderPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectStatusCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectStatusPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectTypeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectTypePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "typeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "typePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingActionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingActionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingMatrixCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingMatrixPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "departmentCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "departmentPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetReferenceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetReferencePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetPlannerGroupCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetPlannerGroupPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetMainWorkCenterCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetMainWorkCenterPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serialNumberRangeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serialNumberRangePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "permitCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "permitPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "arrangementCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "arrangementPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "notificationNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "notificationNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "allowIndividualAssetModels": {
            "type": "boolean"
          },
          "allowFacilityBasedModels": {
            "type": "boolean"
          },
          "showLocations": {
            "type": "boolean"
          },
          "showLubricants": {
            "type": "boolean"
          },
          "showParts": {
            "type": "boolean"
          },
          "showOperatingMode": {
            "type": "boolean"
          },
          "showSystem": {
            "type": "boolean"
          },
          "showDefectParts": {
            "type": "boolean"
          },
          "showSerialNumberRange": {
            "type": "boolean"
          },
          "showServiceClientName": {
            "type": "boolean"
          },
          "showArrangements": {
            "type": "boolean"
          },
          "allowRegisterAssetsForServices": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ApplicationRole": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "canRegisterDefects": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ApplicationRolePostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the role (maximum length: 50 characters)",
            "format": "json"
          },
          "canRegisterDefects": {
            "type": "boolean",
            "description": "Indicates whether users with this role can register defects"
          }
        },
        "additionalProperties": false
      },
      "ApplicationRoleRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "canRegisterDefects": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ApplicationSkipTaskReason": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ApplicationSkipTaskReasonPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the skip task reason (maximum length: 50 characters)",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationSkipTaskReasonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationStopReason": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ApplicationStopReasonPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the stop reason (maximum length: 50 characters)",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationStopReasonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ApplicationSystem": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationSystemPostRequest": {
        "required": [
          "applicationID",
          "name"
        ],
        "type": "object",
        "properties": {
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the system (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ApplicationSystemRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "AuditHistoryFilterContext": {
        "type": "object",
        "properties": {
          "fromDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "toDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "entityTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "actions": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "userIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AuditRestoreRequest": {
        "type": "object",
        "properties": {
          "entityType": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "changeStatusReasonId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherReason": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "confirmDuplicate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "AuditSearchPostRequest": {
        "type": "object",
        "properties": {
          "fromDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "toDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "entityTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "actions": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "userIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sortField": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "sortOrder": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AuditTable": {
        "enum": [
          "0 - Application",
          "1 - ApplicationModelStatus",
          "2 - ApplicationPause",
          "3 - ApplicationPauseSubcategory",
          "4 - ApplicationPosition",
          "5 - ApplicationActionRequired",
          "6 - ApplicationModelType",
          "7 - ApplicationSystem",
          "8 - ApplicationOperatingMode",
          "9 - ApplicationRole",
          "10 - ApplicationDefectType",
          "11 - ApplicationDefectStatus",
          "12 - ApplicationDefectRiskRating",
          "13 - ApplicationFeedbackStatus",
          "14 - ApplicationFeedbackPriority",
          "15 - ApplicationFeedbackClassification",
          "16 - ApplicationMissingPartToolReason",
          "17 - ApplicationSkipTaskReason",
          "18 - ApplicationStopReason",
          "19 - ApplicationChangeStatusReason",
          "20 - User",
          "21 - Client",
          "22 - ClientNote",
          "23 - ClientApplication",
          "24 - ClientDocument",
          "25 - Region",
          "26 - Site",
          "28 - SiteDepartment",
          "29 - SiteAsset",
          "30 - SiteApp",
          "31 - Pause",
          "32 - PauseSubcategory",
          "33 - MissingPartToolReason",
          "34 - SiteAssetReference",
          "35 - Report",
          "36 - SkipTaskReason",
          "37 - StopReason",
          "38 - ChangeStatusReason",
          "39 - ModelStatus",
          "40 - ModelType",
          "41 - Action",
          "42 - System",
          "43 - OperatingMode",
          "44 - Lubricant",
          "45 - Role",
          "46 - Position",
          "47 - DefectRiskRating",
          "48 - DefectStatus",
          "49 - DefectType",
          "50 - FeedbackClassification",
          "51 - FeedbackPriority",
          "52 - FeedbackStatus",
          "53 - SiteAppKeyContact",
          "54 - ClientUser",
          "55 - ClientUserSite",
          "56 - ClientUserSiteApp",
          "57 - ClientUserNote",
          "58 - ClientUserSiteAppServiceDepartment",
          "59 - ClientUserSiteAppServiceRole",
          "60 - Model",
          "61 - ModelVersion",
          "62 - ModelDocument",
          "63 - ModelNote",
          "64 - ModelAsset",
          "65 - ModelVersionStage",
          "66 - ModelVersionZone",
          "67 - ModelVersionInterval",
          "68 - ModelVersionRole",
          "69 - ModelVersionQuestion",
          "70 - ModelVersionTask",
          "71 - ModelIntervalTaskListNo",
          "72 - ModelVersionQuestionRole",
          "73 - ModelVersionIntervalInclude",
          "74 - ModelVersionQuestionOption",
          "75 - ModelTaskNote",
          "76 - ModelVersionTaskStage",
          "77 - ModelVersionTaskZone",
          "78 - ModelVersionTaskRole",
          "79 - ModelVersionTaskInterval",
          "80 - ModelVersionTaskPart",
          "81 - ModelVersionTaskTool",
          "82 - ModelVersionTaskPermit",
          "83 - ModelVersionTaskImage",
          "84 - ModelVersionTaskDocument",
          "85 - ModelVersionTaskQuestion",
          "86 - ModelVersionTaskQuestionOption",
          "87 - ModelImport",
          "88 - ModelImportAction",
          "89 - ModelImportLubricant",
          "90 - ModelImportOperatingMode",
          "91 - ModelImportSystem",
          "92 - ModelImportRole",
          "94 - Service",
          "95 - ClientUserSiteAppServiceModel",
          "96 - ServiceTask",
          "97 - ServiceSession",
          "98 - ServiceTaskQuestion",
          "99 - ServiceTaskQuestionOption",
          "100 - ServiceSessionQuestion",
          "101 - ServiceSessionQuestionOption",
          "102 - ServiceNote",
          "103 - ServiceMissingPartTool",
          "104 - ServicePause",
          "105 - ServiceStatusChange",
          "106 - Noticeboard",
          "107 - Feedback",
          "108 - FeedbackNote",
          "109 - FeedbackImage",
          "110 - Defect",
          "111 - DefectNote",
          "112 - DefectImage",
          "113 - DefectPart",
          "114 - ModelVersionDepartment",
          "115 - NoticeboardDepartment",
          "116 - ModelVersionArrangement",
          "117 - ModelVersionTaskArrangement",
          "118 - MobileError",
          "119 - IntegrationInstance",
          "120 - CMEditReason",
          "121 - ApplicationCMEditReason",
          "122 - EntityActivity",
          "123 - ReadReceipt",
          "124 - SiteAssetRegister",
          "125 - SavedFilter",
          "126 - ReportSubscription",
          "127 - ReportSubscriptionRun",
          "128 - AIConfiguration",
          "129 - AIGlossary",
          "130 - FeedbackDocument",
          "131 - ProductUpdate",
          "132 - MaintenanceBanner",
          "133 - AppVersionPolicy",
          "134 - LocalisationOverride",
          "135 - SiteAppLocaleSettings",
          "136 - UserLocalePreference",
          "137 - ContentTranslation",
          "138 - ModelVersionTranslationLanguage",
          "139 - ContentTranslationRun",
          "140 - SiteAppModelExpirySettings"
        ],
        "type": "integer",
        "format": "int32"
      },
      "AuditType": {
        "enum": [
          "0 - None",
          "1 - Create",
          "2 - Update",
          "3 - Delete",
          "4 - Read"
        ],
        "type": "integer",
        "format": "int32"
      },
      "BadRequest400Response": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "type of the error.",
            "format": "json",
            "nullable": true,
            "example": "https://tools.ietf.org/html/rfc7231#section-6.5.4"
          },
          "title": {
            "type": "string",
            "description": "title of the error.",
            "format": "json",
            "nullable": true,
            "example": "Bad Request"
          },
          "status": {
            "type": "integer",
            "description": "HTTP status code associated with the error.",
            "format": "int32",
            "example": 400
          },
          "message": {
            "type": "string",
            "description": "error message.",
            "format": "json",
            "nullable": true,
            "example": "error message"
          },
          "traceId": {
            "type": "string",
            "description": "trace ID for tracking purposes.",
            "format": "json",
            "nullable": true,
            "example": "00-ac9887318c53f53ab4e77b9a771515fd-e3926082725a39b8-00"
          }
        },
        "additionalProperties": false
      },
      "BannerTranslationSaveRequest": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "value": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "translatedBy": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BatchCorrectItem": {
        "type": "object",
        "properties": {
          "bucketPath": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isThumb": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "BulkImportResult": {
        "type": "object",
        "properties": {
          "imported": {
            "type": "integer",
            "format": "int32"
          },
          "replaced": {
            "type": "integer",
            "format": "int32"
          },
          "fresh": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "CMAlertConfigRequest": {
        "required": [
          "modelVersionTaskQuestionID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskQuestionID": {
            "type": "integer",
            "description": "A ModelVersionTaskQuestion ID identifying the question (any version). Used to resolve the\nModel and the question group so the active and development versions can both be updated.",
            "format": "int32"
          },
          "enableConditionMonitoringAlert": {
            "type": "boolean",
            "description": "Indicates whether the Condition Monitoring data alert trigger is enabled."
          },
          "alertThresholdMode": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The alert threshold mode (single character).\nP - Percentage change relative to the previous reading\nA - Absolute numeric change relative to the previous reading",
            "format": "json",
            "nullable": true
          },
          "alertAboveThreshold": {
            "type": "number",
            "description": "The above threshold that fires the alert (nullable).",
            "format": "float",
            "nullable": true
          },
          "alertBelowThreshold": {
            "type": "number",
            "description": "The below threshold that fires the alert (nullable).",
            "format": "float",
            "nullable": true
          },
          "alertMessage": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "The custom alert message shown when the trigger fires (maximum length: 1000 characters).",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for editing the Condition Monitoring alert trigger configuration of a numeric question.\nThe change is applied to the matching question on both the active and the in-development model version."
      },
      "CMDataEditRequest": {
        "required": [
          "cmEditReasonID",
          "valueNumeric"
        ],
        "type": "object",
        "properties": {
          "valueNumeric": {
            "type": "number",
            "description": "The new numeric value for the CM measurement.",
            "format": "double",
            "example": 16.5
          },
          "cmEditReasonID": {
            "type": "integer",
            "description": "The ID of the edit reason from the CMEditReasons lookup.",
            "format": "int32",
            "example": 1
          },
          "otherReason": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "Additional explanation for the edit. Required when the selected edit reason has RequiresExplanation set.",
            "format": "json",
            "nullable": true,
            "example": "Calibration certificate showed different baseline after annual review"
          }
        },
        "additionalProperties": false,
        "description": "Request model for editing a CM data point value."
      },
      "CMEditReason": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "CMEditReasonPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "CMEditReasonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ChangeStatusReason": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ChangeStatusReasonPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the change status reason (maximum length: 50 characters)",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ChangeStatusReasonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "ChipType": {
        "enum": [
          "0 - Undefined",
          "1 - DefectStatusType",
          "2 - DefectStatusID",
          "3 - SiteDepartmentID",
          "4 - DefectRiskRatingID",
          "5 - ModelID",
          "6 - DefectSystemID",
          "7 - DefectTypeID",
          "8 - NotificationRaised",
          "9 - SiteAssetID",
          "10 - DefectWorkOrder",
          "11 - ServiceWorkOrder",
          "12 - ModelTypeID",
          "13 - UserID",
          "14 - Status",
          "15 - Interval",
          "16 - Role",
          "17 - Zone",
          "18 - Stage",
          "19 - Arrangement"
        ],
        "type": "integer",
        "format": "int32"
      },
      "Client": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "licenseType": {
            "$ref": "#/components/schemas/LicenseType"
          },
          "licenses": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "logoKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "shareModels": {
            "$ref": "#/components/schemas/ShareModelType"
          },
          "canAddSiteApplications": {
            "type": "boolean"
          },
          "isRegionalPartner": {
            "type": "boolean"
          },
          "clientUsers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUser"
            },
            "nullable": true
          },
          "logoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "logoFilename": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ClientApplicationPostRequest": {
        "required": [
          "clientID"
        ],
        "type": "object",
        "properties": {
          "clientID": {
            "type": "integer",
            "description": "The unique identifier of the client",
            "format": "int32"
          },
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application",
            "format": "int32"
          },
          "isActive": {
            "type": "boolean",
            "description": "Indicates whether the client application association is currently active"
          }
        },
        "additionalProperties": false
      },
      "ClientApplicationRequest": {
        "type": "object",
        "properties": {
          "isActive": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ClientDocumentPostRequest": {
        "required": [
          "clientID",
          "documentKey"
        ],
        "type": "object",
        "properties": {
          "clientID": {
            "type": "integer",
            "description": "The unique identifier of the client",
            "format": "int32"
          },
          "documentKey": {
            "minLength": 1,
            "type": "string",
            "description": "The unique key identifying the document",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ClientNotePostRequest": {
        "required": [
          "clientID",
          "note"
        ],
        "type": "object",
        "properties": {
          "clientID": {
            "type": "integer",
            "description": "The unique identifier of the client",
            "format": "int32"
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "description": "The content of the note associated with the client",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ClientPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the client (maximum length: 100 characters)",
            "format": "json"
          },
          "licenseType": {
            "$ref": "#/components/schemas/LicenseType"
          },
          "licenses": {
            "type": "integer",
            "description": "The number of licenses allocated to the client (nullable)",
            "format": "int32",
            "nullable": true
          },
          "logoKey": {
            "type": "string",
            "description": "The unique key identifying the client's logo image",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "licenseType": {
            "$ref": "#/components/schemas/LicenseType"
          },
          "licenses": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "logoKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "shareModels": {
            "$ref": "#/components/schemas/ShareModelType"
          },
          "canAddSiteApplications": {
            "type": "boolean"
          },
          "isRegionalPartner": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ClientUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/User"
          },
          "userID": {
            "type": "integer",
            "format": "int32"
          },
          "client": {
            "$ref": "#/components/schemas/Client"
          },
          "clientID": {
            "type": "integer",
            "format": "int32"
          },
          "isAdmin": {
            "type": "boolean"
          },
          "active": {
            "type": "boolean"
          },
          "externalReference": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientUserNotePostRequest": {
        "required": [
          "clientUserID",
          "note"
        ],
        "type": "object",
        "properties": {
          "clientUserID": {
            "type": "integer",
            "description": "The unique identifier of the client user",
            "format": "int32"
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "description": "The content of the note associated with the client user",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ClientUserPostRequest": {
        "required": [
          "clientID",
          "email",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "clientID": {
            "type": "integer",
            "description": "The unique identifier of the client",
            "format": "int32"
          },
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "The email address of the client user (must be a valid email format)",
            "format": "email"
          },
          "firstName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The first name of the client user (maximum length: 50 characters)",
            "format": "json"
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The last name of the client user (maximum length: 50 characters)",
            "format": "json"
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference identifier for the client user",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientUserRequest": {
        "type": "object",
        "properties": {
          "isAdmin": {
            "type": "boolean"
          },
          "active": {
            "type": "boolean"
          },
          "externalReference": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientUserSite": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clientUser": {
            "$ref": "#/components/schemas/ClientUser"
          },
          "clientUserID": {
            "type": "integer",
            "format": "int32"
          },
          "site": {
            "$ref": "#/components/schemas/Site"
          },
          "siteID": {
            "type": "integer",
            "format": "int32"
          },
          "siteDepartment": {
            "$ref": "#/components/schemas/SiteDepartment"
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "preferredLocale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "clientUserSiteApps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUserSiteApp"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteApp": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clientUserSite": {
            "$ref": "#/components/schemas/ClientUserSite"
          },
          "clientUserSiteID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "position": {
            "$ref": "#/components/schemas/Position"
          },
          "positionID": {
            "type": "integer",
            "format": "int32"
          },
          "allowAllModels": {
            "type": "boolean"
          },
          "active": {
            "type": "boolean"
          },
          "serviceDepartments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUserSiteAppServiceDepartment"
            },
            "nullable": true
          },
          "serviceModels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUserSiteAppServiceModel"
            },
            "nullable": true
          },
          "serviceRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUserSiteAppServiceRole"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteAppAddUserPostRequest": {
        "required": [
          "email",
          "firstName",
          "lastName",
          "positionID"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "The email address of the user (must be a valid email format)",
            "format": "email"
          },
          "firstName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The first name of the user (maximum length: 50 characters)",
            "format": "json"
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The last name of the user (maximum length: 50 characters)",
            "format": "json"
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference identifier for the user",
            "format": "json",
            "nullable": true
          },
          "departmentID": {
            "type": "integer",
            "description": "The unique identifier of the department (nullable)",
            "format": "int32",
            "nullable": true
          },
          "positionID": {
            "type": "integer",
            "description": "The unique identifier of the position",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteAppHistoryResponse": {
        "type": "object",
        "properties": {
          "keyValue": {
            "type": "integer",
            "format": "int32"
          },
          "dateTime": {
            "type": "string",
            "format": "date-time"
          },
          "userID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "user": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "auditType": {
            "$ref": "#/components/schemas/AuditType"
          },
          "table": {
            "$ref": "#/components/schemas/AuditTable"
          },
          "propertyName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "oldValue": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "newValue": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "oldID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "newID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "refTable": {
            "$ref": "#/components/schemas/AuditTable"
          },
          "name": {
            "type": "string",
            "description": "Resolved display name for Department/Role/Model rows; null for ClientUserSiteApp rows.",
            "format": "json",
            "nullable": true
          },
          "modelName": {
            "type": "string",
            "description": "Model rows only: the assigned model's ModelName, alongside EMI3APIServer.Models.Response.ClientUserSiteAppHistoryResponse.Name (the ModelVersion's Name).",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One row of the ClientUserSiteApp \"History\" sidebar (`GET /api/history/clientUserSiteApp/{id}`).\nCovers changes to the record itself plus its Department/Role/Model assignments (EMI3-1465)."
      },
      "ClientUserSiteAppPostRequest": {
        "required": [
          "clientUserSiteID"
        ],
        "type": "object",
        "properties": {
          "clientUserSiteID": {
            "type": "integer",
            "description": "The unique identifier of the client user site",
            "format": "int32"
          },
          "positionID": {
            "type": "integer",
            "description": "The unique identifier of the position assigned to the user",
            "format": "int32"
          },
          "allowAllModels": {
            "type": "boolean",
            "description": "Indicates whether the user has access to all models in the application"
          },
          "siteAppID": {
            "type": "integer",
            "description": "The unique identifier of the site application",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteAppRequest": {
        "type": "object",
        "properties": {
          "positionID": {
            "type": "integer",
            "format": "int32"
          },
          "allowAllModels": {
            "type": "boolean"
          },
          "active": {
            "type": "boolean"
          },
          "externalReference": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteAppServiceDepartment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clientUserSiteApp": {
            "$ref": "#/components/schemas/ClientUserSiteApp"
          },
          "clientUserSiteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "siteDepartment": {
            "$ref": "#/components/schemas/SiteDepartment"
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteAppServiceDepartmentPostRequest": {
        "required": [
          "clientUserSiteAppID",
          "siteDepartmentID"
        ],
        "type": "object",
        "properties": {
          "clientUserSiteAppID": {
            "type": "integer",
            "description": "The unique identifier of the client user site application",
            "format": "int32"
          },
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the site department",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteAppServiceModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clientUserSiteApp": {
            "$ref": "#/components/schemas/ClientUserSiteApp"
          },
          "clientUserSiteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "model": {
            "$ref": "#/components/schemas/Model"
          },
          "modelID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteAppServiceModelPostRequest": {
        "required": [
          "clientUserSiteAppID",
          "modelID"
        ],
        "type": "object",
        "properties": {
          "clientUserSiteAppID": {
            "type": "integer",
            "description": "The unique identifier of the client user site application",
            "format": "int32"
          },
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the model",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteAppServiceRole": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clientUserSiteApp": {
            "$ref": "#/components/schemas/ClientUserSiteApp"
          },
          "clientUserSiteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "role": {
            "$ref": "#/components/schemas/Role"
          },
          "roleID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteAppServiceRolePostRequest": {
        "required": [
          "clientUserSiteAppID",
          "roleID"
        ],
        "type": "object",
        "properties": {
          "clientUserSiteAppID": {
            "type": "integer",
            "description": "The unique identifier of the client user site application",
            "format": "int32"
          },
          "roleID": {
            "type": "integer",
            "description": "The unique identifier of the role",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ClientUserSitePostRequest": {
        "required": [
          "clientID",
          "clientUserID",
          "siteID"
        ],
        "type": "object",
        "properties": {
          "clientUserID": {
            "type": "integer",
            "description": "The unique identifier of the client user",
            "format": "int32"
          },
          "siteID": {
            "type": "integer",
            "description": "The unique identifier of the site",
            "format": "int32"
          },
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the site department (nullable)",
            "format": "int32",
            "nullable": true
          },
          "clientID": {
            "type": "integer",
            "description": "The unique identifier of the client",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ClientUserSiteRequest": {
        "type": "object",
        "properties": {
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ConditionMonitoringDataPoint": {
        "type": "object",
        "properties": {
          "serviceTaskQuestionID": {
            "type": "integer",
            "description": "The ServiceTaskQuestion ID for this data point. Used for editing.",
            "format": "int32",
            "example": 12345
          },
          "serviceID": {
            "type": "integer",
            "description": "The ID of the service this data point belongs to.",
            "format": "int32",
            "example": 9876
          },
          "serviceWorkOrder": {
            "type": "string",
            "description": "The work order number of the service this data point belongs to.",
            "format": "json",
            "nullable": true,
            "example": "WO-2025-001"
          },
          "siteAssetName": {
            "type": "string",
            "description": "The name of the site asset.",
            "format": "json",
            "nullable": true,
            "example": "HTK0318"
          },
          "siteAssetReference": {
            "type": "string",
            "description": "The site asset reference information.",
            "format": "json",
            "nullable": true
          },
          "date": {
            "type": "string",
            "description": "The date of the inspection.",
            "format": "date-time",
            "example": "2025-08-04T01:12:57"
          },
          "valueNumeric": {
            "type": "number",
            "description": "The numeric value associated with the condition monitoring data.",
            "format": "double",
            "example": 6
          },
          "originalValueNumeric": {
            "type": "number",
            "description": "The original numeric value before any edits. Null if never edited.",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "taskQuestionImageURL": {
            "type": "string",
            "description": "The full image URL captured for this condition monitoring data point, if present.",
            "format": "json",
            "nullable": true
          },
          "taskQuestionThumbnailURL": {
            "type": "string",
            "description": "The thumbnail image URL captured for this condition monitoring data point, if present.",
            "format": "json",
            "nullable": true
          },
          "defects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetConditionMonitoringDataDefect"
            },
            "description": "A list of defects identified during the condition monitoring.",
            "nullable": true
          },
          "isEdited": {
            "type": "boolean",
            "description": "Indicates whether this data point has been edited after initial capture.",
            "example": false
          },
          "modifiedByUserName": {
            "type": "string",
            "description": "The name of the user who last modified this data point (if edited).",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          },
          "modifiedDateTime": {
            "type": "string",
            "description": "When this data point was last modified (if edited).",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-15T14:32:00"
          },
          "editReasonName": {
            "type": "string",
            "description": "The edit reason name (if edited).",
            "format": "json",
            "nullable": true,
            "example": "Decimal Point Error"
          },
          "editOtherReason": {
            "type": "string",
            "description": "The explanation entered for the edit reason, when the reason requires one (if edited).",
            "format": "json",
            "nullable": true,
            "example": "Calibration certificate showed different baseline"
          },
          "isDefectCancelled": {
            "type": "boolean",
            "description": "True when the user was prompted to register a defect (value outside min/max) and chose to cancel.\nWho cancelled and when are indicated by ModifiedByUserName and ModifiedDateTime.",
            "example": false
          },
          "alertTriggered": {
            "type": "boolean",
            "description": "True when this reading crossed a Condition Monitoring alert threshold and prompted the user.",
            "example": false
          },
          "alertDecision": {
            "type": "string",
            "description": "The user's decision on the triggered alert: \"Acknowledge\" or \"Cancel\".\nWho decided and when are indicated by ModifiedByUserName and ModifiedDateTime.",
            "format": "json",
            "nullable": true,
            "example": "Acknowledge"
          }
        },
        "additionalProperties": false,
        "description": "Represents a single condition monitoring data point for a site asset."
      },
      "ConditionMonitoringHistoricalAsset": {
        "type": "object",
        "properties": {
          "siteAssetRegisterID": {
            "type": "integer",
            "format": "int32"
          },
          "assetNumber": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetReferenceName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "description": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isInactive": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ConditionMonitoringQuestionMetadata": {
        "type": "object",
        "properties": {
          "minValue": {
            "type": "number",
            "description": "The minimum acceptable value for the question.",
            "format": "float",
            "nullable": true,
            "example": 0
          },
          "maxValue": {
            "type": "number",
            "description": "The maximum acceptable value for the question.",
            "format": "float",
            "nullable": true,
            "example": 10
          }
        },
        "additionalProperties": false,
        "description": "Metadata about the condition monitoring question."
      },
      "ContentSourceSaveItem": {
        "required": [
          "entityType"
        ],
        "type": "object",
        "properties": {
          "entityType": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "entityID": {
            "type": "integer",
            "format": "int32"
          },
          "field": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "value": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContentSourceSaveRequest": {
        "required": [
          "items"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentSourceSaveItem"
            }
          }
        },
        "additionalProperties": false,
        "description": "Bulk update of definition source text (the primary-language values\nthemselves), used by the CSV import's Original column."
      },
      "ContentTranslateMissingRequest": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "types": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContentTranslationSaveItem": {
        "required": [
          "entityType"
        ],
        "type": "object",
        "properties": {
          "entityType": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "entityID": {
            "type": "integer",
            "format": "int32"
          },
          "field": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "Empty or whitespace removes the stored translation so readers fall back to the source text.",
            "format": "json",
            "nullable": true
          },
          "translatedBy": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "description": "\"AI\" for an unedited machine suggestion the user accepted, otherwise \"Human\".",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContentTranslationSaveRequest": {
        "required": [
          "items",
          "locale"
        ],
        "type": "object",
        "properties": {
          "locale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentTranslationSaveItem"
            }
          }
        },
        "additionalProperties": false
      },
      "CopyOverridesRequest": {
        "required": [
          "fromLocale",
          "toLocale"
        ],
        "type": "object",
        "properties": {
          "fromLocale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toLocale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "overwrite": {
            "type": "boolean",
            "description": "When false (default), keys the target locale already overrides are\nleft untouched; true replaces them with the source locale's terms."
          }
        },
        "additionalProperties": false
      },
      "CreateReportSubscriptionRequest": {
        "required": [
          "daysOfWeek",
          "filterContext",
          "reportType",
          "timeOfDay",
          "timezone"
        ],
        "type": "object",
        "properties": {
          "reportType": {
            "$ref": "#/components/schemas/ReportType"
          },
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "Friendly name; falls back to an auto-generated name when blank.",
            "format": "json",
            "nullable": true
          },
          "filterContext": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/JToken"
            },
            "description": "Raw filter JSON; shape depends on ReportType (see IFilterContextSerializer registered map)."
          },
          "filterSummary": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterSummaryItem"
            },
            "description": "Optional human-readable snapshot of filter selections captured at save time.",
            "nullable": true
          },
          "daysOfWeek": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DayOfWeek"
            },
            "description": "Days the subscription fires on. e.g. [\"Monday\",\"Thursday\"]."
          },
          "timeOfDay": {
            "type": "string",
            "format": "time"
          },
          "timezone": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "description": "IANA timezone, e.g. \"Australia/Sydney\". Captured at subscribe-time.",
            "format": "json"
          },
          "deliveryEmail": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "description": "Override email; null falls back to the user's profile email at delivery.",
            "format": "email",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomCaption": {
        "type": "object",
        "properties": {
          "modelTemplate": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelTemplatePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "projectNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "projectNumberPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "location": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "locationPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stage": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stagePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "zone": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "zonePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "interval": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "intervalPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskListNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskListNoPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "question": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "questionPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "task": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "actionRequired": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "actionRequiredPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "operatingMode": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "operatingModePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "system": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "systemPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "safetyCritical": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "safetyCriticalPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "part": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partQuantity": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partQuantityPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partNamePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partDescription": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partDescriptionPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partStockNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partStockNumberPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "tool": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolQuantity": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolQuantityPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolDescription": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolDescriptionPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "lubricant": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "lubricantPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "workbook": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "workbookPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "purpose": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "purposePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "procedure": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "procedurePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "possibleHazards": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "possibleHazardsPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "additionalPPE": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "additionalPPEPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "specification": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "specificationPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "contaminationControls": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "contaminationControlsPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "otherInformation": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "otherInformationPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "correctiveActions": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "correctiveActionsPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isolations": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isolationsPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "controls": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "controlsPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField1": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField1Plural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField2": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField2Plural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField3": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField3Plural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "make": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "makePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "model": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelType": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelTypePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "developerName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "developerNamePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "role": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "rolePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "tutorial": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "tutorialPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedback": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "changeRequired": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "changeRequiredPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "benefit": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "benefitPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "classification": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "classificationPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "priority": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "priorityPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackStatus": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackStatusPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "user": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userReference": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userReferencePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "position": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "positionPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "service": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "servicePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceWorkOrder": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceWorkOrderPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "pauseReason": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "pauseReasonPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stopReason": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stopReasonPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "skipReason": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "skipReasonPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defect": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectWorkOrder": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectWorkOrderPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectStatus": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectStatusPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectType": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectTypePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "type": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "typePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRating": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingAction": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingActionPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingMatrix": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingMatrixPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "department": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "departmentPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "asset": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetReference": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetReferencePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetPlannerGroup": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetPlannerGroupPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetMainWorkCenter": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetMainWorkCenterPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetDescription": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetDescriptionPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceStatusScheduled": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceStatusInProgress": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceStatusCheckedOut": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceStatusStopped": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceStatusIncomplete": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceStatusComplete": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceStatusCompleteByPaper": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceStatusCancelled": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serialNumberRange": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serialNumberRangePlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "permit": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "permitPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "arrangement": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "arrangementPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "notificationNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "notificationNumberPlural": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DataModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the stage, zone, or task",
            "format": "int32",
            "example": 50
          },
          "name": {
            "type": "string",
            "description": "The descriptive name of the stage, zone, or task",
            "format": "json",
            "nullable": true,
            "example": "Pre Service Inspection"
          },
          "estimatedMinutes": {
            "type": "number",
            "description": "The planned duration in minutes",
            "format": "double",
            "example": 14.8
          },
          "actualMinutes": {
            "type": "number",
            "description": "The actual time spent in minutes",
            "format": "double",
            "example": 16.5
          },
          "pos": {
            "type": "number",
            "description": "The display position or sequence number",
            "format": "double",
            "example": 2816.0
          }
        },
        "additionalProperties": false
      },
      "DayOfWeek": {
        "enum": [
          "0 - Sunday",
          "1 - Monday",
          "2 - Tuesday",
          "3 - Wednesday",
          "4 - Thursday",
          "5 - Friday",
          "6 - Saturday"
        ],
        "type": "integer",
        "format": "int32"
      },
      "DefaultPageType": {
        "enum": [
          "0 - Models",
          "1 - Noticeboards",
          "2 - Feedback",
          "3 - Users",
          "4 - Services",
          "5 - Defects",
          "6 - Analytics"
        ],
        "type": "integer",
        "format": "int32"
      },
      "Defect": {
        "required": [
          "details"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "temporaryId": {
            "maxLength": 36,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/Model"
          },
          "modelID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionStage": {
            "$ref": "#/components/schemas/ModelVersionStage"
          },
          "modelVersionStageID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionZone": {
            "$ref": "#/components/schemas/ModelVersionZone"
          },
          "modelVersionZoneID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "service": {
            "$ref": "#/components/schemas/Service"
          },
          "serviceID": {
            "type": "integer",
            "format": "int32"
          },
          "siteDepartment": {
            "$ref": "#/components/schemas/SiteDepartment"
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "serviceTask": {
            "$ref": "#/components/schemas/ServiceTask"
          },
          "serviceTaskID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "serviceTaskQuestion": {
            "$ref": "#/components/schemas/ServiceTaskQuestion"
          },
          "serviceTaskQuestionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "siteAssetRegister": {
            "$ref": "#/components/schemas/SiteAssetRegister"
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defectRiskRating": {
            "$ref": "#/components/schemas/DefectRiskRating"
          },
          "defectRiskRatingID": {
            "type": "integer",
            "format": "int32"
          },
          "defectStatus": {
            "$ref": "#/components/schemas/DefectStatus"
          },
          "defectStatusID": {
            "type": "integer",
            "format": "int32"
          },
          "defectType": {
            "$ref": "#/components/schemas/DefectType"
          },
          "defectTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "details": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "translatedDetails": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "workOrder": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "audioKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "exported": {
            "type": "boolean"
          },
          "sapError": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "sapExportDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "audioURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "notes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DefectNote"
            },
            "nullable": true
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DefectImage"
            },
            "nullable": true
          },
          "parts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DefectPart"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DefectImage": {
        "required": [
          "imageKey",
          "thumbnailKey"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "defect": {
            "$ref": "#/components/schemas/Defect"
          },
          "defectID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "imageKey": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "thumbnailKey": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "temporaryId": {
            "maxLength": 36,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DefectImagesGetResponse": {
        "type": "object",
        "properties": {
          "defectID": {
            "type": "integer",
            "description": "The unique identifier of the defect.",
            "format": "int32",
            "example": 21
          },
          "imageKey": {
            "type": "string",
            "description": "The key for accessing the defect image.",
            "format": "json",
            "nullable": true,
            "example": "21/4fbfe58d-15b0-4f4f-adb7-a3632002b59e.JPG"
          },
          "thumbnailKey": {
            "type": "string",
            "description": "The key for accessing the thumbnail of the defect image.",
            "format": "json",
            "nullable": true,
            "example": "21/4fbfe58d-15b0-4f4f-adb7-a3632002b59e_thumb.JPG"
          },
          "imageURL": {
            "type": "string",
            "description": "The URL for accessing the defect image.",
            "format": "json",
            "nullable": true,
            "example": "https://example.com/images/21/4fbfe58d-15b0-4f4f-adb7-a3632002b59e.JPG"
          },
          "thumbnailURL": {
            "type": "string",
            "description": "The URL for accessing the thumbnail of the defect image.",
            "format": "json",
            "nullable": true,
            "example": "https://example.com/images/21/4fbfe58d-15b0-4f4f-adb7-a3632002b59e_thumb.JPG"
          },
          "id": {
            "type": "integer",
            "description": "The unique identifier for the image record.",
            "format": "int32",
            "example": 22
          }
        },
        "additionalProperties": false,
        "description": "Represents the response model for retrieving defect images and their associated metadata."
      },
      "DefectMarkReadRequest": {
        "required": [
          "serviceID"
        ],
        "type": "object",
        "properties": {
          "serviceID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "DefectModel": {
        "type": "object",
        "properties": {
          "number": {
            "type": "integer",
            "description": "The sequential number assigned to the defect",
            "format": "int32",
            "example": 4
          },
          "id": {
            "type": "integer",
            "description": "The unique identifier of the defect",
            "format": "int32",
            "example": 5
          },
          "defectRiskRatingName": {
            "type": "string",
            "description": "The severity rating of the defect",
            "format": "json",
            "nullable": true,
            "example": "High"
          },
          "defectTypeName": {
            "type": "string",
            "description": "The category or classification of the defect",
            "format": "json",
            "nullable": true,
            "example": "Structural Damage"
          },
          "defectStatusName": {
            "type": "string",
            "description": "The current status of the defect",
            "format": "json",
            "nullable": true,
            "example": "Outstanding"
          },
          "defectDetail": {
            "type": "string",
            "description": "Detailed description of the defect condition",
            "format": "json",
            "nullable": true,
            "example": "Structural crack detected in support beam requiring immediate attention"
          }
        },
        "additionalProperties": false
      },
      "DefectNote": {
        "required": [
          "note"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "defect": {
            "$ref": "#/components/schemas/Defect"
          },
          "defectID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "translatedNote": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "DefectNotePostRequest": {
        "required": [
          "defectID",
          "note"
        ],
        "type": "object",
        "properties": {
          "defectID": {
            "type": "integer",
            "description": "The unique identifier of the defect to which the note is associated.",
            "format": "int32",
            "example": 15
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "description": "The note providing additional information or comments about the defect.",
            "format": "json",
            "example": "Check zone B part 449 for wear and tear."
          }
        },
        "additionalProperties": false,
        "description": "Request model for submitting a note related to a defect."
      },
      "DefectNotesGet": {
        "type": "object",
        "properties": {
          "defectID": {
            "type": "integer",
            "description": "The unique identifier of the defect.",
            "format": "int32",
            "example": 22
          },
          "note": {
            "type": "string",
            "description": "The content of the defect note.",
            "format": "json",
            "nullable": true,
            "example": "Add notes with ease"
          },
          "date": {
            "type": "string",
            "description": "The date and time when the note was created.",
            "format": "date-time",
            "example": "2023-01-18T00:15:48.543274"
          },
          "name": {
            "type": "string",
            "description": "The name of the user who created the note.",
            "format": "json",
            "nullable": true,
            "example": "User, User"
          },
          "id": {
            "type": "integer",
            "description": "The unique identifier of the note.",
            "format": "int32",
            "example": 4
          }
        },
        "additionalProperties": false,
        "description": "Represents the response model for retrieving notes associated with a defect."
      },
      "DefectPart": {
        "required": [
          "name",
          "qty"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "defect": {
            "$ref": "#/components/schemas/Defect"
          },
          "defectID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "qty": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "description": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "source": {
            "$ref": "#/components/schemas/DefectPartSource"
          }
        },
        "additionalProperties": false
      },
      "DefectPartPostRequest": {
        "required": [
          "defectID",
          "name"
        ],
        "type": "object",
        "properties": {
          "defectID": {
            "type": "integer",
            "description": "The unique identifier of the defect",
            "format": "int32",
            "example": 49
          },
          "qty": {
            "type": "integer",
            "description": "The quantity of parts required",
            "format": "int32",
            "example": 3
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name or part number of the required part (maximum length: 100 characters)",
            "format": "json",
            "example": "ZX997"
          },
          "description": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "A description of the required part (maximum length: 100 characters)",
            "format": "json",
            "nullable": true,
            "example": "truck tank"
          }
        },
        "additionalProperties": false
      },
      "DefectPartRequest": {
        "type": "object",
        "properties": {
          "qty": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "description": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DefectPartSource": {
        "enum": [
          "0 - Manual",
          "1 - Csv",
          "2 - History"
        ],
        "type": "integer",
        "format": "int32"
      },
      "DefectPartsGetResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the part.",
            "format": "int32",
            "example": 8
          },
          "qty": {
            "type": "integer",
            "description": "The quantity of the part associated with the defect.",
            "format": "int32",
            "example": 12
          },
          "name": {
            "type": "string",
            "description": "The name of the part.",
            "format": "json",
            "nullable": true,
            "example": "3E3UU783"
          },
          "description": {
            "type": "string",
            "description": "A description of the part.",
            "format": "json",
            "nullable": true,
            "example": "Filter"
          },
          "source": {
            "$ref": "#/components/schemas/DefectPartSource"
          }
        },
        "additionalProperties": false,
        "description": "Represents the response model for retrieving parts associated with a defect."
      },
      "DefectPartsImportRequest": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "key": {
            "minLength": 1,
            "type": "string",
            "description": "S3 key of the uploaded CSV file",
            "format": "json"
          },
          "import": {
            "type": "boolean",
            "description": "When true, records are saved to the database; when false, a dry-run validation is performed"
          },
          "selectedIndices": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Zero-based indices of CSV rows to import. When absent or empty, all valid rows are imported.",
            "nullable": true
          },
          "manualRows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualDefectPartRow"
            },
            "description": "Manually entered rows to save alongside the selected CSV rows in the same transaction.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DefectPostPartRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "qty": {
            "type": "integer",
            "description": "The quantity of the part.",
            "format": "int32",
            "example": 4
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the part.",
            "format": "json",
            "example": "Part 44"
          },
          "description": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "A description of the part (optional).",
            "format": "json",
            "nullable": true,
            "example": "Car tank"
          }
        },
        "additionalProperties": false,
        "description": "Request model for submitting parts associated with a defect."
      },
      "DefectPostRequest": {
        "required": [
          "details",
          "modelID",
          "serviceID"
        ],
        "type": "object",
        "properties": {
          "temporaryId": {
            "type": "string",
            "description": "Client-generated temporary ID (GUID) to prevent duplicate defect creation.",
            "format": "json",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4g7h-8i9j-0k1l2m3n4o5p"
          },
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the model associated with the defect.",
            "format": "int32",
            "example": 9
          },
          "modelVersionStageID": {
            "type": "integer",
            "description": "The unique identifier of the model version stage (optional).",
            "format": "int32",
            "nullable": true,
            "example": 88
          },
          "modelVersionZoneID": {
            "type": "integer",
            "description": "The unique identifier of the model version zone (optional).",
            "format": "int32",
            "nullable": true,
            "example": 447
          },
          "serviceID": {
            "type": "integer",
            "description": "The unique identifier of the service associated with the defect.",
            "format": "int32",
            "example": 66
          },
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the site department (optional).",
            "format": "int32",
            "nullable": true,
            "example": 15
          },
          "serviceTaskID": {
            "type": "integer",
            "description": "The unique identifier of the service task (optional).",
            "format": "int32",
            "nullable": true,
            "example": 744
          },
          "serviceTaskQuestionID": {
            "type": "integer",
            "description": "The unique identifier of the service task question (optional).",
            "format": "int32",
            "nullable": true,
            "example": 983
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "description": "The unique identifier of the site asset register entry (optional).",
            "format": "int32",
            "nullable": true,
            "example": 552
          },
          "siteAssetID": {
            "type": "integer",
            "description": "The unique identifier of the legacy site asset (optional). Deprecated — supply SiteAssetRegisterID instead.\nIf provided and SiteAssetRegisterID is absent, the equivalent SiteAssetRegisterID will be resolved automatically.",
            "format": "int32",
            "nullable": true,
            "example": 55
          },
          "siteAssetReferenceID": {
            "type": "integer",
            "description": "The unique identifier of the legacy site asset reference (optional). Deprecated — supply SiteAssetRegisterID instead.\nUsed in conjunction with SiteAssetID to resolve the equivalent SiteAssetRegisterID.",
            "format": "int32",
            "nullable": true,
            "example": 72
          },
          "defectRiskRatingID": {
            "type": "integer",
            "description": "The unique identifier of the defect risk rating.",
            "format": "int32",
            "example": 49
          },
          "defectStatusID": {
            "type": "integer",
            "description": "The unique identifier of the defect status.",
            "format": "int32",
            "example": 4
          },
          "defectTypeID": {
            "type": "integer",
            "description": "The unique identifier of the defect type.",
            "format": "int32",
            "example": 98
          },
          "details": {
            "minLength": 1,
            "type": "string",
            "description": "Detailed description of the defect.",
            "format": "json",
            "example": "Check zone B for issues."
          },
          "workOrder": {
            "type": "string",
            "description": "The work order associated with the defect (optional).",
            "format": "json",
            "nullable": true,
            "example": "WO037486"
          },
          "parts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DefectPostPartRequest"
            },
            "description": "A collection of parts associated with the defect.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for submitting a defect."
      },
      "DefectRequest": {
        "required": [
          "details"
        ],
        "type": "object",
        "properties": {
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the site department associated with the defect (optional).",
            "format": "int32",
            "nullable": true,
            "example": 15
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "description": "The unique identifier of the site asset register entry associated with the defect (optional).",
            "format": "int32",
            "nullable": true,
            "example": 552
          },
          "siteAssetID": {
            "type": "integer",
            "description": "The unique identifier of the legacy site asset (optional). Deprecated — supply SiteAssetRegisterID instead.\nIf provided and SiteAssetRegisterID is absent, the equivalent SiteAssetRegisterID will be resolved automatically.",
            "format": "int32",
            "nullable": true,
            "example": 55
          },
          "siteAssetReferenceID": {
            "type": "integer",
            "description": "The unique identifier of the legacy site asset reference (optional). Deprecated — supply SiteAssetRegisterID instead.\nUsed in conjunction with SiteAssetID to resolve the equivalent SiteAssetRegisterID.",
            "format": "int32",
            "nullable": true,
            "example": 72
          },
          "defectRiskRatingID": {
            "type": "integer",
            "description": "The unique identifier of the defect risk rating.",
            "format": "int32",
            "example": 49
          },
          "defectStatusID": {
            "type": "integer",
            "description": "The unique identifier of the defect status.",
            "format": "int32",
            "example": 4
          },
          "defectTypeID": {
            "type": "integer",
            "description": "The unique identifier of the defect type.",
            "format": "int32",
            "example": 98
          },
          "details": {
            "minLength": 1,
            "type": "string",
            "description": "Detailed description of the defect.",
            "format": "json",
            "example": "Check zone B for issues."
          },
          "workOrder": {
            "type": "string",
            "description": "The work order associated with the defect (optional).",
            "format": "json",
            "nullable": true,
            "example": "/wo092635"
          }
        },
        "additionalProperties": false,
        "description": "Request model for submitting a defect report."
      },
      "DefectRiskRating": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "action": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DefectRiskRatingPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the defect risk rating.",
            "format": "json",
            "example": "Low"
          },
          "action": {
            "type": "string",
            "description": "The action associated with the defect risk rating.",
            "format": "json",
            "nullable": true,
            "example": "Remove"
          }
        },
        "additionalProperties": false,
        "description": "Request model for submitting a defect risk rating."
      },
      "DefectRiskRatingRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "action": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DefectRiskRatingsResponse": {
        "type": "object",
        "properties": {
          "siteAppID": {
            "type": "integer",
            "description": "The unique identifier of the site application.",
            "format": "int32",
            "example": 8
          },
          "name": {
            "type": "string",
            "description": "The name of the site application.",
            "format": "json",
            "nullable": true,
            "example": "Failed Iron"
          },
          "action": {
            "type": "string",
            "description": "The action associated with the site application.",
            "format": "json",
            "nullable": true,
            "example": "Replace Part"
          },
          "id": {
            "type": "integer",
            "description": "The unique identifier of the defect risk rating.",
            "format": "int32",
            "example": 39
          }
        },
        "additionalProperties": false,
        "description": "Represents the response model for retrieving defect risk ratings associated with a site application."
      },
      "DefectSearchPostRequest": {
        "type": "object",
        "properties": {
          "siteAppId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "serviceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageSize": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sortField": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "sort": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "sortOrder": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "deprecated": true
          },
          "fromDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "toDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "since": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "defectStatusType": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "onlySAPErrors": {
            "type": "boolean",
            "deprecated": true
          },
          "onlyFLOC": {
            "type": "boolean"
          },
          "onlyNewDefects": {
            "type": "boolean"
          },
          "siteDepartmentIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "siteAssetIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "nullable": true
          },
          "modelIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "defectNumbers": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "defectStatusIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "defectTypeIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "defectRiskRatingIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "textSearches": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "systemIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "defectWorkOrders": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "serviceWorkOrders": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "includeDeleted": {
            "type": "boolean"
          },
          "timeZone": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DefectStatus": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "DefectStatusChangePostRequest": {
        "type": "object",
        "properties": {
          "defectStatusID": {
            "type": "integer",
            "description": "The new Defect Status ID to apply to the Defect",
            "format": "int32",
            "example": 24
          }
        },
        "additionalProperties": false
      },
      "DefectStatusPostRequest": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the defect status.",
            "format": "json",
            "example": "In Progress"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The type of defect status, represented as a single character.",
            "format": "json",
            "example": "A"
          }
        },
        "additionalProperties": false,
        "description": "Request model for submitting a defect status."
      },
      "DefectStatusRequest": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Defect Status name",
            "format": "json",
            "example": "Outstanding"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Defect Status Type",
            "format": "json",
            "example": "O"
          }
        },
        "additionalProperties": false
      },
      "DefectStatusesGetResponse": {
        "type": "object",
        "properties": {
          "siteAppID": {
            "type": "integer",
            "description": "The unique identifier of the site application.",
            "format": "int32",
            "example": 24
          },
          "name": {
            "type": "string",
            "description": "The name of the defect status.",
            "format": "json",
            "nullable": true,
            "example": "Complete"
          },
          "type": {
            "type": "string",
            "description": "The type of the defect status.",
            "format": "json",
            "nullable": true,
            "example": "C"
          },
          "id": {
            "type": "integer",
            "description": "The unique identifier for the defect status.",
            "format": "int32",
            "example": 202
          }
        },
        "additionalProperties": false,
        "description": "Represents the response model for retrieving defect statuses associated with a site application."
      },
      "DefectType": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "DefectTypePostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Defect type name",
            "format": "json",
            "example": "Bruised"
          }
        },
        "additionalProperties": false
      },
      "DefectTypeRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "DefectTypesGetResponse": {
        "type": "object",
        "properties": {
          "siteAppID": {
            "type": "integer",
            "description": "ID of the site application.",
            "format": "int32",
            "example": 24
          },
          "name": {
            "type": "string",
            "description": "name of the defect type.",
            "format": "json",
            "nullable": true,
            "example": "Broken"
          },
          "id": {
            "type": "integer",
            "description": "unique identifier for defect type.",
            "format": "int32",
            "example": 47
          }
        },
        "additionalProperties": false
      },
      "DefectsGetDefectResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the defect",
            "format": "int32",
            "example": 21
          },
          "siteAppID": {
            "type": "integer",
            "description": "The unique identifier of the site application",
            "format": "int32",
            "example": 8
          },
          "number": {
            "type": "integer",
            "description": "The sequential number assigned to the defect",
            "format": "int32",
            "example": 3
          },
          "safetyCritical": {
            "type": "boolean",
            "description": "Indicates whether the defect is classified as safety critical",
            "example": false
          },
          "defectRiskRatingID": {
            "type": "integer",
            "description": "The unique identifier of the defect's risk rating",
            "format": "int32",
            "example": 41
          },
          "riskRatingName": {
            "type": "string",
            "description": "The name of the defect's risk rating classification",
            "format": "json",
            "nullable": true,
            "example": "Repairable - External"
          },
          "defectStatusID": {
            "type": "integer",
            "description": "The unique identifier of the defect's current status",
            "format": "int32",
            "example": 24
          },
          "defectStatusName": {
            "type": "string",
            "description": "The name of the defect's current status",
            "format": "json",
            "nullable": true,
            "example": "Outstanding"
          },
          "defectStatusType": {
            "type": "string",
            "description": "The single-character code representing the defect's status type",
            "format": "json",
            "nullable": true,
            "example": "O"
          },
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the associated model",
            "format": "int32",
            "example": 3
          },
          "activeModelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the current active model version",
            "format": "int32",
            "example": 57
          },
          "modelName": {
            "type": "string",
            "description": "The name of the associated model",
            "format": "json",
            "nullable": true,
            "example": "3516 - 789D"
          },
          "modelModel": {
            "type": "string",
            "description": "The model type or category",
            "format": "json",
            "nullable": true,
            "example": "Engine"
          },
          "arrangementName": {
            "type": "string",
            "description": "The name of the model arrangement, if applicable",
            "format": "json",
            "nullable": true,
            "example": null
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "description": "The unique identifier of the asset register entry",
            "format": "int32",
            "nullable": true,
            "example": 190
          },
          "siteAssetName": {
            "type": "string",
            "description": "The identifier or name of the site asset",
            "format": "json",
            "nullable": true,
            "example": "2GB59952"
          },
          "siteAssetDescription": {
            "type": "string",
            "description": "The description of the site asset register entry",
            "format": "json",
            "nullable": true,
            "example": "Caterpillar 789D Haul Truck"
          },
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the site department",
            "format": "int32",
            "example": 13
          },
          "siteDepartmentName": {
            "type": "string",
            "description": "The name of the site department",
            "format": "json",
            "nullable": true,
            "example": "Engine Rebuilds - T060"
          },
          "defectTypeID": {
            "type": "integer",
            "description": "The unique identifier of the defect type",
            "format": "int32",
            "example": 404
          },
          "defectTypeName": {
            "type": "string",
            "description": "The name of the defect type classification",
            "format": "json",
            "nullable": true,
            "example": "Broken"
          },
          "details": {
            "type": "string",
            "description": "The detailed description of the defect",
            "format": "json",
            "nullable": true,
            "example": "Testing"
          },
          "createdDateTime": {
            "type": "string",
            "description": "The date and time when the defect was created",
            "format": "date-time",
            "example": "2022-11-18T03:00:28.715561"
          },
          "createdUserName": {
            "type": "string",
            "description": "The full name of the user who created the defect",
            "format": "json",
            "nullable": true,
            "example": "User, User"
          },
          "workOrder": {
            "description": "The work order number associated with the defect, if any",
            "nullable": true,
            "example": null
          },
          "stageName": {
            "type": "string",
            "description": "The name of the stage where the defect was identified",
            "format": "json",
            "nullable": true,
            "example": "Recondition Sub Assemblies"
          },
          "zoneName": {
            "type": "string",
            "description": "The name of the zone where the defect was identified",
            "format": "json",
            "nullable": true,
            "example": "Inspect and Assess"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the associated model version task",
            "format": "int32",
            "example": 5051
          },
          "actionName": {
            "type": "string",
            "description": "The name of the action associated with the defect",
            "format": "json",
            "nullable": true,
            "example": "Review"
          },
          "taskName": {
            "type": "string",
            "description": "The name of the task where the defect was identified",
            "format": "json",
            "nullable": true,
            "example": "Take 5"
          },
          "intervalName": {
            "type": "string",
            "description": "The name of the service interval associated with the defect",
            "format": "json",
            "nullable": true,
            "example": "Recondition Front Cover"
          },
          "serviceWorkOrder": {
            "type": "string",
            "description": "The service work order number associated with the defect",
            "format": "json",
            "nullable": true,
            "example": "W99588585"
          },
          "question": {
            "description": "The question text associated with the defect, if any",
            "nullable": true,
            "example": null
          },
          "questionResponseNumeric": {
            "description": "The numeric response to the associated question, if applicable",
            "nullable": true,
            "example": null
          },
          "questionResponseOptions": {
            "description": "The selected options for the associated question, if applicable",
            "nullable": true,
            "example": null
          },
          "audioURL": {
            "description": "The URL to any audio recording associated with the defect",
            "nullable": true,
            "example": null
          }
        },
        "additionalProperties": false
      },
      "DefectsGetResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "ID of the defect.",
            "format": "int32",
            "example": 21
          },
          "number": {
            "type": "integer",
            "description": "number of the defect.",
            "format": "int32",
            "example": 3
          },
          "safetyCritical": {
            "type": "boolean",
            "description": "value indicating whether the defect is safety critical.",
            "example": false
          },
          "defectRiskRatingId": {
            "type": "integer",
            "description": "ID of the defect risk rating.",
            "format": "int32",
            "example": 41
          },
          "riskRatingName": {
            "type": "string",
            "description": "name of the defect risk rating.",
            "format": "json",
            "nullable": true,
            "example": "Repairable - External"
          },
          "defectStatusId": {
            "type": "integer",
            "description": "ID of the defect status.",
            "format": "int32",
            "example": 24
          },
          "defectStatusName": {
            "type": "string",
            "description": "name of the defect status.",
            "format": "json",
            "nullable": true,
            "example": "Outstanding"
          },
          "defectStatusType": {
            "type": "string",
            "description": "type of the defect status.",
            "format": "json",
            "nullable": true,
            "example": "O"
          },
          "modelName": {
            "type": "string",
            "description": "name of the model.",
            "format": "json",
            "nullable": true,
            "example": "3516 - 789D"
          },
          "modelModel": {
            "type": "string",
            "description": "model type.",
            "format": "json",
            "nullable": true,
            "example": "Engine"
          },
          "siteAssetName": {
            "type": "string",
            "description": "name of the site asset.",
            "format": "json",
            "nullable": true,
            "example": "2GB59952"
          },
          "siteAssetId": {
            "type": "integer",
            "description": "ID of the site asset.",
            "format": "int32",
            "example": 190
          },
          "siteDepartmentName": {
            "type": "string",
            "description": "name of the site department.",
            "format": "json",
            "nullable": true,
            "example": "Engine Rebuilds - T060"
          },
          "siteDepartmentId": {
            "type": "integer",
            "description": "ID of the site department.",
            "format": "int32",
            "example": 13
          },
          "defectTypeId": {
            "type": "integer",
            "description": "ID of the defect type.",
            "format": "int32",
            "example": 404
          },
          "defectTypeName": {
            "type": "string",
            "description": "name of the defect type.",
            "format": "json",
            "nullable": true,
            "example": "Broken"
          },
          "details": {
            "type": "string",
            "description": "details of the defect.",
            "format": "json",
            "nullable": true,
            "example": "Testing"
          },
          "createdDateTime": {
            "type": "string",
            "description": "date and time the defect was created.",
            "format": "date-time",
            "example": "2022-11-18T03:00:28.715561"
          },
          "createdUserName": {
            "type": "string",
            "description": "name of the user who created the defect.",
            "format": "json",
            "nullable": true,
            "example": "User, User"
          },
          "workOrder": {
            "type": "string",
            "description": "work order associated with the defect.",
            "format": "json",
            "nullable": true,
            "example": null
          },
          "stageName": {
            "type": "string",
            "description": "stage name.",
            "format": "json",
            "nullable": true,
            "example": "Recondition Sub Assemblies"
          },
          "zoneName": {
            "type": "string",
            "description": "zone name.",
            "format": "json",
            "nullable": true,
            "example": "Inspect and Assess"
          },
          "modelVersionTaskId": {
            "type": "integer",
            "description": "ID of the model version task.",
            "format": "int32",
            "example": 5051
          },
          "actionName": {
            "type": "string",
            "description": "action name.",
            "format": "json",
            "nullable": true,
            "example": "Review"
          },
          "taskName": {
            "type": "string",
            "description": "task name.",
            "format": "json",
            "nullable": true,
            "example": "Take 5"
          },
          "intervalName": {
            "type": "string",
            "description": "interval name.",
            "format": "json",
            "nullable": true,
            "example": "Recondition Front Cover"
          },
          "serviceWorkOrder": {
            "type": "string",
            "description": "service work order.",
            "format": "json",
            "nullable": true,
            "example": "W99588585"
          }
        },
        "additionalProperties": false
      },
      "DefectsUploadImageResponse": {
        "type": "object",
        "properties": {
          "defectID": {
            "type": "integer",
            "description": "The unique identifier of the defect.",
            "format": "int32",
            "example": 4
          },
          "imageKey": {
            "type": "string",
            "description": "The key for accessing the full-sized image.",
            "format": "json",
            "nullable": true,
            "example": "image_4_fullsize.jpg"
          },
          "thumbnailKey": {
            "type": "string",
            "description": "The key for accessing the thumbnail image.",
            "format": "json",
            "nullable": true,
            "example": "image_4_thumbnail.jpg"
          }
        },
        "additionalProperties": false,
        "description": "Represents the response model for uploading images associated with a defect."
      },
      "DefinitionType": {
        "enum": [
          "0 - Action",
          "1 - OperatingMode",
          "2 - System",
          "3 - Lubricant"
        ],
        "type": "integer",
        "format": "int32"
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "error": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Feedback": {
        "required": [
          "benefit",
          "changeRequired"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "temporaryId": {
            "maxLength": 36,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackClassification": {
            "$ref": "#/components/schemas/FeedbackClassification"
          },
          "feedbackClassificationID": {
            "type": "integer",
            "format": "int32"
          },
          "feedbackPriority": {
            "$ref": "#/components/schemas/FeedbackPriority"
          },
          "feedbackPriorityID": {
            "type": "integer",
            "format": "int32"
          },
          "feedbackStatus": {
            "$ref": "#/components/schemas/FeedbackStatus"
          },
          "feedbackStatusID": {
            "type": "integer",
            "format": "int32"
          },
          "model": {
            "$ref": "#/components/schemas/Model"
          },
          "modelID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionStage": {
            "$ref": "#/components/schemas/ModelVersionStage"
          },
          "modelVersionStageID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionZone": {
            "$ref": "#/components/schemas/ModelVersionZone"
          },
          "modelVersionZoneID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionInterval": {
            "$ref": "#/components/schemas/ModelVersionInterval"
          },
          "modelVersionIntervalID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionRole": {
            "$ref": "#/components/schemas/ModelVersionRole"
          },
          "modelVersionRoleID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignUser": {
            "$ref": "#/components/schemas/User"
          },
          "assignUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignPosition": {
            "$ref": "#/components/schemas/Position"
          },
          "assignPositionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "siteDepartment": {
            "$ref": "#/components/schemas/SiteDepartment"
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "siteAssetRegister": {
            "$ref": "#/components/schemas/SiteAssetRegister"
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "changeRequired": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "benefit": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "lastEmailDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedbackNote"
            },
            "nullable": true
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedbackImage"
            },
            "nullable": true
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedbackDocument"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FeedbackClassification": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "FeedbackClassificationPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the feedback classification (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "FeedbackClassificationRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "FeedbackDocument": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "feedback": {
            "$ref": "#/components/schemas/Feedback"
          },
          "feedbackID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "documentKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "documentURL": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          },
          "filename": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "FeedbackDocumentPostRequest": {
        "required": [
          "documentKey",
          "feedbackID"
        ],
        "type": "object",
        "properties": {
          "feedbackID": {
            "type": "integer",
            "description": "The unique identifier of the feedback item to which the document is associated.",
            "format": "int32",
            "example": 10
          },
          "documentKey": {
            "minLength": 1,
            "type": "string",
            "description": "The key for accessing the document.",
            "format": "json",
            "example": "document_10.pdf"
          }
        },
        "additionalProperties": false,
        "description": "Request model for submitting a document associated with a specific feedback item."
      },
      "FeedbackImage": {
        "required": [
          "imageKey",
          "thumbnailKey"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "feedback": {
            "$ref": "#/components/schemas/Feedback"
          },
          "feedbackID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "temporaryId": {
            "maxLength": 36,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageKey": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "thumbnailKey": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "imageURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FeedbackNote": {
        "required": [
          "note"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "feedback": {
            "$ref": "#/components/schemas/Feedback"
          },
          "feedbackID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "translatedNote": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "FeedbackNotePostRequest": {
        "required": [
          "feedbackID",
          "note"
        ],
        "type": "object",
        "properties": {
          "feedbackID": {
            "type": "integer",
            "description": "The unique identifier of the feedback",
            "format": "int32"
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "description": "The content of the note associated with the feedback",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "FeedbackPostRequest": {
        "required": [
          "benefit",
          "changeRequired"
        ],
        "type": "object",
        "properties": {
          "temporaryId": {
            "type": "string",
            "description": "Client-generated temporary ID (GUID) to prevent duplicate feedback creation.",
            "format": "json",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4g7h-8i9j-0k1l2m3n4o5p"
          },
          "feedbackClassificationID": {
            "type": "integer",
            "description": "The unique identifier of the feedback classification (nullable)",
            "format": "int32",
            "nullable": true
          },
          "feedbackPriorityID": {
            "type": "integer",
            "description": "The unique identifier of the feedback priority (nullable)",
            "format": "int32",
            "nullable": true
          },
          "feedbackStatusID": {
            "type": "integer",
            "description": "The unique identifier of the feedback status (nullable)",
            "format": "int32",
            "nullable": true
          },
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the associated model (nullable)",
            "format": "int32",
            "nullable": true
          },
          "modelVersionStageID": {
            "type": "integer",
            "description": "The unique identifier of the model version stage (nullable)",
            "format": "int32",
            "nullable": true
          },
          "modelVersionZoneID": {
            "type": "integer",
            "description": "The unique identifier of the model version zone (nullable)",
            "format": "int32",
            "nullable": true
          },
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task (nullable)",
            "format": "int32",
            "nullable": true
          },
          "modelVersionIntervalID": {
            "type": "integer",
            "description": "The unique identifier of the model version interval (nullable)",
            "format": "int32",
            "nullable": true
          },
          "modelVersionRoleID": {
            "type": "integer",
            "description": "The unique identifier of the model version role (nullable)",
            "format": "int32",
            "nullable": true
          },
          "assignUserID": {
            "type": "integer",
            "description": "The unique identifier of the user assigned to the feedback (nullable)",
            "format": "int32",
            "nullable": true
          },
          "assignPositionID": {
            "type": "integer",
            "description": "The unique identifier of the position assigned to the feedback (nullable)",
            "format": "int32",
            "nullable": true
          },
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the site department (nullable)",
            "format": "int32",
            "nullable": true
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "description": "The unique identifier of the site asset register entry (nullable)",
            "format": "int32",
            "nullable": true
          },
          "siteAssetID": {
            "type": "integer",
            "description": "The unique identifier of the legacy site asset (nullable). Deprecated — supply SiteAssetRegisterID instead.\nIf provided and SiteAssetRegisterID is absent, the equivalent SiteAssetRegisterID will be resolved automatically.",
            "format": "int32",
            "nullable": true
          },
          "changeRequired": {
            "minLength": 1,
            "type": "string",
            "description": "Description of the change that is being requested",
            "format": "json"
          },
          "benefit": {
            "minLength": 1,
            "type": "string",
            "description": "Description of the benefits that would result from the requested change",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "FeedbackPriority": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "FeedbackPriorityPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the feedback priority (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "FeedbackPriorityRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "FeedbackRequest": {
        "type": "object",
        "properties": {
          "feedbackClassificationID": {
            "type": "integer",
            "format": "int32"
          },
          "feedbackPriorityID": {
            "type": "integer",
            "format": "int32"
          },
          "feedbackStatusID": {
            "type": "integer",
            "format": "int32"
          },
          "modelID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionStageID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionZoneID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionIntervalID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionRoleID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignPositionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "changeRequired": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "benefit": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FeedbackStatus": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "FeedbackStatusPostRequest": {
        "required": [
          "name",
          "siteAppID",
          "type"
        ],
        "type": "object",
        "properties": {
          "siteAppID": {
            "type": "integer",
            "description": "The unique identifier of the site application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the feedback status (maximum length: 50 characters)",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The type of feedback status (single character). Options:\nO - Outstanding\nC - Closed",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "FeedbackStatusRequest": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "File": {
        "type": "object",
        "additionalProperties": false
      },
      "FilenameModelVersionRequest": {
        "required": [
          "filename",
          "modelVersionTaskId"
        ],
        "type": "object",
        "properties": {
          "filename": {
            "minLength": 1,
            "type": "string",
            "description": "File Name",
            "format": "json",
            "example": "Service List Sample"
          },
          "modelVersionTaskId": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "FilenameRequest": {
        "required": [
          "filename"
        ],
        "type": "object",
        "properties": {
          "filename": {
            "minLength": 1,
            "type": "string",
            "description": "File Name",
            "format": "json",
            "example": "Service List Sample"
          }
        },
        "additionalProperties": false
      },
      "FilterSummaryItem": {
        "required": [
          "label",
          "value"
        ],
        "type": "object",
        "properties": {
          "label": {
            "maxLength": 120,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "value": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ForgotPasswordRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GenerateReportAccepted": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "message": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "emailed": {
            "type": "boolean",
            "description": "True when the report is being delivered by email rather than the\ninteractive download - either because the caller asked for email, or\nbecause it was large enough to be forced onto the email path (EMI3-1405).\nThe client uses this to stop polling for an immediate download and show\nthe \"we'll email you\" message instead."
          }
        },
        "additionalProperties": false
      },
      "GenerateReportRequest": {
        "required": [
          "filterContext",
          "reportType"
        ],
        "type": "object",
        "properties": {
          "reportType": {
            "$ref": "#/components/schemas/ReportType"
          },
          "filterContext": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/JToken"
            }
          },
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "Friendly run name from the dialog; used as the email subject and in the body.",
            "format": "json",
            "nullable": true
          },
          "recipientEmail": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "description": "Override email; null falls back to the caller's profile email.",
            "format": "email",
            "nullable": true
          },
          "subscriptionId": {
            "type": "integer",
            "description": "Set when \"Email me a copy now\" is fired from an existing subscription's\nedit modal, so the email can deep-link back to that subscription. Null\nfor a true on-demand generate (no subscription behind it).",
            "format": "int32",
            "nullable": true
          },
          "sendEmail": {
            "type": "boolean",
            "description": "When true (default), the worker emails the recipient once the report is\nready - attached when small enough, otherwise as an S3 download link.\nMatches the \"Email me a copy now\" flow. Set false for the dropdown\n\"Generate & download now\" flow where the caller is going to pull the\nURL out of JobStatusResponse.Result and trigger a browser download instead."
          }
        },
        "additionalProperties": false
      },
      "GetConditionMonitoringDataDefect": {
        "type": "object",
        "properties": {
          "number": {
            "type": "integer",
            "description": "The sequential number assigned to the defect.",
            "format": "int32",
            "example": 6
          },
          "id": {
            "type": "integer",
            "description": "The unique identifier of the defect.",
            "format": "int32",
            "example": 27
          },
          "defectRiskRatingName": {
            "type": "string",
            "description": "The risk rating classification of the defect.",
            "format": "json",
            "nullable": true,
            "example": "Repairable - External"
          },
          "defectTypeName": {
            "type": "string",
            "description": "The classification of the defect type.",
            "format": "json",
            "nullable": true,
            "example": "Broken"
          },
          "defectStatusName": {
            "type": "string",
            "description": "The current status of the defect.",
            "format": "json",
            "nullable": true,
            "example": "Outstanding"
          },
          "defectDetail": {
            "type": "string",
            "description": "A detailed description of the defect.",
            "format": "json",
            "nullable": true,
            "example": "Testing"
          }
        },
        "additionalProperties": false,
        "description": "Represents a defect identified during condition monitoring."
      },
      "Image": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the image",
            "format": "int32",
            "example": 3
          },
          "imageURL": {
            "type": "string",
            "description": "The URL to access the image",
            "format": "json",
            "nullable": true,
            "example": "https://storage.example.com/images/defect-123-1.jpg"
          }
        },
        "additionalProperties": false
      },
      "Images": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the image",
            "format": "int32",
            "example": 46
          },
          "imageURL": {
            "type": "string",
            "description": "The URL to access the full-size image",
            "format": "json",
            "nullable": true,
            "example": "https://storage.example.com/images/defect-123-1.jpg"
          },
          "thumbnailURL": {
            "type": "string",
            "description": "The URL to access the thumbnail version of the image",
            "format": "json",
            "nullable": true,
            "example": "https://storage.example.com/thumbnails/defect-123-1.jpg"
          }
        },
        "additionalProperties": false
      },
      "ImportRequest": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "key": {
            "minLength": 1,
            "type": "string",
            "description": "Import file key",
            "format": "json",
            "example": "dhgsahdjhaskjldjsjdl42ds452d.csv"
          },
          "import": {
            "type": "boolean",
            "description": "bool value indicating whether import or not",
            "example": true
          },
          "timeZone": {
            "type": "string",
            "description": "Import time zone",
            "format": "json",
            "nullable": true,
            "example": "Tasmania Standard Time"
          }
        },
        "additionalProperties": false
      },
      "IntegrationAdapterFieldResponse": {
        "required": [
          "defaultValue",
          "key",
          "labelKey",
          "maxLength"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The key in the field mappings' Fields object",
            "format": "json",
            "nullable": true,
            "example": "Codigo_Grupo"
          },
          "labelKey": {
            "type": "string",
            "description": "Localisation key for the field's label",
            "format": "json",
            "nullable": true,
            "example": "label.integrationFieldPlanningPlant"
          },
          "defaultValue": {
            "type": "string",
            "description": "The value sent when the key is not set",
            "format": "json",
            "nullable": true,
            "example": "N001"
          },
          "maxLength": {
            "type": "integer",
            "description": "The longest value the target system accepts",
            "format": "int32",
            "example": 4
          }
        },
        "additionalProperties": false,
        "description": "A fixed value an adapter reads from the field mappings"
      },
      "IntegrationAdapterResponse": {
        "required": [
          "className",
          "fields",
          "name"
        ],
        "type": "object",
        "properties": {
          "className": {
            "type": "string",
            "description": "The value to store in the integration instance's adapter class",
            "format": "json",
            "nullable": true,
            "example": "SAPGrupo.SAPGrupoAdapter"
          },
          "name": {
            "type": "string",
            "description": "Display name of the adapter",
            "format": "json",
            "nullable": true,
            "example": "Grupo México"
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IntegrationAdapterFieldResponse"
            },
            "description": "The fixed values the adapter reads from the field mappings",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An adapter that can be selected for an integration instance"
      },
      "IntegrationDefinitionResponse": {
        "required": [
          "description",
          "integrationType",
          "name"
        ],
        "type": "object",
        "properties": {
          "integrationType": {
            "type": "string",
            "description": "The integration type identifier",
            "format": "json",
            "nullable": true,
            "readOnly": true,
            "example": "SAP-Hana-Cloud"
          },
          "name": {
            "type": "string",
            "description": "Display name of the integration",
            "format": "json",
            "nullable": true,
            "readOnly": true,
            "example": "SAP HANA Cloud"
          },
          "description": {
            "type": "string",
            "description": "Description of the integration's functionality",
            "format": "json",
            "nullable": true,
            "readOnly": true,
            "example": "Integration with SAP HANA Cloud's MaintenanceNotification API"
          },
          "logoUrl": {
            "type": "string",
            "description": "URL to the integration's logo image",
            "format": "json",
            "nullable": true,
            "readOnly": true,
            "example": "https://example.com/logos/sap_hana_cloud.png"
          },
          "isUnique": {
            "type": "boolean",
            "description": "Indicates if the integration is unique",
            "readOnly": true,
            "example": true
          },
          "isDefectIntegration": {
            "type": "boolean",
            "description": "Indicates if the integration is a defect integration",
            "readOnly": true,
            "example": true
          },
          "allowSyncNow": {
            "type": "boolean",
            "description": "Indicates if the integration supports manual sync operations",
            "readOnly": true,
            "example": true
          },
          "authEndpointLabel": {
            "type": "string",
            "description": "Custom label for the authentication endpoint field",
            "format": "json",
            "nullable": true,
            "readOnly": true,
            "example": "SAP Instance URL"
          },
          "authIdLabel": {
            "type": "string",
            "description": "Custom label for the authentication ID field",
            "format": "json",
            "nullable": true,
            "readOnly": true,
            "example": "SAP Username"
          },
          "authSecretLabel": {
            "type": "string",
            "description": "Custom label for the authentication secret field",
            "format": "json",
            "nullable": true,
            "readOnly": true,
            "example": "SAP Password"
          },
          "defaultSettingsTemplate": {
            "type": "string",
            "description": "Template JSON string for default integration settings",
            "format": "json",
            "nullable": true,
            "readOnly": true,
            "example": "\n            {\n                \"DefectStatusID\": null,\n                \"NotificationRaisedId\": null,\n                \"SyncPeriodHours\": 1,\n                \"DaysAgo\": 30,\n                \"SyncDelayHours\": 12\n            }\n            "
          },
          "defaultFieldMappingsTemplate": {
            "type": "string",
            "description": "Template JSON string for default field mappings",
            "format": "json",
            "nullable": true,
            "readOnly": true,
            "example": "\n            {\n                \"Fields\": {\n                    \"Priority\": \"DefectRiskRating.Name\",\n                    \"Notification_Type\": \"DefectRiskRating.[EnumValue]\"\n                },\n                \"EnumValue\": {\n                    \"DefectRiskRating\": {}\n                }\n            }\n            "
          },
          "adapters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IntegrationAdapterResponse"
            },
            "description": "The adapters an instance of this integration can use. Empty when the integration has no adapters.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Response model for available integration definitions"
      },
      "IntegrationInstanceRequest": {
        "title": "Integration Instance Patch Operations",
        "required": [
          "integrationType",
          "isActive",
          "name"
        ],
        "type": "object",
        "properties": {
          "settings": {
            "type": "string",
            "description": "JSON-encoded configuration settings for the integration instance",
            "format": "json",
            "nullable": true,
            "example": "\n            {\n                \"DefectStatusID\": 1,\n                \"NotificationRaisedId\": 2,\n                \"DaysAgo\": 30,\n                \"SyncDelayHours\": 12,\n                \"SyncTimeOfDay\": [\"06:00:00\", \"14:00:00\", \"22:00:00\"],\n                \"SyncPeriodHours\": null\n            }\n            "
          },
          "fieldMappings": {
            "type": "string",
            "description": "JSON-encoded field mappings between system fields and integration endpoints",
            "format": "json",
            "nullable": true,
            "example": "\n            {\n                \"Fields\": {\n                    \"Priority\": \"DefectRiskRating\"\n                },\n                \"EnumValue\": {\n                    \"DefectRiskRating\": {\n                        \"1\": \"M1\",\n                        \"2\": \"M2\"\n                    }\n                }\n            }\n            "
          },
          "url": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The endpoint URL for the integration service",
            "format": "json",
            "nullable": true,
            "example": "https://sap-api.example.com/MaintenanceNotification"
          },
          "username": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The username or identifier for authentication with the integration service",
            "format": "json",
            "nullable": true,
            "example": "sap_service_account"
          },
          "password": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The password or secret for authentication with the integration service",
            "format": "json",
            "nullable": true,
            "example": "••••••••"
          },
          "isActive": {
            "type": "boolean",
            "description": "Indicates whether the integration instance is currently active (required)",
            "example": true
          },
          "lastSyncAttempt": {
            "type": "string",
            "description": "The timestamp of the last sync attempt",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-20T10:30:00"
          },
          "nextSyncAttempt": {
            "type": "string",
            "description": "The scheduled timestamp for the next sync attempt",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-20T11:30:00"
          },
          "integrationType": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The type of integration to use (required)",
            "format": "json",
            "example": "SAP-Hana-Cloud"
          },
          "adapterClass": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The fully qualified class name of the adapter implementation",
            "format": "json",
            "nullable": true,
            "example": "EMI3.Integrations.SAP.Newmont.SAPNewmontAdapter"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The display name of the integration instance (required)",
            "format": "json",
            "example": "Production SAP Integration"
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new integration instance"
      },
      "IntegrationInstanceResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier for the integration instance",
            "format": "int32",
            "example": 42
          },
          "name": {
            "type": "string",
            "description": "The display name of the integration instance",
            "format": "json",
            "nullable": true,
            "example": "Production SAP Integration"
          },
          "integrationType": {
            "type": "string",
            "description": "The type of integration (e.g., \"SAP-Hana-Cloud\")",
            "format": "json",
            "nullable": true,
            "example": "SAP-Hana-Cloud"
          },
          "adapterClass": {
            "type": "string",
            "description": "The fully qualified class name of the adapter implementation",
            "format": "json",
            "nullable": true,
            "example": "EMI3.Integrations.SAP.Newmont.SAPNewmontAdapter"
          },
          "settings": {
            "type": "string",
            "description": "JSON-encoded configuration settings for the integration instance",
            "format": "json",
            "nullable": true,
            "example": "\n            {\n                \"DefectStatusID\": 1,\n                \"NotificationRaisedId\": 2,\n                \"DaysAgo\": 30,\n                \"SyncDelayHours\": 12,\n                \"SyncTimeOfDay\": [\"06:00:00\", \"14:00:00\", \"22:00:00\"],\n                \"SyncPeriodHours\": null\n            }\n            "
          },
          "fieldMappings": {
            "type": "string",
            "description": "JSON-encoded field mappings between system fields and integration endpoints",
            "format": "json",
            "nullable": true,
            "example": "\n            {\n                \"Fields\": {\n                    \"Priority\": \"DefectRiskRating\"\n                },\n                \"EnumValue\": {\n                    \"DefectRiskRating\": {\n                        \"1\": \"M1\",\n                        \"2\": \"M2\"\n                    }\n                }\n            }\n            "
          },
          "url": {
            "type": "string",
            "description": "The endpoint URL for the integration service",
            "format": "json",
            "nullable": true,
            "example": "https://sap-api.example.com/MaintenanceNotification"
          },
          "username": {
            "type": "string",
            "description": "The username or identifier for authentication with the integration service",
            "format": "json",
            "nullable": true,
            "example": "sap_service_account"
          },
          "password": {
            "type": "string",
            "description": "The password or secret for authentication with the integration service",
            "format": "json",
            "nullable": true,
            "example": "••••••••"
          },
          "isActive": {
            "type": "boolean",
            "description": "Indicates whether the integration instance is currently active",
            "example": true
          },
          "lastSyncAttempt": {
            "type": "string",
            "description": "The timestamp of the last synchronization attempt",
            "format": "date-time",
            "nullable": true,
            "example": "2024-12-30T08:30:00Z"
          },
          "nextSyncAttempt": {
            "type": "string",
            "description": "The scheduled timestamp for the next synchronization attempt",
            "format": "date-time",
            "nullable": true,
            "example": "2024-12-30T09:30:00Z"
          }
        },
        "additionalProperties": false,
        "description": "Represents the response model for retrieving an integration instance configuration"
      },
      "IntegrationSyncResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates if the sync operation was successful",
            "example": true
          },
          "message": {
            "type": "string",
            "description": "Sync result message",
            "format": "json",
            "nullable": true,
            "example": "Sync completed successfully"
          },
          "syncedAt": {
            "type": "string",
            "description": "Timestamp when the sync was executed",
            "format": "date-time",
            "example": "2024-12-30T10:30:00Z"
          }
        },
        "additionalProperties": false,
        "description": "Response model for integration sync operations"
      },
      "JToken": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JToken"
        }
      },
      "JobState": {
        "enum": [
          "0 - Pending",
          "1 - Processing",
          "2 - Succeeded",
          "3 - Failed",
          "4 - Unknown"
        ],
        "type": "integer",
        "description": "Simplified job states for client consumption",
        "format": "int32"
      },
      "JobStatusResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "description": "Unique identifier for the job",
            "format": "json",
            "nullable": true
          },
          "state": {
            "$ref": "#/components/schemas/JobState"
          },
          "message": {
            "type": "string",
            "description": "Status message (success or failure message)",
            "format": "json",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "description": "When the job was created/enqueued (UTC)",
            "format": "date-time",
            "nullable": true
          },
          "startedAt": {
            "type": "string",
            "description": "When the job started executing (UTC)",
            "format": "date-time",
            "nullable": true
          },
          "completedAt": {
            "type": "string",
            "description": "When the job completed/failed (UTC)",
            "format": "date-time",
            "nullable": true
          },
          "exceptionType": {
            "type": "string",
            "description": "Exception type when the job is in the Failed state. Null otherwise.\nPopulated from Hangfire's structured failure history, so it surfaces\neven when the job crashed before it could set its own status message.",
            "format": "json",
            "nullable": true
          },
          "exceptionMessage": {
            "type": "string",
            "description": "Exception message when the job is in the Failed state. Null otherwise.",
            "format": "json",
            "nullable": true
          },
          "exceptionDetails": {
            "type": "string",
            "description": "Exception details (stack trace) when the job is in the Failed state. Null otherwise.",
            "format": "json",
            "nullable": true
          },
          "result": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/JToken"
            },
            "description": "Optional, generic result envelope produced by the job and surfaced to the\ncaller when the job has succeeded. The shape is intentionally untyped\n(a free-form JSON object) so each job kind can describe its own outcome\nwithout requiring an API change. By convention the object includes a\n\"kind\" discriminator the client uses to dispatch on (e.g. \"download\",\n\"redirect\", \"navigate\", \"data\") plus whatever payload that kind needs.\n            \nNull when the job has not produced a result (still pending/processing,\nfailed, or the job type doesn't surface anything to the client).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response containing the current status of a background job"
      },
      "LicenseType": {
        "enum": [
          "0 - Undefined",
          "1 - TotalUsers",
          "2 - ConcurrentUsers",
          "3 - PerRoleWorkOrder",
          "4 - SiteBasedLicensing",
          "5 - ApplicationBasedLicensing"
        ],
        "type": "integer",
        "format": "int32"
      },
      "LoginRequest": {
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "The email address of the user attempting to log in",
            "format": "json"
          },
          "password": {
            "minLength": 1,
            "type": "string",
            "description": "The password for authentication",
            "format": "json"
          },
          "siteAppID": {
            "type": "integer",
            "description": "The unique identifier of the site application (nullable)",
            "format": "int32",
            "nullable": true
          },
          "isMobile": {
            "type": "boolean",
            "description": "Indicates whether the login request is from a mobile device"
          }
        },
        "additionalProperties": false
      },
      "Lubricant": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "LubricantPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the lubricant (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "LubricantRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "MaintenanceBannerResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "visibleFrom": {
            "type": "string",
            "format": "date-time"
          },
          "severity": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "link": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "dismissed": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "MaintenanceBannerSeverity": {
        "enum": [
          "1 - Info",
          "2 - Warning",
          "3 - Critical"
        ],
        "type": "integer",
        "format": "int32"
      },
      "MaintenanceBannerUpsertRequest": {
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time"
          },
          "visibleFrom": {
            "type": "string",
            "format": "date-time"
          },
          "severity": {
            "$ref": "#/components/schemas/MaintenanceBannerSeverity"
          },
          "link": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ManualDefectPartRow": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "description": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "qty": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ManualModelVersionTaskPartRow": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "description": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stockNumber": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "qty": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "MissingKeysRequest": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "keys": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MissingPartToolReason": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "MissingPartToolReasonPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the missing part/tool reason (maximum length: 50 characters)",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "MissingPartToolReasonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "Model": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "devModelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "devModelVersionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activeModelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "activeModelVersionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isSharable": {
            "type": "boolean"
          },
          "primaryLocale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "clientUserSiteAppServiceModels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUserSiteAppServiceModel"
            },
            "nullable": true
          },
          "modelAssets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelAsset"
            },
            "nullable": true
          },
          "nextStageGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "nextZoneGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "nextIntervalGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "nextRoleGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "nextTaskGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "nextQuestionOptionGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "nextTaskQuestionGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "nextTaskQuestionOptionGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "nextArrangementGroupID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelAsset": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/Model"
          },
          "modelID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "siteAssetRegister": {
            "$ref": "#/components/schemas/SiteAssetRegister"
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "modelVersionArrangement": {
            "$ref": "#/components/schemas/ModelVersionArrangement"
          },
          "modelVersionArrangementID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelAssetPostRequest": {
        "required": [
          "modelID",
          "siteAssetRegisterID"
        ],
        "type": "object",
        "properties": {
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the model",
            "format": "int32"
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "description": "The unique identifier of the site asset register entry",
            "format": "int32"
          },
          "modelVersionArrangementID": {
            "type": "integer",
            "description": "The unique identifier of the model version arrangement (nullable)",
            "format": "int32",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Indicates whether the model asset is currently active"
          }
        },
        "additionalProperties": false
      },
      "ModelAssetRequest": {
        "type": "object",
        "properties": {
          "modelVersionArrangementID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ModelDefinitionRepairCreation": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/DefinitionType"
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelDefinitionRepairEntry": {
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "$ref": "#/components/schemas/DefinitionType"
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "fromDefinitionID": {
            "type": "integer",
            "format": "int32"
          },
          "fromSiteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "toDefinitionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "taskCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelDefinitionRepairResult": {
        "type": "object",
        "properties": {
          "dryRun": {
            "type": "boolean"
          },
          "modelVersions": {
            "type": "integer",
            "format": "int32"
          },
          "tasksRepaired": {
            "type": "integer",
            "format": "int32"
          },
          "definitionsCreated": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelDefinitionRepairCreation"
            },
            "nullable": true
          },
          "repaired": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelDefinitionRepairEntry"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelDocumentPostRequest": {
        "required": [
          "documentKey",
          "modelID"
        ],
        "type": "object",
        "properties": {
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the model to which the document is associated.",
            "format": "int32",
            "example": 10
          },
          "documentKey": {
            "minLength": 1,
            "type": "string",
            "description": "The key for accessing the document.",
            "format": "json",
            "example": "document_10.pdf"
          }
        },
        "additionalProperties": false,
        "description": "Request model for submitting a document associated with a specific model."
      },
      "ModelDuplicateAndTranslateRequest": {
        "required": [
          "modelID",
          "modelVersionID"
        ],
        "type": "object",
        "properties": {
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the source model to duplicate",
            "format": "int32"
          },
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version to duplicate",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelDuplicateRequest": {
        "required": [
          "modelID",
          "modelTypeID",
          "modelVersionID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the source model to duplicate",
            "format": "int32"
          },
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version to duplicate",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name for the duplicated model (maximum length: 100 characters)",
            "format": "json"
          },
          "modelName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The model name for asset-based models (maximum length: 50 characters)",
            "format": "json",
            "nullable": true
          },
          "modelTypeID": {
            "type": "integer",
            "description": "The unique identifier of the model type",
            "format": "int32"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The type of model template (single character)\nA - Asset-based model\nF - Facility-based model",
            "format": "json",
            "nullable": true
          },
          "serialNumberRange": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The range of serial numbers applicable to this model (maximum length: 100 characters)",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelExpirySettingsRequest": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "defaultWarningDaysBeforeExpiry": {
            "maximum": 365,
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelImportActionRequest": {
        "type": "object",
        "properties": {
          "actionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "newName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "newNameTranslations": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelImportImportRequest": {
        "type": "object",
        "properties": {
          "targetLanguage": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "description": "ISO 639-1 language code, e.g. \"es\", \"fr\".",
            "format": "json",
            "nullable": true
          },
          "country": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "description": "Optional ISO 3166-1 alpha-2 country code, e.g. \"MX\", \"FR\".",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Optional payload for the Model Import \"Complete\" action.\nWhen TargetLanguage is set, the imported ModelVersion's task content\n(Name, Purpose, Procedure, hazards, PPE, etc.) is translated before\nthe entities are persisted."
      },
      "ModelImportLubricantRequest": {
        "type": "object",
        "properties": {
          "lubricantID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "newName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "newNameTranslations": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelImportOperatingModeRequest": {
        "type": "object",
        "properties": {
          "operatingModeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "newName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "newNameTranslations": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelImportRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "model": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelTypeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "serialNumberRange": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "siteLocationID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelImportRoleRequest": {
        "type": "object",
        "properties": {
          "roleID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "newName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "newNameTranslations": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelImportSystemRequest": {
        "type": "object",
        "properties": {
          "systemID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "newName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "newNameTranslations": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelIntervalTaskListNoPostRequest": {
        "required": [
          "intervalGroupID",
          "modelID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the model",
            "format": "int32"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The name of the task list number",
            "format": "json"
          },
          "intervalGroupID": {
            "type": "integer",
            "description": "The unique identifier of the interval group",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelIntervalTaskListNoRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelNotePostRequest": {
        "required": [
          "modelID",
          "note"
        ],
        "type": "object",
        "properties": {
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the model",
            "format": "int32"
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "description": "The content of the note associated with the model",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ModelPostRequest": {
        "required": [
          "modelTypeID",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the model (maximum length: 100 characters)",
            "format": "json"
          },
          "modelName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The model identifier for asset-based models (maximum length: 50 characters)",
            "format": "json",
            "nullable": true
          },
          "modelTypeID": {
            "type": "integer",
            "description": "The unique identifier of the model type",
            "format": "int32"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The type of model template (single character)\nA - Asset-based model\nF - Facility-based model",
            "format": "json",
            "nullable": true
          },
          "serialNumberRange": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The range of serial numbers applicable to this model (maximum length: 100 characters)",
            "format": "json",
            "nullable": true
          },
          "siteDepartments": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Collection of site department identifiers associated with this model",
            "nullable": true
          },
          "primaryLocale": {
            "type": "string",
            "description": "The language the model's content will be authored in. Optional; when\nabsent the site application's primary language applies.",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelSearchPostRequest": {
        "type": "object",
        "properties": {
          "siteDepartmentIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A collection of Site Department IDs to include in the filter",
            "nullable": true
          },
          "modelStatusIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A collection of Model Status IDs to include in the filter",
            "nullable": true
          },
          "pageNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "The page number for pagination (optional).",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "pageSize": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "The number of items per page (optional).",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "sortField": {
            "type": "string",
            "description": "The field by which to sort the results (optional).",
            "format": "json",
            "nullable": true,
            "example": "name"
          },
          "sortOrder": {
            "type": "string",
            "description": "The order in which to sort the results (optional). Use \"asc\" for ascending or \"desc\" for descending.",
            "format": "json",
            "nullable": true,
            "example": "asc"
          },
          "modelTypeIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A collection of Model Type IDs to include in the filter",
            "nullable": true
          },
          "userIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A collection of User IDs to include in the filter (filters by modified user)",
            "nullable": true
          },
          "siteAssetIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A collection of Site Asset IDs to include in the filter",
            "nullable": true
          },
          "modelIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A collection of Model IDs to include in the filter",
            "nullable": true
          },
          "textSearches": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "description": "A collection of text filters to include (searches across model names, types, users, etc.)",
            "nullable": true
          },
          "onlyExpired": {
            "type": "boolean",
            "description": "When true, only includes models whose active version is expired (per the SiteApp's\nModel Expiry Report settings). Has no effect when that report is disabled. Combines\nwith EMI3APIServer.Models.Request.ModelSearchPostRequest.OnlyExpiringSoon as an OR when both are set."
          },
          "onlyExpiringSoon": {
            "type": "boolean",
            "description": "When true, only includes models whose active version is expiring soon, i.e. within its\nwarning window but not yet expired (per the SiteApp's Model Expiry Report settings).\nHas no effect when that report is disabled. Combines with EMI3APIServer.Models.Request.ModelSearchPostRequest.OnlyExpired as\nan OR when both are set."
          }
        },
        "additionalProperties": false,
        "description": "Request model for searching models with pagination and sorting options."
      },
      "ModelStatus": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "publish": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ModelStatusPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the model status (maximum length: 50 characters)",
            "format": "json"
          },
          "publish": {
            "type": "boolean",
            "description": "Indicates whether the model status should be published"
          }
        },
        "additionalProperties": false
      },
      "ModelStatusRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "publish": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ModelTaskNotePostRequest": {
        "required": [
          "modelID",
          "note",
          "taskGroupID"
        ],
        "type": "object",
        "properties": {
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the model",
            "format": "int32"
          },
          "taskGroupID": {
            "type": "integer",
            "description": "The unique identifier of the task group",
            "format": "int32"
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "description": "The content of the note associated with the model task",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ModelTaskNotePutRequest": {
        "required": [
          "note"
        ],
        "type": "object",
        "properties": {
          "note": {
            "minLength": 1,
            "type": "string",
            "description": "The updated content of the note",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ModelTransferRequest": {
        "required": [
          "destinationSiteAppID",
          "modelVersionID"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version to transfer",
            "format": "int32",
            "example": 57
          },
          "destinationSiteAppID": {
            "type": "integer",
            "description": "The unique identifier of the destination site application where the model will be transferred",
            "format": "int32",
            "example": 48
          }
        },
        "additionalProperties": false
      },
      "ModelTranslationLanguageRequest": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelType": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "code": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelTypePostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the model type (maximum length: 50 characters)",
            "format": "json"
          },
          "code": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The code identifier for the model type (maximum length: 50 characters)",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelTypeRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "code": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersion": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "model": {
            "$ref": "#/components/schemas/Model"
          },
          "modelID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "modelStatus": {
            "$ref": "#/components/schemas/ModelStatus"
          },
          "modelStatusID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelType": {
            "$ref": "#/components/schemas/ModelType"
          },
          "modelTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "serialNumberRange": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "showTimer": {
            "type": "boolean"
          },
          "allowTickAllPartsTools": {
            "type": "boolean"
          },
          "listPartsToolsByStageZone": {
            "type": "boolean"
          },
          "hideParts": {
            "type": "boolean"
          },
          "hideTools": {
            "type": "boolean"
          },
          "isPublished": {
            "type": "boolean"
          },
          "enableIntervalAutoInclude": {
            "type": "boolean"
          },
          "reviewDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "warningDaysBeforeExpiry": {
            "maximum": 365,
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "translationStatus": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "translationTargetLanguage": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "translationCountry": {
            "maxLength": 10,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "translationError": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "translationStartedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "translationCompletedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "imageURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionStage"
            },
            "nullable": true
          },
          "zones": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionZone"
            },
            "nullable": true
          },
          "intervals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionInterval"
            },
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionRole"
            },
            "nullable": true
          },
          "questions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionQuestion"
            },
            "nullable": true
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTask"
            },
            "nullable": true
          },
          "departments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionDepartment"
            },
            "nullable": true
          },
          "arrangements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionArrangement"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionArrangement": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "arrangementGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionArrangementPostRequest": {
        "required": [
          "modelVersionID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the model version arrangement (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionArrangementRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "pos": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionAttachmentIntervalRoleUsageFile": {
        "type": "object",
        "properties": {
          "modelVersionTaskAttachmentID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "taskActionName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "filename": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "filesize": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionAttachmentIntervalRoleUsageItem": {
        "type": "object",
        "properties": {
          "modelVersionIntervalID": {
            "type": "integer",
            "format": "int32"
          },
          "intervalName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelVersionRoleID": {
            "type": "integer",
            "format": "int32"
          },
          "roleName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "totalFilesize": {
            "type": "integer",
            "format": "int32"
          },
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionAttachmentIntervalRoleUsageFile"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionAttachmentIntervalRoleUsageResponse": {
        "type": "object",
        "properties": {
          "hasVersion": {
            "type": "boolean"
          },
          "modelVersionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "largestTotalFilesize": {
            "type": "integer",
            "format": "int32"
          },
          "capBytes": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionAttachmentIntervalRoleUsageItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionDepartment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "siteDepartment": {
            "$ref": "#/components/schemas/SiteDepartment"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionDepartmentPostRequest": {
        "required": [
          "modelVersionID"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionInterval": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "intervalGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "modelVersionIntervalIncludes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionIntervalInclude"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionIntervalInclude": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionInterval": {
            "$ref": "#/components/schemas/ModelVersionInterval"
          },
          "modelVersionIntervalID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "includeModelVersionInterval": {
            "$ref": "#/components/schemas/ModelVersionInterval"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionIntervalIncludePostRequest": {
        "required": [
          "includeModelVersionIntervalID",
          "modelVersionIntervalID"
        ],
        "type": "object",
        "properties": {
          "modelVersionIntervalID": {
            "type": "integer",
            "description": "The unique identifier of the primary model version interval",
            "format": "int32"
          },
          "includeModelVersionIntervalID": {
            "type": "integer",
            "description": "The unique identifier of the model version interval to be included",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionIntervalPostRequest": {
        "required": [
          "modelVersionID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the model version interval (maximum length: 100 characters)",
            "format": "json"
          },
          "taskListNos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionIntervalPostRequestTaskListNos"
            },
            "description": "Collection of task list numbers associated with this interval",
            "nullable": true
          },
          "includes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionIntervalPostRequestIncludes"
            },
            "description": "Collection of intervals to be included within this interval",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionIntervalPostRequestIncludes": {
        "required": [
          "modelVersionIntervalID"
        ],
        "type": "object",
        "properties": {
          "modelVersionIntervalID": {
            "type": "integer",
            "description": "The unique identifier of the model version interval to be included",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionIntervalPostRequestTaskListNos": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the task list number (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionIntervalRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionPasteQuestionRequest": {
        "required": [
          "modelVersionQuestionID"
        ],
        "type": "object",
        "properties": {
          "modelVersionQuestionID": {
            "type": "integer",
            "description": "The unique identifier of the model version question to be pasted",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionPasteTaskRequest": {
        "required": [
          "modelVersionTaskID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task to be pasted",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionPublishRequest": {
        "required": [
          "modelVersionID"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version to publish",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionQuestion": {
        "required": [
          "caption",
          "timing",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionStage": {
            "$ref": "#/components/schemas/ModelVersionStage"
          },
          "modelVersionZone": {
            "$ref": "#/components/schemas/ModelVersionZone"
          },
          "isCompulsory": {
            "type": "boolean"
          },
          "caption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "timing": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "decimalPlaces": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "checkboxCaption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelVersionQuestionRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionQuestionRole"
            },
            "nullable": true
          },
          "modelVersionQuestionOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionQuestionOption"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionQuestionOption": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionQuestion": {
            "$ref": "#/components/schemas/ModelVersionQuestion"
          },
          "modelVersionQuestionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "questionOptionGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pos": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionQuestionOptionPostRequest": {
        "required": [
          "modelVersionQuestionID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelVersionQuestionID": {
            "type": "integer",
            "description": "The unique identifier of the model version question",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the question option (maximum length: 100 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionQuestionOptionRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "ModelVersionQuestionPostRequest": {
        "required": [
          "caption",
          "modelVersionID",
          "timing",
          "type"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version",
            "format": "int32"
          },
          "modelVersionStageID": {
            "type": "integer",
            "description": "The unique identifier of the model version stage (nullable)",
            "format": "int32",
            "nullable": true
          },
          "modelVersionZoneID": {
            "type": "integer",
            "description": "The unique identifier of the model version zone (nullable)",
            "format": "int32",
            "nullable": true
          },
          "isCompulsory": {
            "type": "boolean",
            "description": "Indicates whether the question must be answered"
          },
          "caption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The text caption of the question (maximum length: 255 characters)",
            "format": "json"
          },
          "timing": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The timing classification of the question (single character)\nB - Beginning of Service\nS - Beginning of Stage\nZ - Beginning of Zone\nE - End of Service",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The type of question (single character)\nS - Short Text\nB - Boolean\nN - Number\nL - Long Text\nT - Time\nD - Date\nO - Dropdown List\nC - List",
            "format": "json"
          },
          "decimalPlaces": {
            "type": "integer",
            "description": "The number of decimal places for numeric responses (nullable)",
            "format": "int32",
            "nullable": true
          },
          "checkboxCaption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The caption text for checkbox questions (maximum length: 255 characters)",
            "format": "json",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionQuestionPostRequestRole"
            },
            "description": "Collection of roles associated with this question",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionQuestionPostRequestOption"
            },
            "description": "Collection of options available for this question",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionQuestionPostRequestOption": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the question option (maximum length: 100 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionQuestionPostRequestRole": {
        "required": [
          "modelVersionRoleID"
        ],
        "type": "object",
        "properties": {
          "modelVersionRoleID": {
            "type": "integer",
            "description": "The unique identifier of the model version role",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionQuestionRequest": {
        "type": "object",
        "properties": {
          "isCompulsory": {
            "type": "boolean"
          },
          "caption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "timing": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "decimalPlaces": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "checkboxCaption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionQuestionRole": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionQuestion": {
            "$ref": "#/components/schemas/ModelVersionQuestion"
          },
          "modelVersionQuestionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionRole": {
            "$ref": "#/components/schemas/ModelVersionRole"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionQuestionRolePostRequest": {
        "required": [
          "modelVersionQuestionID",
          "modelVersionRoleID"
        ],
        "type": "object",
        "properties": {
          "modelVersionQuestionID": {
            "type": "integer",
            "description": "The unique identifier of the model version question",
            "format": "int32"
          },
          "modelVersionRoleID": {
            "type": "integer",
            "description": "The unique identifier of the model version role",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionRequest": {
        "type": "object",
        "properties": {
          "modelStatusID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelTypeID": {
            "type": "integer",
            "format": "int32"
          },
          "serialNumberRange": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "siteLocationID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "imageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "showTimer": {
            "type": "boolean"
          },
          "allowTickAllPartsTools": {
            "type": "boolean"
          },
          "listPartsToolsByStageZone": {
            "type": "boolean"
          },
          "hideParts": {
            "type": "boolean"
          },
          "hideTools": {
            "type": "boolean"
          },
          "enableIntervalAutoInclude": {
            "type": "boolean"
          },
          "reviewDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "warningDaysBeforeExpiry": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionRole": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "roleGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "role": {
            "$ref": "#/components/schemas/Role"
          },
          "roleID": {
            "type": "integer",
            "format": "int32"
          },
          "siteDepartment": {
            "$ref": "#/components/schemas/SiteDepartment"
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionRolePostRequest": {
        "required": [
          "modelVersionID",
          "name",
          "roleID"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the model version role (maximum length: 100 characters)",
            "format": "json"
          },
          "roleID": {
            "type": "integer",
            "description": "The unique identifier of the associated role",
            "format": "int32"
          },
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the site department (nullable)",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionRoleRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "roleID": {
            "type": "integer",
            "format": "int32"
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionStage": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "stageGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "imageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "hasZones": {
            "type": "boolean"
          },
          "defaultSiteAssetFilter": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionStagePostRequest": {
        "required": [
          "modelVersionID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the model version stage (maximum length: 50 characters)",
            "format": "json"
          },
          "hasZones": {
            "type": "boolean",
            "description": "Indicates whether this stage contains zones"
          },
          "defaultSiteAssetFilter": {
            "type": "string",
            "description": "The default filter criteria for site assets in this stage",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionStageRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "hasZones": {
            "type": "boolean"
          },
          "imageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defaultSiteAssetFilter": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTask": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "taskGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "action": {
            "$ref": "#/components/schemas/Action"
          },
          "actionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "operatingMode": {
            "$ref": "#/components/schemas/OperatingMode"
          },
          "operatingModeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "system": {
            "$ref": "#/components/schemas/System"
          },
          "systemID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lubricant": {
            "$ref": "#/components/schemas/Lubricant"
          },
          "lubricantID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "safetyCritical": {
            "type": "boolean"
          },
          "estimatedMinutes": {
            "type": "number",
            "format": "float"
          },
          "notSkippable": {
            "type": "boolean"
          },
          "lubricantVolume": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "lubricantUOM": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "purpose": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "procedure": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "possibleHazards": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "additionalPPE": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "specification": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "contaminationControl": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "otherInformation": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "correctiveActions": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isolations": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "controls": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField1": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField2": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField3": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customIntervals": {
            "type": "boolean"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "stages": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "zones": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "roles": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "intervals": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assets": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "arrangements": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelVersionTaskDocuments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskDocument"
            },
            "nullable": true
          },
          "modelVersionTaskImages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskImage"
            },
            "nullable": true
          },
          "modelVersionTaskIntervals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskInterval"
            },
            "nullable": true
          },
          "modelVersionTaskParts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskPart"
            },
            "nullable": true
          },
          "modelVersionTaskPermits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskPermit"
            },
            "nullable": true
          },
          "modelVersionTaskQuestions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskQuestion"
            },
            "nullable": true
          },
          "modelVersionTaskRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskRole"
            },
            "nullable": true
          },
          "modelVersionTaskStages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskStage"
            },
            "nullable": true
          },
          "modelVersionTaskTools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskTool"
            },
            "nullable": true
          },
          "modelVersionTaskZones": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskZone"
            },
            "nullable": true
          },
          "modelVersionTaskArrangements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskArrangement"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskArrangement": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionArrangement": {
            "$ref": "#/components/schemas/ModelVersionArrangement"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskArrangementPostRequest": {
        "required": [
          "modelVersionArrangementID",
          "modelVersionTaskID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          },
          "modelVersionArrangementID": {
            "type": "integer",
            "description": "The unique identifier of the model version arrangement",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskBulkAssignRequest": {
        "required": [
          "modelVersionID",
          "taskIDs"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The Model Version the Tasks belong to. Tasks outside it are rejected.",
            "format": "int32"
          },
          "taskIDs": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The Task IDs to update."
          },
          "addIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Related IDs to link to every listed Task. Already-linked Tasks are left alone.",
            "nullable": true
          },
          "removeIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Related IDs to unlink from every listed Task. Not-linked Tasks are left alone.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Adds and/or removes links between a set of Tasks and a related Model\nVersion entity (Roles, Zones, Stages, Intervals or Arrangements).\n            \nAdd and Remove are applied per Task, so a partially applied selection can\nbe resolved without clearing values from Tasks the caller did not intend\nto change."
      },
      "ModelVersionTaskBulkAssignResponse": {
        "type": "object",
        "properties": {
          "tasksUpdated": {
            "type": "integer",
            "description": "How many Tasks had at least one link added or removed.",
            "format": "int32"
          },
          "linksAdded": {
            "type": "integer",
            "description": "How many links were created.",
            "format": "int32"
          },
          "linksRemoved": {
            "type": "integer",
            "description": "How many links were removed.",
            "format": "int32"
          },
          "skippedTaskIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Requested Task IDs that were not touched, because they do not exist,\nwere already deleted, belong to another Model Version, or belong to\nanother tenant. Not distinguished, so the response cannot be used to\nprobe for another tenant's Tasks.",
            "nullable": true
          },
          "skippedRelatedIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Requested Add/Remove IDs that are not part of this Model Version and\nwere therefore ignored.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The outcome of a bulk assign against a Task relation."
      },
      "ModelVersionTaskBulkDeleteResponse": {
        "type": "object",
        "properties": {
          "deletedCount": {
            "type": "integer",
            "description": "How many Tasks were deleted.",
            "format": "int32"
          },
          "skippedIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Requested IDs that were not deleted, because they do not exist, were\nalready deleted, belong to another Model Version, or belong to another\ntenant. These are deliberately not distinguished, so the response cannot\nbe used to probe for the existence of another tenant's Tasks.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The outcome of a bulk Task delete."
      },
      "ModelVersionTaskBulkDuplicateResponse": {
        "type": "object",
        "properties": {
          "createdCount": {
            "type": "integer",
            "description": "How many Tasks were created.",
            "format": "int32"
          },
          "createdTaskIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of the newly created Tasks, in the order they were copied.",
            "nullable": true
          },
          "skippedIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Requested IDs that were not duplicated, because they do not exist, were\nalready deleted, belong to another Model Version, or belong to another\ntenant. Not distinguished, so the response cannot be used to probe for\nanother tenant's Tasks.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The outcome of a bulk Task duplicate."
      },
      "ModelVersionTaskBulkPasteQuestionRequest": {
        "required": [
          "modelVersionID",
          "sourceQuestionID",
          "taskIDs"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "sourceQuestionID": {
            "type": "integer",
            "description": "The Question being copied.",
            "format": "int32"
          },
          "taskIDs": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The Tasks to paste onto. The Question's own Task may be included; it is skipped."
          }
        },
        "additionalProperties": false,
        "description": "Copies a single Question onto a set of Tasks."
      },
      "ModelVersionTaskBulkPasteQuestionsRequest": {
        "required": [
          "modelVersionID",
          "sourceTaskID",
          "taskIDs"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "sourceTaskID": {
            "type": "integer",
            "description": "The Task whose Questions are being copied.",
            "format": "int32"
          },
          "taskIDs": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The Tasks to paste onto. The source may be included; it is skipped."
          }
        },
        "additionalProperties": false,
        "description": "Copies every Question from one Task onto a set of Tasks."
      },
      "ModelVersionTaskBulkPasteResponse": {
        "type": "object",
        "properties": {
          "tasksUpdated": {
            "type": "integer",
            "description": "How many Tasks received Questions.",
            "format": "int32"
          },
          "questionsPasted": {
            "type": "integer",
            "description": "How many Question rows were created in total.",
            "format": "int32"
          },
          "skippedIDs": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Requested IDs that were not pasted onto: unknown, deleted, in another\nModel Version, another tenant, or the source Task itself.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The outcome of pasting Questions onto several Tasks."
      },
      "ModelVersionTaskDocument": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "documentKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "link": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "filesize": {
            "type": "integer",
            "format": "int32"
          },
          "filename": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "documentURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskDocumentPostRequest": {
        "required": [
          "modelVersionTaskID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          },
          "name": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The name of the document (maximum length: 255 characters)",
            "format": "json"
          },
          "documentKey": {
            "type": "string",
            "description": "The unique key identifier for the document",
            "format": "json",
            "nullable": true
          },
          "link": {
            "type": "string",
            "description": "The URL or reference link to the document",
            "format": "json",
            "nullable": true
          },
          "filename": {
            "type": "string",
            "description": "The original filename of the document",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskDocumentRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "documentKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "link": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "filename": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskIDsRequest": {
        "required": [
          "modelVersionID",
          "taskIDs"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The Model Version the Tasks belong to. Tasks outside it are rejected.",
            "format": "int32"
          },
          "taskIDs": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The selected Task IDs."
          }
        },
        "additionalProperties": false,
        "description": "Identifies a set of Tasks within a single Model Version. Shared by every\nbulk endpoint that only needs a Task selection to act on: delete,\nduplicate, and the bulk-assign relation summaries."
      },
      "ModelVersionTaskImage": {
        "required": [
          "description",
          "imageKey"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "imageKey": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "thumbnailKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskImageRequest": {
        "type": "object",
        "properties": {
          "description": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskInterval": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionInterval": {
            "$ref": "#/components/schemas/ModelVersionInterval"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskIntervalPostRequest": {
        "required": [
          "modelVersionIntervalID",
          "modelVersionTaskID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          },
          "modelVersionIntervalID": {
            "type": "integer",
            "description": "The unique identifier of the model version interval",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskListItemResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "taskGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "orderNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "actionName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "actionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "operatingModeName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "operatingModeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "systemName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "systemID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "roles": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "estimatedMinutes": {
            "type": "number",
            "format": "float"
          },
          "intervals": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stages": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "zones": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assets": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "arrangements": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "hasTaskImages": {
            "type": "boolean"
          },
          "hasTools": {
            "type": "boolean"
          },
          "hasParts": {
            "type": "boolean"
          },
          "hasDocuments": {
            "type": "boolean"
          },
          "hasQuestions": {
            "type": "boolean"
          },
          "hasPermits": {
            "type": "boolean"
          },
          "safetyCritical": {
            "type": "boolean"
          },
          "hasErrors": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPagedResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskListItemResponse"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "hasPreviousPage": {
            "type": "boolean"
          },
          "hasNextPage": {
            "type": "boolean"
          },
          "anchorTaskId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "anchorFound": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPart": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "qty": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "description": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stockNumber": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "pos": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPartPostRequest": {
        "required": [
          "modelVersionTaskID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          },
          "qty": {
            "type": "integer",
            "description": "The quantity of parts required",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the part (maximum length: 100 characters)",
            "format": "json"
          },
          "description": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The description of the part (maximum length: 100 characters)",
            "format": "json",
            "nullable": true
          },
          "stockNumber": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The stock or inventory number of the part (maximum length: 100 characters)",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPartRequest": {
        "type": "object",
        "properties": {
          "qty": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "description": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stockNumber": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPartsImportRequest": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "key": {
            "minLength": 1,
            "type": "string",
            "description": "S3 key of the uploaded CSV file",
            "format": "json"
          },
          "import": {
            "type": "boolean",
            "description": "When true, records are saved to the database; when false, a dry-run validation is performed"
          },
          "selectedIndices": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Zero-based indices of CSV rows to import. When absent or empty, all valid rows are imported.",
            "nullable": true
          },
          "manualRows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualModelVersionTaskPartRow"
            },
            "description": "Manually entered rows to save alongside the selected CSV rows in the same transaction.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPasteDocumentRequest": {
        "required": [
          "modelVersionTaskDocumentID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskDocumentID": {
            "type": "integer",
            "description": "The unique identifier of the model version task document to be pasted",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPasteImageRequest": {
        "required": [
          "modelVersionTaskImageID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskImageID": {
            "type": "integer",
            "description": "The unique identifier of the model version task image to be pasted",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPastePartRequest": {
        "required": [
          "modelVersionTaskPartID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskPartID": {
            "type": "integer",
            "description": "The unique identifier of the model version task part to be pasted",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPastePermitRequest": {
        "required": [
          "modelVersionTaskPermitID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskPermitID": {
            "type": "integer",
            "description": "The unique identifier of the model version task permit to be pasted",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPasteQuestionRequest": {
        "required": [
          "modelVersionTaskQuestionID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskQuestionID": {
            "type": "integer",
            "description": "The unique identifier of the model version task question to be pasted",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPasteQuestionsRequest": {
        "required": [
          "modelVersionTaskID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task containing questions to be pasted",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPasteToolRequest": {
        "required": [
          "modelVersionTaskToolID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskToolID": {
            "type": "integer",
            "description": "The unique identifier of the model version task tool to be pasted",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPermit": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pos": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPermitPostRequest": {
        "required": [
          "modelVersionTaskID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the permit (maximum length: 100 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPermitRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskPostRequest": {
        "required": [
          "modelVersionID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version",
            "format": "int32"
          },
          "actionID": {
            "type": "integer",
            "description": "The unique identifier of the associated action (nullable)",
            "format": "int32",
            "nullable": true
          },
          "operatingModeID": {
            "type": "integer",
            "description": "The unique identifier of the operating mode (nullable)",
            "format": "int32",
            "nullable": true
          },
          "systemID": {
            "type": "integer",
            "description": "The unique identifier of the system (nullable)",
            "format": "int32",
            "nullable": true
          },
          "lubricantID": {
            "type": "integer",
            "description": "The unique identifier of the lubricant (nullable)",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The name of the task (maximum length: 255 characters)",
            "format": "json"
          },
          "safetyCritical": {
            "type": "boolean",
            "description": "Indicates whether the task is safety critical"
          },
          "estimatedMinutes": {
            "type": "number",
            "description": "The estimated time to complete the task in minutes",
            "format": "float"
          },
          "notSkippable": {
            "type": "boolean",
            "description": "Indicates whether the task can be skipped"
          },
          "lubricantVolume": {
            "type": "number",
            "description": "The volume of lubricant required (nullable)",
            "format": "float",
            "nullable": true
          },
          "lubricantUOM": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The unit of measure for the lubricant volume (maximum length: 50 characters)",
            "format": "json",
            "nullable": true
          },
          "purpose": {
            "type": "string",
            "description": "The purpose or objective of the task",
            "format": "json",
            "nullable": true
          },
          "procedure": {
            "type": "string",
            "description": "The detailed procedure for completing the task",
            "format": "json",
            "nullable": true
          },
          "possibleHazards": {
            "type": "string",
            "description": "Description of potential hazards associated with the task",
            "format": "json",
            "nullable": true
          },
          "additionalPPE": {
            "type": "string",
            "description": "Additional personal protective equipment required for the task",
            "format": "json",
            "nullable": true
          },
          "specification": {
            "type": "string",
            "description": "Technical specifications related to the task",
            "format": "json",
            "nullable": true
          },
          "contaminationControl": {
            "type": "string",
            "description": "Contamination control measures for the task",
            "format": "json",
            "nullable": true
          },
          "otherInformation": {
            "type": "string",
            "description": "Additional information about the task",
            "format": "json",
            "nullable": true
          },
          "correctiveActions": {
            "type": "string",
            "description": "Corrective actions to be taken if issues are found",
            "format": "json",
            "nullable": true
          },
          "isolations": {
            "type": "string",
            "description": "Required isolations for the task",
            "format": "json",
            "nullable": true
          },
          "controls": {
            "type": "string",
            "description": "Control measures for the task",
            "format": "json",
            "nullable": true
          },
          "customField1": {
            "type": "string",
            "description": "Custom field 1 for additional task information",
            "format": "json",
            "nullable": true
          },
          "customField2": {
            "type": "string",
            "description": "Custom field 2 for additional task information",
            "format": "json",
            "nullable": true
          },
          "customField3": {
            "type": "string",
            "description": "Custom field 3 for additional task information",
            "format": "json",
            "nullable": true
          },
          "customIntervals": {
            "type": "boolean",
            "description": "Indicates whether the task uses custom intervals"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Collection of role identifiers associated with this task",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskQuestion": {
        "required": [
          "caption",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "taskQuestionGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "isCompulsory": {
            "type": "boolean"
          },
          "caption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "decimalPlaces": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "minValue": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "maxValue": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "checkboxCaption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "captureImage": {
            "type": "boolean"
          },
          "enableConditionMonitoringAlert": {
            "type": "boolean"
          },
          "alertThresholdMode": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "alertAboveThreshold": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "alertBelowThreshold": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "alertMessage": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelVersionTaskQuestionOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskQuestionOption"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskQuestionOption": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTaskQuestion": {
            "$ref": "#/components/schemas/ModelVersionTaskQuestion"
          },
          "modelVersionTaskQuestionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "taskQuestionOptionGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "raiseDefect": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskQuestionOptionPostRequest": {
        "required": [
          "modelVersionTaskQuestionID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskQuestionID": {
            "type": "integer",
            "description": "The unique identifier of the model version task question",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the question option (maximum length: 100 characters)",
            "format": "json"
          },
          "raiseDefect": {
            "type": "boolean",
            "description": "Indicates whether selecting this option should raise a defect"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskQuestionOptionRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "ModelVersionTaskQuestionPostRequest": {
        "required": [
          "caption",
          "modelVersionTaskID",
          "type"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          },
          "isCompulsory": {
            "type": "boolean",
            "description": "Indicates whether the question must be answered"
          },
          "caption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The text caption of the question (maximum length: 255 characters)",
            "format": "json"
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The type of question (single character)\nValid Types:\nS - Short Text\nB - Boolean\nN - Number\nL - Long Text\nT - Time\nD - Date\nO - Dropdown List\nC - List",
            "format": "json"
          },
          "decimalPlaces": {
            "type": "integer",
            "description": "The number of decimal places for numeric responses (nullable)",
            "format": "int32",
            "nullable": true
          },
          "minValue": {
            "type": "number",
            "description": "The minimum allowed value for numeric responses (nullable)",
            "format": "float",
            "nullable": true
          },
          "maxValue": {
            "type": "number",
            "description": "The maximum allowed value for numeric responses (nullable)",
            "format": "float",
            "nullable": true
          },
          "checkboxCaption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The caption text for checkbox questions (maximum length: 255 characters)",
            "format": "json",
            "nullable": true
          },
          "captureImage": {
            "type": "boolean",
            "description": "Indicates whether answering this question requires capturing an image"
          },
          "enableConditionMonitoringAlert": {
            "type": "boolean",
            "description": "Indicates whether a Condition Monitoring data alert trigger is enabled for this numeric question"
          },
          "alertThresholdMode": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The alert threshold mode (single character)\nP - Percentage change relative to the previous reading\nA - Absolute numeric change relative to the previous reading",
            "format": "json",
            "nullable": true
          },
          "alertAboveThreshold": {
            "type": "number",
            "description": "The above threshold that fires the alert (nullable)",
            "format": "float",
            "nullable": true
          },
          "alertBelowThreshold": {
            "type": "number",
            "description": "The below threshold that fires the alert (nullable)",
            "format": "float",
            "nullable": true
          },
          "alertMessage": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "The custom alert message shown when the trigger fires (maximum length: 1000 characters)",
            "format": "json",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskQuestionPostRequestOption"
            },
            "description": "Collection of options available for this question",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskQuestionPostRequestOption": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the question option (maximum length: 100 characters)",
            "format": "json"
          },
          "raiseDefect": {
            "type": "boolean",
            "description": "Indicates whether selecting this option should raise a defect"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskQuestionRequest": {
        "type": "object",
        "properties": {
          "isCompulsory": {
            "type": "boolean"
          },
          "caption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "type": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "decimalPlaces": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "minValue": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "maxValue": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "checkboxCaption": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "captureImage": {
            "type": "boolean"
          },
          "enableConditionMonitoringAlert": {
            "type": "boolean"
          },
          "alertThresholdMode": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "alertAboveThreshold": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "alertBelowThreshold": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "alertMessage": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskRelationOption": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assignedTaskCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskRelationSummaryResponse": {
        "type": "object",
        "properties": {
          "taskCount": {
            "type": "integer",
            "description": "How many of the requested Tasks were found. Compare an option's\nAssignedTaskCount against this to decide ticked vs part-ticked.",
            "format": "int32"
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelVersionTaskRelationOption"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Every option of a relation for a Model Version, plus how many of the\nrequested Tasks currently have it. Lets a bulk editor show a checkbox\nalready ticked, part-ticked or clear without asking per Task."
      },
      "ModelVersionTaskRequest": {
        "type": "object",
        "properties": {
          "actionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "operatingModeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "systemID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lubricantID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "safetyCritical": {
            "type": "boolean"
          },
          "estimatedMinutes": {
            "type": "number",
            "format": "float"
          },
          "notSkippable": {
            "type": "boolean"
          },
          "lubricantVolume": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "lubricantUOM": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "purpose": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "procedure": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "possibleHazards": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "additionalPPE": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "specification": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "contaminationControl": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "otherInformation": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "correctiveActions": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isolations": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "controls": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField1": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField2": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField3": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customIntervals": {
            "type": "boolean"
          },
          "pos": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskRole": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionRole": {
            "$ref": "#/components/schemas/ModelVersionRole"
          },
          "modelVersionRoleID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskRolePostRequest": {
        "required": [
          "modelVersionRoleID",
          "modelVersionTaskID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          },
          "modelVersionRoleID": {
            "type": "integer",
            "description": "The unique identifier of the model version role",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskSearchPostRequest": {
        "required": [
          "modelVersionId"
        ],
        "type": "object",
        "properties": {
          "modelVersionId": {
            "type": "integer",
            "format": "int32"
          },
          "textSearches": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "roleIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "intervalIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "zoneIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "stageIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "arrangementIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskStage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionStage": {
            "$ref": "#/components/schemas/ModelVersionStage"
          },
          "siteAssetRegister": {
            "$ref": "#/components/schemas/SiteAssetRegister"
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pos": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskStagePostRequest": {
        "required": [
          "modelVersionStageID",
          "modelVersionTaskID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          },
          "modelVersionStageID": {
            "type": "integer",
            "description": "The unique identifier of the model version stage",
            "format": "int32"
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "description": "The unique identifier of the site asset register entry (nullable)",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskTool": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "qty": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pos": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskToolPostRequest": {
        "required": [
          "modelVersionTaskID",
          "name",
          "qty"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          },
          "qty": {
            "type": "integer",
            "description": "The quantity of tools required",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The name of the tool (maximum length: 100 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskToolRequest": {
        "type": "object",
        "properties": {
          "qty": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskZone": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionZone": {
            "$ref": "#/components/schemas/ModelVersionZone"
          },
          "siteAssetRegister": {
            "$ref": "#/components/schemas/SiteAssetRegister"
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pos": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "ModelVersionTaskZonePostRequest": {
        "required": [
          "modelVersionTaskID",
          "modelVersionZoneID"
        ],
        "type": "object",
        "properties": {
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32"
          },
          "modelVersionZoneID": {
            "type": "integer",
            "description": "The unique identifier of the model version zone",
            "format": "int32"
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "description": "The unique identifier of the site asset register entry (nullable)",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionZone": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "modelVersionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "zoneGroupID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "imageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defaultSiteAssetFilter": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionZonePostRequest": {
        "required": [
          "modelVersionID",
          "name"
        ],
        "type": "object",
        "properties": {
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the zone (maximum length: 50 characters)",
            "format": "json"
          },
          "defaultSiteAssetFilter": {
            "type": "string",
            "description": "The default filter criteria for site assets in this zone",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelVersionZoneRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defaultSiteAssetFilter": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NotFound404Response": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "type of the error.",
            "format": "json",
            "nullable": true,
            "example": "https://tools.ietf.org/html/rfc7235#section-3.1"
          },
          "title": {
            "type": "string",
            "description": "title of the error.",
            "format": "json",
            "nullable": true,
            "example": "NotFound"
          },
          "status": {
            "type": "integer",
            "description": "HTTP status code associated with the error.",
            "format": "int32",
            "example": 404
          },
          "traceId": {
            "type": "string",
            "description": "trace ID for tracking purposes.",
            "format": "json",
            "nullable": true,
            "example": "00-1753e572354dcfcb857e3213cba726f5-a914974fe7cff64b-00"
          }
        },
        "additionalProperties": false
      },
      "NoticeboardDepartmentPostRequest": {
        "required": [
          "noticeboardID",
          "siteDepartmentID"
        ],
        "type": "object",
        "properties": {
          "noticeboardID": {
            "type": "integer",
            "description": "The unique identifier of the noticeboard",
            "format": "int32"
          },
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the site department",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "NoticeboardPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the noticeboard (maximum length: 50 characters)",
            "format": "json"
          },
          "description": {
            "type": "string",
            "description": "The description of the noticeboard",
            "format": "json",
            "nullable": true
          },
          "documentKey": {
            "type": "string",
            "description": "The unique key identifier for the document",
            "format": "json",
            "nullable": true
          },
          "link": {
            "type": "string",
            "description": "The URL or reference link to the noticeboard content",
            "format": "json",
            "nullable": true
          },
          "expiryDate": {
            "type": "string",
            "description": "The date when the noticeboard content expires (nullable)",
            "format": "date-time",
            "nullable": true
          },
          "autoDelete": {
            "type": "boolean",
            "description": "When true, the noticeboard is automatically soft-deleted once ExpiryDate has passed (default: false)"
          },
          "siteDepartments": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Collection of site department identifiers associated with this noticeboard",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoticeboardRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "description": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "documentKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "link": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "expiryDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "autoDelete": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "OperatingMode": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "OperatingModePostRequest": {
        "required": [
          "name",
          "siteAppID"
        ],
        "type": "object",
        "properties": {
          "siteAppID": {
            "type": "integer",
            "description": "The unique identifier of the site application",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the operating mode (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "OperatingModeRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "Operation": {
        "type": "object",
        "properties": {
          "operationType": {
            "$ref": "#/components/schemas/OperationType"
          },
          "path": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "op": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "from": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "value": {
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OperationType": {
        "enum": [
          "0 - Add",
          "1 - Remove",
          "2 - Replace",
          "3 - Move",
          "4 - Copy",
          "5 - Test",
          "6 - Invalid"
        ],
        "type": "integer",
        "format": "int32"
      },
      "Part": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the part",
            "format": "int32",
            "example": 49
          },
          "name": {
            "type": "string",
            "description": "The name of the part",
            "format": "json",
            "nullable": true,
            "example": "Reversing Alarm Unit"
          },
          "description": {
            "type": "string",
            "description": "The description of the part",
            "format": "json",
            "nullable": true,
            "example": "12V Heavy Duty Reversing Alarm"
          },
          "qty": {
            "type": "integer",
            "description": "The quantity of parts required",
            "format": "int32",
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "PartRowResult": {
        "type": "object",
        "properties": {
          "rowIndex": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "description": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stockNumber": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "qty": {
            "type": "integer",
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "isSkipped": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Parts": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the part",
            "format": "int32",
            "example": 11
          },
          "qty": {
            "type": "integer",
            "description": "The quantity of parts required",
            "format": "int32",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "The part number or name",
            "format": "json",
            "nullable": true,
            "example": "8K7Y54"
          },
          "description": {
            "type": "string",
            "description": "The description of the part",
            "format": "json",
            "nullable": true,
            "example": "Hydraulic Supply Line"
          }
        },
        "additionalProperties": false
      },
      "Pause": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          },
          "pauseSubcategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PauseSubcategory"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PausePostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the pause category (maximum length: 50 characters)",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          },
          "pauseSubcategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PauseSubcategoryPostRequest"
            },
            "description": "Collection of pause subcategories associated with this pause category",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PauseRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "PauseSubcategory": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "pause": {
            "$ref": "#/components/schemas/Pause"
          },
          "pauseID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "PauseSubcategoryPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "pauseID": {
            "type": "integer",
            "description": "The unique identifier of the parent pause category",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the pause subcategory (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "PauseSubcategoryRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "PortalApp": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "logoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "regions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PortalRegion"
            },
            "nullable": true
          },
          "sites": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PortalSite"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PortalRegion": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "sites": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PortalSite"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PortalSite": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Position": {
        "required": [
          "analyticsAccess",
          "assetAccess",
          "defaultPage",
          "defectAccess",
          "feedbackAccess",
          "modelAccess",
          "name",
          "noticeboardAccess",
          "serviceAccess",
          "settingsAccess",
          "userAccess"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "noticeboardAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "settingsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serviceAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "analyticsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "allowPublish": {
            "type": "boolean"
          },
          "canAcknowledgeDefects": {
            "type": "boolean"
          },
          "showDefectListBeforeSignOff": {
            "type": "boolean"
          },
          "defaultPage": {
            "$ref": "#/components/schemas/DefaultPageType"
          }
        },
        "additionalProperties": false
      },
      "PositionPostRequest": {
        "required": [
          "analyticsAccess",
          "assetAccess",
          "defaultPage",
          "defectAccess",
          "feedbackAccess",
          "modelAccess",
          "name",
          "noticeboardAccess",
          "serviceAccess",
          "settingsAccess",
          "userAccess"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the position (maximum length: 50 characters)",
            "format": "json"
          },
          "modelAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for model functionality (single character)\nValid values:\nF - Full Access\nE - Edit Access\nR - Read Access\nN - No Access",
            "format": "json"
          },
          "noticeboardAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for noticeboard functionality (single character)\nValid values:\nF - Full Access\nE - Edit Access\nR - Read Access\nN - No Access",
            "format": "json"
          },
          "feedbackAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for feedback functionality (single character)\nValid values:\nF - Full Access\nE - Edit Access\nR - Read Access\nN - No Access",
            "format": "json"
          },
          "userAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for user management functionality (single character)\nValid values:\nF - Full Access\nE - Edit Access\nR - Read Access\nN - No Access",
            "format": "json"
          },
          "settingsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for settings functionality (single character)\nValid values:\nF - Full Access\nE - Edit Access\nR - Read Access\nN - No Access",
            "format": "json"
          },
          "serviceAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for service functionality (single character)\nValid values:\nF - Full Access\nE - Edit Access\nR - Read Access\nN - No Access",
            "format": "json"
          },
          "defectAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for defect management functionality (single character)\nValid values:\nF - Full Access\nE - Edit Access\nR - Read Access\nN - No Access",
            "format": "json"
          },
          "analyticsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for analytics functionality (single character)\nValid values:\nF - Full Access\nE - Edit Access\nR - Read Access\nN - No Access",
            "format": "json"
          },
          "assetAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "Access level for asset management functionality (single character)\nValid values:\nF - Full Access\nE - Edit Access\nR - Read Access\nN - No Access",
            "format": "json"
          },
          "allowPublish": {
            "type": "boolean",
            "description": "Indicates whether the position has permission to publish content"
          },
          "canAcknowledgeDefects": {
            "type": "boolean",
            "description": "Indicates whether the position has permission to acknowledge defects"
          },
          "showDefectListBeforeSignOff": {
            "type": "boolean",
            "description": "When true, the mobile app will present the defect list to the user\nbefore they stop or complete a service (sign off)."
          },
          "defaultPage": {
            "$ref": "#/components/schemas/DefaultPageType"
          }
        },
        "additionalProperties": false
      },
      "PositionRequest": {
        "required": [
          "analyticsAccess",
          "assetAccess",
          "defaultPage",
          "defectAccess",
          "feedbackAccess",
          "modelAccess",
          "name",
          "noticeboardAccess",
          "serviceAccess",
          "settingsAccess",
          "userAccess"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "noticeboardAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "settingsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serviceAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "analyticsAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetAccess": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "allowPublish": {
            "type": "boolean"
          },
          "canAcknowledgeDefects": {
            "type": "boolean"
          },
          "showDefectListBeforeSignOff": {
            "type": "boolean"
          },
          "defaultPage": {
            "$ref": "#/components/schemas/DefaultPageType"
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "title": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "ProductUpdateAudience": {
        "enum": [
          "1 - Web",
          "2 - Mobile",
          "3 - All"
        ],
        "type": "integer",
        "format": "int32"
      },
      "ProductUpdateCountResponse": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ProductUpdateImageUploadResponse": {
        "type": "object",
        "properties": {
          "imageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProductUpdateImportance": {
        "enum": [
          "1 - Normal",
          "2 - Featured"
        ],
        "type": "integer",
        "format": "int32"
      },
      "ProductUpdateListResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductUpdateResponse"
            },
            "nullable": true
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ProductUpdatePostRequest": {
        "required": [
          "shortDescription",
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "version": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "shortDescription": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "imageUrl": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageKey": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "externalUrl": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "audience": {
            "$ref": "#/components/schemas/ProductUpdateAudience"
          },
          "importance": {
            "$ref": "#/components/schemas/ProductUpdateImportance"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ProductUpdateResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "title": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "version": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "shortDescription": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageUrl": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "displayImageUrl": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "externalUrl": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "audience": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "importance": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time"
          },
          "isRead": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "QuestionModel": {
        "type": "object",
        "properties": {
          "caption": {
            "type": "string",
            "description": "The text caption of the question",
            "format": "json",
            "nullable": true,
            "example": "Record last date checked"
          },
          "type": {
            "type": "string",
            "description": "The type identifier of the question (e.g., D for Date, B for Boolean)",
            "format": "json",
            "nullable": true,
            "example": "D"
          },
          "date": {
            "type": "string",
            "description": "The date when the question was answered (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T14:30:00"
          },
          "valueBoolean": {
            "type": "boolean",
            "description": "The boolean answer value for yes/no questions (nullable)",
            "nullable": true,
            "example": true
          },
          "valueDate": {
            "type": "string",
            "description": "The date answer value for date questions (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T14:30:00"
          },
          "valueNumeric": {
            "type": "number",
            "description": "The numeric answer value for number questions (nullable)",
            "format": "double",
            "nullable": true,
            "example": 42.5
          },
          "valueString": {
            "type": "string",
            "description": "The text answer value for string questions (nullable)",
            "format": "json",
            "nullable": true,
            "example": "Pressure gauge reading normal"
          },
          "checkboxCaption": {
            "type": "string",
            "description": "The caption text for checkbox questions",
            "format": "json",
            "nullable": true,
            "example": "System operational"
          },
          "taskQuestionImageURL": {
            "type": "string",
            "description": "The full image URL associated with the task question capture",
            "format": "json",
            "nullable": true
          },
          "taskQuestionThumbnailURL": {
            "type": "string",
            "description": "The thumbnail image URL associated with the task question capture",
            "format": "json",
            "nullable": true
          },
          "pos": {
            "type": "number",
            "description": "The position or order of the question within the task",
            "format": "double",
            "example": 1024.0
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "description": "Collection of available options for multiple choice questions",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Region": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "client": {
            "$ref": "#/components/schemas/Client"
          },
          "clientID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "sites": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Site"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RegionPostRequest": {
        "required": [
          "clientID",
          "name"
        ],
        "type": "object",
        "properties": {
          "clientID": {
            "type": "integer",
            "description": "The unique identifier of the client",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the region (maximum length: 50 characters)",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "RegionRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ReportSubscriptionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "reportType": {
            "$ref": "#/components/schemas/ReportType"
          },
          "reportTypeName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "filterContext": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/JToken"
            },
            "nullable": true
          },
          "filterSummary": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterSummaryItem"
            },
            "nullable": true
          },
          "daysOfWeek": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DayOfWeek"
            },
            "nullable": true
          },
          "timeOfDay": {
            "type": "string",
            "format": "time"
          },
          "timezone": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "deliveryEmail": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "lastRunAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastRunStatus": {
            "$ref": "#/components/schemas/ReportSubscriptionStatus"
          },
          "lastRunError": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ReportSubscriptionStatus": {
        "enum": [
          "0 - None",
          "1 - Pending",
          "2 - Running",
          "3 - Success",
          "4 - Failed",
          "5 - Cancelled"
        ],
        "type": "integer",
        "format": "int32"
      },
      "ReportType": {
        "enum": [
          "1 - DefectsSummary",
          "2 - DefectsByRisk",
          "3 - DefectsByStatus",
          "4 - DefectsCsv",
          "10 - ServicesList",
          "11 - ServiceSheet",
          "12 - CompletedService",
          "13 - ServicesListCsv",
          "14 - CmDataExport",
          "20 - PartsByWorkOrder",
          "21 - PartsByTask",
          "22 - PartsSummary",
          "23 - ToolsByTask",
          "24 - ToolsSummary",
          "25 - TasksWhereAssetUsed",
          "26 - ModelTask",
          "27 - ModelTaskNotes",
          "28 - ModelExpiry",
          "30 - AuditHistory",
          "31 - AuditHistoryCsv"
        ],
        "type": "integer",
        "format": "int32"
      },
      "RepositionDirection": {
        "enum": [
          "0 - Above",
          "1 - Below"
        ],
        "type": "integer",
        "description": "Direction for repositioning operations",
        "format": "int32"
      },
      "RepositionRequest": {
        "required": [
          "destinationId",
          "direction"
        ],
        "type": "object",
        "properties": {
          "destinationId": {
            "type": "integer",
            "description": "The ID of the destination entity to position relative to",
            "format": "int32"
          },
          "direction": {
            "$ref": "#/components/schemas/RepositionDirection"
          }
        },
        "additionalProperties": false,
        "description": "Generic request model for repositioning entities"
      },
      "ResetPasswordRequest": {
        "required": [
          "email",
          "password",
          "verifyToken"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "The email address associated with the user account",
            "format": "json"
          },
          "verifyToken": {
            "minLength": 1,
            "type": "string",
            "description": "The verification token received for password reset",
            "format": "json"
          },
          "password": {
            "minLength": 1,
            "type": "string",
            "description": "The new password for the user account",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "Role": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "canRegisterDefects": {
            "type": "boolean"
          },
          "clientUserSiteAppServiceRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUserSiteAppServiceRole"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RolePostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the role (maximum length: 50 characters)",
            "format": "json"
          },
          "canRegisterDefects": {
            "type": "boolean",
            "description": "Indicates whether users with this role can register defects"
          }
        },
        "additionalProperties": false
      },
      "RoleRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "canRegisterDefects": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "RunNowResponse": {
        "type": "object",
        "properties": {
          "runId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SearchChip": {
        "required": [
          "chipType"
        ],
        "type": "object",
        "properties": {
          "chipType": {
            "$ref": "#/components/schemas/ChipType"
          },
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "value": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "weight": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": false
      },
      "Service": {
        "required": [
          "scheduledDate",
          "workOrder"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "model": {
            "$ref": "#/components/schemas/Model"
          },
          "modelID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersion": {
            "$ref": "#/components/schemas/ModelVersion"
          },
          "modelVersionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workOrder": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelVersionInterval": {
            "$ref": "#/components/schemas/ModelVersionInterval"
          },
          "modelVersionIntervalID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionArrangement": {
            "$ref": "#/components/schemas/ModelVersionArrangement"
          },
          "modelVersionArrangementID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionRole": {
            "$ref": "#/components/schemas/ModelVersionRole"
          },
          "modelVersionRoleID": {
            "type": "integer",
            "format": "int32"
          },
          "siteDepartment": {
            "$ref": "#/components/schemas/SiteDepartment"
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32"
          },
          "siteAssetRegister": {
            "$ref": "#/components/schemas/SiteAssetRegister"
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "tasksSkipped": {
            "type": "boolean"
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "notificationNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "progressPercent": {
            "type": "number",
            "format": "float"
          },
          "progressCaption": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "signatureKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "checkOutMobileID": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "checkOutUser": {
            "$ref": "#/components/schemas/User"
          },
          "checkOutUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "checkOutDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "elapsedMinutes": {
            "type": "number",
            "format": "float"
          },
          "estimatedMinutes": {
            "type": "number",
            "format": "float"
          },
          "completedEstimatedMinutes": {
            "type": "number",
            "format": "float"
          },
          "missingPartTools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceMissingPartTool"
            },
            "nullable": true
          },
          "notes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceNote"
            },
            "nullable": true
          },
          "defects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Defect"
            },
            "nullable": true
          },
          "statusChanges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceStatusChange"
            },
            "nullable": true
          },
          "signatureURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "percentageComplete": {
            "type": "number",
            "format": "float",
            "readOnly": true
          },
          "percentageOverTime": {
            "nullable": true,
            "readOnly": true
          },
          "minutesOverTime": {
            "nullable": true,
            "readOnly": true
          },
          "statusName": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ServiceAutocompleteChipRequest": {
        "type": "object",
        "properties": {
          "chipType": {
            "$ref": "#/components/schemas/ChipType"
          },
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "value": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceAutocompleteRequest": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "chips": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceAutocompleteChipRequest"
            },
            "description": "The filter chips already applied on the Services list, used to scope suggestions\n(e.g. a Model or Asset chip narrows Interval/Role/Asset suggestions down to that\nmodel, instead of searching every model in the tenant).",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceGetPausesResponse": {
        "type": "object",
        "properties": {
          "userName": {
            "type": "string",
            "description": "The name of the user who initiated the pause",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          },
          "startDate": {
            "type": "string",
            "description": "The date and time when the pause period began",
            "format": "date-time",
            "example": "2023-02-15T04:56:20"
          },
          "endDate": {
            "type": "string",
            "description": "The date and time when the pause period ended",
            "format": "date-time",
            "example": "2023-02-15T04:57:24"
          },
          "pauseReasonName": {
            "type": "string",
            "description": "The primary category or reason for the pause",
            "format": "json",
            "nullable": true,
            "example": "Interaction with Peer"
          },
          "pauseSubcategoryName": {
            "type": "string",
            "description": "The specific subcategory of the pause reason",
            "format": "json",
            "nullable": true,
            "example": "Safety Discussion"
          },
          "otherReason": {
            "type": "string",
            "description": "Additional notes or details about the pause reason",
            "format": "json",
            "nullable": true,
            "example": "Discussed safety procedures for new equipment"
          },
          "pauseMinutes": {
            "type": "number",
            "description": "The total duration of the pause in minutes",
            "format": "double",
            "example": 1.07
          }
        },
        "additionalProperties": false
      },
      "ServiceGroupedSearchPostRequest": {
        "type": "object",
        "properties": {
          "siteAppId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageSize": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "search": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "sortField": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "sort": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "fromDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "toDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "since": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "statusType": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "status": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "chips": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchChip"
            },
            "nullable": true
          },
          "includeDeleted": {
            "type": "boolean"
          },
          "siteDepartmentIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "siteAssetIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "nullable": true
          },
          "modelIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "serviceWorkOrders": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "intervals": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "statuses": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "textSearches": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "onlyHasDefects": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ServiceMissingPartTool": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "service": {
            "$ref": "#/components/schemas/Service"
          },
          "serviceID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "serviceSession": {
            "$ref": "#/components/schemas/ServiceSession"
          },
          "serviceSessionID": {
            "type": "integer",
            "format": "int32"
          },
          "missingPartToolReason": {
            "$ref": "#/components/schemas/MissingPartToolReason"
          },
          "missingPartToolReasonID": {
            "type": "integer",
            "format": "int32"
          },
          "part": {
            "$ref": "#/components/schemas/ModelVersionTaskPart"
          },
          "modelVersionTaskPartID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "tool": {
            "$ref": "#/components/schemas/ModelVersionTaskTool"
          },
          "modelVersionTaskToolID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherReason": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "dateTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ServiceMultiStatusChangePostRequest": {
        "required": [
          "changeStatusReasonID",
          "services",
          "status"
        ],
        "type": "object",
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Collection of service identifiers to update",
            "example": [
              44,
              64,
              66
            ]
          },
          "status": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The new status to apply to the services (single character)",
            "format": "json",
            "example": "S"
          },
          "changeStatusReasonID": {
            "type": "integer",
            "description": "The unique identifier of the status change reason",
            "format": "int32",
            "example": 4
          },
          "otherReason": {
            "type": "string",
            "description": "Additional notes or details about the status change",
            "format": "json",
            "nullable": true,
            "example": "Moved to high priority queue"
          }
        },
        "additionalProperties": false
      },
      "ServiceNote": {
        "required": [
          "note"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "service": {
            "$ref": "#/components/schemas/Service"
          },
          "serviceID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "format": "json"
          },
          "translatedNote": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ServiceNotePostRequest": {
        "required": [
          "note",
          "serviceID"
        ],
        "type": "object",
        "properties": {
          "serviceID": {
            "type": "integer",
            "description": "The unique identifier of the service",
            "format": "int32"
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "description": "The text content of the service note",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "ServicePause": {
        "required": [
          "endDate",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "service": {
            "$ref": "#/components/schemas/Service"
          },
          "serviceID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "serviceSession": {
            "$ref": "#/components/schemas/ServiceSession"
          },
          "serviceSessionID": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "pause": {
            "$ref": "#/components/schemas/Pause"
          },
          "pauseID": {
            "type": "integer",
            "format": "int32"
          },
          "pauseSubcategory": {
            "$ref": "#/components/schemas/PauseSubcategory"
          },
          "pauseSubcategoryID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherReason": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "pauseMinutes": {
            "type": "number",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ServicePostRequest": {
        "required": [
          "modelID",
          "modelVersionIntervalID",
          "modelVersionRoleID",
          "scheduledDate",
          "siteDepartmentID",
          "workOrder"
        ],
        "type": "object",
        "properties": {
          "workOrder": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The work order identifier for the service (maximum length: 50 characters)",
            "format": "json",
            "example": "WO-2024-001"
          },
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the model",
            "format": "int32",
            "example": 111
          },
          "modelVersionIntervalID": {
            "type": "integer",
            "description": "The unique identifier of the model version interval",
            "format": "int32",
            "example": 3020
          },
          "modelVersionRoleID": {
            "type": "integer",
            "description": "The unique identifier of the model version role",
            "format": "int32",
            "example": 910
          },
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the site department (nullable)",
            "format": "int32",
            "example": 345
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "description": "The unique identifier of the site asset register entry (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 107
          },
          "siteAssetID": {
            "type": "integer",
            "description": "The unique identifier of the legacy site asset (nullable). Deprecated — supply SiteAssetRegisterID instead.\nIf provided and SiteAssetRegisterID is absent, the equivalent SiteAssetRegisterID will be resolved automatically.",
            "format": "int32",
            "nullable": true,
            "example": 55
          },
          "siteAssetName": {
            "type": "string",
            "description": "The name or identifier of the site asset",
            "format": "json",
            "nullable": true,
            "example": "HTK0317"
          },
          "siteAssetDescription": {
            "type": "string",
            "description": "The descriptive text for the site asset",
            "format": "json",
            "nullable": true,
            "example": "Hydraulic Test Kit - Mobile Unit"
          },
          "siteAssetReference": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The reference identifier for the site asset. Used to match an existing asset by reference when no asset ID or name match is found, preventing duplicate asset creation.",
            "format": "json",
            "nullable": true,
            "example": "REF-001"
          },
          "siteAssetPlannerGroup": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The planner group for the site asset",
            "format": "json",
            "nullable": true,
            "example": "PM01"
          },
          "siteAssetWorkCenter": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The work center for the site asset",
            "format": "json",
            "nullable": true,
            "example": "MECH01"
          },
          "scheduledDate": {
            "type": "string",
            "description": "The scheduled date and time for the service",
            "format": "date-time",
            "example": "2024-01-16T22:52:00.000Z"
          },
          "notificationNumber": {
            "type": "string",
            "description": "The notification or reference number for the service",
            "format": "json",
            "nullable": true,
            "example": "NOT-56312"
          },
          "clientName": {
            "type": "string",
            "description": "The name of the client requesting the service",
            "format": "json",
            "nullable": true,
            "example": "Mining Corp Ltd"
          },
          "note": {
            "type": "string",
            "description": "Additional notes or instructions for the service",
            "format": "json",
            "nullable": true,
            "example": "Inspect and replace part 5547 if necessary"
          },
          "modelVersionArrangementID": {
            "type": "integer",
            "description": "The unique identifier of the model version arrangement (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 107
          }
        },
        "additionalProperties": false
      },
      "ServiceRequest": {
        "type": "object",
        "properties": {
          "modelID": {
            "type": "integer",
            "format": "int32"
          },
          "workOrder": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelVersionIntervalID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionRoleID": {
            "type": "integer",
            "format": "int32"
          },
          "siteDepartmentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time"
          },
          "notificationNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceResetPostRequest": {
        "required": [
          "changeStatusReasonID"
        ],
        "type": "object",
        "properties": {
          "changeStatusReasonID": {
            "type": "integer",
            "description": "The unique identifier of the status change reason",
            "format": "int32",
            "example": 4
          },
          "otherReason": {
            "type": "string",
            "description": "Additional notes or details about the status change",
            "format": "json",
            "nullable": true,
            "example": "Moved to high priority queue"
          }
        },
        "additionalProperties": false
      },
      "ServiceSearchPostRequest": {
        "type": "object",
        "properties": {
          "siteAppId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageSize": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sortField": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "sort": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "fromDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "toDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "since": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "statusType": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "siteDepartmentIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "siteAssetIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "nullable": true
          },
          "modelIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "serviceWorkOrders": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "intervals": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "statuses": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "textSearches": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "onlyHasDefects": {
            "type": "boolean"
          },
          "includeDeleted": {
            "type": "boolean"
          },
          "timeZone": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceSession": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "service": {
            "$ref": "#/components/schemas/Service"
          },
          "serviceID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "user": {
            "$ref": "#/components/schemas/User"
          },
          "userID": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "stopReason": {
            "$ref": "#/components/schemas/StopReason"
          },
          "stopReasonID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "otherReason": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "signatureKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "missingPartTools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceMissingPartTool"
            },
            "nullable": true
          },
          "questions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSessionQuestion"
            },
            "nullable": true
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceTask"
            },
            "nullable": true
          },
          "pauses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServicePause"
            },
            "nullable": true
          },
          "signatureURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceSessionQuestion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "serviceSession": {
            "$ref": "#/components/schemas/ServiceSession"
          },
          "serviceSessionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionQuestion": {
            "$ref": "#/components/schemas/ModelVersionQuestion"
          },
          "modelVersionQuestionID": {
            "type": "integer",
            "format": "int32"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "valueString": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "valueBoolean": {
            "type": "boolean",
            "nullable": true
          },
          "valueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "valueNumeric": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "serviceSessionQuestionOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSessionQuestionOption"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceSessionQuestionOption": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "serviceSessionQuestion": {
            "$ref": "#/components/schemas/ServiceSessionQuestion"
          },
          "serviceSessionQuestionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionQuestionOption": {
            "$ref": "#/components/schemas/ModelVersionQuestionOption"
          },
          "modelVersionQuestionOptionID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ServiceStatusChange": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "service": {
            "$ref": "#/components/schemas/Service"
          },
          "serviceID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "changeStatusReason": {
            "$ref": "#/components/schemas/ChangeStatusReason"
          },
          "changeStatusReasonID": {
            "type": "integer",
            "format": "int32"
          },
          "otherReason": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceStatusChangePostRequest": {
        "required": [
          "changeStatusReasonID",
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The new status to apply to the service (single character)",
            "format": "json",
            "example": "S"
          },
          "changeStatusReasonID": {
            "type": "integer",
            "description": "The unique identifier of the status change reason",
            "format": "int32",
            "example": 4
          },
          "otherReason": {
            "type": "string",
            "description": "Additional notes or details about the status change",
            "format": "json",
            "nullable": true,
            "example": "Moved to high priority queue"
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncDefectReadPostRequest": {
        "required": [
          "defectID",
          "readDateTime",
          "serviceID"
        ],
        "type": "object",
        "properties": {
          "defectID": {
            "type": "integer",
            "description": "The unique identifier of the defect that was read",
            "format": "int32",
            "example": 199
          },
          "serviceID": {
            "type": "integer",
            "description": "The unique identifier of the service in which the defect was read",
            "format": "int32",
            "example": 661
          },
          "readDateTime": {
            "type": "string",
            "description": "The date and time when the defect was read on the mobile device (UTC)",
            "format": "date-time",
            "example": "2026-03-06T10:15:20"
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncMissingPartToolPostRequest": {
        "type": "object",
        "properties": {
          "modelVersionTaskPartID": {
            "type": "integer",
            "description": "The unique identifier of the model version task part (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 71
          },
          "modelVersionTaskToolID": {
            "type": "integer",
            "description": "The unique identifier of the model version task tool (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 123
          },
          "dateTime": {
            "type": "string",
            "description": "The date and time when the missing part or tool was reported",
            "format": "date-time",
            "example": "2024-01-15T02:07:15"
          },
          "missingPartToolReasonID": {
            "type": "integer",
            "description": "The unique identifier of the reason for the missing part or tool",
            "format": "int32",
            "example": 202
          },
          "otherReason": {
            "type": "string",
            "description": "Additional notes or details about the missing part or tool",
            "format": "json",
            "nullable": true,
            "example": "Tool borrowed by emergency maintenance team"
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncNotePostRequest": {
        "required": [
          "dateTime",
          "note"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the service note",
            "format": "json",
            "nullable": true,
            "example": "202"
          },
          "note": {
            "minLength": 1,
            "type": "string",
            "description": "The text content of the service note",
            "format": "json",
            "example": "Replaced hydraulic pump part #774 due to wear"
          },
          "dateTime": {
            "type": "string",
            "description": "The date and time when the note was created",
            "format": "date-time",
            "example": "2024-01-15T02:07:15"
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncPausePostRequest": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "description": "The date and time when the pause period began",
            "format": "date-time",
            "example": "2024-01-15T02:07:15"
          },
          "endDate": {
            "type": "string",
            "description": "The date and time when the pause period ended",
            "format": "date-time",
            "example": "2024-01-15T02:37:15"
          },
          "pauseID": {
            "type": "integer",
            "description": "The unique identifier of the pause category",
            "format": "int32",
            "example": 15
          },
          "pauseSubcategoryID": {
            "type": "integer",
            "description": "The unique identifier of the pause subcategory (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 5
          },
          "otherReason": {
            "type": "string",
            "description": "Additional notes or details about the pause reason",
            "format": "json",
            "nullable": true,
            "example": "Emergency safety briefing required"
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncPostRequest": {
        "type": "object",
        "properties": {
          "serviceSessionID": {
            "type": "integer",
            "description": "The unique identifier of the service session (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 48
          },
          "session": {
            "$ref": "#/components/schemas/ServiceSyncSessionPostRequest"
          },
          "missingPartTools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSyncMissingPartToolPostRequest"
            },
            "description": "Collection of missing parts and tools reported during the service",
            "nullable": true
          },
          "pauses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSyncPausePostRequest"
            },
            "description": "Collection of pause periods recorded during the service",
            "nullable": true
          },
          "notes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSyncNotePostRequest"
            },
            "description": "Collection of notes added during the service",
            "nullable": true
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSyncTaskPostRequest"
            },
            "description": "Collection of tasks performed during the service",
            "nullable": true
          },
          "taskQuestions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSyncTaskQuestionPostRequest"
            },
            "description": "Collection of task-specific questions and responses",
            "nullable": true
          },
          "sessionQuestions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSyncSessionQuestionPostRequest"
            },
            "description": "Collection of session-level questions and responses",
            "nullable": true
          },
          "defectReads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSyncDefectReadPostRequest"
            },
            "description": "Collection of defect read records tracked during the service",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncResponse": {
        "type": "object",
        "properties": {
          "hasErrors": {
            "type": "boolean"
          },
          "serviceSessionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "missingPartsTools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "nullable": true
          },
          "pauses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "nullable": true
          },
          "sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "nullable": true
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "nullable": true
          },
          "taskQuestions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "nullable": true
          },
          "taskQuestionOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "nullable": true
          },
          "sessionQuestions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "nullable": true
          },
          "sessionQuestionOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "nullable": true
          },
          "defectReads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncSessionPostRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the service session",
            "format": "json",
            "nullable": true,
            "example": "79"
          },
          "startDate": {
            "type": "string",
            "description": "The date and time when the service session began (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T09:30:00"
          },
          "endDate": {
            "type": "string",
            "description": "The date and time when the service session ended (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T11:45:00"
          },
          "stopReasonID": {
            "type": "integer",
            "description": "The unique identifier of the reason for stopping the session (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "otherReason": {
            "type": "string",
            "description": "Additional notes or details about why the session was stopped",
            "format": "json",
            "nullable": true,
            "example": "Equipment required emergency maintenance"
          },
          "signature": {
            "type": "string",
            "description": "The URL to access the digital signature for this session",
            "format": "json",
            "nullable": true,
            "example": "https://storage.example.com/signatures/session-79.png"
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncSessionQuestionOptionPostRequest": {
        "type": "object",
        "properties": {
          "modelVersionQuestionOptionID": {
            "type": "integer",
            "description": "The unique identifier of the model version question option",
            "format": "int32",
            "example": 123
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncSessionQuestionPostRequest": {
        "type": "object",
        "properties": {
          "modelVersionQuestionID": {
            "type": "integer",
            "description": "The unique identifier of the model version question",
            "format": "int32",
            "example": 456
          },
          "date": {
            "type": "string",
            "description": "The date and time when the question was answered",
            "format": "date-time",
            "example": "2024-01-15T10:30:00"
          },
          "valueString": {
            "type": "string",
            "description": "The text response for string-type questions (nullable)",
            "format": "json",
            "nullable": true,
            "example": "Pressure gauge reading normal"
          },
          "valueBoolean": {
            "type": "boolean",
            "description": "The boolean response for yes/no questions (nullable)",
            "nullable": true,
            "example": true
          },
          "valueDate": {
            "type": "string",
            "description": "The date response for date-type questions (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T00:00:00"
          },
          "valueNumeric": {
            "type": "number",
            "description": "The numeric response for number-type questions (nullable)",
            "format": "double",
            "nullable": true,
            "example": 42.5
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSyncSessionQuestionOptionPostRequest"
            },
            "description": "Collection of selected options for multiple-choice questions",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncTaskPostRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the service task",
            "format": "int32",
            "example": 145
          },
          "completedDate": {
            "type": "string",
            "description": "The date and time when the task was completed (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T14:30:00"
          },
          "actualMinutes": {
            "type": "number",
            "description": "The actual time taken to complete the task in minutes",
            "format": "float",
            "example": 5.5
          },
          "isSkipped": {
            "type": "boolean",
            "description": "Indicates whether the task was skipped during service",
            "example": false
          },
          "skipTaskReasonID": {
            "type": "integer",
            "description": "The unique identifier of the reason for skipping the task (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "skipOtherReason": {
            "type": "string",
            "description": "Additional notes or details about why the task was skipped",
            "format": "json",
            "nullable": true,
            "example": "Equipment not available for inspection"
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncTaskQuestionOptionPostRequest": {
        "type": "object",
        "properties": {
          "modelVersionTaskQuestionOptionID": {
            "type": "integer",
            "description": "The unique identifier of the model version task question option",
            "format": "int32",
            "example": 123
          }
        },
        "additionalProperties": false
      },
      "ServiceSyncTaskQuestionPostRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the task question",
            "format": "int32",
            "example": 456
          },
          "date": {
            "type": "string",
            "description": "The date and time when the question was answered",
            "format": "date-time",
            "example": "2024-01-15T10:30:00"
          },
          "valueString": {
            "type": "string",
            "description": "The text response for string-type questions (nullable)",
            "format": "json",
            "nullable": true,
            "example": "Pressure gauge reading normal"
          },
          "valueBoolean": {
            "type": "boolean",
            "description": "The boolean response for yes/no questions (nullable)",
            "nullable": true,
            "example": true
          },
          "valueDate": {
            "type": "string",
            "description": "The date response for date-type questions (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T00:00:00"
          },
          "valueNumeric": {
            "type": "number",
            "description": "The numeric response for number-type questions (nullable)",
            "format": "double",
            "nullable": true,
            "example": 42.5
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSyncTaskQuestionOptionPostRequest"
            },
            "description": "Collection of selected options for multiple-choice questions",
            "nullable": true
          },
          "taskQuestionImageKey": {
            "type": "string",
            "description": "The stored object key for the full image associated with this task question capture (nullable)",
            "format": "json",
            "nullable": true
          },
          "taskQuestionThumbnailKey": {
            "type": "string",
            "description": "The stored object key for the thumbnail image associated with this task question capture (nullable)",
            "format": "json",
            "nullable": true
          },
          "isDefectCancelled": {
            "type": "boolean",
            "description": "True when the user was prompted to register a defect (value outside min/max) and chose to cancel.",
            "example": false
          },
          "alertTriggered": {
            "type": "boolean",
            "description": "True when this reading crossed a Condition Monitoring alert threshold and prompted the user.",
            "example": false
          },
          "alertDecision": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "The user's decision on the triggered alert: \"Acknowledge\" or \"Cancel\".",
            "format": "json",
            "nullable": true,
            "example": "Acknowledge"
          }
        },
        "additionalProperties": false
      },
      "ServiceTask": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "service": {
            "$ref": "#/components/schemas/Service"
          },
          "serviceID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionStage": {
            "$ref": "#/components/schemas/ModelVersionStage"
          },
          "modelVersionStageID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionZone": {
            "$ref": "#/components/schemas/ModelVersionZone"
          },
          "modelVersionZoneID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelVersionTask": {
            "$ref": "#/components/schemas/ModelVersionTask"
          },
          "modelVersionTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "serviceSession": {
            "$ref": "#/components/schemas/ServiceSession"
          },
          "serviceSessionID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "siteAssetRegister": {
            "$ref": "#/components/schemas/SiteAssetRegister"
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "completedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actualMinutes": {
            "type": "number",
            "format": "float"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "isSkipped": {
            "type": "boolean"
          },
          "skipTaskReason": {
            "$ref": "#/components/schemas/SkipTaskReason"
          },
          "skipTaskReasonID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "skipOtherReason": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceTaskQuestions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceTaskQuestion"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceTaskQuestion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "serviceTask": {
            "$ref": "#/components/schemas/ServiceTask"
          },
          "serviceTaskID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionTaskQuestion": {
            "$ref": "#/components/schemas/ModelVersionTaskQuestion"
          },
          "modelVersionTaskQuestionID": {
            "type": "integer",
            "format": "int32"
          },
          "pos": {
            "type": "number",
            "format": "float"
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "valueString": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "valueBoolean": {
            "type": "boolean",
            "nullable": true
          },
          "valueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "valueNumeric": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "taskQuestionImageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskQuestionThumbnailKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskQuestionImageURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskQuestionThumbnailURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isDefectCancelled": {
            "type": "boolean"
          },
          "alertTriggered": {
            "type": "boolean"
          },
          "alertDecision": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "originalValueNumeric": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "cmEditReason": {
            "$ref": "#/components/schemas/CMEditReason"
          },
          "cmEditReasonID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "cmEditOtherReason": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceTaskQuestionOptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceTaskQuestionOption"
            },
            "nullable": true
          },
          "defects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Defect"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServiceTaskQuestionOption": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "serviceTaskQuestion": {
            "$ref": "#/components/schemas/ServiceTaskQuestion"
          },
          "serviceTaskQuestionID": {
            "type": "integer",
            "format": "int32"
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "modelVersionTaskQuestionOption": {
            "$ref": "#/components/schemas/ModelVersionTaskQuestionOption"
          },
          "modelVersionTaskQuestionOptionID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ServiceTaskQuestionsUploadImageResponse": {
        "type": "object",
        "properties": {
          "serviceTaskQuestionID": {
            "type": "integer",
            "format": "int32"
          },
          "imageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServicesBuildServiceBadRequest400Response": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The URI reference that identifies the problem type",
            "format": "json",
            "nullable": true,
            "example": "https://tools.ietf.org/html/rfc7231#section-6.5.4"
          },
          "title": {
            "type": "string",
            "description": "A short, human-readable summary of the problem type",
            "format": "json",
            "nullable": true,
            "example": "Bad Request"
          },
          "status": {
            "type": "integer",
            "description": "The HTTP status code for this occurrence of the problem",
            "format": "int32",
            "example": 400
          },
          "message": {
            "type": "string",
            "description": "A human-readable explanation specific to this occurrence of the problem",
            "format": "json",
            "nullable": true,
            "example": "The service's model does not have an Active Model Version"
          },
          "traceId": {
            "type": "string",
            "description": "A unique identifier for tracing this error instance",
            "format": "json",
            "nullable": true,
            "example": "00-ac9887318c53f53ab4e77b9a771515fd-e3926082725a39b8-00"
          }
        },
        "additionalProperties": false
      },
      "ServicesGetConditionMonitoringDataResponse": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "The date and time of the condition monitoring measurement",
            "format": "date-time",
            "example": "2024-01-15T12:31:00"
          },
          "valueNumeric": {
            "type": "number",
            "description": "The measured numeric value from the condition monitoring",
            "format": "double",
            "example": 12.456789
          },
          "taskQuestionImageURL": {
            "type": "string",
            "description": "The full image URL captured for this condition monitoring measurement, if present",
            "format": "json",
            "nullable": true
          },
          "taskQuestionThumbnailURL": {
            "type": "string",
            "description": "The thumbnail image URL captured for this condition monitoring measurement, if present",
            "format": "json",
            "nullable": true
          },
          "defects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DefectModel"
            },
            "description": "Collection of defects associated with this measurement",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServicesGetConditionMonitoringQuestionsResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the condition monitoring question",
            "format": "int32",
            "example": 1070
          },
          "stageName": {
            "type": "string",
            "description": "The name of the service stage where this monitoring occurs",
            "format": "json",
            "nullable": true,
            "example": "Pre Service"
          },
          "zoneName": {
            "type": "string",
            "description": "The name of the equipment zone being monitored",
            "format": "json",
            "nullable": true,
            "example": "Engine Bay"
          },
          "taskActionName": {
            "type": "string",
            "description": "The type of action being performed during monitoring",
            "format": "json",
            "nullable": true,
            "example": "Measure"
          },
          "taskName": {
            "type": "string",
            "description": "The name of the monitoring task",
            "format": "json",
            "nullable": true,
            "example": "Service Brake Pressure Check"
          },
          "siteAssetName": {
            "type": "string",
            "description": "The identifier or name of the asset being monitored",
            "format": "json",
            "nullable": true,
            "example": "Hydraulic Press Unit 01"
          },
          "question": {
            "type": "string",
            "description": "The specific monitoring question or measurement instruction",
            "format": "json",
            "nullable": true,
            "example": "Record Engine Stall Speed (RPM)"
          },
          "minValue": {
            "type": "number",
            "description": "The lower acceptable limit for the measurement",
            "format": "double",
            "example": 1760.0
          },
          "maxValue": {
            "type": "number",
            "description": "The upper acceptable limit for the measurement",
            "format": "double",
            "example": 2060.0
          },
          "arrangementName": {
            "type": "string",
            "description": "The name(s) of the arrangement(s) assigned to the task, comma-separated if multiple.",
            "format": "json",
            "nullable": true,
            "example": "Standard, Heavy Duty"
          }
        },
        "additionalProperties": false
      },
      "ServicesGetDefectsByRoleResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the defect",
            "format": "int32",
            "example": 4
          },
          "serviceID": {
            "type": "integer",
            "description": "The unique identifier of the service",
            "format": "int32",
            "example": 26
          },
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the model",
            "format": "int32",
            "example": 143
          },
          "modelVersionRoleID": {
            "type": "integer",
            "description": "The unique identifier of the model version role",
            "format": "int32",
            "example": 639
          },
          "roleGroupID": {
            "type": "integer",
            "description": "The unique identifier of the role group",
            "format": "int32",
            "example": 3
          },
          "serviceTaskID": {
            "type": "integer",
            "description": "The unique identifier of the service task",
            "format": "int32",
            "example": 839
          },
          "modelVersionTaskID": {
            "type": "integer",
            "description": "The unique identifier of the model version task",
            "format": "int32",
            "example": 28110
          },
          "actionName": {
            "type": "string",
            "description": "The name of the action",
            "format": "json",
            "nullable": true,
            "example": "Inspect"
          },
          "taskName": {
            "type": "string",
            "description": "The name of the task",
            "format": "json",
            "nullable": true,
            "example": "Reversing Alarm Operation"
          },
          "modelVersionStageID": {
            "type": "integer",
            "description": "The unique identifier of the model version stage",
            "format": "int32",
            "example": 898
          },
          "modelVersionZoneID": {
            "type": "integer",
            "description": "The unique identifier of the model version zone (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 1234
          },
          "siteAssetID": {
            "type": "integer",
            "description": "The unique identifier of the site asset (deprecated, use SiteAssetRegisterID)",
            "format": "int32",
            "nullable": true,
            "example": 39
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "description": "The unique identifier of the asset register entry",
            "format": "int32",
            "nullable": true,
            "example": 39
          },
          "siteAssetName": {
            "type": "string",
            "description": "The name or identifier of the site asset",
            "format": "json",
            "nullable": true,
            "example": "HTK0317"
          },
          "number": {
            "type": "integer",
            "description": "The sequential number of the defect",
            "format": "int32",
            "example": 3
          },
          "defectTypeID": {
            "type": "integer",
            "description": "The unique identifier of the defect type",
            "format": "int32",
            "example": 48
          },
          "defectTypeName": {
            "type": "string",
            "description": "The name of the defect type",
            "format": "json",
            "nullable": true,
            "example": "Damaged"
          },
          "defectRiskRatingID": {
            "type": "integer",
            "description": "The unique identifier of the defect risk rating",
            "format": "int32",
            "example": 58
          },
          "defectRiskRatingName": {
            "type": "string",
            "description": "The name of the defect risk rating",
            "format": "json",
            "nullable": true,
            "example": "High"
          },
          "defectStatusID": {
            "type": "integer",
            "description": "The unique identifier of the defect status",
            "format": "int32",
            "example": 117
          },
          "defectStatusName": {
            "type": "string",
            "description": "The name of the defect status",
            "format": "json",
            "nullable": true,
            "example": "Outstanding"
          },
          "details": {
            "type": "string",
            "description": "Detailed description of the defect",
            "format": "json",
            "nullable": true,
            "example": "Reversing alarm not functioning correctly"
          },
          "audioURL": {
            "type": "string",
            "description": "The URL to the audio recording of the defect description",
            "format": "json",
            "nullable": true,
            "example": "https://storage.example.com/audio/defect-123.mp3"
          },
          "safetyCritical": {
            "type": "boolean",
            "description": "Indicates whether the defect is classified as safety critical",
            "example": true
          },
          "createdDateTime": {
            "type": "string",
            "description": "The date and time when the defect was created",
            "format": "date-time",
            "example": "2022-06-03T06:26:56.328872"
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Image"
            },
            "description": "Collection of images associated with the defect",
            "nullable": true
          },
          "parts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Part"
            },
            "description": "Collection of parts associated with the defect",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServicesGetDefectsResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the defect",
            "format": "int32",
            "example": 34
          },
          "number": {
            "type": "integer",
            "description": "The sequential number of the defect",
            "format": "int32",
            "example": 8
          },
          "safetyCritical": {
            "type": "boolean",
            "description": "Indicates whether the defect is classified as safety critical",
            "example": false
          },
          "defectRiskRatingId": {
            "type": "integer",
            "description": "The unique identifier of the defect risk rating",
            "format": "int32",
            "example": 43
          },
          "riskRatingName": {
            "type": "string",
            "description": "The name of the defect risk rating",
            "format": "json",
            "nullable": true,
            "example": "Repairable - Machine Shop"
          },
          "defectStatusId": {
            "type": "integer",
            "description": "The unique identifier of the defect status",
            "format": "int32",
            "example": 24
          },
          "defectStatusName": {
            "type": "string",
            "description": "The name of the defect status",
            "format": "json",
            "nullable": true,
            "example": "Outstanding"
          },
          "modelName": {
            "type": "string",
            "description": "The name of the equipment model",
            "format": "json",
            "nullable": true,
            "example": "3516 - 789D"
          },
          "modelModel": {
            "type": "string",
            "description": "The type or category of the model",
            "format": "json",
            "nullable": true,
            "example": "Engine"
          },
          "siteAssetId": {
            "type": "integer",
            "description": "The unique identifier of the site asset",
            "format": "int32",
            "example": 189
          },
          "siteAssetName": {
            "type": "string",
            "description": "The name or identifier of the site asset",
            "format": "json",
            "nullable": true,
            "example": "2GR09980"
          },
          "defectTypeId": {
            "type": "integer",
            "description": "The unique identifier of the defect type",
            "format": "int32",
            "example": 407
          },
          "defectTypeName": {
            "type": "string",
            "description": "The name of the defect type",
            "format": "json",
            "nullable": true,
            "example": "Burst or Split"
          },
          "details": {
            "type": "string",
            "description": "Detailed description of the defect",
            "format": "json",
            "nullable": true,
            "example": "Hydraulic pipe split at connection point"
          },
          "createdDateTime": {
            "type": "string",
            "description": "The date and time when the defect was created",
            "format": "date-time",
            "example": "2023-01-24T21:40:32.544693"
          },
          "createdUserName": {
            "type": "string",
            "description": "The name of the user who created the defect",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          },
          "workOrder": {
            "description": "Information about the associated work order",
            "nullable": true,
            "example": "WO-2023-1234"
          },
          "stageName": {
            "type": "string",
            "description": "The name of the maintenance stage",
            "format": "json",
            "nullable": true,
            "example": "Recondition Sub Assemblies"
          },
          "zoneName": {
            "type": "string",
            "description": "The name of the maintenance zone",
            "format": "json",
            "nullable": true,
            "example": "Strip and Inspect"
          },
          "taskName": {
            "type": "string",
            "description": "The name of the maintenance task",
            "format": "json",
            "nullable": true,
            "example": "Inspect Plugs, Adapters and Sensors"
          },
          "parts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Parts"
            },
            "description": "Collection of parts associated with the defect",
            "nullable": true
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Images"
            },
            "description": "Collection of images documenting the defect",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServicesGetIncompleteTasksResponse": {
        "type": "object",
        "properties": {
          "actionName": {
            "type": "string",
            "description": "The name of the maintenance action",
            "format": "json",
            "nullable": true,
            "example": "Check"
          },
          "taskName": {
            "type": "string",
            "description": "The name of the maintenance task",
            "format": "json",
            "nullable": true,
            "example": "Fire Suppression Systems Controls within Cab"
          },
          "stageName": {
            "type": "string",
            "description": "The name of the maintenance stage",
            "format": "json",
            "nullable": true,
            "example": "Pre Service"
          },
          "zoneName": {
            "type": "string",
            "description": "The name of the maintenance zone",
            "format": "json",
            "nullable": true,
            "example": "Engine Bay"
          },
          "completedDate": {
            "type": "string",
            "description": "The date when the task was completed (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T14:30:00"
          },
          "safetyCritical": {
            "type": "boolean",
            "description": "Indicates whether the task is classified as safety critical",
            "example": true
          },
          "questions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuestionModel"
            },
            "description": "Collection of questions associated with this task",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServicesGetMissingPartsAndToolsResponse": {
        "type": "object",
        "properties": {
          "userName": {
            "type": "string",
            "description": "The name of the user who reported the missing item",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          },
          "dateTime": {
            "type": "string",
            "description": "The date and time when the missing item was reported",
            "format": "date-time",
            "example": "2024-01-15T08:35:02"
          },
          "partName": {
            "type": "string",
            "description": "The identifier or name of the missing part",
            "format": "json",
            "nullable": true,
            "example": "228-7092"
          },
          "toolName": {
            "type": "string",
            "description": "The identifier or name of the missing tool",
            "format": "json",
            "nullable": true,
            "example": "Torque Wrench 50Nm"
          },
          "reasonName": {
            "type": "string",
            "description": "The category or classification of why the item is missing",
            "format": "json",
            "nullable": true,
            "example": "Missing from Inventory"
          },
          "otherReason": {
            "type": "string",
            "description": "Additional notes or details about the missing item",
            "format": "json",
            "nullable": true,
            "example": "Last seen in Bay 3 maintenance area"
          }
        },
        "additionalProperties": false
      },
      "ServicesGetResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the service",
            "format": "int32",
            "example": 1
          },
          "workOrder": {
            "type": "string",
            "description": "The work order identifier for the service",
            "format": "json",
            "nullable": true,
            "example": "WO-2024-001"
          },
          "status": {
            "type": "string",
            "description": "The current status of the service (single character)",
            "format": "json",
            "nullable": true,
            "example": "T"
          },
          "tasksSkipped": {
            "type": "boolean",
            "description": "Indicates whether any tasks in the service were skipped",
            "example": false
          },
          "percentageComplete": {
            "type": "number",
            "description": "The percentage of tasks completed in the service",
            "format": "double",
            "example": 89.42
          },
          "estimatedMinutes": {
            "type": "number",
            "description": "The estimated duration of the service in minutes",
            "format": "double",
            "example": 16.8
          },
          "completedEstimatedMinutes": {
            "type": "number",
            "description": "The estimated minutes for completed tasks",
            "format": "double",
            "example": 142.0
          },
          "elapsedMinutes": {
            "type": "number",
            "description": "The actual time spent on the service in minutes",
            "format": "double",
            "example": 166.32
          },
          "modelName": {
            "type": "string",
            "description": "The manufacturer or brand name of the equipment",
            "format": "json",
            "nullable": true,
            "example": "Caterpillar"
          },
          "model": {
            "type": "string",
            "description": "The specific model of the equipment",
            "format": "json",
            "nullable": true,
            "example": "12M (B92)"
          },
          "departmentName": {
            "type": "string",
            "description": "The department responsible for the service",
            "format": "json",
            "nullable": true,
            "example": "50T - LV Maintenance"
          },
          "siteAssetName": {
            "type": "string",
            "description": "The identifier of the asset being serviced",
            "format": "json",
            "nullable": true,
            "example": "HTK0317"
          },
          "typeName": {
            "type": "string",
            "description": "The category or classification of the equipment",
            "format": "json",
            "nullable": true,
            "example": "Dozer"
          },
          "interval": {
            "type": "string",
            "description": "The service interval specification",
            "format": "json",
            "nullable": true,
            "example": "250hr"
          },
          "arrangement": {
            "type": "string",
            "description": "The specific configuration or arrangement of the equipment",
            "format": "json",
            "nullable": true,
            "example": "Standard Configuration"
          },
          "role": {
            "type": "string",
            "description": "The role responsible for performing the service",
            "format": "json",
            "nullable": true,
            "example": "Inspector"
          },
          "scheduledDate": {
            "type": "string",
            "description": "The planned date and time for the service",
            "format": "date-time",
            "example": "2024-01-15T09:00:00"
          },
          "checkoutUser": {
            "type": "string",
            "description": "The name of the user who checked out the service",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          },
          "checkoutDate": {
            "type": "string",
            "description": "The date and time when the service was checked out",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T08:45:00"
          },
          "imageURL": {
            "type": "string",
            "description": "The URL to the equipment or service image",
            "format": "json",
            "nullable": true,
            "example": "https://storage.example.com/equipment/HTK0317.jpg"
          },
          "minutesOverTime": {
            "type": "number",
            "description": "The number of minutes exceeding the estimated duration",
            "format": "double",
            "example": 24.0
          },
          "percentageOverTime": {
            "type": "number",
            "description": "The percentage by which the service exceeded its estimated duration",
            "format": "double",
            "example": 17.13
          },
          "modelTemplateType": {
            "type": "string",
            "description": "The type identifier for the service template\nA - Asset-Based Model\nF - Facility-Based Model",
            "format": "json",
            "nullable": true,
            "example": "A"
          },
          "hasDefects": {
            "type": "boolean",
            "description": "Indicates whether the service has one or more associated defects",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "ServicesGetServiceResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the service",
            "format": "int32",
            "example": 91
          },
          "siteAppID": {
            "type": "integer",
            "description": "The identifier of the site application",
            "format": "int32",
            "example": 24
          },
          "workOrder": {
            "type": "string",
            "description": "The work order identifier for the service",
            "format": "json",
            "nullable": true,
            "example": "WO-2024-001"
          },
          "status": {
            "type": "string",
            "description": "The current status of the service (single character)",
            "format": "json",
            "nullable": true,
            "example": "T"
          },
          "tasksSkipped": {
            "type": "boolean",
            "description": "Indicates whether any tasks in the service were skipped",
            "example": false
          },
          "percentageComplete": {
            "type": "number",
            "description": "The percentage of tasks completed in the service",
            "format": "double",
            "example": 89.42
          },
          "estimatedMinutes": {
            "type": "number",
            "description": "The estimated duration of the service in minutes",
            "format": "double",
            "example": 16.8
          },
          "completedEstimatedMinutes": {
            "type": "number",
            "description": "The estimated minutes for completed tasks",
            "format": "double",
            "example": 142.0
          },
          "elapsedMinutes": {
            "type": "number",
            "description": "The actual time spent on the service in minutes",
            "format": "double",
            "example": 166.32
          },
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the equipment model",
            "format": "int32",
            "example": 143
          },
          "modelName": {
            "type": "string",
            "description": "The manufacturer or brand name of the equipment",
            "format": "json",
            "nullable": true,
            "example": "Caterpillar"
          },
          "model": {
            "type": "string",
            "description": "The specific model of the equipment",
            "format": "json",
            "nullable": true,
            "example": "12M (B92)"
          },
          "departmentName": {
            "type": "string",
            "description": "The department responsible for the service",
            "format": "json",
            "nullable": true,
            "example": "50T - LV Maintenance"
          },
          "siteAssetName": {
            "type": "string",
            "description": "The identifier of the asset being serviced",
            "format": "json",
            "nullable": true,
            "example": "HTK0317"
          },
          "activeModelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the active model version",
            "format": "int32",
            "example": 327
          },
          "typeName": {
            "type": "string",
            "description": "The category or classification of the equipment",
            "format": "json",
            "nullable": true,
            "example": "Dozer"
          },
          "intervalID": {
            "type": "integer",
            "description": "The unique identifier of the service interval",
            "format": "int32",
            "example": 782
          },
          "interval": {
            "type": "string",
            "description": "The service interval specification",
            "format": "json",
            "nullable": true,
            "example": "250hr"
          },
          "arrangementID": {
            "type": "integer",
            "description": "The unique identifier of the equipment arrangement (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 107
          },
          "arrangement": {
            "type": "string",
            "description": "The specific configuration or arrangement of the equipment",
            "format": "json",
            "nullable": true,
            "example": "Standard Configuration"
          },
          "roleID": {
            "type": "integer",
            "description": "The unique identifier of the service role",
            "format": "int32",
            "example": 639
          },
          "role": {
            "type": "string",
            "description": "The role responsible for performing the service",
            "format": "json",
            "nullable": true,
            "example": "Inspector"
          },
          "scheduledDate": {
            "type": "string",
            "description": "The planned date and time for the service",
            "format": "date-time",
            "example": "2024-01-15T09:00:00"
          },
          "checkoutUser": {
            "type": "string",
            "description": "The name of the user who checked out the service",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          },
          "checkoutDate": {
            "type": "string",
            "description": "The date and time when the service was checked out (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T08:45:00"
          },
          "imageURL": {
            "type": "string",
            "description": "The URL to the equipment or service image",
            "format": "json",
            "nullable": true,
            "example": "https://storage.example.com/equipment/HTK0317.jpg"
          },
          "notificationNumber": {
            "type": "string",
            "description": "The reference number for service notifications",
            "format": "json",
            "nullable": true,
            "example": "NOT-2024-001"
          },
          "percentageOverTime": {
            "type": "number",
            "description": "The percentage by which the service exceeded its estimated duration",
            "format": "double",
            "example": 17.13
          },
          "minutesOverTime": {
            "type": "number",
            "description": "The number of minutes exceeding the estimated duration",
            "format": "double",
            "example": 24.0
          },
          "modelTemplateType": {
            "type": "string",
            "description": "The type identifier for the service template",
            "format": "json",
            "nullable": true,
            "example": "A"
          },
          "modelVersion": {
            "type": "integer",
            "description": "The version number of the service model",
            "format": "int32",
            "example": 2
          },
          "hasArrangements": {
            "type": "boolean",
            "description": "Indicates whether the equipment has multiple arrangement options",
            "example": false
          },
          "completedDate": {
            "type": "string",
            "description": "The date and time when the service was completed (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T16:30:00"
          },
          "defectCount": {
            "type": "integer",
            "description": "The number of defects recorded during the service",
            "format": "int32",
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "ServicesGetServiceTimesResponse": {
        "type": "object",
        "properties": {
          "depth": {
            "type": "string",
            "description": "The hierarchical level indicator (V: View summary, S: Stage, Z: Zone, T: Task)",
            "format": "json",
            "nullable": true,
            "example": "V"
          },
          "totalEstimatedMinutes": {
            "type": "number",
            "description": "The total estimated duration in minutes (only when Depth is \"V\")",
            "format": "double",
            "nullable": true,
            "example": 120.5
          },
          "totalActualMinutes": {
            "type": "number",
            "description": "The total actual time spent in minutes (only when Depth is \"V\")",
            "format": "double",
            "nullable": true,
            "example": 135.2
          },
          "totalPauseMinutes": {
            "type": "number",
            "description": "The total pause time in minutes",
            "format": "double",
            "nullable": true,
            "example": 15.0
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DataModel"
            },
            "description": "Collection of service time entries at the specified depth (only present for depths S, Z, and T)",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ServicesGetSessionsResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the service session",
            "format": "int32",
            "example": 1165
          },
          "displayName": {
            "type": "string",
            "description": "The full name of the person who signed off the session",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          },
          "startDate": {
            "type": "string",
            "description": "The date and time when the session began",
            "format": "date-time",
            "example": "2024-01-15T09:00:20"
          },
          "endDate": {
            "type": "string",
            "description": "The date and time when the session ended",
            "format": "date-time",
            "example": "2024-01-15T09:45:43"
          },
          "signatureUrl": {
            "type": "string",
            "description": "The URL to access the digital signature image",
            "format": "json",
            "nullable": true,
            "example": "https://storage.example.com/signatures/session-1165.jpg"
          }
        },
        "additionalProperties": false
      },
      "ServicesGetSkippedTasksResponse": {
        "type": "object",
        "properties": {
          "stageName": {
            "type": "string",
            "description": "The name of the service stage where the task was skipped",
            "format": "json",
            "nullable": true,
            "example": "Recondition Sub Assemblies"
          },
          "zoneName": {
            "type": "string",
            "description": "The name of the service zone where the task was skipped",
            "format": "json",
            "nullable": true,
            "example": "Engine Bay"
          },
          "actionName": {
            "type": "string",
            "description": "The type of maintenance action that was skipped",
            "format": "json",
            "nullable": true,
            "example": "Inspect"
          },
          "taskName": {
            "type": "string",
            "description": "The specific maintenance task that was skipped",
            "format": "json",
            "nullable": true,
            "example": "Front Cover Housing Assembly"
          },
          "skipReasonName": {
            "type": "string",
            "description": "The categorized reason for skipping the task",
            "format": "json",
            "nullable": true,
            "example": "Component Not Installed"
          },
          "skipOtherReason": {
            "type": "string",
            "description": "Additional notes or details about why the task was skipped",
            "format": "json",
            "nullable": true,
            "example": "Optional component not fitted to this model variant"
          },
          "skippedByUser": {
            "type": "string",
            "description": "The user who skipped the task",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          }
        },
        "additionalProperties": false
      },
      "ServicesGetStatusChangesResponse": {
        "type": "object",
        "properties": {
          "userName": {
            "type": "string",
            "description": "The name of the user who changed the service status",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          },
          "createdDateTime": {
            "type": "string",
            "description": "The date and time when the status change occurred",
            "format": "date-time",
            "example": "2024-01-15T14:29:57"
          },
          "status": {
            "type": "string",
            "description": "The new status code of the service (single character)",
            "format": "json",
            "nullable": true,
            "example": "C"
          },
          "changeStatusReasonName": {
            "type": "string",
            "description": "The predefined reason for the status change",
            "format": "json",
            "nullable": true,
            "example": "Service Incomplete - Parts Required"
          },
          "otherReason": {
            "type": "string",
            "description": "Additional notes or details about the status change",
            "format": "json",
            "nullable": true,
            "example": "Waiting for replacement hydraulic pump delivery"
          }
        },
        "additionalProperties": false
      },
      "ServicesGetStopsReponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the service stop record",
            "format": "int32",
            "example": 213
          },
          "displayName": {
            "type": "string",
            "description": "The name of the user who recorded the service stop",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          },
          "endDate": {
            "type": "string",
            "description": "The date and time when the service stop ended",
            "format": "date-time",
            "example": "2024-01-15T14:01:22"
          },
          "stopReason": {
            "type": "string",
            "description": "The predefined reason for stopping the service",
            "format": "json",
            "nullable": true,
            "example": "End of Shift"
          },
          "otherReason": {
            "type": "string",
            "description": "Additional notes or details about the service stop",
            "format": "json",
            "nullable": true,
            "example": "Handover to afternoon shift team"
          }
        },
        "additionalProperties": false
      },
      "ServicesMyServicesResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the service",
            "format": "int32",
            "example": 92
          },
          "type": {
            "type": "string",
            "description": "The service template type identifier\nValid values:\nA - Asset-Based Model\nF - Facility-Based Model",
            "format": "json",
            "nullable": true,
            "example": "A"
          },
          "workOrder": {
            "type": "string",
            "description": "The work order identifier for the service",
            "format": "json",
            "nullable": true,
            "example": "WO-2024-001"
          },
          "status": {
            "type": "string",
            "description": "The current status of the service (single character)",
            "format": "json",
            "nullable": true,
            "example": "T"
          },
          "tasksSkipped": {
            "type": "boolean",
            "description": "Indicates whether any tasks in the service were skipped",
            "example": false
          },
          "percentageComplete": {
            "type": "number",
            "description": "The percentage of tasks completed in the service",
            "format": "double",
            "example": 7.56
          },
          "estimatedMinutes": {
            "type": "number",
            "description": "The estimated duration of the service in minutes",
            "format": "double",
            "example": 146.7
          },
          "completedEstimatedMinutes": {
            "type": "number",
            "description": "The estimated minutes for completed tasks",
            "format": "double",
            "example": 12.0
          },
          "elapsedMinutes": {
            "type": "number",
            "description": "The actual time spent on the service in minutes",
            "format": "double",
            "example": 0.65
          },
          "modelName": {
            "type": "string",
            "description": "The manufacturer or brand name of the equipment",
            "format": "json",
            "nullable": true,
            "example": "Caterpillar"
          },
          "model": {
            "type": "string",
            "description": "The specific model of the equipment",
            "format": "json",
            "nullable": true,
            "example": "12M (B92)"
          },
          "modelID": {
            "type": "integer",
            "description": "The unique identifier of the equipment model",
            "format": "int32",
            "example": 143
          },
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version",
            "format": "int32",
            "example": 165
          },
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the department",
            "format": "int32",
            "example": 33
          },
          "departmentName": {
            "type": "string",
            "description": "The name of the department responsible for the service",
            "format": "json",
            "nullable": true,
            "example": "50T - LV Maintenance"
          },
          "siteAssetID": {
            "type": "integer",
            "description": "The unique identifier of the asset being serviced (deprecated, use SiteAssetRegisterID)",
            "format": "int32",
            "nullable": true,
            "example": 39
          },
          "siteAssetRegisterID": {
            "type": "integer",
            "description": "The unique identifier of the asset register entry being serviced",
            "format": "int32",
            "nullable": true,
            "example": 39
          },
          "siteAssetName": {
            "type": "string",
            "description": "The identifier of the asset being serviced",
            "format": "json",
            "nullable": true,
            "example": "HTK0317"
          },
          "typeName": {
            "type": "string",
            "description": "The category or classification of the equipment",
            "format": "json",
            "nullable": true,
            "example": "Dozer"
          },
          "interval": {
            "type": "string",
            "description": "The service interval specification",
            "format": "json",
            "nullable": true,
            "example": "250hr"
          },
          "intervalID": {
            "type": "integer",
            "description": "The unique identifier of the service interval",
            "format": "int32",
            "example": 787
          },
          "arrangement": {
            "type": "string",
            "description": "The specific configuration or arrangement of the equipment",
            "format": "json",
            "nullable": true,
            "example": "Standard Configuration"
          },
          "arrangementID": {
            "type": "integer",
            "description": "The unique identifier of the equipment arrangement (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 77
          },
          "role": {
            "type": "string",
            "description": "The role responsible for performing the service",
            "format": "json",
            "nullable": true,
            "example": "Inspector"
          },
          "roleID": {
            "type": "integer",
            "description": "The unique identifier of the service role (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 87
          },
          "scheduledDate": {
            "type": "string",
            "description": "The planned date and time for the service",
            "format": "date-time",
            "example": "2024-01-15T09:00:00"
          },
          "listPartsToolsByStageZone": {
            "type": "boolean",
            "description": "Indicates whether parts and tools should be grouped by stage and zone",
            "example": false
          },
          "hideParts": {
            "type": "boolean",
            "description": "Indicates whether parts should be hidden in the service view",
            "example": false
          },
          "hideTools": {
            "type": "boolean",
            "description": "Indicates whether tools should be hidden in the service view",
            "example": false
          },
          "canRegisterDefects": {
            "type": "boolean",
            "description": "Indicates whether the current role can register defects",
            "example": false
          },
          "checkoutUser": {
            "type": "string",
            "description": "The name of the user who checked out the service",
            "format": "json",
            "nullable": true,
            "example": "Smith, John"
          },
          "checkoutDate": {
            "type": "string",
            "description": "The date and time when the service was checked out (nullable)",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T14:01:22"
          },
          "imageURL": {
            "type": "string",
            "description": "The URL to the equipment or service image",
            "format": "json",
            "nullable": true,
            "example": "https://storage.example.com/equipment/HTK0317.jpg"
          }
        },
        "additionalProperties": false
      },
      "ServicesPostBadRequest400ResponseResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "type of the error.",
            "format": "json",
            "nullable": true,
            "example": "https://tools.ietf.org/html/rfc7231#section-6.5.4"
          },
          "title": {
            "type": "string",
            "description": "title of the error.",
            "format": "json",
            "nullable": true,
            "example": "Bad Request"
          },
          "status": {
            "type": "integer",
            "description": "HTTP status code associated with the error.",
            "format": "int32",
            "example": 400
          },
          "message": {
            "type": "string",
            "description": "error message.",
            "format": "json",
            "nullable": true,
            "example": "Cannot register a service for a Model that is not active."
          },
          "traceId": {
            "type": "string",
            "description": "trace ID for tracking purposes.",
            "format": "json",
            "nullable": true,
            "example": "00-ac9887318c53f53ab4e77b9a771515fd-e3926082725a39b8-00"
          }
        },
        "additionalProperties": false
      },
      "ServicesUploadServiceListResponse": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The unique identifier key for the uploaded file",
            "format": "json",
            "nullable": true,
            "example": "2024-01-15-service-list-upload-a1b2c3d4"
          },
          "url": {
            "type": "string",
            "description": "The URL where the uploaded file can be accessed",
            "format": "json",
            "nullable": true,
            "example": "https://storage.example.com/uploads/service-lists/2024-01-15-service-list.csv"
          },
          "trimmedFilename": {
            "type": "string",
            "description": "The base filename without extension",
            "format": "json",
            "nullable": true,
            "example": "service-list-2024-01"
          },
          "fileExtension": {
            "type": "string",
            "description": "The file format extension",
            "format": "json",
            "nullable": true,
            "example": "csv"
          }
        },
        "additionalProperties": false
      },
      "SetPreferenceRequest": {
        "type": "object",
        "properties": {
          "locale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SetUserPreferenceRequest": {
        "type": "object",
        "properties": {
          "locale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ShareModelType": {
        "enum": [
          "0 - None",
          "1 - AllSites",
          "2 - AllClients"
        ],
        "type": "integer",
        "format": "int32"
      },
      "Site": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "region": {
            "$ref": "#/components/schemas/Region"
          },
          "regionID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "company": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "address": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "businessNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "licenseType": {
            "$ref": "#/components/schemas/LicenseType"
          },
          "licenses": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "showAssetReferences": {
            "type": "boolean"
          },
          "feedbackRequireDepartment": {
            "type": "boolean"
          },
          "enabledLocales": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defaultLocale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "siteApps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SiteApp"
            },
            "nullable": true
          },
          "clientUserSites": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUserSite"
            },
            "nullable": true
          },
          "regionName": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          },
          "clientName": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          },
          "clientID": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "SiteApp": {
        "required": [
          "actionRequiredCC",
          "actionRequiredPluralCC",
          "additionalPPECC",
          "additionalPPEPluralCC",
          "arrangementCC",
          "arrangementPluralCC",
          "assetCC",
          "assetMainWorkCenterCC",
          "assetMainWorkCenterPluralCC",
          "assetPlannerGroupCC",
          "assetPlannerGroupPluralCC",
          "assetPluralCC",
          "assetReferenceCC",
          "assetReferencePluralCC",
          "benefitCC",
          "benefitPluralCC",
          "changeRequiredCC",
          "changeRequiredPluralCC",
          "classificationCC",
          "classificationPluralCC",
          "contaminationControlsCC",
          "contaminationControlsPluralCC",
          "controlsCC",
          "controlsPluralCC",
          "correctiveActionsCC",
          "correctiveActionsPluralCC",
          "customField1CC",
          "customField1PluralCC",
          "customField2CC",
          "customField2PluralCC",
          "customField3CC",
          "customField3PluralCC",
          "defectCC",
          "defectPluralCC",
          "defectStatusCC",
          "defectStatusPluralCC",
          "defectTypeCC",
          "defectTypePluralCC",
          "defectWorkOrderCC",
          "defectWorkOrderPluralCC",
          "departmentCC",
          "departmentPluralCC",
          "developerNameCC",
          "developerNamePluralCC",
          "feedbackCC",
          "feedbackPluralCC",
          "feedbackStatusCC",
          "feedbackStatusPluralCC",
          "intervalCC",
          "intervalPluralCC",
          "isolationsCC",
          "isolationsPluralCC",
          "locationCC",
          "locationPluralCC",
          "lubricantCC",
          "lubricantPluralCC",
          "makeCC",
          "makePluralCC",
          "modelCC",
          "modelPluralCC",
          "modelTemplateCC",
          "modelTemplatePluralCC",
          "modelTypeCC",
          "modelTypePluralCC",
          "notificationNumberCC",
          "notificationNumberPluralCC",
          "operatingModeCC",
          "operatingModePluralCC",
          "otherInformationCC",
          "otherInformationPluralCC",
          "partCC",
          "partDescriptionCC",
          "partDescriptionPluralCC",
          "partNameCC",
          "partNamePluralCC",
          "partPluralCC",
          "partQuantityCC",
          "partQuantityPluralCC",
          "partStockNumberCC",
          "partStockNumberPluralCC",
          "pauseReasonCC",
          "pauseReasonPluralCC",
          "permitCC",
          "permitPluralCC",
          "positionCC",
          "positionPluralCC",
          "possibleHazardsCC",
          "possibleHazardsPluralCC",
          "primaryLocale",
          "priorityCC",
          "priorityPluralCC",
          "procedureCC",
          "procedurePluralCC",
          "projectNumberCC",
          "projectNumberPluralCC",
          "purposeCC",
          "purposePluralCC",
          "questionCC",
          "questionPluralCC",
          "riskRatingActionCC",
          "riskRatingActionPluralCC",
          "riskRatingCC",
          "riskRatingMatrixCC",
          "riskRatingMatrixPluralCC",
          "riskRatingPluralCC",
          "roleCC",
          "rolePluralCC",
          "safetyCriticalCC",
          "safetyCriticalPluralCC",
          "serialNumberRangeCC",
          "serialNumberRangePluralCC",
          "serviceCC",
          "servicePluralCC",
          "serviceWorkOrderCC",
          "serviceWorkOrderPluralCC",
          "skipReasonCC",
          "skipReasonPluralCC",
          "specificationCC",
          "specificationPluralCC",
          "stageCC",
          "stagePluralCC",
          "stopReasonCC",
          "stopReasonPluralCC",
          "systemCC",
          "systemPluralCC",
          "taskCC",
          "taskListNoCC",
          "taskListNoPluralCC",
          "taskPluralCC",
          "toolCC",
          "toolDescriptionCC",
          "toolDescriptionPluralCC",
          "toolPluralCC",
          "toolQuantityCC",
          "toolQuantityPluralCC",
          "tutorialCC",
          "tutorialPluralCC",
          "userCC",
          "userPluralCC",
          "userReferenceCC",
          "userReferencePluralCC",
          "workbookCC",
          "workbookPluralCC",
          "zoneCC",
          "zonePluralCC"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "site": {
            "$ref": "#/components/schemas/Site"
          },
          "siteID": {
            "type": "integer",
            "format": "int32"
          },
          "application": {
            "$ref": "#/components/schemas/Application"
          },
          "applicationID": {
            "type": "integer",
            "format": "int32"
          },
          "weekStartDay": {
            "$ref": "#/components/schemas/StartOfWeek"
          },
          "isActive": {
            "type": "boolean"
          },
          "defectRiskRatingKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "licenseType": {
            "$ref": "#/components/schemas/LicenseType"
          },
          "licenses": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "showServiceUserConfirmation": {
            "type": "boolean"
          },
          "showServiceClientName": {
            "type": "boolean"
          },
          "userConfirmationMessage": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "raisingDefectCopiesTaskName": {
            "type": "boolean"
          },
          "defectTemplate": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "nextFeedbackNumber": {
            "type": "integer",
            "format": "int32"
          },
          "nextDefectNumber": {
            "type": "integer",
            "format": "int32"
          },
          "allowRegisterAssetsForServices": {
            "type": "boolean"
          },
          "allowConditionMonitoringDataAlert": {
            "type": "boolean"
          },
          "workbookFieldOrder": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "primaryLocale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectRiskRatingURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "clientLicenseType": {
            "$ref": "#/components/schemas/LicenseType"
          },
          "clientLicenses": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "siteLicenseType": {
            "$ref": "#/components/schemas/LicenseType"
          },
          "siteLicenses": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "actionRequireds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Action"
            },
            "nullable": true
          },
          "changeStatusReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChangeStatusReason"
            },
            "nullable": true
          },
          "clientUserSiteApps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUserSiteApp"
            },
            "nullable": true
          },
          "defectRiskRatings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DefectRiskRating"
            },
            "nullable": true
          },
          "defectStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DefectStatus"
            },
            "nullable": true
          },
          "defectTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DefectType"
            },
            "nullable": true
          },
          "feedbackClassifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedbackClassification"
            },
            "nullable": true
          },
          "feedbackPriorities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedbackPriority"
            },
            "nullable": true
          },
          "feedbackStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedbackStatus"
            },
            "nullable": true
          },
          "keyContacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SiteAppKeyContact"
            },
            "nullable": true
          },
          "lubricants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Lubricant"
            },
            "nullable": true
          },
          "missingPartToolReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MissingPartToolReason"
            },
            "nullable": true
          },
          "modelStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelStatus"
            },
            "nullable": true
          },
          "modelTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelType"
            },
            "nullable": true
          },
          "operatingModes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OperatingMode"
            },
            "nullable": true
          },
          "pauses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Pause"
            },
            "nullable": true
          },
          "positions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Position"
            },
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Role"
            },
            "nullable": true
          },
          "skipTaskReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkipTaskReason"
            },
            "nullable": true
          },
          "stopReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StopReason"
            },
            "nullable": true
          },
          "cmEditReasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CMEditReason"
            },
            "nullable": true
          },
          "systems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/System"
            },
            "nullable": true
          },
          "defaultDefectStatus": {
            "$ref": "#/components/schemas/DefectStatus"
          },
          "defaultDefectStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackClassification": {
            "$ref": "#/components/schemas/FeedbackClassification"
          },
          "defaultFeedbackClassificationID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackPriority": {
            "$ref": "#/components/schemas/FeedbackPriority"
          },
          "defaultFeedbackPriorityID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackStatus": {
            "$ref": "#/components/schemas/FeedbackStatus"
          },
          "defaultFeedbackStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultModelStatus": {
            "$ref": "#/components/schemas/ModelStatus"
          },
          "defaultModelStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultOperatingMode": {
            "$ref": "#/components/schemas/OperatingMode"
          },
          "defaultOperatingModeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultSafetyCriticalDefectRiskRating": {
            "$ref": "#/components/schemas/DefectRiskRating"
          },
          "defaultSafetyCriticalDefectRiskRatingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelTemplateCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelTemplatePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "projectNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "projectNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "locationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "locationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "stageCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "stagePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "zoneCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "zonePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "intervalCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "intervalPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "taskListNoCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "taskListNoPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "questionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "questionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "taskCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "taskPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "actionRequiredCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "actionRequiredPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "operatingModeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "operatingModePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "systemCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "systemPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "safetyCriticalCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "safetyCriticalPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partQuantityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partQuantityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partNameCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partNamePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partDescriptionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partDescriptionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partStockNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "partStockNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolQuantityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolQuantityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolDescriptionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "toolDescriptionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "lubricantCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "lubricantPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "workbookCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "workbookPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "purposeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "purposePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "procedureCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "procedurePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "possibleHazardsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "possibleHazardsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "additionalPPECC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "additionalPPEPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "specificationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "specificationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "contaminationControlsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "contaminationControlsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "otherInformationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "otherInformationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "correctiveActionsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "correctiveActionsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "isolationsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "isolationsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "controlsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "controlsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField1CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField1PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField2CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField2PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField3CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "customField3PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "makeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "makePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelTypeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "modelTypePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "developerNameCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "developerNamePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "roleCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "rolePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "tutorialCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "tutorialPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "changeRequiredCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "changeRequiredPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "benefitCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "benefitPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "classificationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "classificationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "priorityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "priorityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackStatusCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "feedbackStatusPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userReferenceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "userReferencePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "positionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "positionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serviceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "servicePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serviceWorkOrderCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serviceWorkOrderPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pauseReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "pauseReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "stopReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "stopReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "skipReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "skipReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectWorkOrderCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectWorkOrderPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectStatusCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectStatusPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectTypeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "defectTypePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingActionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingActionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingMatrixCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "riskRatingMatrixPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "departmentCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "departmentPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetReferenceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetReferencePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetPlannerGroupCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetPlannerGroupPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetMainWorkCenterCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetMainWorkCenterPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serialNumberRangeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serialNumberRangePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "permitCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "permitPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "arrangementCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "arrangementPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "notificationNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "notificationNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "SiteAppKeyContact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "user": {
            "$ref": "#/components/schemas/User"
          },
          "userID": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SiteAppKeyContactPostRequest": {
        "required": [
          "siteAppID",
          "userID"
        ],
        "type": "object",
        "properties": {
          "siteAppID": {
            "type": "integer",
            "description": "The unique identifier of the site application",
            "format": "int32",
            "example": 24
          },
          "userID": {
            "type": "integer",
            "description": "The unique identifier of the user to be assigned as a key contact",
            "format": "int32",
            "example": 156
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new key contact association with a site application"
      },
      "SiteAppPostRequest": {
        "required": [
          "applicationID",
          "positionID",
          "siteDepartmentID",
          "siteID"
        ],
        "type": "object",
        "properties": {
          "siteID": {
            "type": "integer",
            "description": "The unique identifier of the site where the application will be deployed",
            "format": "int32",
            "example": 42
          },
          "applicationID": {
            "type": "integer",
            "description": "The unique identifier of the application to be deployed",
            "format": "int32",
            "example": 15
          },
          "siteDepartmentID": {
            "type": "integer",
            "description": "The unique identifier of the department within the site",
            "format": "int32",
            "example": 33
          },
          "positionID": {
            "type": "integer",
            "description": "The unique identifier of the position associated with this application deployment",
            "format": "int32",
            "example": 7
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new site application association"
      },
      "SiteAppRequest": {
        "required": [
          "arrangementCC",
          "arrangementPluralCC",
          "notificationNumberCC",
          "notificationNumberPluralCC",
          "permitCC",
          "permitPluralCC",
          "serialNumberRangeCC",
          "serialNumberRangePluralCC"
        ],
        "type": "object",
        "properties": {
          "isActive": {
            "type": "boolean"
          },
          "defectRiskRatingKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "licenseType": {
            "$ref": "#/components/schemas/LicenseType"
          },
          "licenses": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "weekStartDay": {
            "$ref": "#/components/schemas/StartOfWeek"
          },
          "showServiceUserConfirmation": {
            "type": "boolean"
          },
          "userConfirmationMessage": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "raisingDefectCopiesTaskName": {
            "type": "boolean"
          },
          "defectTemplate": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "showServiceClientName": {
            "type": "boolean"
          },
          "allowRegisterAssetsForServices": {
            "type": "boolean"
          },
          "allowConditionMonitoringDataAlert": {
            "type": "boolean"
          },
          "workbookFieldOrder": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defaultDefectStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackClassificationID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackPriorityID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultFeedbackStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultModelStatusID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultOperatingModeID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultSafetyCriticalDefectRiskRatingID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modelTemplateCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelTemplatePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "projectNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "projectNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "locationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "locationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stageCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stagePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "zoneCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "zonePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "intervalCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "intervalPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskListNoCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskListNoPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "questionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "questionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "taskPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "actionRequiredCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "actionRequiredPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "operatingModeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "operatingModePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "systemCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "systemPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "safetyCriticalCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "safetyCriticalPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partQuantityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partQuantityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partNameCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partNamePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partDescriptionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partDescriptionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partStockNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "partStockNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolQuantityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolQuantityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolDescriptionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "toolDescriptionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "lubricantCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "lubricantPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "workbookCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "workbookPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "purposeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "purposePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "procedureCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "procedurePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "possibleHazardsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "possibleHazardsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "additionalPPECC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "additionalPPEPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "specificationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "specificationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "contaminationControlsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "contaminationControlsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "otherInformationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "otherInformationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "correctiveActionsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "correctiveActionsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isolationsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isolationsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "controlsCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "controlsPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField1CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField1PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField2CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField2PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField3CC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "customField3PluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "makeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "makePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelTypeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "modelTypePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "developerNameCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "developerNamePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "roleCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "rolePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "tutorialCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "tutorialPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "changeRequiredCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "changeRequiredPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "benefitCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "benefitPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "classificationCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "classificationPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "priorityCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "priorityPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackStatusCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "feedbackStatusPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userReferenceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "userReferencePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "positionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "positionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "servicePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceWorkOrderCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serviceWorkOrderPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "pauseReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "pauseReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stopReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "stopReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "skipReasonCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "skipReasonPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectWorkOrderCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectWorkOrderPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectStatusCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectStatusPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectTypeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectTypePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "typeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "typePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingActionCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingActionPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingMatrixCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "riskRatingMatrixPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "departmentCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "departmentPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetReferenceCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetReferencePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetPlannerGroupCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetPlannerGroupPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetMainWorkCenterCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "assetMainWorkCenterPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "serialNumberRangeCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "serialNumberRangePluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "permitCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "permitPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "arrangementCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "arrangementPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "notificationNumberCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "notificationNumberPluralCC": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          }
        },
        "additionalProperties": false
      },
      "SiteAssetRegister": {
        "required": [
          "code",
          "reference"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "site": {
            "$ref": "#/components/schemas/Site"
          },
          "siteID": {
            "type": "integer",
            "format": "int32"
          },
          "parent": {
            "$ref": "#/components/schemas/SiteAssetRegister"
          },
          "parentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "rootAsset": {
            "$ref": "#/components/schemas/SiteAssetRegister"
          },
          "rootAssetID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "reference": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "code": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "assetNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "level": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "plannerGroup": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "workCenter": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "oldSiteAssetID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "oldSiteAssetReferenceID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SiteAssetRegister"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SiteAssetRegisterImportRecord": {
        "type": "object",
        "properties": {
          "assetNumber": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "reference": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "description": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "plannerGroup": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "workCenter": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SiteAssetRegisterImportValidationResponse": {
        "type": "object",
        "properties": {
          "newRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SiteAssetRegisterImportRecord"
            },
            "nullable": true
          },
          "modifiedRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SiteAssetRegisterImportRecord"
            },
            "nullable": true
          },
          "orphanedRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SiteAssetRegisterImportRecord"
            },
            "nullable": true
          },
          "addedCount": {
            "type": "integer",
            "format": "int32"
          },
          "modifiedCount": {
            "type": "integer",
            "format": "int32"
          },
          "orphanedCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SiteAssetRegisterPostRequest": {
        "required": [
          "reference"
        ],
        "type": "object",
        "properties": {
          "siteID": {
            "type": "integer",
            "description": "The site ID. Required when called with IsClientAdmin access (no SiteAppID in token).",
            "format": "int32",
            "nullable": true
          },
          "assetNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The asset number",
            "format": "json",
            "nullable": true,
            "example": "HTK0317"
          },
          "reference": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The FLOC reference code (empty string for orphaned assets)",
            "format": "json",
            "example": "2060-10-00-80-BLG0007-AIHV"
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the asset",
            "format": "json",
            "nullable": true,
            "example": "Air Con HVAC; Change Room M BD007"
          },
          "plannerGroup": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The planner group responsible for the asset",
            "format": "json",
            "nullable": true,
            "example": "213"
          },
          "workCenter": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The work center associated with the asset",
            "format": "json",
            "nullable": true,
            "example": "20EL"
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a site asset register entry"
      },
      "SiteAssetRegisterRequest": {
        "type": "object",
        "properties": {
          "assetNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The asset number",
            "format": "json",
            "nullable": true,
            "example": "HTK0317"
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the asset",
            "format": "json",
            "nullable": true,
            "example": "Air Con HVAC; Change Room M BD007"
          },
          "plannerGroup": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The planner group responsible for the asset",
            "format": "json",
            "nullable": true,
            "example": "213"
          },
          "workCenter": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The work center associated with the asset",
            "format": "json",
            "nullable": true,
            "example": "20EL"
          }
        },
        "additionalProperties": false,
        "description": "Request model for patching a site asset register entry"
      },
      "SiteDepartment": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "site": {
            "$ref": "#/components/schemas/Site"
          },
          "siteID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "description": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "clientUserSiteAppServiceDepartments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUserSiteAppServiceDepartment"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SiteDepartmentPostRequest": {
        "required": [
          "name",
          "siteID"
        ],
        "type": "object",
        "properties": {
          "siteID": {
            "type": "integer",
            "description": "The unique identifier of the site where the department is located",
            "format": "int32",
            "example": 42
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the department",
            "format": "json",
            "example": "Maintenance Department"
          },
          "description": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "A detailed description of the department",
            "format": "json",
            "nullable": true,
            "example": "Responsible for all maintenance activities across the site"
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new site department"
      },
      "SiteDepartmentRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "description": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SitePostRequest": {
        "required": [
          "name",
          "regionID"
        ],
        "type": "object",
        "properties": {
          "regionID": {
            "type": "integer",
            "description": "The unique identifier of the region where the site is located",
            "format": "int32",
            "example": 5
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the site",
            "format": "json",
            "example": "Central Maintenance Facility"
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new site"
      },
      "SiteRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "regionID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "company": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "address": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "businessNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "licenseType": {
            "$ref": "#/components/schemas/LicenseType"
          },
          "licenses": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "showAssetReferences": {
            "type": "boolean"
          },
          "feedbackRequireDepartment": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "SkipTaskReason": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "SkipTaskReasonPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the reason for skipping the task",
            "format": "json",
            "example": "Not Applicable"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new reason for skipping a task"
      },
      "SkipTaskReasonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "StartOfWeek": {
        "enum": [
          "0 - Sunday",
          "1 - Monday",
          "2 - Tuesday",
          "3 - Wednesday",
          "4 - Thursday",
          "5 - Friday",
          "6 - Saturday"
        ],
        "type": "integer",
        "format": "int32"
      },
      "StopReason": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "StopReasonPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the reason for stopping the task or service",
            "format": "json",
            "example": "End of Shift"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new reason for stopping a task or service"
      },
      "StopReasonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "requiresExplanation": {
            "type": "boolean",
            "description": "Whether selecting this reason requires the user to enter an explanation"
          }
        },
        "additionalProperties": false
      },
      "System": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "siteApp": {
            "$ref": "#/components/schemas/SiteApp"
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "code": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SystemPostRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the system",
            "format": "json",
            "example": "Inventory Management System"
          },
          "code": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The unique code associated with the system",
            "format": "json",
            "nullable": true,
            "example": "IMS-2024"
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new system"
      },
      "SystemRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "code": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TaskListNoUsageResult": {
        "type": "object",
        "properties": {
          "sameModelIntervalNames": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "otherModelNames": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TaskQuestionImagesGetResponse": {
        "type": "object",
        "properties": {
          "serviceTaskQuestionID": {
            "type": "integer",
            "format": "int32"
          },
          "imageKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailKey": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "imageURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "thumbnailURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TasksImportRequest": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "key": {
            "minLength": 1,
            "type": "string",
            "description": "The unique key associated with the import request",
            "format": "json",
            "example": "task-import-2024-01-15"
          },
          "modelVersionID": {
            "type": "integer",
            "description": "The unique identifier of the model version associated with the tasks",
            "format": "int32",
            "example": 165
          }
        },
        "additionalProperties": false,
        "description": "Request model for importing tasks into the system"
      },
      "ToggleReportSubscriptionRequest": {
        "type": "object",
        "properties": {
          "isActive": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "TokenRefreshRequest": {
        "required": [
          "token"
        ],
        "type": "object",
        "properties": {
          "token": {
            "minLength": 1,
            "type": "string",
            "description": "The current authentication token that needs to be refreshed.",
            "format": "json",
            "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
          }
        },
        "additionalProperties": false,
        "description": "Request model for refreshing an authentication token."
      },
      "TokenRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "The authentication token to be processed",
            "format": "json",
            "nullable": true,
            "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
          },
          "siteAppId": {
            "type": "integer",
            "description": "The unique identifier of the site application associated with the token (nullable)",
            "format": "int32",
            "nullable": true,
            "example": 24
          },
          "isMobile": {
            "type": "boolean",
            "description": "Indicates whether the request is coming from a mobile device",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for handling token-related operations"
      },
      "TranslateMissingRequest": {
        "type": "object",
        "properties": {
          "types": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TranslationSaveItem": {
        "type": "object",
        "properties": {
          "entityID": {
            "type": "integer",
            "format": "int32"
          },
          "field": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "value": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "translatedBy": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TranslationSaveRequest": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationSaveItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Unauthorized401Response": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "type of the error.",
            "format": "json",
            "nullable": true,
            "example": "https://tools.ietf.org/html/rfc7235#section-3.1"
          },
          "title": {
            "type": "string",
            "description": "title of the error.",
            "format": "json",
            "nullable": true,
            "example": "Unauthorized"
          },
          "status": {
            "type": "integer",
            "description": "HTTP status code associated with the error.",
            "format": "int32",
            "example": 401
          },
          "traceId": {
            "type": "string",
            "description": "trace ID for tracking purposes.",
            "format": "json",
            "nullable": true,
            "example": "00-1753e572354dcfcb857e3213cba726f5-a914974fe7cff64b-00"
          }
        },
        "additionalProperties": false
      },
      "UpdateLocaleSettingsRequest": {
        "required": [
          "defaultLocale",
          "enabledLocales"
        ],
        "type": "object",
        "properties": {
          "defaultLocale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "enabledLocales": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            }
          }
        },
        "additionalProperties": false
      },
      "UpdateReportSubscriptionRequest": {
        "required": [
          "daysOfWeek",
          "filterContext",
          "reportType",
          "timeOfDay",
          "timezone"
        ],
        "type": "object",
        "properties": {
          "reportType": {
            "$ref": "#/components/schemas/ReportType"
          },
          "name": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "filterContext": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/JToken"
            }
          },
          "filterSummary": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterSummaryItem"
            },
            "nullable": true
          },
          "daysOfWeek": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DayOfWeek"
            }
          },
          "timeOfDay": {
            "type": "string",
            "format": "time"
          },
          "timezone": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "deliveryEmail": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "format": "email",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Same shape as EMI3APIServer.Models.Request.CreateReportSubscriptionRequest - PUT replaces the whole\nsubscription including the underlying SavedFilter."
      },
      "UploadResponse": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "url": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "trimmedFilename": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "fileExtension": {
            "type": "string",
            "format": "json",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpsertOverrideTermRequest": {
        "required": [
          "forms",
          "key",
          "locale"
        ],
        "type": "object",
        "properties": {
          "key": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "locale": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "forms": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "format": "json",
              "nullable": true
            },
            "description": "Values keyed by CLDR plural category (\"one\", \"other\", ...); use an\nempty-string key for non-pluralised terms. Null or empty values\nremove that form's override."
          }
        },
        "additionalProperties": false
      },
      "User": {
        "required": [
          "email",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUser": {
            "$ref": "#/components/schemas/User"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "modifiedUserID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedUser": {
            "$ref": "#/components/schemas/User"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "email": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "format": "email"
          },
          "firstName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json"
          },
          "active": {
            "type": "boolean"
          },
          "passwordHash": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "passwordSalt": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "verifyToken": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "verifyTokenExpiry": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isAdmin": {
            "type": "boolean"
          },
          "receiveFeedbackEmail": {
            "type": "boolean"
          },
          "adminType": {
            "$ref": "#/components/schemas/AdminType"
          },
          "lastLogin": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastMobileAppVersion": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "lastMobileAppBuild": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lastMobileSeen": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastMobileDeviceModel": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "lastMobileOSVersion": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "timezone": {
            "maxLength": 64,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "currentSiteAppID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "clientUsers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientUser"
            },
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "format": "json",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "UserAuthApplication": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "logoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "navigationLogoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "smallLogoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "mobileWhiteAppLogoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "mobileSmallWhiteAppLogoURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "color": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "alertColor": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "allowIndividualAssetModels": {
            "type": "boolean"
          },
          "allowFacilityBasedModels": {
            "type": "boolean"
          },
          "showLubricants": {
            "type": "boolean"
          },
          "showParts": {
            "type": "boolean"
          },
          "showOperatingMode": {
            "type": "boolean"
          },
          "showSystem": {
            "type": "boolean"
          },
          "showDefectParts": {
            "type": "boolean"
          },
          "showSerialNumberRange": {
            "type": "boolean"
          },
          "showServiceClientName": {
            "type": "boolean"
          },
          "showArrangements": {
            "type": "boolean"
          },
          "allowRegisterAssetsForServices": {
            "type": "boolean"
          },
          "allowConditionMonitoringDataAlert": {
            "type": "boolean"
          },
          "weekStartDay": {
            "$ref": "#/components/schemas/StartOfWeek"
          },
          "shareModels": {
            "$ref": "#/components/schemas/ShareModelType"
          },
          "featureFlags": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "json"
            },
            "nullable": true
          },
          "showAssetReferences": {
            "type": "boolean"
          },
          "feedbackRequireDepartment": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "UserAuthResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "firstName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "email": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "jwtToken": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "isAdmin": {
            "type": "boolean"
          },
          "adminType": {
            "$ref": "#/components/schemas/AdminType"
          },
          "multiSiteUser": {
            "type": "boolean",
            "nullable": true
          },
          "regionName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "siteName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "siteAppID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "siteID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customCaptions": {
            "$ref": "#/components/schemas/CustomCaption"
          },
          "workbookFieldOrder": {
            "type": "string",
            "description": "The siteApp's workbook field display order (JSON array of field keys, null = default),\napplied by the web portal's workbook tab and the mobile task detail view.",
            "format": "json",
            "nullable": true
          },
          "resolvedLocale": {
            "type": "string",
            "description": "The locale the captions were resolved at (user preference gated by the\nsite's enabled locales, else the site default, else \"en\"). The mobile app\nuses this to fetch the matching localisation bundle on site-app login.",
            "format": "json",
            "nullable": true
          },
          "position": {
            "$ref": "#/components/schemas/Position"
          },
          "application": {
            "$ref": "#/components/schemas/UserAuthApplication"
          },
          "site": {
            "$ref": "#/components/schemas/UserAuthSite"
          }
        },
        "additionalProperties": false
      },
      "UserAuthSite": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "siteName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "regionName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "clientID": {
            "type": "integer",
            "format": "int32"
          },
          "siteDepartmentID": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "siteDepartmentName": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "showServiceUserConfirmation": {
            "type": "boolean"
          },
          "userConfirmationMessage": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "raisingDefectCopiesTaskName": {
            "type": "boolean"
          },
          "defectTemplate": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "defectRiskRatingImageURL": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "showServiceClientName": {
            "type": "boolean"
          },
          "allowRegisterAssetsForServices": {
            "type": "boolean"
          },
          "allowConditionMonitoringDataAlert": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "UserChangePasswordRequest": {
        "required": [
          "newPassword",
          "oldPassword"
        ],
        "type": "object",
        "properties": {
          "oldPassword": {
            "minLength": 1,
            "type": "string",
            "description": "The user's current password",
            "format": "json",
            "example": "OldPassword123!"
          },
          "newPassword": {
            "minLength": 1,
            "type": "string",
            "description": "The new password that the user wants to set",
            "format": "json",
            "example": "NewPassword456!"
          }
        },
        "additionalProperties": false,
        "description": "Request model for changing a user's password"
      },
      "UserRegistrationRequest": {
        "required": [
          "email",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "The email address of the user",
            "format": "json",
            "example": "user@example.com"
          },
          "firstName": {
            "minLength": 1,
            "type": "string",
            "description": "The first name of the user",
            "format": "json",
            "example": "John"
          },
          "lastName": {
            "minLength": 1,
            "type": "string",
            "description": "The last name of the user",
            "format": "json",
            "example": "Doe"
          },
          "adminType": {
            "$ref": "#/components/schemas/AdminType"
          }
        },
        "additionalProperties": false,
        "description": "Request model for registering a new user"
      },
      "UserRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "firstName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "adminType": {
            "$ref": "#/components/schemas/AdminType"
          },
          "receiveFeedbackEmail": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "UserResendInviteRequest": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "The email address of the user to whom the invitation will be resent",
            "format": "json",
            "example": "user@example.com"
          }
        },
        "additionalProperties": false,
        "description": "Request model for resending an invitation to a user"
      },
      "ValidationProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "title": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "json"
              }
            },
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "VersionStatusResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "prompt": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "updateAvailable": {
            "type": "boolean"
          },
          "forceUpdate": {
            "type": "boolean"
          },
          "latestVersion": {
            "type": "string",
            "format": "json",
            "nullable": true
          },
          "latestBuild": {
            "type": "integer",
            "format": "int32"
          },
          "sunsetDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkbookFieldRemapRequest": {
        "type": "object",
        "properties": {
          "mapping": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "format": "json",
              "nullable": true
            },
            "nullable": true
          },
          "dryRun": {
            "type": "boolean",
            "description": "Preview only; nothing is saved unless explicitly set to false."
          }
        },
        "additionalProperties": false,
        "description": "Super-admin request to remap content between the workbook fields of every task on a\nModel Version (data fix for content captured under the wrong fields). Mapping is\ntarget field -> source field (the target's new content is taken from the source) and\nmust be a permutation over the fields it mentions, so content is only moved around\nthe cycle and never lost or duplicated."
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "JWT Authorization header using the Bearer scheme. \\r\\n\\r\\n \n                      Enter 'Bearer' [space] and then your token in the text input below.\n                      \\r\\n\\r\\nExample: 'Bearer 12345abcdef'",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    { }
  ],
  "tags": [
    {
      "name": "Account"
    },
    {
      "name": "Actions"
    },
    {
      "name": "Admin"
    },
    {
      "name": "AIConfigurations"
    },
    {
      "name": "AIGlossaries"
    },
    {
      "name": "AIProviders"
    },
    {
      "name": "AITranslations"
    },
    {
      "name": "ApplicationActions"
    },
    {
      "name": "ApplicationChangeStatusReasons"
    },
    {
      "name": "ApplicationCMEditReasons"
    },
    {
      "name": "ApplicationDefectRiskRatings"
    },
    {
      "name": "ApplicationDefectStatuses"
    },
    {
      "name": "ApplicationDefectTypes"
    },
    {
      "name": "ApplicationFeedbackClassifications"
    },
    {
      "name": "ApplicationFeedbackPriorities"
    },
    {
      "name": "ApplicationFeedbackStatuses"
    },
    {
      "name": "ApplicationMissingPartToolReasons"
    },
    {
      "name": "ApplicationModelStatuses"
    },
    {
      "name": "ApplicationModelTypes"
    },
    {
      "name": "ApplicationOperatingModes"
    },
    {
      "name": "ApplicationPauses"
    },
    {
      "name": "ApplicationPauseSubcategories"
    },
    {
      "name": "ApplicationPositions"
    },
    {
      "name": "ApplicationRoles"
    },
    {
      "name": "Applications"
    },
    {
      "name": "ApplicationSkipTaskReasons"
    },
    {
      "name": "ApplicationStopReasons"
    },
    {
      "name": "ApplicationSystems"
    },
    {
      "name": "AppVersion"
    },
    {
      "name": "Audits"
    },
    {
      "name": "AverageTimesReport"
    },
    {
      "name": "ChangeStatusReasons"
    },
    {
      "name": "ClientApplications"
    },
    {
      "name": "ClientDocuments"
    },
    {
      "name": "ClientNotes"
    },
    {
      "name": "Clients"
    },
    {
      "name": "ClientUserNotes"
    },
    {
      "name": "ClientUsers"
    },
    {
      "name": "ClientUserSiteApps"
    },
    {
      "name": "ClientUserSiteAppServiceDepartments"
    },
    {
      "name": "ClientUserSiteAppServiceModels"
    },
    {
      "name": "ClientUserSiteAppServiceRoles"
    },
    {
      "name": "ClientUserSites"
    },
    {
      "name": "CMEditReasons"
    },
    {
      "name": "CompletedServiceAnalysis"
    },
    {
      "name": "CompletedVsOutstandingDefectsReport"
    },
    {
      "name": "ConditionMonitoringReport"
    },
    {
      "name": "ContentTranslations"
    },
    {
      "name": "DefectImages"
    },
    {
      "name": "DefectNotes"
    },
    {
      "name": "DefectParts"
    },
    {
      "name": "DefectRiskRatings"
    },
    {
      "name": "Defects"
    },
    {
      "name": "DefectsByDepartmentReport"
    },
    {
      "name": "DefectsByRiskRatingReport"
    },
    {
      "name": "DefectsByStatusReport"
    },
    {
      "name": "DefectsBySystemReport"
    },
    {
      "name": "DefectsByTypeReport"
    },
    {
      "name": "DefectsRegisteredReport"
    },
    {
      "name": "DefectStatuses"
    },
    {
      "name": "DefectTypes"
    },
    {
      "name": "Error"
    },
    {
      "name": "Feedback"
    },
    {
      "name": "FeedbackClassifications"
    },
    {
      "name": "FeedbackDocuments"
    },
    {
      "name": "FeedbackImages"
    },
    {
      "name": "FeedbackNotes"
    },
    {
      "name": "FeedbackPriorities"
    },
    {
      "name": "FeedbackStatuses"
    },
    {
      "name": "History"
    },
    {
      "name": "IntegrationDefinitions"
    },
    {
      "name": "IntegrationInstances"
    },
    {
      "name": "Jobs"
    },
    {
      "name": "Localisation"
    },
    {
      "name": "LocalisationOverrides"
    },
    {
      "name": "Lubricants"
    },
    {
      "name": "MaintenanceBanner"
    },
    {
      "name": "MissingPartsToolsReport"
    },
    {
      "name": "MissingPartToolReasons"
    },
    {
      "name": "ModelAssets"
    },
    {
      "name": "ModelDefinitionRepair"
    },
    {
      "name": "ModelDocuments"
    },
    {
      "name": "ModelImportActions"
    },
    {
      "name": "ModelImportLubricants"
    },
    {
      "name": "ModelImportOperatingModes"
    },
    {
      "name": "ModelImportRoles"
    },
    {
      "name": "ModelImports"
    },
    {
      "name": "ModelImportSystems"
    },
    {
      "name": "ModelIntervalTaskListNos"
    },
    {
      "name": "ModelNotes"
    },
    {
      "name": "Models"
    },
    {
      "name": "ModelStatuses"
    },
    {
      "name": "ModelTaskNotes"
    },
    {
      "name": "ModelTypes"
    },
    {
      "name": "ModelVersionArrangements"
    },
    {
      "name": "ModelVersionDepartments"
    },
    {
      "name": "ModelVersionIntervalIncludes"
    },
    {
      "name": "ModelVersionIntervals"
    },
    {
      "name": "ModelVersionQuestionOptions"
    },
    {
      "name": "ModelVersionQuestionRoles"
    },
    {
      "name": "ModelVersionQuestions"
    },
    {
      "name": "ModelVersionRoles"
    },
    {
      "name": "ModelVersions"
    },
    {
      "name": "ModelVersionStages"
    },
    {
      "name": "ModelVersionTaskArrangements"
    },
    {
      "name": "ModelVersionTaskDocuments"
    },
    {
      "name": "ModelVersionTaskImages"
    },
    {
      "name": "ModelVersionTaskIntervals"
    },
    {
      "name": "ModelVersionTaskParts"
    },
    {
      "name": "ModelVersionTaskPermits"
    },
    {
      "name": "ModelVersionTaskQuestionOptions"
    },
    {
      "name": "ModelVersionTaskQuestions"
    },
    {
      "name": "ModelVersionTaskRoles"
    },
    {
      "name": "ModelVersionTasks"
    },
    {
      "name": "ModelVersionTaskStages"
    },
    {
      "name": "ModelVersionTaskTools"
    },
    {
      "name": "ModelVersionTaskZones"
    },
    {
      "name": "ModelVersionZones"
    },
    {
      "name": "NoticeboardDepartments"
    },
    {
      "name": "Noticeboards"
    },
    {
      "name": "OnDemandReports"
    },
    {
      "name": "OperatingModes"
    },
    {
      "name": "OverdueServicesReport"
    },
    {
      "name": "Pauses"
    },
    {
      "name": "PausesByReasonReport"
    },
    {
      "name": "PauseSubcategories"
    },
    {
      "name": "PlannedWorkComplianceReport"
    },
    {
      "name": "Positions"
    },
    {
      "name": "ProductUpdates"
    },
    {
      "name": "Regions"
    },
    {
      "name": "ReportSubscriptions"
    },
    {
      "name": "Roles"
    },
    {
      "name": "ServiceNotes"
    },
    {
      "name": "Services"
    },
    {
      "name": "ServiceStatusChangesByReasonReport"
    },
    {
      "name": "ServiceStopsByReasonReport"
    },
    {
      "name": "ServiceTaskQuestions"
    },
    {
      "name": "SiteAppKeyContacts"
    },
    {
      "name": "SiteApps"
    },
    {
      "name": "SiteAssetRegisters"
    },
    {
      "name": "SiteDepartments"
    },
    {
      "name": "SiteLocaleSettings"
    },
    {
      "name": "Sites"
    },
    {
      "name": "SkippedTasksByReasonReport"
    },
    {
      "name": "SkipTaskReasons"
    },
    {
      "name": "StopReasons"
    },
    {
      "name": "Systems"
    },
    {
      "name": "Token"
    },
    {
      "name": "UserPreferences"
    },
    {
      "name": "Users"
    },
    {
      "name": "Utilities"
    }
  ]
}