"""BriteCore v2 Inspections API endpoint wrappers.
This module provides the SDK wrapper for updating inspection dates for a
policy or property.
"""
from logging import Logger
from typing import Any, Unpack
from urllib3 import BaseHTTPResponse, HTTPResponse
from britecore_sdk import logger
from britecore_sdk.api.api_calls import (
BritecoreAPIClient,
RequestParameters,
api_client,
)
from britecore_sdk.exceptions import BritecoreError
LOGGER: Logger = logger
API_CLIENT: BritecoreAPIClient = api_client
def update_inspection_dates(
policy_number: str | None = None,
property_id: str | None = None,
next_inspection_date: str | None = None,
inspection_date_request: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Update inspection dates for a policy or property.
POST /api/v2/inspections/update_inspection_dates
"""
local_env: dict[str, str | None] = {**locals()}
if not policy_number and not property_id:
BritecoreError.MissingParameter("policy_number or property_id is required")
parameter_list: list[dict[str, str | None]] = [
{"policy_number": policy_number},
{"property_id": property_id},
]
parameter_priority: list[str] = ["property_id", "policy_number"]
inspection_json: dict[str, str | None] = api_client.multiple_parameter_verification(
parameter_list, parameter_priority
)
LOGGER.debug("Updating inspection dates")
for _, (k, v) in enumerate(local_env.items()):
if v and k not in parameter_priority:
inspection_json.update({k: v})
request_result: BaseHTTPResponse | HTTPResponse | None = API_CLIENT.do_request(
path="/api/v2/inspections/update_inspection_dates",
json=inspection_json,
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/inspections/update_inspection_dates"
)
# --- Autogenerated spec wrappers ---
[docs]
def initiate_property_inspection(
integration_instance_id: str | None = None,
property_id: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Initiate Property Inspection.
POST /api/v2/inspections/initiate_property_inspection
"""
request_json: dict[str, Any] = {
"integration_instance_id": integration_instance_id,
"property_id": property_id,
}
filtered_json = {k: v for k, v in request_json.items() if v is not None}
request_result = API_CLIENT.do_request(
path="/api/v2/inspections/initiate_property_inspection",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/inspections/initiate_property_inspection"
)
[docs]
def update_property_inspection_data(
revision_id: str | None = None,
integration_instance_id: str | None = None,
property_id: str | None = None,
policy_id: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Update Property Inspection Data.
POST /api/v2/inspections/update_property_inspection_data
"""
request_json: dict[str, Any] = {
"revision_id": revision_id,
"integration_instance_id": integration_instance_id,
"property_id": property_id,
"policy_id": policy_id,
}
filtered_json = {k: v for k, v in request_json.items() if v is not None}
request_result = API_CLIENT.do_request(
path="/api/v2/inspections/update_property_inspection_data",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/inspections/update_property_inspection_data"
)
__all__ = [
"initiate_property_inspection",
"update_property_inspection_data",
]