---
updatedAt: 2026-06-24T00:17:24.000Z
agentTools:
  projectIndex: https://developer.nearmap.com/llms.txt
---

# v4 /surveyresources/{surveyResourceId}/features.json /surveyresources/

Returns features, their attributes and optional supplementary data
within the given polygon or address, for the given survey resource.


***Returns features and their attributes within the given survey resource and polygon OR address.***

***

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "AI Feature API.",
    "description": "Serves Nearmap AI Features.\n",
    "version": "4.0.0",
    "contact": {
      "email": "apiteam@nearmap.com"
    }
  },
  "servers": [
    {
      "description": "Production",
      "url": "https://api.nearmap.com/ai/features/v4"
    }
  ],
  "security": [
    {
      "APIKeyQuery": []
    },
    {
      "APIKeyHeader": []
    },
    {
      "TXV3TokenHeader": []
    }
  ],
  "tags": [
    {
      "name": "features"
    }
  ],
  "paths": {
    "/surveyresources/{surveyResourceId}/features.json": {
      "get": {
        "tags": [
          "features"
        ],
        "summary": "v4 /surveyresources/{surveyResourceId}/features.json /surveyresources/",
        "description": "Returns features, their attributes and optional supplementary data\nwithin the given polygon or address, for the given survey resource.\n",
        "operationId": "getFeaturesBySurveyResourceId",
        "parameters": [
          {
            "$ref": "#/components/parameters/optionalPolygon"
          },
          {
            "$ref": "#/components/parameters/bulk"
          },
          {
            "$ref": "#/components/parameters/packs"
          },
          {
            "$ref": "#/components/parameters/surveyResourceId"
          },
          {
            "$ref": "#/components/parameters/classes"
          },
          {
            "$ref": "#/components/parameters/streetAddress"
          },
          {
            "$ref": "#/components/parameters/city"
          },
          {
            "$ref": "#/components/parameters/state"
          },
          {
            "$ref": "#/components/parameters/zip"
          },
          {
            "$ref": "#/components/parameters/country"
          },
          {
            "$ref": "#/components/parameters/reference"
          },
          {
            "$ref": "#/components/parameters/alpha"
          },
          {
            "$ref": "#/components/parameters/beta"
          },
          {
            "$ref": "#/components/parameters/parcelMode"
          },
          {
            "$ref": "#/components/parameters/includeSuppData"
          },
          {
            "$ref": "#/components/parameters/damageModelVersion"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/features_ok"
          },
          "400": {
            "$ref": "#/components/responses/features_bad_request"
          },
          "401": {
            "$ref": "#/components/responses/generic_unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/generic_forbidden"
          },
          "404": {
            "$ref": "#/components/responses/features_not_found"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "APIKeyQuery": {
        "name": "apikey",
        "type": "apiKey",
        "in": "query"
      },
      "APIKeyHeader": {
        "name": "Authorization",
        "type": "apiKey",
        "in": "header",
        "description": "Header value in the format 'Apikey <api_key>'"
      },
      "TXV3TokenHeader": {
        "name": "Authorization",
        "type": "apiKey",
        "in": "header",
        "description": "Header value in the format 'Transaction {transactionToken}'.\ntransactionToken is tx v3 token from the response to a previous call to the property resources service.\n"
      }
    },
    "schemas": {
      "FeatureResult": {
        "type": "object",
        "properties": {
          "systemVersion": {
            "type": "string",
            "description": "The version of the system used to generate the AI data."
          },
          "resourceId": {
            "type": "string",
            "description": "The ID of the survey resource."
          },
          "surveyId": {
            "type": "string",
            "description": "The survey ID of the survey associated with the survey resource."
          },
          "surveyDate": {
            "type": "string",
            "description": "The date of the survey capture.",
            "format": "date",
            "example": "2019-09-27"
          },
          "credits": {
            "type": "integer",
            "example": 1,
            "description": "The number of credits used for this request."
          },
          "link": {
            "type": "string",
            "example": "https://apps.nearmap.com/maps/#/@-33.7251728,151.2955012,20.00z,0d/V/20190927",
            "description": "The MapBrowser link to the location that was requested."
          },
          "features": {
            "type": "array",
            "description": "The AI features at the location requested.",
            "items": {
              "$ref": "#/components/schemas/Feature"
            }
          },
          "aggregate": {
            "$ref": "#/components/schemas/Aggregate"
          },
          "geomatchedAddress": {
            "type": "string",
            "example": "10897 S River Front Pkwy Ste 150, South Jordan, UT 84095-5650, USA",
            "description": "Matched address used for geocoded requests."
          },
          "perspective": {
            "type": "string",
            "description": "The perspective used to generate the AI data.",
            "enum": [
              "Vert",
              "TrueOrtho"
            ]
          },
          "reference": {
            "type": "string",
            "example": "123456",
            "description": "The reference passed in via the X-Nearmap-Ext-Reference request\nheader value, if it is present. It is up to the user to track the\nsemantics of this field. E.g. they may wish to interpret it as an\ninsurance policy ID.\n"
          },
          "extentMinX": {
            "type": "number",
            "description": "Approximate minimum longitude of the AOI extent."
          },
          "extentMinY": {
            "type": "number",
            "description": "Approximate minimum latitude of the AOI extent."
          },
          "extentMaxX": {
            "type": "number",
            "description": "Approximate maximum longitude of the AOI extent."
          },
          "extentMaxY": {
            "type": "number",
            "description": "Approximate maximum latitude of the AOI extent."
          },
          "prerelease": {
            "type": "boolean",
            "description": "Indicates whether or not the system version used to serve the\nrequest is a preview release. If it's not a preview release, then\nit's a regular GA release. This field is only populated if the alpha\nor beta request query parameters are set to true or a preview\nrelease is explicitly requested.       \n"
          },
          "isRapidSurveyResource": {
            "type": "boolean",
            "description": "Indicates whether or not the survey resource is a rapid survey\nresource. This field is only present if the `rapid`\nquery parameter is set to true. \n"
          },
          "versions": {
            "$ref": "#/components/schemas/Versions"
          },
          "partialResource": {
            "type": "boolean",
            "description": "Indicates that the resource only has prediction generated in certain areas of the survey. While it may have coverage in the AOI, it may not have coverage in other areas of the survey boundary.\n"
          }
        },
        "required": [
          "systemVersion",
          "perspective",
          "resourceId",
          "surveyId",
          "surveyDate",
          "credits",
          "link",
          "features",
          "extentMinX",
          "extentMinY",
          "extentMaxX",
          "extentMaxY"
        ]
      },
      "Feature": {
        "type": "object",
        "required": [
          "id",
          "classId",
          "description",
          "confidence",
          "parentId",
          "geometry",
          "areaSqm",
          "areaSqft",
          "clippedAreaSqm",
          "clippedAreaSqft",
          "unclippedAreaSqm",
          "unclippedAreaSqft",
          "surveyDate",
          "meshDate",
          "attributes"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The Unique ID of this feature.",
            "example": "1e88ed3a-abc7-5c34-963e-06df354d39fb"
          },
          "classId": {
            "type": "string",
            "description": "The unique ID for the class of this feature.",
            "example": "5a5cb214-eee3-4fdd-bfce-d21e9793cf6a"
          },
          "description": {
            "type": "string",
            "description": "A description of the class of this feature.",
            "example": "Roof"
          },
          "confidence": {
            "type": "number",
            "description": "The confidence level for this feature.",
            "format": "double",
            "example": 0.94140625
          },
          "parentId": {
            "type": "string",
            "description": "The feature ID of the immediate parent of this feature.\n\nThis field is always present. An empty string indicates that the\nfeature is a root-level feature with no parent.\n"
          },
          "geometry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Point"
              },
              {
                "$ref": "#/components/schemas/Polygon"
              },
              {
                "$ref": "#/components/schemas/MultiPolygon"
              }
            ],
            "discriminator": {
              "propertyName": "type"
            },
            "description": "The geometry of the feature."
          },
          "areaSqm": {
            "type": "number",
            "description": "The area of the feature geometry, in square meters, rounded to 1\ndecimal place.\n\nConnected features (e.g. lawn grass, medium and high vegetation,\netc.) are clipped to the requested AOI and area computed off this\nclipped geometry. For connected features, this area will always\nequal clippedAreaSqm.\n\nDiscrete features (e.g. buildings, swimming pools, etc.) are not\nclipped to the requested AOI, and the area is computed from the\nentire feature geometry. For discrete features, this area will\nalways equal unclippedAreaSqm.\n",
            "example": 12.8
          },
          "areaSqft": {
            "type": "number",
            "description": "The area of the feature geometry, in square feet, rounded to the\nnearest integer.\n\nConnected features (e.g. lawn grass, medium and high vegetation,\netc.) are clipped to the requested AOI and area computed off this\nclipped geometry. For connected features, this area will always\nequal clippedAreaSqft.\n\nDiscrete features (e.g. buildings, swimming pools, etc.) are not\nclipped to the requested AOI, and the area is computed from the\nentire feature geometry. For discrete features, this area will\nalways equal unclippedAreaSqft.\n",
            "example": 138
          },
          "clippedAreaSqm": {
            "type": "number",
            "description": "The area of the feature geometry, clipped to the requested AOI, in\nsquare meters, rounded to 1 decimal place.\n",
            "example": 12.8
          },
          "clippedAreaSqft": {
            "type": "number",
            "description": "The area of the feature geometry, clipped to the requested AOI, in\nsquare feet, rounded to the nearest integer.\n",
            "example": 138
          },
          "unclippedAreaSqm": {
            "type": "number",
            "description": "The unclipped area of the feature geometry in square meters, rounded\nto 1 decimal place.\n",
            "example": 15.8
          },
          "unclippedAreaSqft": {
            "type": "number",
            "description": "The unclipped area of the feature geometry in square feet, rounded\nto the nearest integer.\n",
            "example": 150
          },
          "surveyDate": {
            "type": "string",
            "description": "The date of the survey capture.",
            "format": "date",
            "example": "2019-09-27"
          },
          "meshDate": {
            "type": "string",
            "description": "The date of the 3D mesh used to generate the resource (if applicable).\n\nThis field is always present. An empty string indicates that the\nfeature was not generated from a 3D mesh; a date string indicates\nthe capture date of the mesh.\n",
            "example": "2019-09-27"
          },
          "attributes": {
            "type": "array",
            "description": "The list of attributes related to this feature.",
            "items": {
              "$ref": "#/components/schemas/Attribute"
            }
          },
          "classStatus": {
            "type": "string",
            "enum": [
              "prod",
              "alpha",
              "beta"
            ],
            "description": "Indicates if the class is a production, alpha, or beta class.\n\nThis field is only populated if the alpha or beta request query\nparameters are set to true or a preview release is explicitly\nrequested.\n"
          },
          "belongsToParcel": {
            "type": "boolean",
            "description": "Indicates if the feature belongs to a parcel.\n\nThis field is only present if the `parcelMode` query parameter is\nset to true.\n"
          },
          "clippedGeometry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Polygon"
              },
              {
                "$ref": "#/components/schemas/MultiPolygon"
              }
            ],
            "discriminator": {
              "propertyName": "type"
            },
            "description": "The clipped geometry of the feature. This field is only present if the\n`parcelMode` query parameter is set to true and the clipped geometry\ndiffers from the (unclipped) geometry.\n"
          },
          "roofSpotlightIndex": {
            "$ref": "#/components/schemas/RSI"
          },
          "damage": {
            "$ref": "#/components/schemas/Damage"
          },
          "defensibleSpace": {
            "$ref": "#/components/schemas/DefensibleSpace"
          },
          "hurricaneScore": {
            "$ref": "#/components/schemas/HurricaneScore"
          },
          "windScore": {
            "$ref": "#/components/schemas/WindScore"
          },
          "wildfireScore": {
            "$ref": "#/components/schemas/WildfireScore"
          },
          "hailScore": {
            "$ref": "#/components/schemas/HailScore"
          },
          "windHailRiskScore": {
            "$ref": "#/components/schemas/WindHailRiskScore"
          }
        }
      },
      "Aggregate": {
        "type": "object",
        "description": "Provides a summary of the AOI by aggregating or unioning relevant features \ninto a single result. This field is used when the user's AOI spans multiple \nfeatures and a single unified result is required.\n\n`aggregate` field is currently only set when defensible space is requested by the user.   \n",
        "properties": {
          "defensibleSpace": {
            "description": "Provides information about defensible space coverage, area and risk object classes segmented by zones\nfor unioned building footprints on the provided AOI. \n\nBuilding footprints are features identified as a `footprint`, which can be either `Roof` (default), or\n`Building Lifecycle` (fallback, used when Roof is significantly damaged or missing. \n\nTo include this aggregate defensible space data in the response, set the `include` query parameter to `defensibleSpace`. \n",
            "type": "object",
            "properties": {
              "skipped": {
                "description": "Indicates that the processing for defensible space have been skipped. When this happens, the zone buffers are omitted.\nThis usually occurs either when the buffer zones, when applied, extend beyond the resource boundary.\n\nThis field is omitted when processing was not skipped.\n",
                "type": "boolean"
              },
              "zones": {
                "description": "The defensible space zone buffers.\n",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ZoneDefensibleSpace"
                }
              }
            }
          }
        }
      },
      "Attribute": {
        "type": "object",
        "description": "Attribute data for a feature. An attribute contains additional fields\nthat are specific to each attribute class.\n",
        "required": [
          "classId",
          "description"
        ],
        "properties": {
          "classId": {
            "type": "string",
            "description": "The unique ID that identifies the class of this attribute.",
            "example": "9357faf9-ea45-4787-8e9c-967b9819de9e"
          },
          "description": {
            "type": "string",
            "description": "A description of this class of this attribute.",
            "example": "Roof Material"
          },
          "classStatus": {
            "type": "string",
            "enum": [
              "prod",
              "alpha",
              "beta"
            ],
            "description": "Indicates if the class is a production, alpha, or beta class.\n\nThis field is only populated if the alpha or beta request query\nparameters are set to true or a preview release is explicitly\nrequested.\n"
          },
          "components": {
            "type": "array",
            "description": "The components of this attribute.",
            "items": {
              "$ref": "#/components/schemas/AttributeComponent"
            }
          },
          "has3dAttributes": {
            "type": "boolean",
            "description": "Indicates if the attribute has 3D attribute data, such as roof pitch\nand building height.\n\nOnly available for `Building 3d attributes` and `Roof 3d attributes`\nattribute classes, omitted if not available.\n"
          },
          "pitch": {
            "type": "number",
            "description": "The pitch of the roof in degrees.\n\nOnly available for `Roof 3d attributes` class, omitted if not\navailable.\n",
            "format": "double",
            "example": 30
          },
          "height": {
            "type": "number",
            "description": "The height of the building in meters.\n\nOnly available for `Building 3d attributes` class, omitted if not\navailable.\n",
            "format": "double",
            "example": 5
          },
          "heightM": {
            "type": "number",
            "description": "The height of the building in meters.\n\nOnly available for `Building 3d attributes` class, omitted if not\navailable.\n",
            "format": "double",
            "example": 5
          },
          "heightFt": {
            "type": "number",
            "description": "The height of the building in feet.\n\nOnly available for `Building 3d attributes` class, omitted if not\navailable.\n",
            "format": "double",
            "example": 16.4
          },
          "numStories": {
            "type": "object",
            "description": "Confidence levels for the number of stories.\n\nOnly available for `Building 3d attributes` class, omitted if not\navailable.\n",
            "properties": {
              "one": {
                "type": "number",
                "description": "The confidence level that the building has one story.",
                "format": "double",
                "example": 0.78
              },
              "two": {
                "type": "number",
                "description": "The confidence level that the building has two stories.",
                "format": "double",
                "example": 0.22
              },
              "threePlus": {
                "type": "number",
                "description": "The confidence level that the building has three or more stories.",
                "format": "double",
                "example": 0
              }
            }
          },
          "available": {
            "type": "boolean",
            "description": "Indicates availability of the value of this attribute.\n\nOnly available for `Ground height` and `Building pitch` attribute\nclasses, omitted if not available. \n"
          },
          "value": {
            "type": "number",
            "description": "The value of the attribute.\n\nOnly available for `Ground height` and `Building pitch` attribute\nclasses, omitted if not available.\n",
            "format": "double",
            "example": 5
          }
        }
      },
      "AttributeComponent": {
        "type": "object",
        "description": "Component data for an attribute.\n\nThe components present for an attribute depend on its attribute class.\n",
        "required": [
          "classId",
          "description",
          "areaSqm",
          "areaSqft",
          "ratio"
        ],
        "properties": {
          "classId": {
            "type": "string",
            "description": "The unique ID that identifies the class of this attribute component.",
            "example": "9357faf9-ea45-4787-8e9c-967b9819de9e"
          },
          "description": {
            "type": "string",
            "description": "A description of this class of this attribute component.",
            "example": "Roof Rusting"
          },
          "classStatus": {
            "type": "string",
            "enum": [
              "prod",
              "alpha",
              "beta"
            ],
            "description": "Indicates if the class is a production, alpha, or beta class.\n\nThis field is only present if the alpha or beta request query\nparameters are set to true or a preview release is explicitly\nrequested.\n"
          },
          "confidence": {
            "type": "number",
            "description": "The confidence level for this attribute component.",
            "format": "double",
            "example": 0.56448674
          },
          "areaSqm": {
            "type": "number",
            "description": "The area of the attribute component in square meters, rounded to 1\ndecimal place.\n",
            "example": 12.8
          },
          "areaSqft": {
            "type": "number",
            "description": "The area of the attribute component in square feet, rounded to the\nnearest integer.\n",
            "example": 138
          },
          "ratio": {
            "type": "number",
            "description": "The ratio of the attribute component area to the parent feature\narea.\n",
            "format": "double",
            "example": 0.13075127
          },
          "dominant": {
            "type": "boolean",
            "description": "Indicates if the attribute component is dominant, relative to other\ncomponents of the same attribute.\n\nThis field is omitted if not available.\n"
          },
          "confidenceStats": {
            "$ref": "#/components/schemas/RCCS"
          }
        }
      },
      "Geometry": {
        "type": "object",
        "description": "GeoJSON geometry",
        "discriminator": {
          "propertyName": "type"
        },
        "required": [
          "type"
        ],
        "externalDocs": {
          "url": "http://geojson.org/geojson-spec.html#geometry-objects"
        },
        "properties": {
          "type": {
            "type": "string",
            "description": "The geometry type."
          }
        }
      },
      "Point2D": {
        "type": "array",
        "maxItems": 2,
        "minItems": 2,
        "items": {
          "type": "number"
        }
      },
      "Point": {
        "type": "object",
        "externalDocs": {
          "url": "http://geojson.org/geojson-spec.html#id2"
        },
        "allOf": [
          {
            "$ref": "#/components/schemas/Geometry"
          },
          {
            "properties": {
              "coordinates": {
                "$ref": "#/components/schemas/Point2D"
              }
            }
          }
        ]
      },
      "Polygon": {
        "type": "object",
        "externalDocs": {
          "url": "http://geojson.org/geojson-spec.html#id4"
        },
        "allOf": [
          {
            "$ref": "#/components/schemas/Geometry"
          },
          {
            "properties": {
              "coordinates": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Point2D"
                  }
                }
              }
            }
          }
        ]
      },
      "MultiPolygon": {
        "type": "object",
        "externalDocs": {
          "url": "http://geojson.org/geojson-spec.html#id6"
        },
        "allOf": [
          {
            "$ref": "#/components/schemas/Geometry"
          },
          {
            "properties": {
              "coordinates": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Point2D"
                    }
                  }
                }
              }
            }
          }
        ]
      },
      "Versions": {
        "type": "object",
        "description": "Version information for supplementary data sources. Version information is present\nonly if the supplementary data source has been run.\n",
        "properties": {
          "roofSpotlightIndex": {
            "$ref": "#/components/schemas/Version"
          },
          "damage": {
            "$ref": "#/components/schemas/Version"
          },
          "defensibleSpace": {
            "$ref": "#/components/schemas/PresentationOnlyVersion"
          },
          "hurricaneScore": {
            "$ref": "#/components/schemas/Version"
          },
          "windScore": {
            "$ref": "#/components/schemas/Version"
          },
          "wildfireScore": {
            "$ref": "#/components/schemas/Version"
          },
          "hailScore": {
            "$ref": "#/components/schemas/Version"
          },
          "windHailRiskScore": {
            "$ref": "#/components/schemas/Version"
          }
        }
      },
      "PresentationOnlyVersion": {
        "type": "object",
        "description": "Version information for a supplementary data source that exposes only a\npresentation version.\n",
        "required": [
          "presentationVersion"
        ],
        "properties": {
          "presentationVersion": {
            "type": "string",
            "description": "The presentation version of the supplementary data source.",
            "example": "1"
          }
        }
      },
      "Version": {
        "type": "object",
        "description": "Version information for a supplementary data source.\n",
        "required": [
          "presentationVersion"
        ],
        "properties": {
          "modelVersion": {
            "type": "string",
            "description": "The version of the AI model that produced the supplementary data.\nOptional - omitted for supplementary data sources that do not\nexpose a distinct model version.\n",
            "example": "B.0rc0"
          },
          "presentationVersion": {
            "type": "string",
            "description": "The presentation version of the supplementary data source.",
            "example": "2"
          }
        }
      },
      "RSI": {
        "type": "object",
        "description": "The Roof Spotlight Index (RSI) is a proprietary measure of the condition\nof a roof and factors that might affect its condition. \n\nTo include this supplementary data in the response, add\n`roofSpotlightIndex` to the `include` query parameter.\n\nThis property can only be present on `Roof` and/or `Building Lifecycle`\nfeatures. While normally added to `Roof` features, under certain\nconditions where the roof is severely damaged or missing, it may be\nadded to `Building Lifecycle` instead.\n",
        "properties": {
          "value": {
            "type": "number",
            "description": "The RSI value in a range of 0 to 100, rounded to the nearest integer.",
            "format": "int",
            "example": 94
          },
          "confidence": {
            "type": "number",
            "description": "The confidence level for this RSI value, rounded to 2 decimal places.",
            "format": "double",
            "example": 0.78
          }
        }
      },
      "RCCS": {
        "type": "object",
        "description": "A collection of statistics that summarize the confidence levels of AI\npredictions for the condition of a roof.\n\nTo include this supplementary data in the response, add\n`roofConditionConfidenceStats` to the `include` query parameter.\n\nThis property is only present in `Roof Condition` feature attributes.    \n\nRoof features with a footprint area exceeding 100,000sqm will be skipped \nand be marked as such. No roof condition confidence statistics will be \nproduced in these cases.    \n"
      },
      "Damage": {
        "type": "object",
        "description": "Damage classifications provide a measure of the severity of damage to\na structure based on FEMA damage classification categories.\n\nThere are three tiers of classification provided:\n- 5-tier (or `raw`), based on the FEMA 5-tier classification system composed of `Undamaged`,\n  `Affected`, `Minor`, `Major` and `Destroyed`\n- 3-tier, composed of `UndamagedOrAffected`, `Minor` and `MajorOrDestroyed`\n- 2-tier, composed of `UndamagedOrAffectedOrMinor` and `MajorOrDestroyed`\n\nTo include this supplementary data in the response, add\n`damage` to the `include` query parameter. \n\nDamage is not supported on bulk requests. If the `include` query parameter\nis set to `damage` when using bulk, the request will be rejected with a 400 Bad Request\nresponse. If the `include` query parameter when using bulk is set to `all`, \ndamage will be excluded.\n\nThis property can only present on `Building Lifecycle` features. If `parcelMode` is set to\n`true`, the damage classification will be calculated using the clipped geometry of the \nfeature if present. Otherwise, the geometry of the feature will be used with no clipping\napplied.\n\nFeatures with a footprint area exceeding 100,000sqm or that are not a polygon or \nmulti-polygon geometry will be skipped and be marked as such. No damage classification\nwill be produced for these features.\n\nBy default, the latest version of the damage model will be used. To specify a particular\nversion of the damage model, use the `damageModelVersion` query parameter.\n",
        "properties": {
          "confidences": {
            "type": "object",
            "properties": {
              "raw": {
                "type": "object",
                "properties": {
                  "Undamaged": {
                    "type": "number",
                    "description": "The confidence level that the building is undamaged, rounded to 3 decimal places.",
                    "format": "double",
                    "example": 0.781
                  },
                  "Affected": {
                    "type": "number",
                    "description": "The confidence level that the building is affected, rounded to 3 decimal places.",
                    "format": "double",
                    "example": 0.221
                  },
                  "Minor": {
                    "type": "number",
                    "description": "The confidence level that the building has minor damage, rounded to 3 decimal places.",
                    "format": "double",
                    "example": 0.121
                  },
                  "Major": {
                    "type": "number",
                    "description": "The confidence level that the building has major damage, rounded to 3 decimal places.",
                    "format": "double",
                    "example": 0.151
                  },
                  "Destroyed": {
                    "type": "number",
                    "description": "The confidence level that the building is destroyed, rounded to 3 decimal places.",
                    "format": "double",
                    "example": 0.161
                  }
                },
                "description": "5-tier damage classification confidence values. Note - values may not sum to 1.0 due to rounding."
              },
              "3tier": {
                "type": "object",
                "properties": {
                  "UndamagedOrAffected": {
                    "type": "number",
                    "description": "The confidence level that the building is undamaged or affected, rounded to 3 decimal places.",
                    "format": "double",
                    "example": 0.781
                  },
                  "Minor": {
                    "type": "number",
                    "description": "The confidence level that the building has minor damage, rounded to 3 decimal places.",
                    "format": "double",
                    "example": 0.121
                  },
                  "MajorOrDestroyed": {
                    "type": "number",
                    "description": "The confidence level that the building has major damage or is destroyed, rounded to 3 decimal places.",
                    "format": "double",
                    "example": 0.151
                  }
                },
                "description": "3-tier damage classification confidence values. Note - values may not sum to 1.0 due to rounding."
              },
              "2tier": {
                "type": "object",
                "properties": {
                  "UndamagedOrAffectedorMinor": {
                    "type": "number",
                    "description": "The confidence level that the building is undamaged or affected or has minor damage rounded to 3 decimal places.",
                    "format": "double",
                    "example": 0.781
                  },
                  "MajorOrDestroyed": {
                    "type": "number",
                    "description": "The confidence level that the building has major damage or is destroyed, rounded to 3 decimal places.",
                    "format": "double",
                    "example": 0.151
                  }
                },
                "description": "2-tier damage classification confidence values. Note - values may not sum to 1.0 due to rounding."
              }
            }
          },
          "ratios": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "classId",
                "description",
                "ratioAbove50PctConf"
              ],
              "properties": {
                "classId": {
                  "type": "string",
                  "description": "Unique ID for the class of this detection.\n",
                  "example": "6832955f-89c6-5cfd-874d-40c22aead943"
                },
                "ratioAbove50PctConf": {
                  "type": "number",
                  "description": "Ratio of the 50% confidence area for the detected class, to total footprint area. Rounded to 3 decimal places.\n",
                  "example": 0.123
                },
                "description": {
                  "type": "string",
                  "description": "Description of the class of this detection.\n",
                  "example": "Vegetation Debris"
                }
              }
            },
            "description": "List of 50% confidence area ratios for each detection class.\n"
          },
          "skipped": {
            "type": "boolean",
            "description": "Indicates whether the damage classification was skipped for this feature.\nThis happens when the feature footprint exceeds the maximum size for damage\nclassification of 100,000sqm.\n\nThis field is omitted when processing was not skipped.\n"
          }
        }
      },
      "DefensibleSpace": {
        "type": "object",
        "description": "Provides information about defensible space coverage, area and risk object classes segmented by zones. \n\nZones: Concentric buffered areas surrounding the aoi based on different distances.\n- Zone 0: 0-5 feet\n- Zone 1: 5-30 feet\n- Zone 2: 30-100 feet\n\nRisk Object Classes:\n- Medium and High Vegetation with Woody Vegetation\n- Yard Debris\n- Roof\n\nTo include this supplementary defensible space data in the response, set the `include` query parameter to `defensibleSpace`. \n\nThis property is returned only for features identified as a `footprint`, which can be either `Roof` (default), or\n`Building Lifecycle` (fallback, used when Roof is significantly damaged or missing. \n\nIf parcelMode = true: defensible space is calculated using the clipped geometry of the feature. \nIf parcelMode = false or omitted: the original, unclipped geometry is used.\n",
        "properties": {
          "skipped": {
            "description": "Indicates that the processing for defensible space have been skipped. When this happens, the zone buffers are omitted.\nThis usually occurs either when the buffer zones, when applied, extend beyond the resource boundary.\n\nThis field is omitted when processing was not skipped.\n",
            "type": "boolean"
          },
          "zones": {
            "description": "The defensible space zone buffers.\n",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ZoneDefensibleSpace"
            }
          }
        }
      },
      "ZoneDefensibleSpace": {
        "type": "object",
        "description": "Concentric buffered areas surrounding the building footprint.",
        "required": [
          "zoneId",
          "zoneInnerDistanceM",
          "zoneInnerDistanceFt",
          "zoneOuterDistanceM",
          "zoneOuterDistanceFt",
          "zoneGeometry",
          "zoneAreaSqm",
          "zoneAreaSqft",
          "defensibleSpaceAreaSqft",
          "defensibleSpaceAreaSqm",
          "totalRiskObjectAreaSqft",
          "totalRiskObjectCoverageRatio",
          "defensibleSpaceCoverageRatio"
        ],
        "properties": {
          "zoneId": {
            "description": "Unique identifier for the zone.",
            "type": "integer"
          },
          "zoneInnerDistanceM": {
            "description": "Inner boundary of the zone measured from the outer boundary of the building footprint (in meters).",
            "type": "number"
          },
          "zoneInnerDistanceFt": {
            "description": "Inner boundary of the zone measured from the outer boundary of the building footprint (in feet).",
            "type": "number"
          },
          "zoneOuterDistanceM": {
            "description": "Outer boundary of the zone measured from the inner boundary of the zone (in meters).",
            "type": "number"
          },
          "zoneOuterDistanceFt": {
            "description": "Outer boundary of the zone measured from the inner boundary of the zone (in feet).",
            "type": "number"
          },
          "zoneGeometry": {
            "description": "The geometry of the zone, typically a ring or doughnut shape.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/Polygon"
              },
              {
                "$ref": "#/components/schemas/MultiPolygon"
              }
            ],
            "discriminator": {
              "propertyName": "type"
            }
          },
          "zoneAreaSqm": {
            "description": "Total area of zone in square meters.",
            "type": "number"
          },
          "zoneAreaSqft": {
            "description": "Total area of zone in square feet.",
            "type": "number"
          },
          "defensibleSpaceAreaSqm": {
            "description": "Area within the zone that is considered defensible space, measured in square meters.",
            "type": "number"
          },
          "defensibleSpaceAreaSqft": {
            "description": "Area within the zone that is considered defensible space, measured in square feet.",
            "type": "number"
          },
          "totalRiskObjectAreaSqm": {
            "description": "Total area occupied by all risk objects in the zone, in square meters.",
            "type": "number"
          },
          "totalRiskObjectAreaSqft": {
            "description": "Total area occupied by all risk objects in the zone, in square feet.",
            "type": "number"
          },
          "defensibleSpaceCoverageRatio": {
            "description": "Total area occupied by defensible space with respect to the total zone area.",
            "type": "number"
          },
          "totalRiskObjectCoverageRatio": {
            "description": "Ratio of risk object area to total zone area.",
            "type": "number"
          },
          "riskObjects": {
            "description": "List of risk objects detected in the zone.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ZoneRiskObject"
            }
          }
        }
      },
      "ZoneRiskObject": {
        "type": "object",
        "description": "Risk object feature class identified within the zone.",
        "required": [
          "classId",
          "description",
          "geometry",
          "areaSqm",
          "areaSqft",
          "ratio"
        ],
        "properties": {
          "classId": {
            "description": "External feaure class ID.",
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "geometry": {
            "description": "The geometry of the risk object.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/Polygon"
              },
              {
                "$ref": "#/components/schemas/MultiPolygon"
              }
            ],
            "discriminator": {
              "propertyName": "type"
            }
          },
          "areaSqm": {
            "description": "Total coverage area of the risk feature class in the zone in square meters.",
            "type": "number"
          },
          "areaSqft": {
            "description": "Total coverage area of the risk feature class in the zone in square feet.",
            "type": "number"
          },
          "ratio": {
            "description": "Ratio of coverage risk feature class with respect to the zone area.",
            "type": "number"
          }
        }
      },
      "HurricaneScore": {
        "type": "object",
        "description": "Provides information about hurricane vulnerability score, probability and risk factor.",
        "properties": {
          "skipped": {
            "description": "Indicates that the processing for hurricane score have been skipped. When this happens, the rest of the fields are omitted.\nThis usually occurs either when the buffer zones, when applied, extend beyond the resource boundary.\n\nThis field is omitted when processing was not skipped.\n",
            "type": "boolean"
          },
          "vulnerabilityScore": {
            "type": "integer",
            "description": "A 1-5 score representing how well protected the structure is to withstand hurricane force winds,\n5 being best protection and 1 being the worst protection / most vulnerable.\n"
          },
          "vulnerabilityProbability": {
            "type": "number",
            "description": "The probability that the building will be damaged if impacted by hurricane force winds.\n"
          },
          "vulnerabilityRateFactor": {
            "type": "number",
            "description": "The rate we have filed with states that can be used to adjust premium up or down based on the hurricane vulnerability (so a 1.55 for a hurricane vulnerability score of 1 means the insurer can charge 55% more premium due to this score).\n"
          },
          "femaAnnualHurricaneFrequency": {
            "type": "number",
            "description": "Annualized average of hurricane events for the census tract the building is located in, according to the FEMA National Risk Index model.\nOnly available for US region.\n"
          },
          "femaVersion": {
            "type": "string",
            "description": "The version of the FEMA model from which the data was taken.\n"
          },
          "modelInputFeatures": {
            "$ref": "#/components/schemas/HurricaneModelInputFeatures"
          }
        }
      },
      "HurricaneModelInputFeatures": {
        "type": "object",
        "description": "The inputs provided to the hurricane model to calculate scores.\n",
        "properties": {
          "defensibleSpaceWeightedCoverage": {
            "type": "number",
            "description": "Weighted average of defensible space coverage."
          },
          "shinglePresent": {
            "type": "integer",
            "description": "Represents if asphalt shingles are detected."
          },
          "hipPresent": {
            "type": "integer",
            "description": "Represents if hip roof is detected."
          },
          "flatPresent": {
            "type": "integer",
            "description": "Represents if asphalt shingles are present."
          },
          "roofStainingRatio": {
            "type": "number",
            "description": "Ratio of roof covered by staining."
          },
          "roofRustingRatio": {
            "type": "number",
            "description": "Ratio of roof covered by rust."
          },
          "wornShinglesRatio": {
            "type": "number",
            "description": "Ratio of roof covered by worn shingles."
          },
          "missingRoofTileOrShingleRatio": {
            "type": "number",
            "description": "Ratio of roof covered by missing tiles or shingles."
          },
          "treeOverhangRatio": {
            "type": "number",
            "description": "Ratio of roof covered by tree overhang."
          },
          "roofPatchingRatio": {
            "type": "number",
            "description": "Ratio of roof covered by patching."
          }
        }
      },
      "WindScore": {
        "title": "Wind score",
        "type": "object",
        "properties": {
          "skipped": {
            "description": "Indicates that the processing for wind score has been skipped. When this happens, the rest of the fields are omitted.\nThis usually occurs either when the buffer zones, when applied, extend beyond the resource boundary.\n\nThis field is omitted when processing was not skipped.\n",
            "type": "boolean"
          },
          "vulnerabilityScore": {
            "type": "integer",
            "description": "Discrete value 1–5 representing how well protected the structure is to withstand wind where 1 is the most vulnerable, and 5 is the least vulnerable.\n"
          },
          "vulnerabilityProbability": {
            "type": "number",
            "description": "Raw model probability that the building will be damaged if impacted by wind. This value is binned into 1-5 wind vulnerability probability score.\n"
          },
          "vulnerabilityRateFactor": {
            "type": "number",
            "description": "Filed rate factor derived from the wind vulnerability score. This value can be used as a rate multiplier to adjust premiums up or down based on building susceptibility to wind damage.\n"
          },
          "riskScore": {
            "type": "integer",
            "description": "Combination of wind vulnerability score and FEMA annual wind frequency where 1 is the most likely to experience a wind claim, and 5 is the least likely to experience a wind claim.\nOnly available for US region.\n"
          },
          "riskRateFactor": {
            "type": "number",
            "description": "Filed rate factor derived from the wind risk score. This value can be used as a rate multiplier to adjust premiums up or down based on building likelihood of wind claim.\nOnly available for US region.\n"
          },
          "femaAnnualWindFrequency": {
            "type": "number",
            "description": "Annualized average of strong wind events for the census tract the building is located in, according to the FEMA National Risk Index model.\nOnly available for US region.\n"
          },
          "femaVersion": {
            "type": "string",
            "description": "The version of the FEMA model from which the data was taken.\n"
          },
          "modelInputFeatures": {
            "$ref": "#/components/schemas/WindModelInputFeatures"
          }
        }
      },
      "WindModelInputFeatures": {
        "title": "Wind model input features",
        "description": "The inputs provided to the wind model to calculate scores.\n",
        "type": "object",
        "properties": {
          "pitchedRoofPresent": {
            "type": "integer",
            "description": "Boolean: 1 if pitched roof detected.\n"
          },
          "metalPresent": {
            "type": "integer",
            "description": "Boolean: 1 if metal roof detected.\n"
          },
          "zone1RoofPresent": {
            "type": "integer",
            "description": "Boolean: 1 if roof detected in defensible space zone 1.\n"
          },
          "zone1or2RoofPresent": {
            "type": "integer",
            "description": "Boolean: 1 if roof detected in defensible space zone 1 or 2.\n"
          },
          "compromisedShinglesPresent": {
            "type": "integer",
            "description": "Boolean: 1 if compromised shingles detected.\n"
          },
          "logFootprintArea": {
            "type": "number",
            "description": "Log of footprint area.\n"
          },
          "logCompromisedStructure": {
            "type": "number",
            "description": "Log of sum of compromised structure features.\n"
          },
          "logStaining": {
            "type": "number",
            "description": "Log-transformed value of roof staining ratio.\n"
          }
        }
      },
      "HailScore": {
        "title": "Hail score",
        "type": "object",
        "properties": {
          "skipped": {
            "description": "Indicates that the processing for hail score has been skipped. When this happens, the rest of the fields are omitted.\nThis usually occurs either when the buffer zones, when applied, extend beyond the resource boundary.\n\nThis field is omitted when processing was not skipped.\n",
            "type": "boolean"
          },
          "vulnerabilityScore": {
            "type": "integer",
            "description": "Discrete value 1–5 representing how well protected the structure is to withstand hail where 1 is the most vulnerable, and 5 is the least vulnerable.\n"
          },
          "vulnerabilityProbability": {
            "type": "number",
            "description": "Raw model probability that the building will be damaged if impacted by hail. This value is binned into 1-5 hail vulnerability probability score.\n"
          },
          "vulnerabilityRateFactor": {
            "type": "number",
            "description": "Filed rate factor derived from the hail vulnerability score. This value can be used as a rate multiplier to adjust premiums up or down based on building susceptibility to hail damage.\n"
          },
          "riskScore": {
            "type": "integer",
            "description": "Combination of hail vulnerability score and FEMA annual hail frequency where 1 is the most likely to experience a hail claim, and 5 is the least likely to experience a hail claim.\nOnly available for US region.\n"
          },
          "riskRateFactor": {
            "type": "number",
            "description": "Filed rate factor derived from the hail risk score. This value can be used as a rate multiplier to adjust premiums up or down based on building likelihood of hail claim.\nOnly available for US region.\n"
          },
          "femaAnnualHailFrequency": {
            "type": "number",
            "description": "The average annual hail frequency for the census tract the building is located in, according to the FEMA National Risk Index model.\nOnly available for US region.\n"
          },
          "femaVersion": {
            "type": "string",
            "description": "The version of the FEMA model from which the data was taken.\n"
          },
          "modelInputFeatures": {
            "$ref": "#/components/schemas/HailModelInputFeatures"
          }
        }
      },
      "HailModelInputFeatures": {
        "title": "Hail model input features",
        "description": "Dictionary of model-ready features after transformations.\n",
        "type": "object",
        "properties": {
          "flatPresent": {
            "type": "integer",
            "description": "Boolean: 1 if flat roof detected.\n"
          },
          "shinglePresent": {
            "type": "integer",
            "description": "Boolean: 1 if shingle roof detected.\n"
          },
          "logStaining": {
            "type": "number",
            "description": "Log-transformed value of roof staining ratio.\n"
          },
          "logFootprintArea": {
            "type": "number",
            "description": "Log of footprint area.\n"
          }
        }
      },
      "WildfireScore": {
        "title": "Wildfire score",
        "type": "object",
        "properties": {
          "skipped": {
            "description": "Indicates that the processing for wildfire score has been skipped. When this happens, the rest of the fields are omitted.\nThis usually occurs either when the buffer zones, when applied, extend beyond the resource boundary.\n\nThis field is omitted when processing was not skipped.\n",
            "type": "boolean"
          },
          "vulnerabilityScore": {
            "type": "integer",
            "description": "Discrete value 1–5 representing how well protected the structure is to withstand wildfire where 1 is the most vulnerable, and 5 is the least vulnerable.\n"
          },
          "vulnerabilityProbability": {
            "type": "number",
            "description": "Raw model probability that the building will be damaged if impacted by wildfire. This value is binned into 1-5 wildfire vulnerability probability score.\n"
          },
          "vulnerabilityRateFactor": {
            "type": "number",
            "description": "Filed rate factor derived from the wildfire vulnerability score. This value can be used as a rate multiplier to adjust premiums up or down based on building susceptibility to wildfire damage.\n"
          },
          "femaAnnualWildfireFrequency": {
            "type": "number",
            "description": "The average annual wildfire frequency for the census tract the building is located in, according to the FEMA National Risk Index model. \nOnly available for US region.\n"
          },
          "femaVersion": {
            "type": "string",
            "description": "The version of the FEMA model from which the data was taken.\n"
          },
          "modelInputFeatures": {
            "$ref": "#/components/schemas/WildfireModelInputFeatures"
          }
        }
      },
      "WildfireModelInputFeatures": {
        "title": "Wildfire model input features",
        "description": "Dictionary of model-ready features after transformations.\n",
        "type": "object",
        "properties": {
          "fireResistantMaterialPresent": {
            "type": "integer",
            "description": "Boolean: 1 if fire resistant materials (e.g. clay tile) are present on the roof.\n"
          },
          "roofDebrisRatio": {
            "type": "number",
            "description": "Fraction of roof area with roof debris.\n"
          },
          "treeOverhangRatio": {
            "type": "number",
            "description": "Fraction of roof area with tree overhang.\n"
          },
          "roofRustingRatio": {
            "type": "number",
            "description": "Fraction of roof area with rusting metal.\n"
          },
          "roofWithTemporaryRepairRatio": {
            "type": "number",
            "description": "Fraction of roof area with temporary repairs (e.g. tarps, plywood).\n"
          },
          "indefensibleSpaceWeightedAverage": {
            "type": "number",
            "description": "1 - (Weighted average of defensible space ratio across zones).\n"
          },
          "yardDebrisWeightedAverage": {
            "type": "number",
            "description": "Weighted average of yard debris ratio across defensible space zones.\n"
          }
        }
      },
      "WindHailRiskScore": {
        "title": "Wind and hail risk score",
        "type": "object",
        "properties": {
          "skipped": {
            "description": "Indicates that the processing for wind and hail risk score has been skipped. When this happens, the rest of the fields are omitted.\nThis usually occurs either when the buffer zones, when applied, extend beyond the resource boundary.\n\nThis field is omitted when processing was not skipped.\n",
            "type": "boolean"
          },
          "riskScore": {
            "type": "integer",
            "description": "Combined risk score from wind and hail where 1 is the most likely to experience a wind or hail claim, and 5 is the least likely to experience a wind or hail claim.\nOnly available for US region.\n"
          },
          "riskRateFactor": {
            "type": "number",
            "description": "Filed rate factor derived from the wind and hail risk score. This value can be used as a rate multiplier to adjust premiums up or down based on building likelihood of wind or hail claim.\nOnly available for US region.\n"
          },
          "modelInputFeatures": {
            "$ref": "#/components/schemas/WindHailModelInputFeatures"
          }
        }
      },
      "WindHailModelInputFeatures": {
        "title": "Wind and hail model input features",
        "description": "The inputs provided to the wind and hail model to calculate scores.\n",
        "type": "object",
        "properties": {
          "windRiskScore": {
            "type": "integer",
            "description": "The wind risk score used as input to the combined wind and hail model.\n"
          },
          "hailRiskScore": {
            "type": "integer",
            "description": "The hail risk score used as input to the combined wind and hail model.\n"
          }
        }
      },
      "Error": {
        "title": "Error response",
        "type": "object",
        "description": "Error response.",
        "properties": {
          "code": {
            "type": "string",
            "description": "Error code"
          },
          "message": {
            "type": "string",
            "description": "Error message"
          }
        }
      }
    },
    "parameters": {
      "bulk": {
        "name": "bulk",
        "in": "query",
        "description": "Bulk determines whether if the request is part of a large batch of\nrequests, meaning requests will not be rate-limited.\n",
        "required": false,
        "schema": {
          "type": "boolean",
          "default": false
        }
      },
      "packs": {
        "name": "packs",
        "in": "query",
        "description": "Packs accepts a list of comma-separated product packs. This returns\nspecific features and attributes under the pack. The response will\nreturn all features and attributes that the user is entitled to if no\npacks are provided.\n\nIt cannot be used with the `classes` query parameter. This parameter is\nignored if used with an empty value.\n",
        "required": false,
        "schema": {
          "type": "string"
        },
        "example": "solar,pool,roof_char"
      },
      "classes": {
        "name": "classes",
        "in": "query",
        "description": "Classes accepts a list of comma-separated feature class IDs. Features\nclasses not requested will be filtered out of the response. The full\nlist of available feature classes can be obtained by using the\n`classes.json` endpoint (Feature class IDs are in the `id` field for\nclasses of type `Feature`). The response will include all feature\nclasses that the user is entitled to if the query parameter is not\nspecified.\n\nIt cannot be used with the `packs` query parameter. This parameter is\nignored if used with an empty value.\n",
        "required": false,
        "schema": {
          "type": "string"
        },
        "example": "2e0bd9e3-3b67-4990-84dc-1b4812fdd02b,0339726f-081e-5a6e-b9a9-42d95c1b5c8a"
      },
      "optionalPolygon": {
        "name": "polygon",
        "in": "query",
        "description": "Represents the Area Of Interest (AOI) to query against. It is depicted\nby a set of points (longitude/latitude pairs) where the first and last\npoint must be the same. The polygon must not self-intersect.\n\nIt cannot be used with the address geocoding parameters\n(`streetAddress`, `city`, `state`, `zip` and `country`), or with an\n`aoi` defined in the request body for the HTTP POST variant endpoints.\n\nMust be omitted when TXv3 token authorization is used.\n",
        "required": false,
        "example": "-96.15764,41.22445,-96.15716,41.22444,-96.15716,41.22461,-96.15764,41.22461,-96.15764,41.22445",
        "schema": {
          "type": "string"
        }
      },
      "streetAddress": {
        "name": "streetAddress",
        "in": "query",
        "description": "The street address for a geocoded request. Should consist of the street\nnumber, street name, and street type.\n\nIt cannot be used with the `polygon` query parameter.\n\nMust be omitted when TXv3 token authorization is used.\n",
        "required": false,
        "example": "422 Towne Park Trl",
        "schema": {
          "type": "string"
        }
      },
      "city": {
        "name": "city",
        "in": "query",
        "description": "The city, suburb, or locality for a geocoded request.\n\nIt cannot be used with the `polygon` query parameter.\n\nMust be omitted when TXv3 token authorization is used.\n",
        "required": false,
        "example": "Austin",
        "schema": {
          "type": "string"
        }
      },
      "state": {
        "name": "state",
        "in": "query",
        "description": "The two-letter state code for a geocoded request.\n\nIt cannot be used with the `polygon` query parameter.\n\nMust be omitted when TXv3 token authorization is used.\n",
        "required": false,
        "example": "TX",
        "schema": {
          "type": "string"
        }
      },
      "zip": {
        "name": "zip",
        "in": "query",
        "description": "The five-digit ZIP code or nine-digit ZIP+4 code for US addresses or the\nfour-digit postal code for AU addresses for a geocoded request.\n\nIt cannot be used with the `polygon` query parameter.\n\nMust be omitted when TXv3 token authorization is used.\n",
        "required": false,
        "example": "78751",
        "schema": {
          "type": "string"
        }
      },
      "country": {
        "name": "country",
        "in": "query",
        "description": "The two-letter country code for the geocoded request. Only supports US\nand AU. Defaults to US when geocoding is used without supplying the\ncountry code.\n\nIt cannot be used with the `polygon` query parameter.\n\nMust be omitted when TXv3 token authorization is used.\n",
        "required": false,
        "example": "US",
        "schema": {
          "type": "string",
          "enum": [
            "US",
            "AU"
          ]
        }
      },
      "surveyResourceId": {
        "name": "surveyResourceId",
        "in": "path",
        "description": "The ID of the survey resource to fetch AI data from.",
        "required": true,
        "example": "6c6abf86-1727-4472-8e91-7defb3c7ae3c",
        "schema": {
          "type": "string"
        }
      },
      "reference": {
        "name": "X-Nearmap-Ext-Reference",
        "in": "header",
        "description": "Allows a reference string to be echoed back opaquely in the body of the response.",
        "required": false,
        "example": "123456",
        "schema": {
          "type": "string"
        }
      },
      "alpha": {
        "name": "alpha",
        "in": "query",
        "description": "When set to true, causes alpha classes to be included in results.\n",
        "required": false,
        "schema": {
          "type": "boolean",
          "default": false
        }
      },
      "beta": {
        "name": "beta",
        "in": "query",
        "description": "When set to true, causes beta classes to be included in results.\n",
        "required": false,
        "schema": {
          "type": "boolean",
          "default": false
        }
      },
      "parcelMode": {
        "name": "parcelMode",
        "in": "query",
        "required": false,
        "description": "When set to true, the API will treat the input AOI (or address) as a\nparcel boundary. In this mode, the API will mark the features that are\nconsidered to be part of the parcel with the `belongsToParcel` flag. \nFeatures that are part of single-parcel structures will be returned in\ntheir entirety, while features that are part of multi-parcel structures \nwill be clipped to the parcel boundary. In this case, the `clippedGeometry`\nfield will be added to the feature containing the geometry clipped to \nthe parcel boundary. \n        \nIn this mode, supplementary data calculations will also take into account\nthe parcel boundary and use the clipped geometry.\n\nParcel mode is only supported for gen6 system versions. If the resource\ndoes not resolve to a gen6 resource, the API will not include parcel\nmode data in the response and will not calculate supplementary data\nusing the clipped geometry.\n\nSee: https://developer.nearmap.com/docs/parcel-mode-user-guide for a technical\nguide of the parcel mode algorithms.\n",
        "schema": {
          "type": "boolean",
          "default": false
        }
      },
      "includeSuppData": {
        "name": "include",
        "in": "query",
        "required": false,
        "description": "A comma-separated list of supplementary data to include in the response.\nThe currently supported values are: `roofSpotlightIndex`,\n`roofConditionConfidenceStats`, `damage`, `defensibleSpace`, `hurricaneScore`, `windScore`,\n`hailScore`, `wildfireScore`, `windHailRiskScore`, or `all` for all types of supplementary \ndata available given the user's entitlements and request type (bulk requests may support \na subset of supplementary data sources). \n\nInclusion of supplementary data is only supported for gen6 system\nversions. If the resource does not resolve to a gen6 resource, the API will\nnot include supplementary data in the response. \n",
        "schema": {
          "type": "string",
          "default": ""
        },
        "example": "roofSpotlightIndex,roofConditionConfidenceStats,damage,defensibleSpace,hurricaneScore,windScore"
      },
      "damageModelVersion": {
        "name": "damageModelVersion",
        "in": "query",
        "required": false,
        "description": "When set, the API will use the specified damage model version\nwhen calculating damage supplementary data. If not set, the latest\ndamage model version available will be used.\n\nCurrently supported model versions are: `B.0` and `B.1` (latest).\n",
        "schema": {
          "type": "string"
        },
        "example": "B.1"
      }
    },
    "responses": {
      "features_ok": {
        "description": "OK",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/FeatureResult"
            }
          }
        }
      },
      "features_bad_request": {
        "description": "Bad Request. There was a problem with the request parameters.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "Invalid polygon": {
                "value": {
                  "code": "INVALID_POLYGON",
                  "message": "Input polygon must be a valid sequence of x,y coordinates."
                }
              },
              "Invalid since date": {
                "value": {
                  "code": "INVALID_SINCE",
                  "message": "Date must be in YYYY-MM-DD format."
                }
              },
              "Invalid until date": {
                "value": {
                  "code": "INVALID_UNTIL",
                  "message": "Date must be in YYYY-MM-DD format."
                }
              },
              "Invalid date range": {
                "value": {
                  "code": "INVALID_DATE_RANGE",
                  "message": "Since date must be before until date."
                }
              },
              "Both polygon and address set": {
                "value": {
                  "code": "BOTH_POLYGON_AND_ADDRESS_SET",
                  "message": "Only one of 'polygon' or address query parameters may be set, not both."
                }
              },
              "Neither polygon nor address set": {
                "value": {
                  "code": "NEITHER_POLYGON_NOR_ADDRESS_SET",
                  "message": "No polygon or address query parameters provided. At least a polygon or address must be set."
                }
              },
              "Invalid address": {
                "value": {
                  "code": "INVALID_ADDRESS",
                  "message": "All address fields must be set to valid non-empty values."
                }
              },
              "Unknown pack": {
                "value": {
                  "code": "UNKNOWN_PACK",
                  "message": "foo is an unknown product pack"
                }
              },
              "Packs and classes": {
                "value": {
                  "code": "PACKS_AND_CLASSES",
                  "message": "Only one of 'packs' or 'classes' query parameters may be set, not both."
                }
              },
              "AOI exceeds maximum size": {
                "value": {
                  "code": "AOI_EXCEEDS_MAX_SIZE",
                  "message": "AOI exceeds maximum size."
                }
              },
              "Parcel exceeds maximum size": {
                "value": {
                  "code": "PARCEL_EXCEEDS_MAX_SIZE",
                  "message": "Address resolves to a parcel that exceeds maximum size."
                }
              },
              "Unknown feature class": {
                "value": {
                  "code": "UNKNOWN_CLASS",
                  "message": "Unknown class foo."
                }
              },
              "Polygon too complex": {
                "value": {
                  "code": "POLYGON_TOO_COMPLEX",
                  "message": "Polygon or sum of Polygons must be constructed by at most 5000 points."
                }
              },
              "Parcel too complex": {
                "value": {
                  "code": "PARCEL_TOO_COMPLEX",
                  "message": "Address resolves to a parcel geometry that is too complex to serve."
                }
              }
            }
          }
        }
      },
      "generic_unauthorized": {
        "description": "Unauthorized",
        "content": {
          "text/plain": {
            "examples": {
              "Unauthorized": {
                "value": "Unauthorized"
              }
            }
          }
        }
      },
      "generic_forbidden": {
        "description": "Forbidden",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "Auth failure": {
                "value": {
                  "message": "Forbidden due to auth failure"
                }
              }
            }
          }
        }
      },
      "features_not_found": {
        "description": "Not Found. No data is available matching the request criteria.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "No survey resources found": {
                "value": {
                  "message": "no survey resources found"
                }
              }
            }
          }
        }
      }
    }
  }
}
```