From 2d6045ebccf221ab0ef10a28a1689fe0c4601a66 Mon Sep 17 00:00:00 2001 From: Daniel Liu Date: Wed, 22 Jul 2026 11:36:17 -0700 Subject: [PATCH] Run pipenv run ./gen to update the models --- pyproject.toml | 2 +- src/neris_api_client/models.py | 489 ++++++++++++++++++++++----------- 2 files changed, 327 insertions(+), 164 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 967a5e6..3411cd4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "neris_api_client" -version = "1.5.4" +version = "1.5.5" authors = [ { name="Ben Coleman", email="ben.coleman@ul.org" }, { name="Joseph Pagani", email="joseph.pagani@ul.org"}, diff --git a/src/neris_api_client/models.py b/src/neris_api_client/models.py index 88f4638..c9d14f9 100644 --- a/src/neris_api_client/models.py +++ b/src/neris_api_client/models.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: openapi.json -# timestamp: 2026-06-25T22:57:56+00:00 +# timestamp: 2026-07-22T18:30:10+00:00 from __future__ import annotations @@ -332,6 +332,24 @@ class BodyUpsertLogoEntityNerisIdEntityLogoPut(BaseModel): ) +class BuildingInfo(BaseModel): + primary_building_area: Optional[int] = Field( + None, + description="The primary building footprint area in square feet", + title="Primary Building Area", + ) + primary_building_height_avg: Optional[int] = Field( + None, + description="The primary building average height in feet", + title="Primary Building Height Avg", + ) + secondary_building_count: Optional[int] = Field( + None, + description="The number of secondary buildings", + title="Secondary Building Count", + ) + + class Type(Enum): FF = "FF" NONFF = "NONFF" @@ -552,12 +570,6 @@ class CrossStreetResponse(BaseModel): examples=['"A" in "A19 Calle 117, Toa Alta, PR"'], title="Number Prefix", ) - number: Optional[int] = Field( - None, - description="Integer identifier of a location along a thoroughfare or within a defined community.", - examples=['"123" in "123 Main Street"'], - title="Number", - ) number_suffix: Optional[constr(min_length=1, max_length=255)] = Field( None, description="Identifier in the portion of the complete address number that follows the integer Address Number in order to further specify a location along a thoroughfare or within a defined area.", @@ -576,6 +588,12 @@ class CrossStreetResponse(BaseModel): examples=['"Milepost 1303" in "Milepost 1303, Alaska Highway"'], title="Distance Marker", ) + number: Optional[int] = Field( + None, + description="Integer identifier of a location along a thoroughfare or within a defined community.", + examples=['"123" in "123 Main Street"'], + title="Number", + ) street_prefix_modifier: Optional[constr(min_length=1, max_length=255)] = Field( None, description="Word or phrase that precedes and modifies the Street Name element but is separated from it by a Street Name Pre Type or a Street Name Pre Directional or both.", @@ -1713,6 +1731,15 @@ class IncidentAnalysisBaseResponse(BaseModel): ) +class Status(Enum): + APPROVED = "APPROVED" + DELETED = "DELETED" + FAILED = "FAILED" + PENDING_APPROVAL = "PENDING_APPROVAL" + REJECTED = "REJECTED" + SUBMITTED = "SUBMITTED" + + class IncidentAnalysisStatusResponse(BaseModel): last_modified: AwareDatetime = Field( ..., @@ -1725,16 +1752,16 @@ class IncidentAnalysisStatusResponse(BaseModel): ], title="Last Modified", ) + status: Status = Field( + ..., + description="Status of the incident analysis in the administrative approval process.", + title="Status", + ) created_by: UUID = Field( ..., description="That account that created or last modified the incident analysis record.", title="Created By", ) - status: str = Field( - ..., - description="Status of the incident analysis in the administrative approval process.", - title="Status", - ) class IncidentAnalysisUpdatedResponse(BaseModel): @@ -2116,7 +2143,7 @@ class IncidentFilterType(Enum): UNDETERMINED = "UNDETERMINED" -class Status(Enum): +class Status1(Enum): APPROVED = "APPROVED" DELETED = "DELETED" FAILED = "FAILED" @@ -2156,7 +2183,7 @@ class IncidentHistoryItemResponse(BaseModel): description="The client id of the integration if the account was an integration account", title="Client Id", ) - status: Status = Field( + status: Status1 = Field( ..., description="Status of the incident in the administrativie approval process.", title="Status", @@ -2197,7 +2224,7 @@ class IncidentStatusResponse(BaseModel): description="That account that created or last modified the incident record.", title="Created By", ) - status: Status = Field( + status: Status1 = Field( ..., description="Status of the incident in the administrativie approval process.", title="Status", @@ -5496,6 +5523,10 @@ class TypeAutoMakeValue(Enum): ACURA = "ACURA" AGCO = "AGCO" ALFA_ROMEO = "ALFA_ROMEO" + ALPINA = "ALPINA" + ALPINE = "ALPINE" + AMC = "AMC" + ARIEL = "ARIEL" ASTON_MARTIN = "ASTON_MARTIN" AUDI = "AUDI" BENTLEY_MOTORS = "BENTLEY_MOTORS" @@ -5503,34 +5534,57 @@ class TypeAutoMakeValue(Enum): BOLLINGER_MOTORS = "BOLLINGER_MOTORS" BUGATTI = "BUGATTI" BUICK = "BUICK" + BYD = "BYD" CADILLAC = "CADILLAC" CANOO = "CANOO" CASE_IH = "CASE_IH" + CATERHAM = "CATERHAM" CHEVROLET = "CHEVROLET" CHRYSLER = "CHRYSLER" + CITROEN = "CITROEN" CLAAS = "CLAAS" + CUPRA = "CUPRA" + CZINGER = "CZINGER" + DACIA = "DACIA" + DAEWOO = "DAEWOO" + DAF = "DAF" + DAIHATSU = "DAIHATSU" + DATSUN = "DATSUN" DELOREAN_MOTOR_COMPANY = "DELOREAN_MOTOR_COMPANY" DEUTZ_FAHR = "DEUTZ_FAHR" DODGE = "DODGE" + DONKERVOORT = "DONKERVOORT" + EAGLE = "EAGLE" + FARADAY_FUTURE = "FARADAY_FUTURE" FENDT = "FENDT" FERRARI = "FERRARI" FIAT = "FIAT" FISKER = "FISKER" FORD = "FORD" + FREIGHTLINER = "FREIGHTLINER" GENESIS = "GENESIS" + GEO = "GEO" GMC = "GMC" + HARLEY_DAVIDSON = "HARLEY_DAVIDSON" + HENNESSEY = "HENNESSEY" HONDA = "HONDA" HUMMER = "HUMMER" HYUNDAI = "HYUNDAI" INEOS = "INEOS" INFINITI = "INFINITI" + INTERNATIONAL = "INTERNATIONAL" + ISUZU = "ISUZU" + IVECO = "IVECO" JAGUAR = "JAGUAR" JEEP = "JEEP" JOHN_DEERE = "JOHN_DEERE" KARMA = "KARMA" KIA = "KIA" + KOENIGSEGG = "KOENIGSEGG" KUBOTA = "KUBOTA" + LADA = "LADA" LAMBORGHINI = "LAMBORGHINI" + LANCIA = "LANCIA" LAND_ROVER = "LAND_ROVER" LEXUS = "LEXUS" LINCOLN = "LINCOLN" @@ -5538,6 +5592,7 @@ class TypeAutoMakeValue(Enum): LOTUS = "LOTUS" LUCID_MOTORS = "LUCID_MOTORS" MAHINDRA_AND_MAHINDRA = "MAHINDRA_AND_MAHINDRA" + MAN = "MAN" MASERATI = "MASERATI" MASSEY_FERGUSON = "MASSEY_FERGUSON" MAYBACH = "MAYBACH" @@ -5546,30 +5601,51 @@ class TypeAutoMakeValue(Enum): MERCEDES_AMG = "MERCEDES_AMG" MERCEDES_BENZ = "MERCEDES_BENZ" MERCURY = "MERCURY" + MG = "MG" MINI = "MINI" MITSUBISHI = "MITSUBISHI" + MORGAN = "MORGAN" + MULLEN = "MULLEN" NEW_HOLLAND = "NEW_HOLLAND" NISSAN = "NISSAN" OLDSMOBILE = "OLDSMOBILE" + OPEL = "OPEL" OTHER = "OTHER" + PAGANI = "PAGANI" + PEUGEOT = "PEUGEOT" PLYMOUTH = "PLYMOUTH" + POLARIS = "POLARIS" POLESTAR = "POLESTAR" PONTIAC = "PONTIAC" PORSCHE = "PORSCHE" + PROTON = "PROTON" RAM = "RAM" + RENAULT = "RENAULT" + RIMAC = "RIMAC" RIVIAN = "RIVIAN" ROLLS_ROYCE = "ROLLS_ROYCE" SAAB = "SAAB" + SALEEN = "SALEEN" SATURN = "SATURN" + SCANIA = "SCANIA" SCION = "SCION" + SEAT = "SEAT" + SKODA = "SKODA" SMART = "SMART" + SPYKER = "SPYKER" + SRT = "SRT" + SSC_NORTH_AMERICA = "SSC_NORTH_AMERICA" SUBARU = "SUBARU" SUZUKI = "SUZUKI" TESLA = "TESLA" TOYOTA = "TOYOTA" + TVR = "TVR" + VAUXHALL = "VAUXHALL" VINFAST = "VINFAST" VOLKSWAGEN = "VOLKSWAGEN" VOLVO = "VOLVO" + YAMAHA = "YAMAHA" + YUGO = "YUGO" class TypeBatteryCellValue(Enum): @@ -6242,6 +6318,11 @@ class TypeHumanFactorsValue(Enum): PHYSICAL_DISABILITY = "PHYSICAL_DISABILITY" +class TypeIncidentAnalysisStatusPayloadValue(Enum): + APPROVED = "APPROVED" + REJECTED = "REJECTED" + + class TypeIncidentComplexityValue(Enum): ICS_TYPE_1 = "ICS_TYPE_1" ICS_TYPE_2 = "ICS_TYPE_2" @@ -8854,6 +8935,11 @@ class WeatherResponse(BaseModel): ) +class YesOrNo(Enum): + Y = "Y" + N = "N" + + class FieldPatchCommentActionProperties(BaseModel): model_config = ConfigDict( extra="forbid", @@ -9719,6 +9805,39 @@ class AppendOtherPowergenHazardAction(BaseModel): value: OtherPowergenHazardPayload +class AssessmentInfo(BaseModel): + primary_year_built: Optional[int] = Field( + None, + description="The year the primary structure on the property was built", + title="Primary Year Built", + ) + primary_zoning: Optional[str] = Field( + None, + description="Actual city zoning, unique to each incorporated area as reported to the County. Please note that it is not always current, nor reported", + examples=["RP", "NT"], + title="Primary Zoning", + ) + primary_use: Optional[str] = Field( + None, + description="Description of the Standardized Land Use Code", + examples=["OFFICE_BUILDING"], + title="Primary Use", + ) + primary_owner_occupied: Optional[YesOrNo] = Field( + None, description="Indicates if the property is occupied by the owner" + ) + primary_assessment_land: Optional[float] = Field( + None, + description="The assessed land value in dollars", + title="Primary Assessment Land", + ) + computed_loss: Optional[int] = Field( + None, + description="The estimated, computed value lost due to structure fire based on damage type. Value is in dollars.", + title="Computed Loss", + ) + + class BatteryPayload(BaseModel): model_config = ConfigDict( extra="forbid", @@ -9946,12 +10065,6 @@ class CrossStreetPayload(BaseModel): examples=['"A" in "A19 Calle 117, Toa Alta, PR"'], title="Number Prefix", ) - number: Optional[int] = Field( - None, - description="Integer identifier of a location along a thoroughfare or within a defined community.", - examples=['"123" in "123 Main Street"'], - title="Number", - ) number_suffix: Optional[constr(min_length=1, max_length=255)] = Field( None, description="Identifier in the portion of the complete address number that follows the integer Address Number in order to further specify a location along a thoroughfare or within a defined area.", @@ -9970,6 +10083,12 @@ class CrossStreetPayload(BaseModel): examples=['"Milepost 1303" in "Milepost 1303, Alaska Highway"'], title="Distance Marker", ) + number: Optional[conint(ge=0, le=1000000)] = Field( + None, + description="Integer identifier of a location along a thoroughfare or within a defined community.", + examples=['"123" in "123 Main Street"'], + title="Number", + ) street_prefix_modifier: Optional[constr(min_length=1, max_length=255)] = Field( None, description="Word or phrase that precedes and modifies the Street Name element but is separated from it by a Street Name Pre Type or a Street Name Pre Directional or both.", @@ -10632,12 +10751,6 @@ class GeocodedLocationResponse(BaseModel): examples=['"A" in "A19 Calle 117, Toa Alta, PR"'], title="Number Prefix", ) - number: Optional[int] = Field( - None, - description="Integer identifier of a location along a thoroughfare or within a defined community.", - examples=['"123" in "123 Main Street"'], - title="Number", - ) number_suffix: Optional[constr(min_length=1, max_length=255)] = Field( None, description="Identifier in the portion of the complete address number that follows the integer Address Number in order to further specify a location along a thoroughfare or within a defined area.", @@ -10656,6 +10769,12 @@ class GeocodedLocationResponse(BaseModel): examples=['"Milepost 1303" in "Milepost 1303, Alaska Highway"'], title="Distance Marker", ) + number: Optional[int] = Field( + None, + description="Integer identifier of a location along a thoroughfare or within a defined community.", + examples=['"123" in "123 Main Street"'], + title="Number", + ) structure: Optional[constr(min_length=1, max_length=255)] = Field( None, description="A built feature which has a vertical dimension, including both conventional buildings which have walls, doors, and a roof, and other kinds of infrastructure such as cell towers, transformer stations, fuel tanks, and so on. ", @@ -10862,6 +10981,16 @@ class Vehicles1(RootModel[Union[VehicleAutomobileResponse, VehicleOtherResponse] root: Union[VehicleAutomobileResponse, VehicleOtherResponse] = Field(..., discriminator="type") +class IncidentAnalysisStatusPayload(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + status: TypeIncidentAnalysisStatusPayloadValue = Field( + ..., + description="Status of the incident analysis in the administrative approval process.", + ) + + class IncidentCreatedResponse(BaseModel): neris_id: constr(pattern=r"^FD\d{8}\|[\w\-\:]+\|\d{10}$") = Field( ..., @@ -11169,12 +11298,6 @@ class LocationPayload(BaseModel): examples=['"A" in "A19 Calle 117, Toa Alta, PR"'], title="Number Prefix", ) - number: Optional[int] = Field( - None, - description="Integer identifier of a location along a thoroughfare or within a defined community.", - examples=['"123" in "123 Main Street"'], - title="Number", - ) number_suffix: Optional[constr(min_length=1, max_length=255)] = Field( None, description="Identifier in the portion of the complete address number that follows the integer Address Number in order to further specify a location along a thoroughfare or within a defined area.", @@ -11193,6 +11316,12 @@ class LocationPayload(BaseModel): examples=['"Milepost 1303" in "Milepost 1303, Alaska Highway"'], title="Distance Marker", ) + number: Optional[conint(ge=0, le=1000000)] = Field( + None, + description="Integer identifier of a location along a thoroughfare or within a defined community.", + examples=['"123" in "123 Main Street"'], + title="Number", + ) structure: Optional[constr(min_length=1, max_length=255)] = Field( None, description="A built feature which has a vertical dimension, including both conventional buildings which have walls, doors, and a roof, and other kinds of infrastructure such as cell towers, transformer stations, fuel tanks, and so on. ", @@ -11420,12 +11549,6 @@ class LocationResponse(BaseModel): examples=['"A" in "A19 Calle 117, Toa Alta, PR"'], title="Number Prefix", ) - number: Optional[int] = Field( - None, - description="Integer identifier of a location along a thoroughfare or within a defined community.", - examples=['"123" in "123 Main Street"'], - title="Number", - ) number_suffix: Optional[constr(min_length=1, max_length=255)] = Field( None, description="Identifier in the portion of the complete address number that follows the integer Address Number in order to further specify a location along a thoroughfare or within a defined area.", @@ -11444,6 +11567,12 @@ class LocationResponse(BaseModel): examples=['"Milepost 1303" in "Milepost 1303, Alaska Highway"'], title="Distance Marker", ) + number: Optional[int] = Field( + None, + description="Integer identifier of a location along a thoroughfare or within a defined community.", + examples=['"123" in "123 Main Street"'], + title="Number", + ) structure: Optional[constr(min_length=1, max_length=255)] = Field( None, description="A built feature which has a vertical dimension, including both conventional buildings which have walls, doors, and a roof, and other kinds of infrastructure such as cell towers, transformer stations, fuel tanks, and so on. ", @@ -11695,6 +11824,13 @@ class OutsideFirePayload(BaseModel): ) +class ParcelSummary(BaseModel): + building: Optional[BuildingInfo] = Field( + None, description="Building information for the parcel" + ) + assessment: Optional[AssessmentInfo] = Field(None, description="Assessment for the parcel") + + class PatchCommentAction(BaseModel): model_config = ConfigDict( extra="forbid", @@ -13746,44 +13882,6 @@ class ExposurePayload(BaseModel): ) -class ExposureResponse(BaseModel): - neris_uid: Optional[int] = Field( - None, description="The NERIS unique identifier for the item.", title="Neris Uid" - ) - last_modified: AwareDatetime = Field( - ..., - description="The date and time the top-level item was created or updated in the system.", - examples=[ - "2024-06-13T21:14:02.162497-07:00", - "1718338442.162497", - 1718338442.162497, - 1718338442, - ], - title="Last Modified", - ) - people_present: Optional[bool] = Field( - None, - description="Whether people were present at the time of the incident.", - title="People Present", - ) - displacement_count: Optional[int] = Field( - None, - description=" Number of people/businesses displaced.", - title="Displacement Count", - ) - location_detail: Union[ExternalExposureResponse, InternalExposureResponse] = Field( - ..., title="Location Detail" - ) - location: LocationResponse - location_use: Optional[LocationUseResponse] = None - damage_type: str = Field(..., title="Damage Type") - point: Optional[Union[GeoPoint, GeoMultipolygon, str]] = Field(None, title="Point") - polygon: Optional[Union[GeoPoint, GeoMultipolygon, str]] = Field(None, title="Polygon") - displacement_causes: Optional[List[str]] = Field( - None, description="Causes of displacement.", title="Displacement Causes" - ) - - class FfRescuePayload(BaseModel): model_config = ConfigDict( extra="forbid", @@ -13965,92 +14063,6 @@ class IncidentBaseResponse(BaseModel): polygon: Optional[Union[GeoPoint, GeoMultipolygon, str]] = Field(None, title="Polygon") -class IncidentResponse(BaseModel): - neris_id: constr(pattern=r"^FD\d{8}\|[\w\-\:]+\|\d{10}$") = Field( - ..., - description="NERIS ID of the incident. This is comprised of the department NERIS ID concatenated with `dispatch.incident_number` and the epoch time of `dispatch.call_create` in the record as initially submitted. An incident's NERIS_ID is immutable, and so should not be relied upon for extraction of `incident_number` or `call_create`, as these attributes could have been updated.", - examples=[ - "FD12345678|abc123xyz|1729023498", - "FD24027334|incident42:f-tiw|1729023498", - "FD12345678|0457812893477|1729023498", - ], - title="Neris Id", - ) - last_modified: AwareDatetime = Field( - ..., - description="The date and time the top-level item was created or updated in the system.", - examples=[ - "2024-06-13T21:14:02.162497-07:00", - "1718338442.162497", - 1718338442.162497, - 1718338442, - ], - title="Last Modified", - ) - department: Optional[NerisApiIncidentModelsDepartmentTimeZoneResponse] = None - submitter_account_type: TypeAccountValue - base: IncidentBaseResponse - incident_types: List[IncidentTypeResponse] = Field( - ..., - description="\n - Incidents with a `FIRE` type require all fire suppression and alarm modules: smoke_alarm, fire_alarm, other_alarm, fire_suppression.\n - Incidents with a `FIRE||STRUCTURE_FIRE||CONFINED_COOKING_APPLIANCE_FIRE` type require the cooking_fire_suppression module.\n ", - title="Incident Types", - ) - incident_status: IncidentStatusResponse - special_modifiers: Optional[List[SpecialModifierResponse]] = Field( - None, title="Special Modifiers" - ) - aids: Optional[List[AidResponse]] = Field(None, title="Aids") - nonfd_aids: Optional[List[NonfdAidResponse]] = Field(None, title="Nonfd Aids") - actions_tactics: Optional[ActionTacticResponse] = None - dispatch: DispatchResponse - tactic_timestamps: Optional[IncidentTacticTimestampsResponse] = None - unit_responses: Optional[List[UnitResponseResponse]] = Field(None, title="Unit Responses") - exposures: Optional[List[ExposureResponse]] = Field(None, title="Exposures") - casualty_rescues: Optional[List[CasualtyRescueResponse]] = Field(None, title="Casualty Rescues") - fire_detail: Optional[FireResponse] = Field( - None, - description="Fire module. Only possible if at least one `FIRE` incident type is present", - ) - hazsit_detail: Optional[HazsitResponse] = Field( - None, - description="Hazsit module. Only possible if at least one `HAZSIT` incident type is present", - ) - medical_details: Optional[List[MedicalResponse]] = Field( - None, - description="Medical module(s). Only possible if at least one `MEDICAL` incident type is present", - title="Medical Details", - ) - smoke_alarm: Optional[SmokeAlarmResponse] = None - fire_alarm: Optional[FireAlarmResponse] = None - other_alarm: Optional[OtherAlarmResponse] = None - fire_suppression: Optional[FireSuppressionResponse] = None - cooking_fire_suppression: Optional[CookingFireSuppressionResponse] = None - electric_hazards: Optional[List[ElectricHazardResponse]] = Field(None, title="Electric Hazards") - powergen_hazards: Optional[List[PowergenHazardResponse]] = Field(None, title="Powergen Hazards") - csst_hazard: Optional[CsstHazardResponse] = None - medical_oxygen_hazard: Optional[MedicalOxygenHazardResponse] = None - weather: Optional[WeatherResponse] = Field( - None, - description="Weather conditions at the time of `dispatch.call_create`, if available", - ) - census_tract: Optional[CensusTractResponse] = Field( - None, description="Census tract information, if available" - ) - incident_analysis_neris_id: Optional[constr(pattern=r"^IA\|FD\d{8}\|[\w\-\:]+\|\d{10}$")] = ( - Field( - None, - description="Unique identifier of incident analysis, if present.", - title="Incident Analysis Neris Id", - ) - ) - - -class ListIncidentsResponse(BaseModel): - incidents: List[IncidentResponse] = Field(..., title="Incidents") - prev_cursor: Optional[str] = Field(None, title="Prev Cursor") - next_cursor: Optional[str] = Field(None, title="Next Cursor") - - class ListUserInfoResponse(BaseModel): page_size: int = Field(..., title="Page Size") page_count: int = Field(..., title="Page Count") @@ -14068,6 +14080,24 @@ class OtherAlarmPayload(BaseModel): ) +class ParcelResponse(BaseModel): + neris_uid: Optional[int] = Field( + None, description="The NERIS unique identifier for the item.", title="Neris Uid" + ) + last_modified: AwareDatetime = Field( + ..., + description="The date and time the top-level item was created or updated in the system.", + examples=[ + "2024-06-13T21:14:02.162497-07:00", + "1718338442.162497", + 1718338442.162497, + 1718338442, + ], + title="Last Modified", + ) + summary: Optional[ParcelSummary] = Field(None, description="Summary information for the parcel") + + class PatchActionAction(BaseModel): model_config = ConfigDict( extra="forbid", @@ -15160,6 +15190,48 @@ class CreateDepartmentPayload(BaseModel): ) +class ExposureResponse(BaseModel): + neris_uid: Optional[int] = Field( + None, description="The NERIS unique identifier for the item.", title="Neris Uid" + ) + last_modified: AwareDatetime = Field( + ..., + description="The date and time the top-level item was created or updated in the system.", + examples=[ + "2024-06-13T21:14:02.162497-07:00", + "1718338442.162497", + 1718338442.162497, + 1718338442, + ], + title="Last Modified", + ) + people_present: Optional[bool] = Field( + None, + description="Whether people were present at the time of the incident.", + title="People Present", + ) + displacement_count: Optional[int] = Field( + None, + description=" Number of people/businesses displaced.", + title="Displacement Count", + ) + location_detail: Union[ExternalExposureResponse, InternalExposureResponse] = Field( + ..., title="Location Detail" + ) + location: LocationResponse + location_use: Optional[LocationUseResponse] = None + damage_type: str = Field(..., title="Damage Type") + point: Optional[Union[GeoPoint, GeoMultipolygon, str]] = Field(None, title="Point") + polygon: Optional[Union[GeoPoint, GeoMultipolygon, str]] = Field(None, title="Polygon") + displacement_causes: Optional[List[str]] = Field( + None, description="Causes of displacement.", title="Displacement Causes" + ) + parcel: Optional[ParcelResponse] = Field( + None, + description="Parcel information for the exposure coordinates, if available", + ) + + class FireSuppressionPayload(BaseModel): model_config = ConfigDict( extra="forbid", @@ -15193,6 +15265,7 @@ class IncidentAnalysisResponse(BaseModel): ) department: Optional[NerisApiIncidentAnalysisModelsDepartmentTimeZoneResponse] = None base: IncidentAnalysisBaseResponse + incident_analysis_status: IncidentAnalysisStatusResponse hazsit: Optional[HazsitWithReleaseFactorsResponse] = Field( None, description="The hazmat/hazsit analysis for the incident." ) @@ -15261,6 +15334,96 @@ class IncidentPayload(BaseModel): medical_oxygen_hazard: Optional[MedicalOxygenHazardPayload] = None +class IncidentResponse(BaseModel): + neris_id: constr(pattern=r"^FD\d{8}\|[\w\-\:]+\|\d{10}$") = Field( + ..., + description="NERIS ID of the incident. This is comprised of the department NERIS ID concatenated with `dispatch.incident_number` and the epoch time of `dispatch.call_create` in the record as initially submitted. An incident's NERIS_ID is immutable, and so should not be relied upon for extraction of `incident_number` or `call_create`, as these attributes could have been updated.", + examples=[ + "FD12345678|abc123xyz|1729023498", + "FD24027334|incident42:f-tiw|1729023498", + "FD12345678|0457812893477|1729023498", + ], + title="Neris Id", + ) + last_modified: AwareDatetime = Field( + ..., + description="The date and time the top-level item was created or updated in the system.", + examples=[ + "2024-06-13T21:14:02.162497-07:00", + "1718338442.162497", + 1718338442.162497, + 1718338442, + ], + title="Last Modified", + ) + department: Optional[NerisApiIncidentModelsDepartmentTimeZoneResponse] = None + submitter_account_type: TypeAccountValue + base: IncidentBaseResponse + incident_types: List[IncidentTypeResponse] = Field( + ..., + description="\n - Incidents with a `FIRE` type require all fire suppression and alarm modules: smoke_alarm, fire_alarm, other_alarm, fire_suppression.\n - Incidents with a `FIRE||STRUCTURE_FIRE||CONFINED_COOKING_APPLIANCE_FIRE` type require the cooking_fire_suppression module.\n ", + title="Incident Types", + ) + incident_status: IncidentStatusResponse + special_modifiers: Optional[List[SpecialModifierResponse]] = Field( + None, title="Special Modifiers" + ) + aids: Optional[List[AidResponse]] = Field(None, title="Aids") + nonfd_aids: Optional[List[NonfdAidResponse]] = Field(None, title="Nonfd Aids") + actions_tactics: Optional[ActionTacticResponse] = None + dispatch: DispatchResponse + tactic_timestamps: Optional[IncidentTacticTimestampsResponse] = None + unit_responses: Optional[List[UnitResponseResponse]] = Field(None, title="Unit Responses") + exposures: Optional[List[ExposureResponse]] = Field(None, title="Exposures") + casualty_rescues: Optional[List[CasualtyRescueResponse]] = Field(None, title="Casualty Rescues") + fire_detail: Optional[FireResponse] = Field( + None, + description="Fire module. Only possible if at least one `FIRE` incident type is present", + ) + hazsit_detail: Optional[HazsitResponse] = Field( + None, + description="Hazsit module. Only possible if at least one `HAZSIT` incident type is present", + ) + medical_details: Optional[List[MedicalResponse]] = Field( + None, + description="Medical module(s). Only possible if at least one `MEDICAL` incident type is present", + title="Medical Details", + ) + smoke_alarm: Optional[SmokeAlarmResponse] = None + fire_alarm: Optional[FireAlarmResponse] = None + other_alarm: Optional[OtherAlarmResponse] = None + fire_suppression: Optional[FireSuppressionResponse] = None + cooking_fire_suppression: Optional[CookingFireSuppressionResponse] = None + electric_hazards: Optional[List[ElectricHazardResponse]] = Field(None, title="Electric Hazards") + powergen_hazards: Optional[List[PowergenHazardResponse]] = Field(None, title="Powergen Hazards") + csst_hazard: Optional[CsstHazardResponse] = None + medical_oxygen_hazard: Optional[MedicalOxygenHazardResponse] = None + weather: Optional[WeatherResponse] = Field( + None, + description="Weather conditions at the time of `dispatch.call_create`, if available", + ) + census_tract: Optional[CensusTractResponse] = Field( + None, description="Census tract information, if available" + ) + parcel: Optional[ParcelResponse] = Field( + None, + description="Parcel information for the incident coordinates, if available", + ) + incident_analysis_neris_id: Optional[constr(pattern=r"^IA\|FD\d{8}\|[\w\-\:]+\|\d{10}$")] = ( + Field( + None, + description="Unique identifier of incident analysis, if present.", + title="Incident Analysis Neris Id", + ) + ) + + +class ListIncidentsResponse(BaseModel): + incidents: List[IncidentResponse] = Field(..., title="Incidents") + prev_cursor: Optional[str] = Field(None, title="Prev Cursor") + next_cursor: Optional[str] = Field(None, title="Next Cursor") + + class PatchActionTacticAction(BaseModel): model_config = ConfigDict( extra="forbid",