Source code for britecore_sdk.api.api_calls.v2.deliverables

"""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", ]