"""BriteCore v2 Deliverables API endpoint wrappers.
This module provides wrappers for deliverable attachment lookups and
e-deliverable retrieval in the BriteCore v2 deliverables API.
"""
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 list_attachments(
policy_id: str | None = None,
revision_id: str | None = None,
contact_id: str | None = None,
print_date_from: str | None = None,
print_date_to: str | None = None,
print_state_ne: str | None = None,
print_state: str | None = None,
order_by: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""List deliverable attachments for a policy, contact, or revision.
POST /api/v2/deliverables/list_attachments
"""
local_env: dict[str, str | None] = {**locals()}
if not policy_id and not contact_id and not revision_id:
BritecoreError.MissingParameter("policy_id, contact_id or revision_id required")
parameter_list: list[dict[str, str | None]] = [
{"policy_id": policy_id},
{"contact_id": contact_id},
{"revision_id": revision_id},
]
parameter_priority: list[str] = ["revision_id", "contact_id", "policy_id"]
attachments_search: dict[str, str | None] = (
api_client.multiple_parameter_verification(parameter_list, parameter_priority)
)
for _, (k, v) in enumerate(local_env.items()):
if v and k not in parameter_priority:
attachments_search.update({k: v})
logger.debug("Getting attachments")
request_result: BaseHTTPResponse | HTTPResponse | None = API_CLIENT.do_request(
path="/api/v2/deliverables/list_attachments",
json=attachments_search,
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/list_attachments"
)
def get_attachment(file_id: str, **kwargs: Unpack[RequestParameters]) -> Any:
"""Retrieve a deliverable attachment by file identifier.
POST /api/v2/deliverables/get_attachment
"""
LOGGER.debug("Getting attachment '%s'", file_id)
file_search: dict[str, str] = {"file_id": file_id}
request_result: BaseHTTPResponse | HTTPResponse | None = API_CLIENT.do_request(
path="/api/v2/deliverables/get_attachment", json=file_search, **kwargs
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/get_attachment"
)
def get_edeliverables(
date_from: str,
date_to: str,
unprocessed_only: bool | None = True,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Retrieve e-deliverables for a date range.
POST /api/v2/deliverables/get_edeliverables
"""
required_json: dict[str, str | bool | None] = {
"date_from": date_from,
"date_to": date_to,
"unprocessed_only": unprocessed_only,
}
LOGGER.debug("Getting E-Deliverables\n%s", required_json)
result_request: BaseHTTPResponse | HTTPResponse | None = API_CLIENT.do_request(
"/api/v2/deliverables/get_edeliverables",
json=required_json,
**kwargs,
)
return API_CLIENT.process_result(result_request)
# --- Autogenerated spec wrappers ---
[docs]
def delete_html_template(
name: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Delete HTML template by name.
POST /api/v2/deliverables/delete_html_template
"""
request_json: dict[str, Any] = {
"name": name,
}
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/deliverables/delete_html_template",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/delete_html_template"
)
[docs]
def delete_static_resource(
name: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Delete static resource by name.
POST /api/v2/deliverables/delete_static_resource
"""
request_json: dict[str, Any] = {
"name": name,
}
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/deliverables/delete_static_resource",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/delete_static_resource"
)
[docs]
def expire_all_static_resources(
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Expire all static resources.
POST /api/v2/deliverables/expire_all_static_resources
"""
request_json: dict[str, Any] = {}
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/deliverables/expire_all_static_resources",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/expire_all_static_resources"
)
[docs]
def expire_static_resource(
name: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Expire static resource by name.
POST /api/v2/deliverables/expire_static_resource
"""
request_json: dict[str, Any] = {
"name": name,
}
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/deliverables/expire_static_resource",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/expire_static_resource"
)
[docs]
def getdeliverabledata(
coverage_forms: list[str] | None = None,
invoice_id: str | None = None,
date_cursor: str | None = None,
reason: str | None = None,
state_id: str | None = None,
revision_id: str | None = None,
return_data: bool | None = None,
deliverable_type: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Get deliverable data.
POST /api/v2/deliverables/getDeliverableData
"""
request_json: dict[str, Any] = {
"coverage_forms": coverage_forms,
"invoice_id": invoice_id,
"date_cursor": date_cursor,
"reason": reason,
"state_id": state_id,
"revision_id": revision_id,
"return_data": return_data,
"deliverable_type": deliverable_type,
}
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/deliverables/getDeliverableData",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/getDeliverableData"
)
[docs]
def get_all_html_templates(
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Get all HTML templates.
POST /api/v2/deliverables/get_all_html_templates
"""
request_json: dict[str, Any] = {}
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/deliverables/get_all_html_templates",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/get_all_html_templates"
)
[docs]
def get_all_static_resources(
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Get all static resources.
POST /api/v2/deliverables/get_all_static_resources
"""
request_json: dict[str, Any] = {}
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/deliverables/get_all_static_resources",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/get_all_static_resources"
)
[docs]
def get_dec(
revision_id: str | None = None,
reason: str | None = None,
policy_id: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Get DEC document.
POST /api/v2/deliverables/get_dec
"""
request_json: dict[str, Any] = {
"revision_id": revision_id,
"reason": reason,
"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/deliverables/get_dec",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/get_dec"
)
[docs]
def get_dynamic_fields(
deliverable_template_id: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Get dynamic fields for deliverable template.
POST /api/v2/deliverables/get_dynamic_fields
"""
request_json: dict[str, Any] = {
"deliverable_template_id": deliverable_template_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/deliverables/get_dynamic_fields",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/get_dynamic_fields"
)
[docs]
def get_edeliverables_by_id(
ids: list[str] | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Get e-deliverables by identifiers.
POST /api/v2/deliverables/get_edeliverables_by_id
"""
request_json: dict[str, Any] = {
"ids": ids,
}
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/deliverables/get_edeliverables_by_id",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/get_edeliverables_by_id"
)
[docs]
def get_html_template(
name: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Get HTML template by name.
POST /api/v2/deliverables/get_html_template
"""
request_json: dict[str, Any] = {
"name": name,
}
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/deliverables/get_html_template",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/get_html_template"
)
[docs]
def get_pending_email_count(
from_date: str | None = None,
to_date: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Get pending email count for date range.
POST /api/v2/deliverables/get_pending_email_count
"""
request_json: dict[str, Any] = {
"from_date": from_date,
"to_date": to_date,
}
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/deliverables/get_pending_email_count",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/get_pending_email_count"
)
[docs]
def get_static_resource(
name: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Get static resource by name.
POST /api/v2/deliverables/get_static_resource
"""
request_json: dict[str, Any] = {
"name": name,
}
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/deliverables/get_static_resource",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/get_static_resource"
)
[docs]
def index_edelivery_records(
date_from: str | None = None,
date_to: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Index e-delivery records for date range.
POST /api/v2/deliverables/index_edelivery_records
"""
request_json: dict[str, Any] = {
"date_from": date_from,
"date_to": date_to,
}
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/deliverables/index_edelivery_records",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/index_edelivery_records"
)
[docs]
def regenerate_combined_billing_statements(
force_generation: Any | None = None,
start_date: Any | None = None,
end_date: Any | None = None,
group_billing_number: Any | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Regenerate combined billing statements.
POST /api/v2/deliverables/regenerate_combined_billing_statements
"""
request_json: dict[str, Any] = {
"force_generation": force_generation,
"start_date": start_date,
"end_date": end_date,
"group_billing_number": group_billing_number,
}
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/deliverables/regenerate_combined_billing_statements",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result,
endpoint="/api/v2/deliverables/regenerate_combined_billing_statements",
)
[docs]
def remove_edelivery_records(
date_from: str | None = None,
date_to: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Remove e-delivery records for date range.
POST /api/v2/deliverables/remove_edelivery_records
"""
request_json: dict[str, Any] = {
"date_from": date_from,
"date_to": date_to,
}
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/deliverables/remove_edelivery_records",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/remove_edelivery_records"
)
[docs]
def retrieve_available_document_options(
location_abbr: str | None = None,
location_name: str | None = None,
location_id: str | None = None,
module: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Retrieve available document options.
POST /api/v2/deliverables/retrieve_available_document_options
"""
request_json: dict[str, Any] = {
"location_abbr": location_abbr,
"location_name": location_name,
"location_id": location_id,
"module": module,
}
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/deliverables/retrieve_available_document_options",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result,
endpoint="/api/v2/deliverables/retrieve_available_document_options",
)
[docs]
def retrieve_files_for_entity(
field: str | None = None,
advanced_filters: list[str] | None = None,
success: bool | None = None,
allow_null_reference: bool | None = None,
policy_number: str | None = None,
messages: list[str] | None = None,
ascending: bool | None = None,
claim_number: str | None = None,
Returns: str | None = None,
reference_id: str | None = None,
data: list[str] | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Retrieve files for entity.
POST /api/v2/deliverables/retrieve_files_for_entity
"""
request_json: dict[str, Any] = {
"-------": field,
"advanced_filters": advanced_filters,
"success": success,
"allow_null_reference": allow_null_reference,
"policy_number": policy_number,
"messages": messages,
"ascending": ascending,
"claim_number": claim_number,
"Returns": Returns,
"reference_id": reference_id,
"data": data,
}
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/deliverables/retrieve_files_for_entity",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/retrieve_files_for_entity"
)
[docs]
def retrieve_invoice_document(
invoice_number: str | None = None,
primary_insured: bool | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Retrieve invoice document.
POST /api/v2/deliverables/retrieve_invoice_document
"""
request_json: dict[str, Any] = {
"invoice_number": invoice_number,
"primary_insured": primary_insured,
}
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/deliverables/retrieve_invoice_document",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/retrieve_invoice_document"
)
[docs]
def save_html_template(
show_as_custom_deliverable: bool | None = None,
name: str | None = None,
enabled: bool | None = None,
use_new_pdf_render: bool | None = None,
use_new_html_render: bool | None = None,
html: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Save HTML template.
POST /api/v2/deliverables/save_html_template
"""
request_json: dict[str, Any] = {
"show_as_custom_deliverable": show_as_custom_deliverable,
"name": name,
"enabled": enabled,
"use_new_pdf_render": use_new_pdf_render,
"use_new_html_render": use_new_html_render,
"html": html,
}
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/deliverables/save_html_template",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/save_html_template"
)
[docs]
def save_static_resource(
url: str | None = None,
expire_in: int | None = None,
name: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Save static resource.
POST /api/v2/deliverables/save_static_resource
"""
request_json: dict[str, Any] = {
"url": url,
"expire_in": expire_in,
"name": name,
}
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/deliverables/save_static_resource",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/save_static_resource"
)
[docs]
def set_html_templates_locations(
messages: list[str] | dict[str, Any] | None = None,
data: dict[str, Any] | None = None,
success: bool | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Set HTML templates locations.
POST /api/v2/deliverables/set_html_templates_locations
"""
request_json: dict[str, Any] = {
"messages": messages,
"data": data,
"success": success,
}
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/deliverables/set_html_templates_locations",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/set_html_templates_locations"
)
[docs]
def update_edelivery_records(
records: dict[str, Any] | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Update e-delivery records.
POST /api/v2/deliverables/update_edelivery_records
"""
request_json: dict[str, Any] = {
"records": records,
}
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/deliverables/update_edelivery_records",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/deliverables/update_edelivery_records"
)
__all__ = [
"delete_html_template",
"delete_static_resource",
"expire_all_static_resources",
"expire_static_resource",
"getdeliverabledata",
"get_all_html_templates",
"get_all_static_resources",
"get_dec",
"get_dynamic_fields",
"get_edeliverables_by_id",
"get_html_template",
"get_pending_email_count",
"get_static_resource",
"index_edelivery_records",
"regenerate_combined_billing_statements",
"remove_edelivery_records",
"retrieve_available_document_options",
"retrieve_files_for_entity",
"retrieve_invoice_document",
"save_html_template",
"save_static_resource",
"set_html_templates_locations",
"update_edelivery_records",
]