Skip to main content

EFSPIntegration.py_efsp_client

The base python client used to communicate with the E-file proxy server.

Doesn't include anything from docassemble, and can be used without having it installed.

re

logging

requests

LoggerAdapter

Request

PreparedRequest

UUID

uuid4

Response

datetime

Optional

Union

List

Dict

http_client

deepcopy

__all__

SESSION_ID_HEADER

CORR_ID_HEADER

TODO(brycew): Figure out how to add

REQUEST_ID_HEADER

LoggerWithContext Objects

class LoggerWithContext(LoggerAdapter)

Acts like the merge_extra feature from LoggerAdapter (python 3.13) is always on.

See https://github.com/python/cpython/pull/107292/files.

__init__

def __init__(logger, extra)

process

def process(msg, kwargs)

ApiResponse Objects

class ApiResponse(object)

__init__

def __init__(response_code: int,
error_msg: Optional[str],
data,
*,
session_id: Optional[str] = None,
req_id: Optional[str] = None)

__str__

def __str__()

__repr__

def __repr__()

is_ok

def is_ok()

get_session_id

def get_session_id()

get_req_id

def get_req_id()

_user_visible_resp

def _user_visible_resp(resp: Union[Response, str, None]) -> ApiResponse

This function takes the essentials of a response and puts in into a simple object.

EfspConnection Objects

class EfspConnection()

A python client that communicates with the E-file proxy server.

__init__

def __init__(*,
url: str,
api_key: str,
default_jurisdiction: str = None,
interview_name: str = None,
logger=None)

Arguments

url (str) api_key (str) default_jurisdiction (str)

_call_proxy

def _call_proxy(req: PreparedRequest) -> ApiResponse

_send

def _send(to_send: Request, *, req_id: Optional[UUID] = None) -> ApiResponse

Handle sending the request / structuring the response

get_session_id

def get_session_id()

get_interview_name

def get_interview_name()

get_logger

def get_logger()

verbose_logging

@staticmethod
def verbose_logging(turn_on: bool) -> None

set_verbose_logging

def set_verbose_logging(turn_on: bool) -> None

full_url

def full_url(endpoint: str, jurisdiction: str = None) -> str

tyler_token

def tyler_token() -> Optional[str]

authenticate_user

def authenticate_user(*,
tyler_email: Optional[str] = None,
tyler_password: Optional[str] = None,
jurisdiction: str = None) -> ApiResponse

Authenticates the user with the EFM server (not the E-file proxy).

register_user

def register_user(person: dict,
registration_type: str,
*,
password: str = None,
firm_name_or_id: str = None) -> ApiResponse

registration_type needs to be INDIVIDUAL, FIRM_ADMINISTRATOR, or FIRM_ADMIN_NEW_MEMBER. If registration_type is INDIVIDUAL or FIRM_ADMINISTRATOR, you need a password. If it's FIRM_ADMINISTRATOR or FIRM_ADMIN_NEW_MEMBER, you need a firm_name_or_id

get_password_rules

def get_password_rules() -> ApiResponse

Password rules are stored in the global court, id 0.

TODO: They're in other courts too, including 1. Could they ever be different?

is_valid_password

def is_valid_password(password: str) -> Optional[bool]

get_user_list

def get_user_list() -> ApiResponse

get_users

def get_users() -> ApiResponse

get_user

def get_user(id: str = None) -> ApiResponse

get_user_roles

def get_user_roles(id: str) -> ApiResponse

add_user_roles

def add_user_roles(id: str, roles: List[dict]) -> ApiResponse

remove_user_roles

def remove_user_roles(id: str, roles: List[dict]) -> ApiResponse

change_password

def change_password(id: str, email: str, new_password: str) -> ApiResponse

self_change_password

def self_change_password(current_pwd: str, new_pwd: str) -> ApiResponse

self_resend_activation_email

def self_resend_activation_email(email: str) -> ApiResponse

resend_activation_email

def resend_activation_email(id: str) -> ApiResponse

update_notification_preferences

def update_notification_preferences(
notif_preferences: List[dict]) -> ApiResponse

get_notification_preferences

def get_notification_preferences() -> ApiResponse

get_notification_options

def get_notification_options() -> ApiResponse

AKA NotificationPreferencesList

self_update_user

def self_update_user(email: str = None,
first_name: str = None,
middle_name: str = None,
last_name: str = None) -> ApiResponse

update_user

def update_user(id: str,
email: str = None,
first_name: str = None,
middle_name: str = None,
last_name: str = None) -> ApiResponse

remove_user

def remove_user(id: str) -> ApiResponse

reset_user_password

def reset_user_password(email: str) -> ApiResponse

get_firm

def get_firm() -> ApiResponse

Gets info about the "firm" for an associated user. If a user is a pro-se, this contains their address information.

update_firm

def update_firm(firm: dict) -> ApiResponse

firm should have the below keys:

  • firstName, middleName, lastName if it's a person
  • firmName if it's a business
  • address (a dict), with keys addressLine1 addressLine2, city, state, zipCode, country
  • phoneNumber
  • email

get_attorney_list

def get_attorney_list() -> ApiResponse

get_attorney

def get_attorney(attorney_id)

update_attorney

def update_attorney(attorney_id,
bar_number: str = None,
first_name: str = None,
middle_name: str = None,
last_name: str = None) -> ApiResponse

create_attorney

def create_attorney(bar_number: str,
first_name: str,
middle_name: str = None,
last_name: str = None) -> ApiResponse

remove_attorney

def remove_attorney(attorney_id) -> ApiResponse

get_payment_account_type_list

def get_payment_account_type_list() -> ApiResponse

get_payment_account_list

def get_payment_account_list(court_id: Optional[str] = None) -> ApiResponse

get_payment_account

def get_payment_account(payment_account_id: str) -> ApiResponse

update_payment_account

def update_payment_account(payment_account_id: str,
account_name: str = None,
active: bool = True) -> ApiResponse

remove_payment_account

def remove_payment_account(payment_account_id: str) -> ApiResponse

create_waiver_account

def create_waiver_account(account_name: str, is_global: bool) -> ApiResponse

get_global_payment_account_list

def get_global_payment_account_list() -> ApiResponse

get_global_payment_account

def get_global_payment_account(global_payment_account_id: str) -> ApiResponse

update_global_payment_account

def update_global_payment_account(global_payment_account_id: str,
account_name: str = None,
active: bool = True) -> ApiResponse

remove_global_payment_account

def remove_global_payment_account(
global_payment_account_id: str) -> ApiResponse

get_service_contact_list

def get_service_contact_list() -> ApiResponse

get_service_contact

def get_service_contact(service_contact_id) -> ApiResponse

update_service_contact

def update_service_contact(service_contact_id: str,
service_contact: dict,
*,
is_public: bool = None,
is_in_master_list: bool = None,
admin_copy: str = None) -> ApiResponse

create_service_contact

def create_service_contact(service_contact: dict,
*,
is_public: bool,
is_in_master_list: bool,
admin_copy: str = None) -> ApiResponse

remove_service_contact

def remove_service_contact(service_contact_id) -> ApiResponse

get_public_service_contacts

def get_public_service_contacts(first_name: str = None,
middle_name: str = None,
last_name: str = None,
email: str = None) -> ApiResponse

attach_service_contact

def attach_service_contact(service_contact_id: str,
case_id: str,
case_party_id: str = None) -> ApiResponse

detach_service_contact

def detach_service_contact(service_contact_id: str,
case_id: str,
case_party_id: str = None) -> ApiResponse

get_attached_cases

def get_attached_cases(court_id: str, service_contact_id: str) -> ApiResponse

get_public_list

def get_public_list()

get_courts

def get_courts(fileable_only: bool = False,
fileable_type: str = "",
with_names: bool = False) -> ApiResponse

Gets the list of courts.

get_court

def get_court(court_id: str) -> ApiResponse

Gets codes for a specific court

get_court_list

def get_court_list() -> ApiResponse

Gets a list of all of the courts that you can file into. Slightly more limited than get_courts

get_filing_list

def get_filing_list(court_id: str,
user_id: str = None,
start_date: datetime = None,
before_date: datetime = None) -> ApiResponse

Returns a list of filings that a particular user has made with a court.

get_filing

def get_filing(court_id: str, filing_id: str) -> ApiResponse

get_policy

def get_policy(court_id: str) -> ApiResponse

get_filing_status

def get_filing_status(court_id: str, filing_id: str) -> ApiResponse

cancel_filing_status

def cancel_filing_status(court_id: str, filing_id: str) -> ApiResponse

check_filing

def check_filing(court_id: str, all_vars: dict) -> ApiResponse

file_for_review

def file_for_review(court_id: str, all_vars: dict) -> ApiResponse

get_service_types

def get_service_types(court_id: str, all_vars: dict = None) -> ApiResponse

Checks the court info: if it has conditional service types, call a special API with all filing info so far to get service types

calculate_filing_fees

def calculate_filing_fees(court_id: str, all_vars: dict) -> ApiResponse

get_return_date

def get_return_date(court_id: str, req_return_date: datetime,
all_vars_obj: dict) -> ApiResponse

reserve_court_date

def reserve_court_date(court_id: str,
doc_id: str,
range_after: Union[datetime, str] = None,
range_before: Union[datetime, str] = None,
estimated_duration=None) -> ApiResponse

get_cases_raw

def get_cases_raw(court_id: str,
*,
person_name: dict = None,
business_name: str = None,
docket_number: str = None) -> ApiResponse

Finds existing cases at a particular court. Only one of person_name, business_name, or docket_number should be provided at a time. Params: court_id (str) person_name (dict) business_name (str) docket_number (str)

get_case

def get_case(court_id: str, case_id: str) -> ApiResponse

get_document

def get_document(court_id: str, case_id: str) -> ApiResponse

get_service_attach_case_list

def get_service_attach_case_list(court_id: str,
service_contact_id: str) -> ApiResponse

get_service_information

def get_service_information(court_id: str,
case_tracking_id: str) -> ApiResponse

get_service_information_history

def get_service_information_history(court_id: str,
case_tracking_id: str) -> ApiResponse

search_case_categories

def search_case_categories(search_term: Optional[str] = None) -> ApiResponse

retrieve_case_categories

def retrieve_case_categories(
retrieve_name: Optional[str] = None) -> ApiResponse

get_case_categories

def get_case_categories(court_id: str,
fileable_only: bool = False,
timing: Optional[str] = None) -> ApiResponse

get_filer_types

def get_filer_types(court_id: str) -> ApiResponse

search_case_types

def search_case_types(search_term: Optional[str] = None) -> ApiResponse

retrieve_case_types

def retrieve_case_types(retrieve_name: Optional[str] = None) -> ApiResponse

get_case_types

def get_case_types(court_id: str,
case_category: str,
timing: str = None) -> ApiResponse

get_case_type

def get_case_type(court_id: str, case_type: str) -> ApiResponse

get_case_subtypes

def get_case_subtypes(court_id: str, case_type: str) -> ApiResponse

search_filing_types

def search_filing_types(search_term: Optional[str] = None) -> ApiResponse

retrieve_filing_types

def retrieve_filing_types(retrieve_name: Optional[str] = None) -> ApiResponse

get_filing_types

def get_filing_types(court_id: str, case_category: str, case_type: str,
initial: bool) -> ApiResponse

get_service_type_codes

def get_service_type_codes(court_id: str) -> ApiResponse

search_party_types

def search_party_types(search_term: Optional[str] = None) -> ApiResponse

retrieve_party_types

def retrieve_party_types(retrieve_name: Optional[str] = None) -> ApiResponse

get_party_types

def get_party_types(court_id: str, case_type_id: Optional[str]) -> ApiResponse

get_document_types

def get_document_types(court_id: str, filing_type: str) -> ApiResponse

get_motion_types

def get_motion_types(court_id: str, filing_type: str) -> ApiResponse

get_filing_components

def get_filing_components(court_id: str, filing_type: str) -> ApiResponse

search_optional_services

def search_optional_services(search_term: Optional[str] = None) -> ApiResponse

retrieve_optional_services

def retrieve_optional_services(
retrieve_name: Optional[str] = None) -> ApiResponse

get_optional_services

def get_optional_services(court_id: str, filing_type: str) -> ApiResponse

get_cross_references

def get_cross_references(court_id: str, case_type: str) -> ApiResponse

get_damage_amounts

def get_damage_amounts(court_id: str,
case_category: Optional[str] = None) -> ApiResponse

get_procedure_or_remedies

def get_procedure_or_remedies(court_id: str,
case_category: Optional[str] = None
) -> ApiResponse

get_datafield

def get_datafield(court_id: str, field_name: str) -> ApiResponse

get_disclaimers

def get_disclaimers(court_id: str) -> ApiResponse

get_server_id

def get_server_id() -> ApiResponse

get_server_name

def get_server_name() -> ApiResponse

get_logs

def get_logs() -> ApiResponse