{
  "openapi": "3.1.0",
  "info": {
    "title": "Bees360 API documentation",
    "description": "Bees360 OpenAPI",
    "version": "1.45.0"
  },
  "servers": [
    {
      "url": "https://api.bees360.io",
      "description": "Production"
    },
    {
      "url": "https://api.stag.bees360.io",
      "description": "Staging"
    }
  ],
  "paths": {
    "/v1/project/{projectId}": {
      "get": {
        "tags": [
          "Project API"
        ],
        "summary": "Get project details",
        "description": "Retrieves the details of the specified project.",
        "operationId": "getProjectDetails",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "Project unique identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "example": 10001
          }
        ],
        "responses": {
          "200": {
            "description": "project detail",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetailListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Project API"
        ],
        "summary": "Update project details",
        "description": "Updates specific fields of a project. Currently only policyNumber and policyEffectiveDate are supported. Pass an empty string to clear a field; omit the field entirely to leave it unchanged.\n\n**Important Notes:**\n- To clear a field, pass an empty string `\"\"` as the value.\n- To leave a field unchanged, remove it from the request body entirely.\n- Only the fields included in the request body will be updated.",
        "operationId": "updateProjectDetails",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The project ID previously returned when creating the project.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "example": 10001
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProjectRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "project updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectUpdateListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/project/{projectId}/status": {
      "get": {
        "tags": [
          "Project API"
        ],
        "summary": "Get project status",
        "description": "Check the status of the specified project.",
        "operationId": "getProjectStatus",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The project ID previously returned when creating the project.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "example": 10001
          }
        ],
        "responses": {
          "200": {
            "description": "project status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectStatusListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Project API"
        ],
        "summary": "Update project status",
        "description": "This endpoint allows authorized users to update the status of a specific project.  \n**Common use cases include:**  \nMark project as `Client Received` — After a client successfully retrieves their reports or deliverables, you can set the status to indicate receipt.\nThis prevents the system from offering or re-sending the same deliverables in future queries or notifications.  \nMark project as `Project Canceled` — A project may be required to be canceled due to various reasons. This endpoint allows you to cancel a specific project.",
        "operationId": "updateProjectStatus",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The project ID previously returned when creating the project.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "example": 10001
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectStatusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "status updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectStatusListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/project": {
      "get": {
        "tags": [
          "Project API"
        ],
        "summary": "Search projects",
        "description": "Search the list of projects by project status. The list will be sorted based on the projectId in ascending order.",
        "operationId": "searchProject",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "description": "The status of projects to search for. When this parameter is omitted, the operation will search for projects in any status.",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The status of projects to search for. When this parameter is omitted, the operation will search for projects in any status.",
              "enum": [
                "Project Created",
                "Customer Contacted",
                "Pending Acceptance",
                "Assigned to Pilot",
                "Project Rework",
                "Site Inspected",
                "IBees Uploaded",
                "Image Uploaded",
                "Returned to Client",
                "Project Canceled",
                "Client Received",
                "Receive Error"
              ],
              "example": "Returned to Client"
            },
            "example": "Returned to Client"
          },
          {
            "name": "policyNumber",
            "in": "query",
            "description": "The policyNumber of projects to search for.",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The policyNumber of projects to search for.",
              "example": 1234567
            },
            "example": 1234567
          },
          {
            "name": "inspectionNumber",
            "in": "query",
            "description": "The inspectionNumber of projects to search for.",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The inspectionNumber of projects to search for.",
              "example": 12345678
            },
            "example": 12345678
          },
          {
            "name": "serviceName",
            "in": "query",
            "description": "The serviceName of projects to search for.",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The serviceName of projects to search for.",
              "enum": [
                "Roof Only",
                "Exterior",
                "4-Point",
                "Premium 4-Point",
                "High Value Premium 4-point",
                "Snap360",
                "Photo Only Inspection",
                "Self Exterior Underwriting",
                "Self 4-Point Underwriting"
              ],
              "example": "4-Point"
            },
            "example": "4-Point"
          },
          {
            "name": "createdTime.start",
            "in": "query",
            "description": "The start (included) the creation time.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "description": "The start (included) the creation time.",
              "example": 1672502400
            },
            "example": 1672502400
          },
          {
            "name": "createdTime.end",
            "in": "query",
            "description": "The end (exclude) the creation time.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "description": "The end (exclude) the creation time.",
              "example": 1698768000
            },
            "example": 1698768000
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the number of projects to return. The default value is 100. This value cannot exceed 500.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100,
              "description": "Limit the number of projects to return. The default value is 100. This value cannot exceed 500.",
              "example": 10,
              "maximum": 9223372036854775807,
              "minimum": 0
            },
            "example": 10
          },
          {
            "name": "startId",
            "in": "query",
            "description": "Specify the returned projects has an ID that is larger than or equal to startId. You may combine this and `limit` to achieve pagination. The default value is 0.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "default": 0,
              "description": "Specify the returned projects has an ID that is larger than or equal to startId. You may combine this and `limit` to achieve pagination. The default value is 0.",
              "example": 100
            },
            "example": 100
          },
          {
            "name": "includeBundleProjects",
            "in": "query",
            "description": "Whether to include projects that belong to a bundle in the search results.\n\n- When set to `false`, projects that are part of any bundle will be excluded from the results.\n- When omitted or set to `true`, all projects are included regardless of bundle membership (default behavior).\n\nThis parameter is useful when you want to list only standalone projects and exclude those that are managed as part of a bundle.",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Whether to include projects that belong to a bundle in the search results.\n\n- When set to `false`, projects that are part of any bundle will be excluded from the results.\n- When omitted or set to `true`, all projects are included regardless of bundle membership (default behavior).\n\nThis parameter is useful when you want to list only standalone projects and exclude those that are managed as part of a bundle."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "searched project",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchProjectListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Project API"
        ],
        "summary": "Create new project",
        "description": "Creates a new project on Bees360 platform.",
        "operationId": "createNewProject",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProjectRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "project created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetailListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/report/{reportId}/url": {
      "get": {
        "tags": [
          "Report API"
        ],
        "summary": "Get report URL",
        "description": "If the report is available, the URL of the report will be returned. Note: This URL is not permanently valid and should not be saved.",
        "operationId": "getReportUrl",
        "parameters": [
          {
            "name": "reportId",
            "in": "path",
            "description": "Report unique identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "rpt_abc123"
          }
        ],
        "responses": {
          "200": {
            "description": "report URL",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportUrlResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/report/{reportId}/summary": {
      "get": {
        "tags": [
          "Report API"
        ],
        "summary": "Get report summary",
        "description": "The attributes listed below represent all possible data fields available in Bees360 reports. The actual attributes returned in your report summary will vary based on your specific client account and service type. Only data fields included in your customized report template will appear in the response. If you would like to add new fields to your custom template, please contact your account manager.",
        "operationId": "getReportSummary",
        "parameters": [
          {
            "name": "reportId",
            "in": "path",
            "description": "Report unique identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "rpt_abc123"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportSummaryListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/report/{reportId}/file": {
      "get": {
        "tags": [
          "Report API"
        ],
        "summary": "Get report file",
        "description": "If the report is available, will return a 307 Temporary Redirect response, which redirects to a location to download the report.\nThe default Content-Type will be application/pdf.",
        "operationId": "getReportFile",
        "parameters": [
          {
            "name": "reportId",
            "in": "path",
            "description": "Report unique identifier",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "rpt_abc123"
          },
          {
            "name": "compressed",
            "in": "query",
            "description": "Using compressed=true to get the compressed report. If there is a compressed report, return the expected response, otherwise return HTTP 404 Not Found response.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Report file downloaded successfully. The actual Content-Type depends on the report type (e.g. application/pdf, application/zip, application/xml). The API may return a 307 redirect to the file location; the SDK follows the redirect and downloads the file.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "307": {
            "description": "Redirect to report file"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/project/{projectId}/report": {
      "get": {
        "tags": [
          "Report API"
        ],
        "summary": "Get available reports for project",
        "description": "Returns a list of reports available to download.",
        "operationId": "getProjectAvailableReport",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The project ID previously returned when creating the project.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "example": 10001
          }
        ],
        "responses": {
          "200": {
            "description": "available reports",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectReportListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/project/{projectId}/image": {
      "get": {
        "tags": [
          "Image API"
        ],
        "summary": "Get project images",
        "description": "Returns a list of images URLs and their descriptions.",
        "operationId": "getProjectImages",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "description": "The project ID previously returned when creating the project.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "example": 10001
          }
        ],
        "responses": {
          "200": {
            "description": "project images",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectImageListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/image/{imageId}/file": {
      "get": {
        "tags": [
          "Image API"
        ],
        "summary": "Get image file",
        "description": "Get image by image Id. If image with the specified imageId is found, the server may directly return the image binary data or redirect the request to another location to access the image.",
        "operationId": "getImageFile",
        "parameters": [
          {
            "name": "imageId",
            "in": "path",
            "description": "The ID of the specified image. This can be found either from Project API or Report API.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "img_abc123"
          }
        ],
        "responses": {
          "200": {
            "description": "Image file downloaded successfully. The actual Content-Type depends on the image type (e.g. image/jpeg, image/png). The API may return a 307 redirect to the file location; the SDK follows the redirect and downloads the file.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "307": {
            "description": "Redirect to image file"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/oauth/token": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Acquire or refresh OAuth2 token",
        "description": "Acquire access_token and refresh_token using OAuth 2.0. Requires HTTP Basic authentication with client_id and client_secret.\n\n**Password Grant:** Send grant_type=password along with username and password to obtain a new access token and refresh token. Access token is valid for 10 minutes, refresh token is valid for 24 hours.\n\n**Refresh Token Grant:** Send grant_type=refresh_token along with a valid refresh_token to obtain a new access token.\n\nEach environment (Sandbox, Production) has its own independent set of credentials.",
        "operationId": "acquireToken",
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/TokenRequest"
              },
              "examples": {
                "passwordGrant": {
                  "summary": "Acquire token with password grant",
                  "description": "Use client_id:client_secret as Basic auth, and send user credentials in the form body",
                  "value": {
                    "grant_type": "password",
                    "password": "ULX1AUPz",
                    "username": "user@bees360.com"
                  }
                },
                "refreshTokenGrant": {
                  "summary": "Renew token with refresh_token grant",
                  "description": "Use client_id:client_secret as Basic auth, and send the previously issued refresh_token",
                  "value": {
                    "grant_type": "refresh_token",
                    "refresh_token": "f554d386-0b0a-461b-bdb2-292831cecd57"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful token response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid client credentials or user credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ProjectDetailUpdateObject": {
        "type": "object",
        "description": "Updated project detail fields",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Project unique identifier.",
            "example": 10001
          },
          "policyNumber": {
            "type": "string",
            "description": "Specifies the policy number related to this project.",
            "example": "1234567"
          },
          "policyEffectiveDate": {
            "type": "string",
            "format": "date",
            "description": "Specifies the Policy Effective Date in YYYY-MM-DD format.",
            "example": "2019-12-31"
          }
        }
      },
      "ProjectUpdateListResponse": {
        "type": "object",
        "description": "List of updated project detail objects.",
        "properties": {
          "project": {
            "type": "array",
            "description": "List of updated project detail objects.",
            "items": {
              "$ref": "#/components/schemas/ProjectDetailUpdateObject"
            }
          }
        }
      },
      "ErrorDetail": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "Error message describing what went wrong.",
            "example": "invalid project ID."
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "description": "Standard error response body.",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ErrorDetail",
            "description": "Error details."
          }
        }
      },
      "UpdateProjectRequest": {
        "type": "object",
        "description": "Request object for updating project details.",
        "properties": {
          "policyNumber": {
            "type": "string",
            "description": "The policy number to update. Pass an empty string \"\" to clear this field. Omit this field from the request body if you don't want to update it.",
            "example": "1234567"
          },
          "policyEffectiveDate": {
            "type": "string",
            "format": "date",
            "description": "The policy effective date in ISO format (e.g., \"2019-12-31\"). Pass an empty string \"\" to clear this field. Omit this field from the request body if you don't want to update it.",
            "example": "2019-12-31"
          }
        }
      },
      "ProjectStatusListResponse": {
        "type": "object",
        "description": "List of project status objects.",
        "properties": {
          "project": {
            "type": "array",
            "description": "Project status information.",
            "items": {
              "$ref": "#/components/schemas/ProjectStatusObject"
            }
          }
        }
      },
      "ProjectStatusObject": {
        "type": "object",
        "description": "Project status information.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Project unique identifier.",
            "example": 10001
          },
          "status": {
            "type": "string",
            "description": "Current status of the project.",
            "example": "Returned to Client"
          }
        }
      },
      "ProjectStatusRequest": {
        "type": "object",
        "description": "Request object for updating project status.",
        "properties": {
          "value": {
            "type": "string",
            "description": "Specifies the target status. Currently, the only acceptable values are `Client Received` and `Project Canceled`.\n\n- `Client Received` may only be set when the project's current status is `Returned to Client`.\n- `Project Canceled` may only be set when the project's current status is prior to `Site Inspected`.",
            "enum": [
              "Client Received",
              "Project Canceled"
            ],
            "examples": [
              "Client Received",
              "Project Canceled"
            ],
            "minLength": 1
          },
          "comment": {
            "type": "string",
            "description": "The additional comment for the status. Its length must be less than 1000.",
            "example": "The additional comment for the status.",
            "maxLength": 1000
          }
        },
        "required": [
          "value"
        ]
      },
      "ProjectDetailListResponse": {
        "type": "object",
        "description": "List of project details.",
        "properties": {
          "project": {
            "type": "array",
            "description": "List of project details.",
            "items": {
              "$ref": "#/components/schemas/ProjectDetailObject"
            }
          }
        }
      },
      "ProjectDetailObject": {
        "type": "object",
        "description": "Detailed project information.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Project unique identifier.",
            "example": 10001
          },
          "lat": {
            "type": "number",
            "format": "double",
            "description": "The latitude of the address of the project.",
            "example": 37.4222804
          },
          "lng": {
            "type": "number",
            "format": "double",
            "description": "The longitude of the address of the project.",
            "example": -122.0843428
          },
          "country": {
            "type": "string",
            "description": "The country part of the address of the property to inspect.",
            "example": "US"
          },
          "state": {
            "type": "string",
            "description": "The state part of the address of the property to inspect.",
            "example": "NJ",
            "minLength": 1
          },
          "city": {
            "type": "string",
            "description": "The city part of the address of the property to inspect.",
            "example": "New York",
            "minLength": 1
          },
          "zipcode": {
            "type": "string",
            "description": "The zipcode part of the address of the property to inspect.",
            "example": "07302",
            "minLength": 1
          },
          "streetAddress": {
            "type": "string",
            "description": "The street address part of the address of the property to inspect.",
            "example": "125",
            "minLength": 1
          },
          "houseType": {
            "type": "string",
            "description": "Specify the house type of the property.",
            "example": "Residential Single Family"
          },
          "dueDate": {
            "type": "string",
            "format": "date",
            "description": "Specifies the due date for completion of the project, in YYYY-MM-DD format.",
            "example": "2020-01-31"
          },
          "policyEffectiveDate": {
            "type": "string",
            "format": "date",
            "description": "Specifies the Policy Effective Date in YYYY-MM-DD format.",
            "example": "2019-12-31"
          },
          "yearBuilt": {
            "type": "integer",
            "format": "number",
            "description": "Specifies the property's built year as a four-digit integer.",
            "example": 1961
          },
          "policyType": {
            "type": "string",
            "description": "Specifies the policy type of the project.",
            "examples": [
              "Homeowners Insurance",
              "Commercial Property Insurance",
              "Farm & Ranch Insurance"
            ]
          },
          "policyNumber": {
            "type": "string",
            "description": "Specifies the policy number related to this project.",
            "example": "1234567"
          },
          "inspectionNumber": {
            "type": "string",
            "description": "Specifies the inspection number related to this project.",
            "example": "12345678"
          },
          "insuredName": {
            "type": "string",
            "description": "Specifies the name of the insured.",
            "example": "Jane Doe"
          },
          "insuredPhone": {
            "type": "string",
            "description": "Specifies the phone number of the insured.",
            "example": "2232131877"
          },
          "agentName": {
            "type": "string",
            "description": "Specifies the name of the agent.",
            "example": "John Smith"
          },
          "agentPhone": {
            "type": "string",
            "description": "Specifies the phone number of the agent.",
            "example": "1234567891"
          },
          "serviceName": {
            "type": "string",
            "description": "Specifies the project's service name.",
            "examples": [
              "4-Point",
              "Roof Only",
              "Exterior",
              "Premium 4-Point",
              "High Value Premium 4-point",
              "Snap360",
              "Photo Only Inspection",
              "Self Exterior Underwriting",
              "Self 4-Point Underwriting"
            ],
            "minLength": 1
          },
          "agentEmail": {
            "type": "string",
            "description": "Specifies the email address of the agent.",
            "example": "agent@example.com"
          },
          "insuredEmail": {
            "type": "string",
            "description": "Specifies the email address of the insured.",
            "example": "insured@example.com"
          },
          "inspectionCode": {
            "type": "string",
            "description": "6 random character if serviceName is 4-Point Self, Self 4-Point Underwriting or Self Exterior Underwriting, otherwise empty string.",
            "example": "YN43AR"
          },
          "inspectionLink": {
            "type": "string",
            "description": "URL for iBees if serviceName is 4-Point Self, Self 4-Point Underwriting or Self Exterior Underwriting, otherwise empty string.",
            "example": "http://ibees.app/YN43AR"
          },
          "insuredBy": {
            "type": "string",
            "description": "Insurance company name.",
            "example": "Insurance Company"
          },
          "note": {
            "type": "string",
            "description": "The description or attention notes for the project.",
            "example": "The description or attention notes for the project."
          },
          "isRenewal": {
            "type": "boolean",
            "description": "Determine whether the policy is new or renewal.",
            "example": false
          },
          "supplementalServices": {
            "type": "array",
            "description": "Specifies the supplemental services to subscribe.",
            "example": [
              "RC Report",
              "Sinkhole"
            ],
            "items": {
              "type": "string"
            }
          },
          "division": {
            "type": "string",
            "description": "Specifies the division key for the project.",
            "example": "division-key"
          },
          "operatingCompany": {
            "type": "string",
            "description": "Operating company name.",
            "example": "operating company name"
          },
          "dwellingCoverage": {
            "type": "number",
            "format": "double",
            "description": "Covers the physical structure of the home, including walls, floors, ceilings, and permanent fixtures. If the dwelling is damaged by events like windstorms, fires, or explosions, the insurance company will pay for repairs or rebuilding.",
            "example": 10.5
          },
          "otherStructureCoverage": {
            "type": "number",
            "format": "double",
            "description": "Provides coverage for other structures on the property, such as detached garages, sheds, and swimming pools. If these structures are damaged, the insurance company will provide compensation for repairs or replacement.",
            "example": 20.5
          },
          "contentCoverage": {
            "type": "number",
            "format": "double",
            "description": "Covers personal belongings inside the home, including furniture, appliances, and clothing. If these items are stolen or damaged by events like fire, the insurance company will provide reimbursement based on the specific circumstances.",
            "example": 30.5
          },
          "carrierProvidedLivingArea": {
            "type": "number",
            "format": "double",
            "description": "The total living area in Sq.Ft.",
            "example": 40.5
          }
        },
        "required": [
          "city",
          "houseType",
          "insuredName",
          "insuredPhone",
          "policyType",
          "serviceName",
          "state",
          "streetAddress",
          "zipcode"
        ]
      },
      "CreateProjectRequest": {
        "type": "object",
        "description": "Request object for creating a new project.",
        "properties": {
          "country": {
            "type": "string",
            "default": "US",
            "description": "The country part of the address of the property to inspect. Defaults to US.",
            "example": "US"
          },
          "state": {
            "type": "string",
            "description": "The state part of the address of the property to inspect.",
            "example": "NJ",
            "minLength": 1
          },
          "city": {
            "type": "string",
            "description": "The city part of the address of the property to inspect.",
            "example": "New York",
            "minLength": 1
          },
          "zipcode": {
            "type": "string",
            "description": "The zipcode part of the address of the property to inspect.",
            "example": "07302",
            "minLength": 1
          },
          "streetAddress": {
            "type": "string",
            "description": "The street address part of the address of the property to inspect.",
            "example": "125",
            "minLength": 1
          },
          "houseType": {
            "type": "string",
            "description": "Specify the house type of the property. The acceptable values are determined by the policy type. For Homeowners Insurance: Residential Single Family, Residential Condo, Residential Townhouse, Residential Multi Family, Mobile Home, Other. For Commercial Property Insurance: Habitational, Restaurant, Garage, Gas Station, General Commercial. For Farm & Ranch Insurance: Other.",
            "example": "Residential Single Family"
          },
          "dueDate": {
            "type": "string",
            "format": "date",
            "description": "Specifies the due date for completion of the project, in YYYY-MM-DD format.",
            "example": "2020-01-31"
          },
          "policyEffectiveDate": {
            "type": "string",
            "format": "date",
            "description": "Specifies the Policy Effective Date in YYYY-MM-DD format.",
            "example": "2019-12-31"
          },
          "yearBuilt": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the property's built year as a four-digit integer.",
            "example": 1961
          },
          "policyType": {
            "type": "string",
            "description": "Specifies the policy type of the project.",
            "enum": [
              "Commercial Property Insurance",
              "Homeowners Insurance",
              "Farm & Ranch Insurance"
            ],
            "example": "Homeowners Insurance"
          },
          "policyNumber": {
            "type": "string",
            "description": "Specifies the policy number related to this project.",
            "example": "1234567"
          },
          "inspectionNumber": {
            "type": "string",
            "description": "Specifies the inspection number related to this project.",
            "example": "12345678"
          },
          "insuredName": {
            "type": "string",
            "description": "Specifies the name of the insured.",
            "example": "Jane Doe"
          },
          "insuredPhone": {
            "type": "string",
            "description": "Specifies the phone number of the insured.",
            "example": "2232131877"
          },
          "agentName": {
            "type": "string",
            "description": "Specifies the name of the agent.",
            "example": "John Smith"
          },
          "agentPhone": {
            "type": "string",
            "description": "Specifies the phone number of the agent.",
            "example": "1234567891"
          },
          "serviceName": {
            "type": "string",
            "description": "Specifies the project's service name.",
            "enum": [
              "Roof Only",
              "Exterior",
              "4-Point",
              "Premium 4-Point",
              "High Value Premium 4-point",
              "Snap360",
              "Photo Only Inspection",
              "Self Exterior Underwriting",
              "Self 4-Point Underwriting"
            ],
            "example": "4-Point",
            "minLength": 1
          },
          "agentEmail": {
            "type": "string",
            "description": "Specifies the email address of the agent.",
            "example": "agent@example.com"
          },
          "insuredEmail": {
            "type": "string",
            "description": "Specifies the email address of the insured.",
            "example": "insured@example.com"
          },
          "note": {
            "type": "string",
            "description": "The description or attention notes for the project.",
            "example": "The description or attention notes for the project."
          },
          "isRenewal": {
            "type": "boolean",
            "description": "Determine whether the policy is new or renewal.",
            "example": false
          },
          "supplementalServices": {
            "type": "array",
            "description": "Specifies the supplemental services to subscribe.",
            "example": [
              "RC Report",
              "Sinkhole"
            ],
            "items": {
              "enum": [
                "RC Report",
                "Sinkhole",
                "Wildfire"
              ]
            }
          },
          "division": {
            "type": "string",
            "description": "Specifies the division key for the project. You may pass any string value as the division key. Pre-configuration of division is no longer required.",
            "example": "division-key"
          },
          "dwellingCoverage": {
            "type": "number",
            "format": "double",
            "description": "Covers the physical structure of the home, including walls, floors, ceilings, and permanent fixtures. If the dwelling is damaged by events like windstorms, fires, or explosions, the insurance company will pay for repairs or rebuilding.",
            "example": 10.5
          },
          "otherStructureCoverage": {
            "type": "number",
            "format": "double",
            "description": "Provides coverage for other structures on the property, such as detached garages, sheds, and swimming pools. If these structures are damaged, the insurance company will provide compensation for repairs or replacement.",
            "example": 20.5
          },
          "contentCoverage": {
            "type": "number",
            "format": "double",
            "description": "Covers personal belongings inside the home, including furniture, appliances, and clothing. If these items are stolen or damaged by events like fire, the insurance company will provide reimbursement based on the specific circumstances.",
            "example": 30.5
          },
          "carrierProvidedLivingArea": {
            "type": "number",
            "format": "double",
            "description": "The total living area in Sq.Ft.",
            "example": 40.5
          },
          "allowDuplication": {
            "type": "boolean",
            "default": true,
            "description": "Determine whether the duplicate project can be created. The default value is true.",
            "example": true
          }
        },
        "required": [
          "city",
          "houseType",
          "insuredEmail",
          "insuredName",
          "insuredPhone",
          "policyType",
          "serviceName",
          "state",
          "streetAddress",
          "zipcode"
        ]
      },
      "ReportUrlResponse": {
        "type": "object",
        "description": "Signed URL for downloading the report.",
        "properties": {
          "url": {
            "type": "string",
            "description": "Signed URL for downloading the report. Note: This URL is not permanently valid and should not be saved.",
            "example": "https://sample.cloudfront.net/73e06a619abfd940e98a311252ab7997.pdf?Expires=1699516800&Signature=xxxxx",
            "minLength": 1
          }
        },
        "required": [
          "url"
        ]
      },
      "ApplianceClassActionLawsuit": {
        "type": "object",
        "description": "Representing the information about any class action lawsuit associated with the appliance.",
        "properties": {
          "caseName": {
            "type": "string",
            "description": "The case name of the class action lawsuit.",
            "example": "York"
          },
          "caseNumber": {
            "type": "string",
            "description": "The case number of the class action lawsuit.",
            "example": "0110"
          },
          "caseCountry": {
            "type": "string",
            "description": "The country of the class action lawsuit.",
            "example": "US"
          },
          "caseDistrict": {
            "type": "string",
            "description": "The district of the class action lawsuit.",
            "example": "U.S. District Court, Eastern District"
          },
          "claimDeadline": {
            "type": "string",
            "description": "The deadline for submitting claims in the class action lawsuit.",
            "example": "2017-12-20"
          },
          "classActionDescription": {
            "type": "string",
            "description": "Description of the class action lawsuit.",
            "example": "The Plaintiffs claim that manufactures including air handlers and packaged HVAC units."
          },
          "classActionUrl": {
            "type": "string",
            "description": "URL for more information about the class action lawsuit.",
            "example": "https://classactions"
          },
          "classActionStatus": {
            "type": "string",
            "description": "The current status of the class action lawsuit.",
            "example": "Settlement Closed"
          }
        }
      },
      "ApplianceRecallData": {
        "type": "object",
        "description": "Representing the information about any recalls associated with the appliance.",
        "properties": {
          "recallNumber": {
            "type": "string",
            "description": "The U.S. CPSC Recall Number",
            "example": "375"
          },
          "hazard": {
            "type": "string",
            "description": "Brief description of the problem.",
            "example": "The engine posing a hazard."
          },
          "dueTo": {
            "type": "string",
            "description": "Brief description of the cause.",
            "example": "Injury"
          },
          "fix": {
            "type": "string",
            "description": "Description of the solution.",
            "example": "Consumers should stop using the air conditioner immediately."
          },
          "recallUrl": {
            "type": "string",
            "description": "CPSC link for more information.",
            "example": "https://recalls"
          },
          "dateRecalled": {
            "type": "string",
            "description": "Date when CPSC recalled the appliance/product.",
            "example": "2014-01-15"
          },
          "dateStartedBeingSold": {
            "type": "string",
            "description": "When the appliance/product first became available for sale.",
            "example": "2013-01-30"
          },
          "dateStoppedBeingSold": {
            "type": "string",
            "description": "When the appliance/product stopped being sold.",
            "example": "2013-12-29"
          },
          "customerRecallStatus": {
            "type": "string",
            "description": "Has recall been fixed or does not apply to recall_number for this appliance.",
            "example": "FIXED"
          }
        }
      },
      "BuildingDetails": {
        "type": "object",
        "description": "Building structure details.",
        "properties": {
          "overallCondition": {
            "type": "string",
            "description": "Building overall condition, possible values include [\"Excellent\", \"Good\", \"Average\", \"Fair\", \"Poor\"].",
            "examples": [
              "Excellent",
              "Good",
              "Average",
              "Fair",
              "Poor"
            ]
          },
          "dwellingType": {
            "type": "string",
            "description": "Dwelling type, possible values include [\"Single Family Detached\", \"Single Family Attached\", \"Duplex\", \"Triplex\", \"Town Home\", \"Row Home\", \"Multi Family Home\", \"2 Family Home\", \"3 Family Home\", \"4 Family Home\", \"Mobile Home\", \"Condominium\", \"Condominium Detached\"].",
            "examples": [
              "Single Family Detached",
              "Single Family Attached",
              "Duplex",
              "Triplex",
              "Town Home",
              "Row Home",
              "Multi Family Home",
              "2 Family Home",
              "3 Family Home",
              "4 Family Home",
              "Mobile Home",
              "Condominium",
              "Condominium Detached"
            ]
          },
          "construction": {
            "type": "string",
            "description": "Construction material, possible values include [\"Frame\", \"Concrete Block\", \"Steel Frame\", \"Brick/Stone/Masonry Veneer\", \"Fire Resistive\", \"Pre-engineered\"].",
            "examples": [
              "Frame",
              "Concrete Block",
              "Steel Frame",
              "Brick/Stone/Masonry Veneer",
              "Fire Resistive",
              "Pre-engineered"
            ]
          },
          "constructionOverWater": {
            "type": "boolean",
            "description": "Building partially or completed constructed over water.",
            "example": true
          },
          "garage": {
            "type": "string",
            "description": "The type of garage, such as [\"Attached\", \"Detached\", \"Built-in\", \"Carport\", \"None\"].",
            "examples": [
              "Attached",
              "Detached",
              "Built-in",
              "Carport",
              "None"
            ]
          },
          "hvac": {
            "type": "string",
            "description": "The type of HVAC, such as [\"Central\", \"Window Unit\", \"Split Unit\", \"Baseboard heating\", \"Gas forced air heating\"].",
            "examples": [
              "Central",
              "Window Unit",
              "Split Unit",
              "Baseboard heating",
              "Gas forced air heating"
            ]
          },
          "numStories": {
            "type": "number",
            "format": "double",
            "description": "The number of stories of the main dwelling.",
            "examples": [
              "2"
            ]
          },
          "windProtections": {
            "type": "array",
            "description": "List of any wind protections discovered, such as [\"None observed\", \"Impact resistant door\", \"High impact glass\", \"Roof/shingles securing\", \"High-profile garage door\", \"Siding protection\", \"Insulating Concrete Forms (ICFs)\"]. If none observed, the field will be absent or has null value.",
            "items": {
              "type": "string"
            }
          },
          "hurricaneStraps": {
            "type": "boolean",
            "description": "Whether hurricane straps was discovered.",
            "examples": [
              "false"
            ]
          },
          "designatedHistoricHome": {
            "type": "boolean",
            "description": "If building is Designated Historic Home.",
            "examples": [
              "false"
            ]
          },
          "foundation": {
            "type": "string",
            "description": "The type of foundation, such as [\"Concrete Slab\", \"Slab on Grade\", \"Crawl Space - Open\", \"Crawl Space - Closed\", \"Pier & Beam\", \"Elevated Pier\", \"Basement\"].",
            "examples": [
              "Concrete Slab",
              "Slab on Grade",
              "Crawl Space - Open",
              "Crawl Space - Closed",
              "Pier & Beam",
              "Elevated Pier",
              "Basement"
            ]
          },
          "manufacturedOrMobileHome": {
            "type": "string",
            "description": "Whether the building is manufactured or a mobile home.",
            "examples": [
              "Manufactured"
            ]
          },
          "exteriorDamage": {
            "type": "boolean",
            "description": "If the property has noticeable existing exterior damage.",
            "examples": [
              "true"
            ]
          },
          "hasFoundationCracks": {
            "type": "boolean",
            "description": "If foundation damage discovered.",
            "examples": [
              "false"
            ]
          },
          "hasFence": {
            "type": "boolean",
            "description": "If fence damage discovered.",
            "examples": [
              "false"
            ]
          },
          "underConstruction": {
            "type": "boolean",
            "description": "If the property is under construction.",
            "examples": [
              "false"
            ]
          },
          "underRenovation": {
            "type": "boolean",
            "description": "If the property is under renovation.",
            "examples": [
              "false"
            ]
          },
          "isDeveloperSpeculation": {
            "type": "boolean",
            "description": "Whether the property is a developer speculation model house.",
            "examples": [
              "true"
            ]
          },
          "architecturalStyle": {
            "type": "string",
            "description": "The architectural style of the building, such as [\"BiLevel\", \"TriLevel\", \"Bungalow\", \"Condo\", \"Single-Wide\", \"Multi-Wide\", \"Multi Wide Starter Home\", \"Single Wide Starter Home\", \"Cape Cod\", \"Colonial\", \"Ranch\", \"Raised Ranch\", \"Townhouse - End Unit\", \"Townhouse - Interior Unit\", \"Victorian\", \"Contemporary\"].",
            "examples": [
              "BiLevel",
              "TriLevel",
              "Bungalow",
              "Condo",
              "Single-Wide",
              "Multi-Wide",
              "Multi Wide Starter Home",
              "Single Wide Starter Home",
              "Cape Cod",
              "Colonial",
              "Ranch",
              "Raised Ranch",
              "Townhouse - End Unit",
              "Townhouse - Interior Unit",
              "Victorian",
              "Contemporary"
            ]
          },
          "garageCapacity": {
            "type": "integer",
            "format": "int32",
            "description": "The number of vehicles that can be parked in the garage.",
            "examples": [
              "2"
            ]
          },
          "hasSidewalkHazard": {
            "type": "boolean",
            "description": "If there is a sidewalk hazard.",
            "examples": [
              "false"
            ]
          },
          "hasImproperRailsSpacing": {
            "type": "boolean",
            "description": "If handrails or balusters are improperly spaced.",
            "examples": [
              "false"
            ]
          },
          "hasRottingDecking": {
            "type": "boolean",
            "description": "If roof decking or structural timber is rotting.",
            "examples": [
              "false"
            ]
          },
          "hasUnconventionalConstruction": {
            "type": "boolean",
            "description": "If the property features unconventional construction (such as A-frame homes, Geodesic homes, In Ground or True Log Built structures).",
            "examples": [
              "false"
            ]
          },
          "hasCloggedGutters": {
            "type": "boolean",
            "description": "If there are gutters clogged with debris.",
            "examples": [
              "false"
            ]
          },
          "hasNonPermanentFoundation": {
            "type": "boolean",
            "description": "If the foundation is not permanent (mostly for manufactured homes, modular homes).",
            "examples": [
              "false"
            ]
          },
          "hasImproperGutterDischarge": {
            "type": "boolean",
            "description": "If there is an improper gutter discharge (e.g., discharging towards the foundation).",
            "examples": [
              "false"
            ]
          },
          "fenceLocation": {
            "type": "string",
            "description": "The location of the fence on the building property. Possible values include [\"rear only\", \"side and rear\", \"all sides\", \"side only\"].",
            "examples": [
              "rear only",
              "side and rear",
              "all sides",
              "side only"
            ]
          }
        }
      },
      "CommunityDetails": {
        "type": "object",
        "description": "Community-level details for condo/multi-family properties.",
        "properties": {
          "numBldg": {
            "type": "integer",
            "format": "int32",
            "description": "The number of buildings in the community.",
            "example": 13
          },
          "numResidentialUnits": {
            "type": "integer",
            "format": "int32",
            "description": "The number of residential units in the community.",
            "example": 126
          },
          "hasBalcony": {
            "type": "boolean",
            "description": "If there is a balcony in the community.",
            "example": true
          },
          "petsAllowed": {
            "type": "boolean",
            "description": "If pets are allowed in the community.",
            "example": false
          },
          "hasTennisCourt": {
            "type": "boolean",
            "description": "If there is a tennis court in the community.",
            "example": true
          },
          "hasPlayground": {
            "type": "boolean",
            "description": "If there is a playground in the community.",
            "example": false
          },
          "hasBasketballCourt": {
            "type": "boolean",
            "description": "If there is a basketball court in the community.",
            "example": true
          }
        }
      },
      "ExteriorComparison": {
        "type": "object",
        "description": "List of comparisons, in which each item describes a different direction to the elevation.",
        "properties": {
          "comment": {
            "type": "string",
            "description": "A text comment constructed by direction attribute and change attribute.",
            "example": "Front Elevation: Slightly damage was noted on the siding."
          },
          "change": {
            "type": "string",
            "description": "Describing changes on the elevation in this comparison, possible values include [\"No changes was noted.\", \"Slightly damage was noted on the {TARGET}.\", \"Moderately damage was noted on the {TARGET}.\", \"Significant damage was noted on the {TARGET}.\", \"Roof is completely replaced.\", \"Solar panels were noted on the {TARGET}.\"]. The variable {TARGET} could be [\"siding\", \"door\", \"window\", \"foundation\", \"soffit\"].",
            "examples": [
              "No changes was noted.",
              "Slightly damage was noted on the siding.",
              "Moderately damage was noted on the siding.",
              "Significant damage was noted on the siding.",
              "Roof is completely replaced.",
              "Solar panels were noted on the siding."
            ]
          },
          "direction": {
            "type": "string",
            "description": "Specifying the direction of the elevation in this comparison, possible values include [\"Front\", \"Right\", \"Rear\", \"Left\"].",
            "examples": [
              "Front",
              "Right",
              "Rear",
              "Left"
            ]
          },
          "image": {
            "type": "array",
            "description": "List of images of the current inspection and historical inspections. It contains at least 2 images, standing for the current inspection and the last inspection. Each image is an object that contains at least an id property that represents the image's unique identifier.",
            "items": {
              "$ref": "#/components/schemas/SummaryImage"
            }
          }
        }
      },
      "ExteriorDetails": {
        "type": "object",
        "description": "Exterior inspection details.",
        "properties": {
          "overallCondition": {
            "type": "string",
            "description": "Whether the overall condition of exterior is satisfactory.",
            "example": "Good"
          },
          "siding": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Siding material and its corresponding percentage. Each property key is a siding material type, possible values include [\"BrickVeneer\", \"Wood\", \"HardiePlank\", \"Stucco\", \"ConcreteBlock\", \"WoodShake\", \"Aluminum\", \"Vinyl\", \"Metal\", \"Log\", \"Asbestos\", \"StoneVeneer\", \"VinylShake\", \"HardiePanel\", \"HardieShingle\"]. Each value is the percentage of that material on the exterior.",
            "example": {
              "BrickVeneer": 50,
              "Vinyl": 30,
              "Wood": 20
            }
          },
          "hasShutters": {
            "type": "boolean",
            "description": "Whether any shutters discovered.",
            "example": false
          },
          "hasPorch": {
            "type": "boolean",
            "description": "Whether property has porch.",
            "example": true
          },
          "hasStairsWithoutHandRails": {
            "type": "boolean",
            "description": "If stairs are present without hand rails.",
            "example": false
          },
          "hasYardDebris": {
            "type": "boolean",
            "description": "If yard has excessive yard debris/trash.",
            "example": false
          },
          "hasDiscardedVehicles": {
            "type": "boolean",
            "description": "If yard has unregistered vehicles on premises.",
            "example": false
          },
          "hasTreeLimbs": {
            "type": "boolean",
            "description": "If there are trees or tree limbs touching or overhanging home.",
            "example": false
          },
          "hasPoolWithoutFence": {
            "type": "boolean",
            "description": "If pool present does it have a 4 ft fence with self locking gate.",
            "example": false
          },
          "numDogPresent": {
            "type": "integer",
            "format": "int32",
            "description": "# of dogs.",
            "example": 2
          },
          "hasDogPresent": {
            "type": "boolean",
            "description": "If there is a dog present.",
            "example": false
          },
          "comments": {
            "type": "array",
            "description": "List of text comments to exterior.",
            "items": {
              "type": "string"
            }
          },
          "comparison": {
            "type": "array",
            "description": "List of comparisons, in which each item describes a different direction to the elevation.",
            "items": {
              "$ref": "#/components/schemas/ExteriorComparison"
            }
          },
          "hasSidingDamage": {
            "type": "boolean",
            "description": "If siding damage discovered.",
            "example": false
          },
          "hasWallCracks": {
            "type": "boolean",
            "description": "If wall cracks discovered.",
            "example": false
          },
          "hasPealingPaint": {
            "type": "boolean",
            "description": "If peeling paint on siding discovered.",
            "example": false
          },
          "hasWindowDamage": {
            "type": "boolean",
            "description": "If window screen damage discovered.",
            "example": false
          },
          "hasWaterDamage": {
            "type": "boolean",
            "description": "If water damage on exterior discovered.",
            "example": false
          },
          "hasChimneyDamage": {
            "type": "boolean",
            "description": "If chimney damage discovered.",
            "example": false
          },
          "hasMildewOrMoss": {
            "type": "boolean",
            "description": "If mildew or moss discovered.",
            "example": false
          },
          "hasPoolCage": {
            "type": "boolean",
            "description": "If swimming pool fence/cage discovered.",
            "example": false
          },
          "hasDivingBoardOrSlide": {
            "type": "boolean",
            "description": "If swimming pool diving board discovered.",
            "example": false
          },
          "petType": {
            "type": "array",
            "description": "Pet type with breed, such as [\"Dog - Labrador Retriever\", \"Dog - German Shepherd\", \"Dog - Golden Retriever\", \"Dog - Beagle\", \"Dog - Bulldog\", \"Dog - Yorkshire Terrier\", \"Dog - Boxer\", \"Dog - Poodle\", \"Dog - Rottweiler\", \"Dog - Dachshunds\", \"Cats\", \"Birds\"].",
            "example": [
              "Dog - Labrador Retriever",
              "Dog - German Shepherd"
            ],
            "items": {
              "type": "string"
            }
          },
          "pet": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Provides the count of pet dog, pet cat, etc. Possible properties include [\"dog\", \"cat\", \"horse\", \"other\", etc].",
            "examples": [
              "{\"dog\": 2, \"cat\": 1}"
            ]
          },
          "hasDogSign": {
            "type": "boolean",
            "description": "If dog sign presented on the property.",
            "examples": [
              "false"
            ]
          },
          "hasPestActivity": {
            "type": "boolean",
            "description": "If pest activity discovered.",
            "examples": [
              "false"
            ]
          },
          "hasTrampoline": {
            "type": "boolean",
            "description": "If trampoline discovered.",
            "examples": [
              "false"
            ]
          },
          "hasWatercraft": {
            "type": "boolean",
            "description": "If watercraft discovered.",
            "examples": [
              "false"
            ]
          },
          "hasPlaySwingSet": {
            "type": "boolean",
            "description": "If there is a play/swing set in the exterior area.",
            "examples": [
              "false"
            ]
          },
          "hasTreeHouse": {
            "type": "boolean",
            "description": "If there is a tree house in the exterior area.",
            "examples": [
              "false"
            ]
          },
          "hasBasketballHoop": {
            "type": "boolean",
            "description": "If there is a basketball hoop in the exterior area.",
            "examples": [
              "false"
            ]
          },
          "hasATV": {
            "type": "boolean",
            "description": "If there is an ATV (all-terrain vehicle) in the exterior area.",
            "examples": [
              "false"
            ]
          },
          "hasSkateboardOrBikeRamp": {
            "type": "boolean",
            "description": "If there is a skateboard or bike ramp in the exterior area.",
            "examples": [
              "false"
            ]
          },
          "hasDirtBike": {
            "type": "boolean",
            "description": "If there is a dirt bike in the exterior area.",
            "examples": [
              "false"
            ]
          },
          "hasPropaneOrFuelTank": {
            "type": "boolean",
            "description": "If there is a propane or fuel tank in the exterior area.",
            "examples": [
              "false"
            ]
          },
          "hasSwimmingPool": {
            "type": "boolean",
            "description": "If there is a swimming pool in the exterior area.",
            "examples": [
              "false"
            ]
          },
          "hasAwning": {
            "type": "boolean",
            "description": "If there is an awning in the exterior area.",
            "examples": [
              "false"
            ]
          },
          "isEIFS": {
            "type": "boolean",
            "description": "Whether the Exterior Insulating and Finishing System (EIFS) construction was done prior to 2000.",
            "examples": [
              "false"
            ]
          },
          "hasPoolSelfLatchingGate": {
            "type": "boolean",
            "description": "Indicates if the swimming pool has a self-latching gate present.",
            "examples": [
              "true"
            ]
          },
          "poolCount": {
            "type": "integer",
            "format": "int32",
            "description": "The number of swimming pools.",
            "examples": [
              "1"
            ]
          },
          "pool": {
            "type": "array",
            "description": "List of swimming pools.",
            "items": {
              "$ref": "#/components/schemas/ExteriorPoolDetails"
            }
          },
          "hasAdjacentStructureRisk": {
            "type": "boolean",
            "description": "If an adjacent structure presents additional risk.",
            "examples": [
              "false"
            ]
          },
          "hasHighAboveGroundPoolWithFixedLadder": {
            "type": "boolean",
            "description": "If there is an above-ground pool that is 4 feet or higher and has an immovable ladder.",
            "examples": [
              "false"
            ]
          },
          "hasUnfencedPond": {
            "type": "boolean",
            "description": "If there is an unfenced pond.",
            "examples": [
              "false"
            ]
          },
          "hasPoolWithoutSelfLatchingGate": {
            "type": "boolean",
            "description": "If a pool fence or enclosure is missing a self-latching gate.",
            "examples": [
              "false"
            ]
          },
          "hasCompromisedMasonry": {
            "type": "boolean",
            "description": "If there is a masonry structure compromised or damaged.",
            "examples": [
              "false"
            ]
          },
          "hasUnsafeTreeCondition": {
            "type": "boolean",
            "description": "If there is an unsafe tree condition present, such as unhealthy trees, trees leaning towards structures, or roots too close to the foundation.",
            "examples": [
              "false"
            ]
          },
          "hasIneligibleSidingMaterial": {
            "type": "boolean",
            "description": "If there is ineligible siding material present, such as synthetic stucco or EIFS.",
            "examples": [
              "false"
            ]
          },
          "hasDoorDamage": {
            "type": "boolean",
            "description": "If there is a door with damage (e.g., damaged, missing or boarded).",
            "examples": [
              "false"
            ]
          },
          "hasHangingWires": {
            "type": "boolean",
            "description": "If there are hanging wires present.",
            "examples": [
              "false"
            ]
          },
          "hasMissingRailings": {
            "type": "boolean",
            "description": "If missing railings discovered.",
            "examples": [
              "false"
            ]
          },
          "hasMissingSteps": {
            "type": "boolean",
            "description": "If missing steps discovered.",
            "examples": [
              "false"
            ]
          },
          "hasFireplace": {
            "type": "boolean",
            "description": "If fireplace discovered.",
            "examples": [
              "true"
            ]
          },
          "hasSkirtingDamage": {
            "type": "boolean",
            "description": "If skirting damage discovered.",
            "examples": [
              "false"
            ]
          },
          "hasAddResidence": {
            "type": "boolean",
            "description": "If additional residence discovered.",
            "examples": [
              "false"
            ]
          },
          "hasExposedWiring": {
            "type": "boolean",
            "description": "If exposed wiring discovered.",
            "examples": [
              "false"
            ]
          },
          "hasCanopyAboveGasPumps": {
            "type": "boolean",
            "description": "If there is a canopy above gas pumps.",
            "examples": [
              "false"
            ]
          },
          "hasBarriersAtGasPumpArea": {
            "type": "boolean",
            "description": "If there are barriers at the gas pump area.",
            "examples": [
              "false"
            ]
          }
        }
      },
      "ExteriorPoolDetails": {
        "type": "object",
        "description": "List of swimming pools.",
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of swimming pool, such as [\"In-ground, Attached Pool\", \"In-ground, Detached Pool\", \"Above Ground, Attached Pool\", \"Above Ground, Detached Pool\"].",
            "examples": [
              "In-ground, Attached Pool",
              "In-ground, Detached Pool",
              "Above Ground, Attached Pool",
              "Above Ground, Detached Pool"
            ]
          },
          "size": {
            "type": "string",
            "description": "The size of swimming pool, such as [\"Small\", \"Medium\", \"Large\"].",
            "examples": [
              "Small",
              "Medium",
              "Large"
            ]
          },
          "hasCage": {
            "type": "boolean",
            "description": "If swimming pool cage discovered.",
            "example": true
          },
          "cageSize": {
            "type": "string",
            "description": "The size of pool cage, such as [\"Small\", \"Medium\", \"Large\"].",
            "examples": [
              "Small",
              "Medium",
              "Large"
            ]
          }
        }
      },
      "FireProtectionDetails": {
        "type": "object",
        "description": "Fire protection details for the area.",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the fire protection code for the area.",
            "example": 2
          },
          "nearestFireStation": {
            "$ref": "#/components/schemas/NearestFireStationDetails",
            "description": "Specifies location details for the nearest fire station."
          },
          "nearestFireHydrant": {
            "$ref": "#/components/schemas/NearestFireHydrantDetails",
            "description": "Specifies location details for the nearest fire hydrant."
          }
        }
      },
      "HazardFactor": {
        "type": "object",
        "description": "Consolidated list of observed factors influencing the assessment.",
        "properties": {
          "text": {
            "type": "string",
            "description": "A description of the issue or observation.",
            "example": "Fireplace on exterior of front slope was noted."
          },
          "name": {
            "type": "string",
            "description": "A canonical name (enum) identifying the type of factor — use this field to filter or locate specific hazards. While existing names remain stable, new names may be added in the future without prior notice,",
            "example": "FIREPLACE ON EXTERIOR"
          },
          "component": {
            "type": "string",
            "description": "The building component or structure where the hazard was identified during property inspection. Used together with `direction` to determine the `location` field value. When null, the resulting location defaults to \"N/A\".",
            "example": "Roof"
          },
          "direction": {
            "type": "string",
            "description": "The location or orientation of the issue, if applicable,",
            "example": "front"
          },
          "location": {
            "type": "string",
            "description": "Indicating where the hazard is located on the insured property (e.g., \"Main dwelling - front\", \"Other structure - shed\"). Automatically derived from the `component` and `direction` fields. Returns \"N/A\" when `component` is null.",
            "example": "Main dwelling - front"
          },
          "image": {
            "type": "array",
            "description": "An image object containing at least an id for the associated image.",
            "items": {
              "$ref": "#/components/schemas/SummaryImage"
            }
          }
        }
      },
      "InspectionHistory": {
        "type": "object",
        "description": "List of the property inspection history.",
        "properties": {
          "dateInspected": {
            "type": "string",
            "description": "The date inspected of the history inspection in YYYY-MM-DD format.",
            "example": "2022-12-25"
          },
          "policyNumber": {
            "type": "string",
            "description": "The policy number related to this history inspection.",
            "example": "BEES20221225"
          },
          "image": {
            "type": "array",
            "description": "Image reference with unique identifier.",
            "items": {
              "$ref": "#/components/schemas/SummaryImage"
            }
          }
        }
      },
      "InteriorApplianceDetails": {
        "type": "object",
        "description": "List of appliances, in which each item describes a appiliance in house.",
        "properties": {
          "productType": {
            "type": "string",
            "description": "Representing the type of appliance (e.g., Air Conditioner, Clothes Dryer, Dishwasher, Furnace/Air Handler, Range / Stove / Oven, Refrigerator, Washing Machine).",
            "example": "Air Conditioner"
          },
          "subProductType": {
            "type": "string",
            "description": "Representing a more specific classification for some product type like 'Air Conditioner'. (e.g., Air Conditioner, Heat Pump).",
            "example": "Air Conditioner"
          },
          "brand": {
            "type": "string",
            "description": "Representing the brand name of appliance.",
            "example": "ACIQ"
          },
          "modelNumber": {
            "type": "string",
            "description": "Representing the model number of appliance.",
            "example": "B1HA03"
          },
          "serialNumber": {
            "type": "string",
            "description": "Representing the serial number of appliance.",
            "example": "NLLM11"
          },
          "manufacturedYear": {
            "type": "number",
            "description": "Representing the manufactured year of appliance.",
            "example": 2024
          },
          "manufacturedMonth": {
            "type": "number",
            "description": "Representing the manufactured month of appliance.",
            "example": 1
          },
          "age": {
            "type": "number",
            "description": "Representing the computed age of appliance. It can be a decimal value.",
            "example": 2.5
          },
          "remainingLife": {
            "type": "number",
            "description": "Representing the remaining life of appliance, based on its age and expected life in years. It can be a decimal value.",
            "examples": [
              "5.5"
            ]
          },
          "failureRiskScore": {
            "type": "number",
            "description": "Representing the estimated risk score of appliance failure. The higher the score, the more likely the appliance is to fail. It can be a decimal value.",
            "examples": [
              "1.0"
            ]
          },
          "failureRiskScoreIfRecallFixed": {
            "type": "number",
            "description": "Representing the estimated risk score of appliance failure if any existing recalls associated with the appliance are successfully fixed. It can be a decimal value.",
            "examples": [
              "2.5"
            ]
          },
          "recallData": {
            "type": "array",
            "description": "Representing the information about any recalls associated with the appliance.",
            "items": {
              "$ref": "#/components/schemas/ApplianceRecallData"
            }
          },
          "classActionLawsuit": {
            "type": "array",
            "description": "Representing the information about any class action lawsuit associated with the appliance.",
            "items": {
              "$ref": "#/components/schemas/ApplianceClassActionLawsuit"
            }
          }
        }
      },
      "InteriorBurglarAlarmDetails": {
        "type": "object",
        "description": "Burglar alarm details.",
        "properties": {
          "hasCentralBurglarAlarm": {
            "type": "boolean",
            "description": "Whether the property has central station burglar alarm.",
            "example": false
          }
        }
      },
      "InteriorDetails": {
        "type": "object",
        "description": "Interior inspection details.",
        "properties": {
          "overallCondition": {
            "type": "string",
            "description": "Conditional of overall interior, possible values include [\"Excellent\", \"Good\", \"Average\", \"Fair\", \"Poor\"].",
            "examples": [
              "Excellent",
              "Good",
              "Average",
              "Fair",
              "Poor"
            ]
          },
          "hasVisibleLeaks": {
            "type": "boolean",
            "description": "If active or inactive leaks are visible.",
            "example": false
          },
          "hasExistingDamage": {
            "type": "boolean",
            "description": "If there is existing interior damage is present.",
            "example": false
          },
          "plumbing": {
            "$ref": "#/components/schemas/InteriorPlumbingDetails",
            "description": "Plumbing system details."
          },
          "electric": {
            "$ref": "#/components/schemas/InteriorElectricDetails",
            "description": "Electrical system details."
          },
          "floorplan": {
            "$ref": "#/components/schemas/InteriorFloorplanDetails",
            "description": "Provides details on the interior floor plan, including the number of each type of room and whether damage is present in each room."
          },
          "waterHeater": {
            "$ref": "#/components/schemas/InteriorWaterHeaterDetails",
            "description": "Water heater details."
          },
          "fireAlarm": {
            "$ref": "#/components/schemas/InteriorFireAlarmDetails",
            "description": "Fire alarm details."
          },
          "burglarAlarm": {
            "$ref": "#/components/schemas/InteriorBurglarAlarmDetails",
            "description": "Burglar alarm details."
          },
          "heatingCooling": {
            "$ref": "#/components/schemas/InteriorHeatingCoolingDetails",
            "description": "Heating and cooling system details."
          },
          "sprinkler": {
            "$ref": "#/components/schemas/InteriorSprinklerDetails",
            "description": "Sprinkler system details."
          },
          "fireExtinguisher": {
            "$ref": "#/components/schemas/InteriorFireExtinguisherDetails",
            "description": "Fire extinguisher details."
          },
          "restaurant": {
            "$ref": "#/components/schemas/InteriorRestaurantDetails",
            "description": "Restaurant-specific safety and equipment details."
          },
          "garage": {
            "$ref": "#/components/schemas/InteriorGarageDetails",
            "description": "Garage-specific safety and equipment details."
          },
          "appliances": {
            "type": "array",
            "description": "List of appliances, in which each item describes a appiliance in house.",
            "items": {
              "$ref": "#/components/schemas/InteriorApplianceDetails"
            }
          },
          "comments": {
            "type": "array",
            "description": "List of text comments to interior.",
            "items": {
              "type": "string"
            }
          },
          "hasSmokeDetectors": {
            "type": "boolean",
            "description": "Whether the property has smoke detectors.",
            "example": true
          },
          "hasFireExtinguisher": {
            "type": "boolean",
            "description": "Whether the property has a fire extinguisher.",
            "examples": [
              "true"
            ]
          },
          "hasIlluminatedExitLighting": {
            "type": "boolean",
            "description": "Whether the property has illuminated exit lighting.",
            "examples": [
              "true"
            ]
          },
          "hasEmergencyExitDoor": {
            "type": "boolean",
            "description": "Whether the property has an emergency exit door.",
            "examples": [
              "false"
            ]
          },
          "hasSecuritySystem": {
            "type": "boolean",
            "description": "Whether the property has a security system.",
            "examples": [
              "false"
            ]
          },
          "mechanicals": {
            "type": "array",
            "description": "List of mechanical systems on the property. Possible values include [\"HVAC Systems\", \"Elevators/Escalators\", \"Generators\", \"Kitchen Exhaust Hoods\", \"Laundry Equipment\", \"Conveyor Systems\", \"Other (Please Specify)\"].",
            "examples": [
              "[\"HVAC Systems\", \"Generators\"]"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "InteriorElectricDetails": {
        "type": "object",
        "description": "Electrical system details.",
        "properties": {
          "hasIneligiblePanel": {
            "type": "boolean",
            "description": "Ineligible panel, Split bus, fuse boxes, Stablok, Federal Pacific, GTE-Sylvania, Challenger or Zinsco.",
            "example": false
          },
          "panelBrand": {
            "type": "string",
            "description": "Brand of the main electrical panel inspected. This indicates the manufacturer of the panel. Common brands include Square D, General Electric, Siemens, etc.\n",
            "example": "Square D"
          },
          "isUpdated": {
            "type": "boolean",
            "description": "Whether the wiring/electrical was updated.",
            "example": true
          },
          "yearUpdated": {
            "type": "integer",
            "format": "int32",
            "description": "The year in which the wiring/electrical was updated.",
            "examples": [
              "1992"
            ]
          },
          "systemUpdateStatus": {
            "type": "string",
            "description": "Indicates the age and update status of the electric system in the property. Possible values are:\n\n* `Original` - The electric system is original and has not been updated.\n* `Partially Updated` - Parts of the electric system have been updated or replaced.\n* `Fully Updated` - The entire electric system has been completely replaced with a new system.\n* `Unknown` - The age and update status of the electric system could not be determined.  \n  💡This is a dynamic list of string values. New values may be introduced, and existing values may be deprecated or modified without prior notice.",
            "examples": [
              "Original",
              "Partially Updated",
              "Fully Updated",
              "Unknown"
            ]
          }
        }
      },
      "InteriorFireAlarmDetails": {
        "type": "object",
        "description": "Fire alarm details.",
        "properties": {
          "hasCentralFireAlarm": {
            "type": "boolean",
            "description": "Whether the property has central station fire alarm.",
            "example": true
          }
        }
      },
      "InteriorFireExtinguisherDetails": {
        "type": "object",
        "description": "Fire extinguisher details.",
        "properties": {
          "hasInspectionTag": {
            "type": "boolean",
            "description": "If the fire extinguisher has an inspection tag.",
            "example": true
          }
        }
      },
      "InteriorFloorplanDetails": {
        "type": "object",
        "description": "Provides details on the interior floor plan, including the number of each type of room and whether damage is present in each room.",
        "properties": {
          "room": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Provides the count of bedrooms, bathrooms, closets, etc. Possible properties include [\"bedroom\", \"bathroom\", \"closet\", etc].",
            "example": {
              "bedroom": 3,
              "bathroom": 2,
              "kitchen": 1,
              "livingRoom": 1
            }
          },
          "hasDamage": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            },
            "description": "If floor damage discovered. It indicates if damage is present in each type of room. Possible properties include [\"bedroom\", \"bathroom\", \"closet\", \"foyer\", \"livingRoom\", \"familyRoom\", \"diningRoom\", \"breakfastRoom\", \"kitchen\", \"officeOrStudyRoom\", \"laundryRoom\", \"attic\", \"garage\", etc].",
            "example": {
              "bedroom": false,
              "bathroom": false,
              "kitchen": true
            }
          }
        }
      },
      "InteriorGarageDetails": {
        "type": "object",
        "description": "Garage-specific safety and equipment details.",
        "properties": {
          "hasHydraulicLifts": {
            "type": "boolean",
            "description": "If the garage has hydraulic lifts.",
            "example": true
          },
          "hasFlammableLiquidContainer": {
            "type": "boolean",
            "description": "If the garage has a flammable liquid container.",
            "example": true
          },
          "hasGreaseRagContainer": {
            "type": "boolean",
            "description": "If the garage has a grease rag container.",
            "examples": [
              "true"
            ]
          },
          "hasPaintOrSprayBooth": {
            "type": "boolean",
            "description": "If the garage has a paint or spray booth.",
            "examples": [
              "false"
            ]
          },
          "hasWeldingEquipment": {
            "type": "boolean",
            "description": "If the garage has welding equipment.",
            "examples": [
              "false"
            ]
          }
        }
      },
      "InteriorHeatingCoolingDetails": {
        "type": "object",
        "description": "Heating and cooling system details.",
        "properties": {
          "hasSpaceHeater": {
            "type": "boolean",
            "description": "Whether the property has space heater.",
            "example": true
          },
          "hasWoodStove": {
            "type": "boolean",
            "description": "Whether the property has wood stove.",
            "example": false
          },
          "isUpdated": {
            "type": "boolean",
            "description": "Whether the HVAC was updated.",
            "example": true
          },
          "yearUpdated": {
            "type": "integer",
            "format": "int32",
            "description": "The year in which the HVAC was updated.",
            "example": 1996
          },
          "systemUpdateStatus": {
            "type": "string",
            "description": "Indicates the age and update status of the heating and cooling system in the property. Possible values are:\n\n* `Original` - The heating and cooling system is original and has not been updated.\n* `Partially Updated` - Parts of the heating and cooling system have been updated or replaced.\n* `Fully Updated` - The entire heating and cooling system has been completely replaced with a new system.\n* `Unknown` - The age and update status of the heating and cooling system could not be determined.  ",
            "examples": [
              "Original",
              "Partially Updated",
              "Fully Updated",
              "Unknown"
            ]
          }
        }
      },
      "InteriorPlumbingDetails": {
        "type": "object",
        "description": "Plumbing system details.",
        "properties": {
          "noShutoffValve": {
            "type": "boolean",
            "description": "If there are any plumbing fixtures without shut off valves.",
            "example": false
          },
          "hasOldWaterHeater": {
            "type": "boolean",
            "description": "If the water heater is older than 15 years.",
            "example": false
          },
          "hasPoorWaterHeaterCondition": {
            "type": "boolean",
            "description": "If the water heater is rusting or in poor condition, has exposed wires or no TPR Valve.",
            "example": false
          },
          "hasGalvanizedPipes": {
            "type": "boolean",
            "description": "Indicates if there is evidence that property has galvanized steel pipes based on visual inspection. Galvanized steel pipes may be prone to flow restrictions due to internal corrosion build up over time.",
            "example": true
          },
          "isUpdated": {
            "type": "boolean",
            "description": "Whether the plumbing was updated.",
            "example": true
          },
          "yearUpdated": {
            "type": "integer",
            "format": "int32",
            "description": "The year in which the plumbing was updated.",
            "example": 1986
          },
          "systemUpdateStatus": {
            "type": "string",
            "description": "Indicates the age and update status of the plumbing system in the property. Possible values are:\n\n* `Original` - The plumbing system is original and has not been updated.\n* `Partially Updated` - Parts of the plumbing system have been updated or replaced.\n* `Fully Updated` - The entire plumbing system has been completely replaced with a new system.\n* `Unknown` - The age and update status of the plumbing system could not be determined.",
            "examples": [
              "Original",
              "Partially Updated",
              "Fully Updated",
              "Unknown"
            ]
          },
          "hasIneligiblePlumbing": {
            "type": "boolean",
            "description": "Indicates if there are any ineligible plumbing components or materials present, such as galvanized plumbing, polybutylene plumbing, etc.",
            "examples": [
              "true"
            ]
          }
        }
      },
      "InteriorRestaurantDetails": {
        "type": "object",
        "description": "Restaurant-specific safety and equipment details.",
        "properties": {
          "hasDeepFryer": {
            "type": "boolean",
            "description": "If the restaurant has a deep fryer.",
            "example": true
          },
          "hasBaffleBetweenOpenFlameGrill": {
            "type": "boolean",
            "description": "If the restaurant has a baffle between open flame grill.",
            "example": true
          },
          "hasCleaningStickerOnHood": {
            "type": "boolean",
            "description": "If the restaurant has a cleaning sticker on hood.",
            "examples": [
              "true"
            ]
          },
          "hasCookingLine": {
            "type": "boolean",
            "description": "If the restaurant has a cooking line.",
            "examples": [
              "true"
            ]
          },
          "hasHoodAboveCookingLine": {
            "type": "boolean",
            "description": "If the restaurant has a hood above cooking line.",
            "examples": [
              "true"
            ]
          },
          "hasLiquorLicense": {
            "type": "boolean",
            "description": "If the restaurant has a liquor license.",
            "examples": [
              "false"
            ]
          },
          "hasGreaseFireExtinguisher": {
            "type": "boolean",
            "description": "If the restaurant has a grease fire extinguisher.",
            "examples": [
              "true"
            ]
          },
          "hasInspectionTagKType": {
            "type": "boolean",
            "description": "If the restaurant has an inspection tag K-type.",
            "examples": [
              "true"
            ]
          },
          "hasAutomaticSprinklerSystem": {
            "type": "boolean",
            "description": "If the restaurant has an automatic sprinkler system.",
            "examples": [
              "true"
            ]
          },
          "hasAESEmergencyPull": {
            "type": "boolean",
            "description": "If the restaurant has an AES emergency pull.",
            "examples": [
              "false"
            ]
          },
          "hasFireSuppressionSystem": {
            "type": "boolean",
            "description": "If the restaurant has a fire suppression system.",
            "examples": [
              "true"
            ]
          },
          "hasEmergencyPull": {
            "type": "boolean",
            "description": "If the restaurant has an emergency pull.",
            "examples": [
              "false"
            ]
          },
          "hasActiveServiceAgreement": {
            "type": "boolean",
            "description": "If the restaurant has an active service agreement.",
            "examples": [
              "true"
            ]
          },
          "serviceFrequency": {
            "type": "string",
            "description": "The service frequency of the restaurant. Possible values: Annual, Semi-Annual, Quarterly, Monthly.",
            "examples": [
              "Annual",
              "Semi-Annual",
              "Quarterly",
              "Monthly"
            ]
          }
        }
      },
      "InteriorSprinklerDetails": {
        "type": "object",
        "description": "Interior sprinkler system details.",
        "properties": {
          "hasSprinklerSystem": {
            "type": "boolean",
            "description": "If the property has a sprinkler system.",
            "example": true
          },
          "hasLockOrChain": {
            "type": "boolean",
            "description": "If the sprinkler system has a lock or chain.",
            "example": false
          }
        }
      },
      "InteriorWaterHeaterDetails": {
        "type": "object",
        "description": "Water heater details.",
        "properties": {
          "serialNumber": {
            "type": "string",
            "description": "Specifies the serial number of the water heater inside the property.",
            "example": "SN123456"
          },
          "age": {
            "type": "string",
            "description": "Specifies the age of the water heater inside the property.",
            "example": "12"
          }
        }
      },
      "NearestFireHydrantDetails": {
        "type": "object",
        "description": "Location details for the nearest fire hydrant.",
        "properties": {
          "distance": {
            "type": "string",
            "description": "The distance to the nearest fire hydrant.",
            "example": "500"
          }
        }
      },
      "NearestFireStationDetails": {
        "type": "object",
        "description": "Specifies location details for the nearest fire station.",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the nearest fire station.",
            "example": "Fire And Rescue Station"
          },
          "type": {
            "type": "string",
            "description": "The type of the nearest fire station.",
            "example": "Full Time"
          },
          "distance": {
            "type": "string",
            "description": "The distance to the nearest fire station.",
            "example": "0.92"
          }
        }
      },
      "ProjectAddressInfo": {
        "type": "object",
        "description": "Address of the project.",
        "properties": {
          "country": {
            "type": "string",
            "description": "The country part of the address of the project.",
            "example": "US"
          },
          "state": {
            "type": "string",
            "description": "The state part of the address of the project.",
            "example": "NJ",
            "minLength": 1
          },
          "city": {
            "type": "string",
            "description": "The city part of the address of the project.",
            "example": "New York",
            "minLength": 1
          },
          "zipcode": {
            "type": "string",
            "format": "number",
            "description": "The zipcode part of the address of the project.",
            "example": "07302",
            "minLength": 1
          },
          "streetAddress": {
            "type": "string",
            "description": "The street address part of the address of the project.",
            "example": "37",
            "minLength": 1
          },
          "lat": {
            "type": "number",
            "format": "double",
            "description": "The latitude of the address of the project.",
            "example": 40.7268
          },
          "lng": {
            "type": "number",
            "format": "double",
            "description": "The longitude of the address of the project.",
            "example": -74.0064
          }
        },
        "required": [
          "city",
          "state",
          "streetAddress",
          "zipcode"
        ]
      },
      "RecommendationDetails": {
        "type": "object",
        "description": "List of hazard-related recommendations.",
        "properties": {
          "text": {
            "type": "string",
            "description": "A text string describing the recommendation.",
            "example": "Removal of Diving Board/Slides"
          },
          "image": {
            "type": "array",
            "description": "List of images related to this recommendation.",
            "items": {
              "$ref": "#/components/schemas/SummaryImage"
            }
          }
        }
      },
      "ReportProjectSummaryInfo": {
        "type": "object",
        "description": "Project summary information within a report.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Specifies the project ID to which this report belongs to.",
            "example": 12345
          },
          "inspectionNumber": {
            "type": "string",
            "description": "Inspection number related to this project.",
            "example": "12345678"
          },
          "serviceName": {
            "type": "string",
            "description": "Specifies the project's service name.",
            "example": "Exterior"
          },
          "insuredName": {
            "type": "string",
            "description": "Specifies the name of the insured involved in this report.",
            "example": "Jane Doe"
          },
          "inspectionTime": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the inspection time for the report using the number of seconds since UNIX Epoch Time.",
            "example": 1597609827
          },
          "completionTime": {
            "type": "integer",
            "format": "int32",
            "description": "Specifies the completion time for the report using the number of seconds since UNIX Epoch Time.",
            "example": 1597629371
          },
          "address": {
            "$ref": "#/components/schemas/ProjectAddressInfo",
            "description": "Address of the project."
          },
          "policyNumber": {
            "type": "string",
            "description": "Specifies the policy number related to this project.",
            "example": "BEES20221225"
          },
          "supplementalService": {
            "type": "array",
            "description": "Specifies the supplemental services to subscribe.",
            "example": [
              "RC Report",
              "Sinkhole",
              "Wildfire"
            ],
            "items": {
              "type": "string"
            }
          },
          "isRenewal": {
            "type": "boolean",
            "description": "Specifies whether the policy is new or renewal.",
            "example": false
          }
        }
      },
      "ReportSummary": {
        "type": "object",
        "description": "Detailed inspection summary data.",
        "properties": {
          "yearBuilt": {
            "type": "integer",
            "format": "int32",
            "description": "The built year as a four-digit integer.",
            "example": 1945
          },
          "livingArea": {
            "type": "number",
            "format": "double",
            "description": "The total living area in Sq.Ft. .",
            "example": 1560.0
          },
          "lotSize": {
            "type": "number",
            "format": "double",
            "description": "The lot size in acres.",
            "example": 0.27
          },
          "risk": {
            "$ref": "#/components/schemas/RiskDetails",
            "description": "Risk assessment details for the property."
          },
          "bldg": {
            "$ref": "#/components/schemas/BuildingDetails",
            "description": "Building structure details."
          },
          "roof": {
            "$ref": "#/components/schemas/RoofDetails",
            "description": "Roof inspection details."
          },
          "exterior": {
            "$ref": "#/components/schemas/ExteriorDetails",
            "description": "Exterior inspection details."
          },
          "interior": {
            "$ref": "#/components/schemas/InteriorDetails",
            "description": "Interior inspection details."
          },
          "fireProtection": {
            "$ref": "#/components/schemas/FireProtectionDetails",
            "description": "Fire protection details for the area."
          },
          "community": {
            "$ref": "#/components/schemas/CommunityDetails",
            "description": "Community-level details for condo/multi-family properties."
          },
          "closeoutReasons": {
            "type": "array",
            "description": "The reasons why this project was closed out. Possible values include [\"Inspection was denied by the insured.\", \"Pilot was denied on location.\", \"Insured stated he/she cancelled the policy, and declined the inspection.\", \"Cancellation is confirmed.\", \"Unable to reach insured after multiple attempts. Inspection is closed out.\", \"The insured said this policy is canceled. Inspection is closed out.\", \"Inspection was denied by the insured who was unaware of this insurance policy.\", \"Inspection was denied by the insured, considering it unnecessary.\", \"Inspection was denied by the insured, stating it was previously completed by someone else.\", \"Inspection was denied by the insured without providing a specific reason.\"]. This is a dynamic list of string values. New values may be introduced, and existing values may be deprecated or modified without prior notice.",
            "example": [
              "Inspection was denied by the insured."
            ],
            "items": {
              "type": "string"
            }
          },
          "addlStructures": {
            "type": "array",
            "description": "List of additional structures on the property, such as [\"Storage Shed\", \"Barn\", \"Garden\", \"Horse Stable\", \"Gazebo\", \"Guest House\", \"Pergola\", \"Boat Dock\"].",
            "example": [
              "Storage Shed",
              "Gazebo"
            ],
            "items": {
              "type": "string"
            }
          },
          "hazards": {
            "type": "array",
            "description": "List of text comments of hazards discovered.",
            "example": [
              "Fireplace on exterior of front slope was noted.",
              "The property is located about 237 ft. from the Laurel Lake.",
              "2 dogs was spoted."
            ],
            "items": {
              "type": "string"
            }
          },
          "recommendations": {
            "type": "array",
            "description": "List of hazard-related recommendations.",
            "items": {
              "$ref": "#/components/schemas/RecommendationDetails"
            }
          },
          "factors": {
            "type": "array",
            "description": "Consolidated list of observed factors influencing the assessment.",
            "items": {
              "$ref": "#/components/schemas/HazardFactor"
            }
          },
          "history": {
            "type": "array",
            "description": "List of the property inspection history.",
            "items": {
              "$ref": "#/components/schemas/InspectionHistory"
            }
          },
          "tla": {
            "$ref": "#/components/schemas/TlaDetails",
            "description": "The root object containing all Total Living Area (TLA) measurements. This includes data from both HOVER (a technology that creates 3D models of properties from photos) and Bees360's own measurements."
          }
        }
      },
      "ReportSummaryListResponse": {
        "type": "object",
        "description": "List of report summaries.",
        "properties": {
          "report": {
            "type": "array",
            "description": "Report summary with project info and inspection data.",
            "items": {
              "$ref": "#/components/schemas/ReportSummaryObject"
            }
          }
        }
      },
      "ReportSummaryObject": {
        "type": "object",
        "description": "Report summary with project info and inspection data.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Report unique identifier.",
            "example": "aJAgK76i2zXT9sZ_BxVEw-cDX2Ku98Kv"
          },
          "type": {
            "type": "string",
            "description": "Report type name.",
            "example": "Full-scope Underwriting Report"
          },
          "project": {
            "$ref": "#/components/schemas/ReportProjectSummaryInfo",
            "description": "Project summary information within a report."
          },
          "summary": {
            "$ref": "#/components/schemas/ReportSummary",
            "description": "Detailed inspection summary data."
          }
        }
      },
      "RiskDetails": {
        "type": "object",
        "description": "Risk assessment details for the property.",
        "properties": {
          "overallCondition": {
            "type": "string",
            "description": "Overall risk condition, possible values include [\"Excellent\", \"Good\", \"Average\", \"Fair\", \"Poor\", \"Closeout\"].",
            "examples": [
              "Excellent",
              "Good",
              "Average",
              "Fair",
              "Poor",
              "Closeout"
            ]
          },
          "areaEconomy": {
            "type": "string",
            "description": "Status of area economy, possible values include [\"Stable\", \"Improving\", \"Declining\"].",
            "examples": [
              "Stable",
              "Improving",
              "Declining"
            ]
          },
          "neighborhood": {
            "type": "string",
            "description": "Type of neighborhood, possible values include [\"Urban\", \"Suburban\", \"Rural\", \"Remote\", \"Commercial\", \"Commercial & Residential\"].",
            "examples": [
              "Urban",
              "Suburban",
              "Rural",
              "Remote",
              "Commercial",
              "Commercial & Residential"
            ]
          },
          "gatedCommunity": {
            "type": "boolean",
            "description": "Whether the property is located in a gated community.",
            "example": false
          },
          "locatedOnPavedRoad": {
            "type": "boolean",
            "description": "Whether the property locates on paved road.",
            "example": false
          },
          "isolatedDwelling": {
            "type": "boolean",
            "description": "Whether the property is an isolated dwelling.",
            "example": false
          },
          "seasonalDwelling": {
            "type": "boolean",
            "description": "Whether the property is a seasonal dwelling.",
            "example": false
          },
          "businessOperation": {
            "type": "string",
            "description": "A string representing the type of business operation of the property, possible values include [\"None observed\", \"Farming\", \"Gardening\", \"Professional Services\"].",
            "examples": [
              "None observed",
              "Farming",
              "Gardening",
              "Professional Services"
            ]
          },
          "hasBusinessOperation": {
            "type": "boolean",
            "description": "Whether the property has a business operation.",
            "example": true
          },
          "vacant": {
            "type": "boolean",
            "description": "Whether the property is vacant.",
            "example": false
          },
          "rental": {
            "type": "boolean",
            "description": "If the property is being rented (has tenants).",
            "example": true
          },
          "forSale": {
            "type": "boolean",
            "description": "If the property is currently for sale.",
            "example": false
          },
          "inaccessible": {
            "type": "boolean",
            "description": "If the property is inaccessible for inspection.",
            "example": false
          },
          "hazardScore": {
            "type": "number",
            "format": "double",
            "description": "The Score of hazard counting from report.",
            "example": 2.5
          },
          "hasCrops": {
            "type": "boolean",
            "description": "Whether the property has crops.",
            "example": false
          },
          "hasHorses": {
            "type": "boolean",
            "description": "Whether the property has horses.",
            "examples": [
              "false"
            ]
          },
          "waterBody": {
            "$ref": "#/components/schemas/RiskWaterBodyDetails",
            "description": "Details about a nearby water body."
          },
          "hasRetainingWallDamage": {
            "type": "boolean",
            "description": "If there is damage to retaining walls on the property.",
            "examples": [
              "false"
            ]
          },
          "hasAddressOrGeolocationIssues": {
            "type": "boolean",
            "description": "If there are address or geolocation issues with the property.",
            "examples": [
              "false"
            ]
          },
          "isFireHydrantOver1000ftAway": {
            "type": "boolean",
            "description": "If the nearest fire hydrant is over 1000 ft away from the property.",
            "examples": [
              "false"
            ]
          },
          "acreageOver10Acres": {
            "type": "boolean",
            "description": "If the property acreage is over 10 acres.",
            "examples": [
              "false"
            ]
          },
          "exteriorFireHoseHookup": {
            "type": "boolean",
            "description": "If there is an exterior fire hose hook-up at the property.",
            "examples": [
              "false"
            ]
          }
        }
      },
      "RiskWaterBodyDetails": {
        "type": "object",
        "description": "Details about a nearby water body.",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of water body, possible values include [\"None observed\", \"Lake\", \"River\", \"Creek\", \"Ocean\", \"Pond\", \"Bay\", \"Bayou\", \"Gully\"].",
            "examples": [
              "None observed",
              "Lake",
              "River",
              "Creek",
              "Ocean",
              "Pond",
              "Bay",
              "Bayou",
              "Gully"
            ]
          },
          "distance": {
            "type": "string",
            "description": "Distance to the water body, possible values include [\"less than 500 ft\", \"500 ft ~ 1000 ft\", \"1000 ft ~ 2000 ft\", \"2000 ft ~ 1 mile\", \"greater than 1 mile\"].",
            "examples": [
              "less than 500 ft",
              "500 ft ~ 1000 ft",
              "1000 ft ~ 2000 ft",
              "2000 ft ~ 1 mile",
              "greater than 1 mile"
            ]
          }
        }
      },
      "RoofComparison": {
        "type": "object",
        "description": "Roof slope comparison between current and historical inspections.",
        "properties": {
          "comment": {
            "type": "string",
            "description": "A text comment constructed by direction and change.",
            "example": "Front Slope: No changes was noted."
          },
          "change": {
            "type": "string",
            "description": "Describing changes on the roof slope in this comparison, possible values include [\"No changes was noted.\", \"Slightly damage was noted on the slope.\", \"Moderately damage was noted on the slope.\", \"Significant damage was noted on the slope.\", \"Roof is completely replaced.\", \"Solar panels were noted on the slope.\"].",
            "examples": [
              "No changes was noted.",
              "Slightly damage was noted on the slope.",
              "Moderately damage was noted on the slope.",
              "Significant damage was noted on the slope.",
              "Roof is completely replaced.",
              "Solar panels were noted on the slope."
            ]
          },
          "direction": {
            "type": "string",
            "description": "Specifying the direction of the roof slope in this comparison, possible values include [\"Front\", \"Right\", \"Rear\", \"Left\"].",
            "examples": [
              "Front",
              "Right",
              "Rear",
              "Left"
            ]
          },
          "image": {
            "type": "array",
            "description": "List of images of the current inspection and historical inspections. It contains at least 2 images, standing for the current inspection and the last inspection. Each image is an object that contains at least an id property that represents the image's unique identifier.",
            "items": {
              "$ref": "#/components/schemas/SummaryImage"
            }
          }
        }
      },
      "RoofDetails": {
        "type": "object",
        "description": "Roof inspection details.",
        "properties": {
          "overallCondition": {
            "type": "string",
            "description": "Overall roof condition, possible values include [\"Excellent\", \"Good\", \"Average\", \"Fair\", \"Poor\"].",
            "examples": [
              "Excellent",
              "Good",
              "Average",
              "Fair",
              "Poor"
            ]
          },
          "estAge": {
            "type": "string",
            "description": "Estimated roof age, possible values include [\"less than 1 year\", \"1 ~ 5 years\", \"5 - 10 years\"].",
            "examples": [
              "less than 1 year",
              "1 ~ 5 years",
              "5 - 10 years"
            ]
          },
          "estLife": {
            "type": "string",
            "description": "Estimated roof remaining life, possible values include [\"less than 1 year\", \"1 ~ 5 years\", \"5 - 10 years\"].",
            "examples": [
              "less than 1 year",
              "1 ~ 5 years",
              "5 - 10 years"
            ]
          },
          "geometry": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            },
            "description": "An object presenting roof geometry and its corresponding percentage. Each property key is a geometry type, possible values include [\"Flat\", \"Gable\", \"Hip\"]. Each value is the percentage of that geometry type on the roof.",
            "example": {
              "Flat": 40,
              "Gable": 35,
              "Hip": 25
            }
          },
          "coveringMaterial": {
            "type": "array",
            "description": "List of dominant covering material, including [\"Asphalt\", \"Modified Bitumen\", \"Aluminum\", \"Built-Up\", \"Clay Tile\", \"Concrete Tile\", \"Slate\", \"Copper\", \"Steel\", \"Metal\", \"Standing Seam Metal\", \"Solar Tiles\", \"Rubber\", \"Wood\", \"Other\", \"Unknown\"].",
            "example": [
              "Asphalt"
            ],
            "items": {
              "type": "string"
            }
          },
          "hasSolarPanel": {
            "type": "boolean",
            "description": "Whether any solar panels present on roof.",
            "example": false
          },
          "hasCurlingShingles": {
            "type": "boolean",
            "description": "If roof has curling shingles.",
            "example": false
          },
          "hasGranularLoss": {
            "type": "boolean",
            "description": "If roof has granular loss.",
            "example": false
          },
          "hasMissingDamagedShingles": {
            "type": "boolean",
            "description": "If roof has missing or damaged shingles.",
            "example": false
          },
          "hasPatchedAreas": {
            "type": "boolean",
            "description": "If roof has been repaired with patches.",
            "example": false
          },
          "hasTarp": {
            "type": "boolean",
            "description": "If roof has a tarp.",
            "example": false
          },
          "material": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            },
            "description": "An object recording each roof material type and its corresponding percentage. Possible property keys include [\"CompositeShingles\", \"BuildupRoofNoGravel\", \"ClayConcreteTiles\", \"LightMetalPanels\", \"SinglePlyMembrane\", \"SinglePlyMembraneBallasted\", \"Slate\", \"StandingSeamMetalRoof\", \"WoodenShingles\", \"Metal\", \"ModifiedBitumen\"]. Each value is the percentage of that material on the roof.",
            "example": {
              "CompositeShingles": 60,
              "BuildupRoofNoGravel": 40
            }
          },
          "comments": {
            "type": "array",
            "description": "List of comments to the roof.",
            "items": {
              "type": "string"
            }
          },
          "comparison": {
            "type": "array",
            "description": "List of comparisons, in which each item describes a different direction to the roof.",
            "items": {
              "$ref": "#/components/schemas/RoofComparison"
            }
          },
          "hasRoofDebris": {
            "type": "boolean",
            "description": "If debris discovered on roof.",
            "example": false
          },
          "chimneyCount": {
            "type": "integer",
            "format": "int32",
            "description": "The number of Chimneys.",
            "example": 1
          },
          "hasMultiLayer": {
            "type": "boolean",
            "description": "If the roof material has more than one layer.",
            "example": false
          },
          "hasHoles": {
            "type": "boolean",
            "description": "If there is evidence of holes in the roof structure.",
            "example": false
          },
          "hasMissingDamagedMetalRoof": {
            "type": "boolean",
            "description": "If the metal roof covering is damaged or missing.",
            "example": false
          },
          "isObstructedBySnow": {
            "type": "boolean",
            "description": "If roof is obstructed by snow.",
            "example": false
          },
          "hasAlgaeMoss": {
            "type": "boolean",
            "description": "If algae or moss discovered on roof.",
            "example": false
          },
          "chimneyThroughRoof": {
            "type": "boolean",
            "description": "If chimney goes through roof.",
            "example": false
          }
        }
      },
      "SummaryImage": {
        "type": "object",
        "description": "Image reference with unique identifier.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Image unique identifier.",
            "example": "3f1d8a93-0404-4419-b42d-72e25ef5cde8"
          }
        }
      },
      "TlaAttachedStructureEntity": {
        "type": "object",
        "description": "Measurement data for a single attached structure.",
        "properties": {
          "area": {
            "type": "number",
            "description": "The measured area of a specific structure in square feet.",
            "example": 395
          },
          "identifier": {
            "type": "string",
            "description": "A unique string identifier for the structure.",
            "example": "garage_attached"
          },
          "label": {
            "type": "string",
            "description": "An optional descriptive name for the structure. Can be null if no custom label has been assigned.",
            "example": "Attached Garage"
          },
          "measured": {
            "type": "boolean",
            "description": "A boolean value indicating whether the structure area has been physically measured (true) or estimated (false).",
            "example": true
          },
          "cars": {
            "type": "number",
            "description": "An optional value indicating the number of cars the structure can accommodate. Can be null. Only applicable to certain structure types like garages.",
            "example": 2
          }
        }
      },
      "TlaAttachedStructureGroup": {
        "type": "object",
        "description": "Group of attached structures of one type with total area.",
        "properties": {
          "entities": {
            "type": "array",
            "description": "List of objects representing individual structures of the specified type, each with its own measurements and identifiers.",
            "items": {
              "$ref": "#/components/schemas/TlaAttachedStructureEntity"
            }
          },
          "totalArea": {
            "type": "number",
            "description": "The sum of all structure areas of the specified type in square feet.",
            "example": 395
          }
        }
      },
      "TlaBuildingItem": {
        "type": "object",
        "description": "TLA measurement data for one building on the property.",
        "properties": {
          "buildingType": {
            "type": "string",
            "description": "Specifies the type of building.",
            "examples": [
              "Main Dwelling",
              "Detached Garage",
              "Breezeway Attached Garage",
              "Carport",
              "Guest House",
              "Pool House",
              "Garden House",
              "Tree House",
              "Boat House",
              "Caretaker's House",
              "Carriage House",
              "Storage Shed",
              "Metal Shed",
              "Dock",
              "Other Structure"
            ]
          },
          "buildingIndex": {
            "type": "integer",
            "format": "int32",
            "description": "A numeric identifier for the building, typically starting from 1.",
            "example": 1
          },
          "livingAreas": {
            "$ref": "#/components/schemas/TlaLivingAreas",
            "description": "Contains information about the living spaces within the property, organized by floors and other structural elements."
          },
          "attachedStructures": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/TlaAttachedStructureGroup"
            },
            "description": "Contains information about structures attached to the main building, such as garages, decks, and porches. This object may contain one or more optional fields, each representing a different type of attached structure. Possible field names include [\"attachedGarages\", \"attics\", \"balconies\", \"basementGarages\", \"basementcustoms\", \"basements\", \"builtInGarages\", \"carports\", \"coveredPatios\", \"decks\", \"detachedGarages\", \"enclosedBreezeways\", \"enclosedPorches\", \"openBreezeways\", \"openPorches\", \"patios\", \"porches\", \"screenedEnclosures\", \"screenedPorches\", \"storageAreas\"]. This is a dynamic list of field names. New field names may be introduced, and existing field names may be deprecated or modified without prior notice.",
            "example": {
              "attachedGarages": {
                "entities": [
                  {
                    "area": 395,
                    "identifier": "garage_attached",
                    "measured": true
                  }
                ],
                "totalArea": 395
              },
              "decks": {
                "entities": [
                  {
                    "area": 152,
                    "identifier": "deck",
                    "measured": true
                  }
                ],
                "totalArea": 152
              },
              "openPorches": {
                "entities": [
                  {
                    "area": 218,
                    "identifier": "open_porch",
                    "measured": true
                  }
                ],
                "totalArea": 218
              }
            }
          }
        }
      },
      "TlaDetails": {
        "type": "object",
        "description": "The root object containing all Total Living Area (TLA) measurements. This includes data from both HOVER (a technology that creates 3D models of properties from photos) and Bees360's own measurements.",
        "properties": {
          "hover": {
            "type": "array",
            "description": "Contains Total Living Area (TLA) measurements and related data from the HOVER assessment. This is an array of building objects, where each object represents a building on the property.",
            "items": {
              "$ref": "#/components/schemas/TlaBuildingItem"
            }
          },
          "bees": {
            "type": "array",
            "description": "Contains Total Living Area (TLA) measurements from Bees360's own assessment. This is an array of building objects with the same structure as tla.hover[], where each object represents a building on the property.",
            "items": {
              "$ref": "#/components/schemas/TlaBuildingItem"
            }
          }
        }
      },
      "TlaFloorEntity": {
        "type": "object",
        "description": "One floor or level within a building's living area.",
        "properties": {
          "area": {
            "type": "number",
            "description": "The measured area of a specific floor in square feet. Represents the living space on that particular floor.",
            "example": 1217
          },
          "identifier": {
            "type": "string",
            "description": "A unique string identifier for the floor, typically indicating its position in the building.",
            "example": "1st_floor"
          },
          "label": {
            "type": "string",
            "description": "An optional descriptive name for the floor. Can be null if no custom label has been assigned.",
            "example": "Main Floor"
          },
          "measured": {
            "type": "boolean",
            "description": "A boolean value indicating whether the floor area has been physically measured (true) or estimated (false).",
            "example": true
          },
          "floor": {
            "type": "number",
            "description": "A numeric value representing the floor number, with 1 typically being the ground floor or first floor.",
            "example": 1
          }
        }
      },
      "TlaFloors": {
        "type": "object",
        "description": "Collection of floors within the property's living area.",
        "properties": {
          "entities": {
            "type": "array",
            "description": "List of objects representing individual floors or levels of the property, each with its own measurements and identifiers.",
            "items": {
              "$ref": "#/components/schemas/TlaFloorEntity"
            }
          },
          "totalArea": {
            "type": "number",
            "description": "The sum of all floor areas in square feet, representing the total living area of the property.",
            "example": 2135
          }
        }
      },
      "TlaLivingAreas": {
        "type": "object",
        "description": "Living areas within a property, organized by floors and structural elements.",
        "properties": {
          "floors": {
            "$ref": "#/components/schemas/TlaFloors",
            "description": "Contains detailed information about each floor of the property, including measurements and a collection of floor entities."
          }
        }
      },
      "SearchProjectListResponse": {
        "type": "object",
        "description": "List of projects with status.",
        "properties": {
          "project": {
            "type": "array",
            "description": "List of projects with status.",
            "items": {
              "$ref": "#/components/schemas/SearchProjectObject"
            }
          }
        }
      },
      "SearchProjectObject": {
        "type": "object",
        "description": "Simplified project information with status for search results.",
        "properties": {
          "country": {
            "type": "string",
            "default": "US",
            "description": "The country part of the address of the property to inspect. Defaults to US.",
            "example": "US"
          },
          "state": {
            "type": "string",
            "description": "The state part of the address of the property to inspect.",
            "example": "NJ",
            "minLength": 1
          },
          "city": {
            "type": "string",
            "description": "The city part of the address of the property to inspect.",
            "example": "New York",
            "minLength": 1
          },
          "zipcode": {
            "type": "string",
            "description": "The zipcode part of the address of the property to inspect.",
            "example": "07302",
            "minLength": 1
          },
          "streetAddress": {
            "type": "string",
            "description": "The street address part of the address of the property to inspect.",
            "example": "125",
            "minLength": 1
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Project unique identifier.",
            "example": 10001
          },
          "status": {
            "type": "string",
            "description": "Current status of the project.",
            "example": "Returned to Client"
          },
          "serviceName": {
            "type": "string",
            "description": "Project service name.",
            "example": "4-Point",
            "minLength": 1
          },
          "policyNumber": {
            "type": "string",
            "description": "Policy number related to this project.",
            "example": "1234567"
          },
          "inspectionNumber": {
            "type": "string",
            "description": "Inspection number related to this project.",
            "example": "12345678"
          }
        },
        "required": [
          "city",
          "serviceName",
          "state",
          "streetAddress",
          "zipcode"
        ]
      },
      "ProjectReportItem": {
        "type": "object",
        "description": "Project report item with available reports.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Project unique identifier.",
            "example": 10001
          },
          "report": {
            "type": "array",
            "description": "Report item with unique identifier and type.",
            "items": {
              "$ref": "#/components/schemas/ReportItem"
            }
          }
        }
      },
      "ProjectReportListResponse": {
        "type": "object",
        "description": "List of project reports.",
        "properties": {
          "project": {
            "type": "array",
            "description": "List of project reports.",
            "items": {
              "$ref": "#/components/schemas/ProjectReportItem"
            }
          }
        }
      },
      "ReportItem": {
        "type": "object",
        "description": "Report item with unique identifier and type.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Report unique identifier.",
            "example": "rpt_abc123"
          },
          "type": {
            "type": "string",
            "description": "Report type name.",
            "example": "Full-scope Underwriting Report"
          }
        }
      },
      "ImageInfo": {
        "type": "object",
        "description": "Image information.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Image unique identifier.",
            "example": "img_abc123"
          },
          "source": {
            "type": "string",
            "description": "Image source type.",
            "examples": [
              "Drone",
              "Mobile",
              "Annotated"
            ]
          },
          "direction": {
            "type": "string",
            "description": "Image orientation/direction.",
            "examples": [
              "Front",
              "Rear",
              "Right",
              "Left"
            ]
          },
          "type": {
            "type": "string",
            "description": "Image type.",
            "examples": [
              "Closeup",
              "Others",
              "Roof"
            ]
          }
        }
      },
      "ProjectImageItem": {
        "type": "object",
        "description": "Project image item with associated images.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Project unique identifier.",
            "example": 10001
          },
          "image": {
            "type": "array",
            "description": "Image information.",
            "items": {
              "$ref": "#/components/schemas/ImageInfo"
            }
          }
        }
      },
      "ProjectImageListResponse": {
        "type": "object",
        "description": "List of project images.",
        "properties": {
          "project": {
            "type": "array",
            "description": "List of project images.",
            "items": {
              "$ref": "#/components/schemas/ProjectImageItem"
            }
          }
        }
      },
      "TokenRequest": {
        "description": "OAuth2 token request body.",
        "properties": {
          "username": {
            "type": "string",
            "description": "The username of the user the client wants to act on behalf of.",
            "example": "your-username-here"
          },
          "password": {
            "type": "string",
            "description": "The password of the user corresponds to the specified username.",
            "example": "your-password-here"
          },
          "grant_type": {
            "type": "string",
            "description": "Use 'password' to acquire tokens with user credentials, or 'refresh_token' to renew an access token",
            "enum": [
              "password",
              "refresh_token"
            ],
            "example": "password"
          },
          "refresh_token": {
            "type": "string",
            "description": "A valid refresh token previously issued to client.",
            "example": "your-refresh-token-here"
          }
        },
        "required": [
          "grant_type"
        ]
      },
      "TokenResponse": {
        "description": "OAuth2 token response.",
        "properties": {
          "scope": {
            "type": "string",
            "description": "Granted scope",
            "example": "read write"
          },
          "jti": {
            "type": "string",
            "description": "Unique token identifier",
            "example": "08ccb060-515f-46d0-aaa7-06e38fe94c03"
          },
          "access_token": {
            "type": "string",
            "description": "Bearer token for API requests (valid for 10 minutes)",
            "example": "f276df18-cfc2-454e-a6f2-3ec63578c73c"
          },
          "token_type": {
            "type": "string",
            "description": "Token type",
            "example": "bearer"
          },
          "refresh_token": {
            "type": "string",
            "description": "Token for obtaining new access tokens",
            "example": "f554d386-0b0a-461b-bdb2-292831cecd57"
          },
          "expires_in": {
            "type": "integer",
            "format": "int32",
            "description": "Access token validity in seconds",
            "example": 600
          },
          "user_id": {
            "type": "integer",
            "format": "int32",
            "description": "User identifier",
            "example": 10030
          },
          "company_id": {
            "type": "string",
            "description": "Company identifier",
            "example": "1748"
          }
        }
      }
    },
    "securitySchemes": {
      "basicAuth": {
        "type": "http",
        "scheme": "basic"
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}