| Requires any of the roles: | Agent, Administrator, Agent, Administrator |
| POST,PUT,OPTIONS | /v1/FactFinder |
|---|
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Contact:
contact_id: int = 0
contact_type: int = 0
first_name: Optional[str] = None
last_name: Optional[str] = None
name: Optional[str] = None
role: Optional[str] = None
title: Optional[str] = None
email_work: Optional[str] = None
email_personal: Optional[str] = None
district: Optional[str] = None
district_i_d: int = 0
school: Optional[str] = None
school_i_d: int = 0
state: Optional[str] = None
state_name: Optional[str] = None
state_i_d: int = 0
county_i_d: int = 0
county: Optional[str] = None
phone: Optional[str] = None
department: Optional[str] = None
flow: Optional[str] = None
last_contact: datetime.datetime = datetime.datetime(1, 1, 1)
do_not_contact: bool = False
active: bool = False
agent_id: int = 0
phone_alt: Optional[str] = None
pera_contact_id: int = 0
room_number: Optional[str] = None
source_type_id: int = 0
source_type_desc: Optional[str] = None
source_note: Optional[str] = None
contact_status_id: int = 0
contact_status_desc: Optional[str] = None
ssn: Optional[str] = None
date_of_birth: datetime.datetime = datetime.datetime(1, 1, 1)
deleted: bool = False
is_shared: bool = False
address_line1: Optional[str] = None
address_city: Optional[str] = None
address_state: Optional[str] = None
address_zip: Optional[str] = None
deleted_by: Optional[str] = None
deleted_date_time_utc: Optional[datetime.datetime] = None
has_n_b_c: bool = False
has_fact_finder_sheet: bool = False
middle_initial: Optional[str] = None
tags: Optional[str] = None
date_created: datetime.datetime = datetime.datetime(1, 1, 1)
phone_label: Optional[str] = None
alt_phone_label: Optional[str] = None
carriers: Optional[str] = None
contact_image: Optional[str] = None
company_affiliation: Optional[str] = None
additional_information: Optional[str] = None
has_gift_card: bool = False
contact_category: int = 0
writing_agent_id: int = 0
writing_agent_name: Optional[str] = None
marital_status: Optional[str] = None
total_debt_amount: Decimal = decimal.Decimal(0)
number_of_debt_accounts: int = 0
fact_finder_code_id: int = 0
business_name: Optional[str] = None
dba: Optional[str] = None
contact_g_u_i_d: Optional[str] = None
project_end_date: datetime.datetime = datetime.datetime(1, 1, 1)
rate: int = 0
job_i_d: int = 0
job_name: Optional[str] = None
job_count: int = 0
locked: bool = False
locked_by_agent_id: int = 0
locked_timestamp: datetime.datetime = datetime.datetime(1, 1, 1)
initials: Optional[str] = None
contact_category_name: Optional[str] = None
sms_opt_in: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class FactFinderSheet:
fact_finder_sheet_id: int = 0
contact_id: int = 0
employment_years: Optional[str] = None
past_occupations: Optional[str] = None
client_gross_mthly_income: Optional[Decimal] = None
client_net_mthly_income: Optional[Decimal] = None
household_gross_mthly_income: Optional[Decimal] = None
household_net_mthly_income: Optional[Decimal] = None
estimated_expenses: Optional[Decimal] = None
discretionary_income: Optional[Decimal] = None
desired_retirement_income: Optional[Decimal] = None
retirement_goals: Optional[str] = None
emergency_fund_mthly_contrib: Optional[Decimal] = None
emergency_fund_balance: Optional[Decimal] = None
emergency_fund_complete: Optional[bool] = None
work_status: Optional[str] = None
unused_sick_days: Optional[Decimal] = None
unused_sick_hours: Optional[Decimal] = None
contract_base_serv_per_yr_days: Optional[Decimal] = None
contract_base_serv_per_yr_hours: Optional[Decimal] = None
days_per_week: Optional[Decimal] = None
hours_per_week: Optional[Decimal] = None
months_per_year: Optional[Decimal] = None
num_pre_tax_checks_per_yr: Optional[int] = None
years_with_other_districts: Optional[Decimal] = None
primary_life_insurance: Optional[bool] = None
pli_carrier: Optional[str] = None
pli_face_amount: Optional[Decimal] = None
pli_issue_date: Optional[datetime.datetime] = None
pli_premium: Optional[Decimal] = None
pli_type: Optional[str] = None
pli_type_of: Optional[str] = None
pli_cash_value: Optional[Decimal] = None
spouse_life_insurance: Optional[bool] = None
sli_carrier: Optional[str] = None
sli_face_amount: Optional[Decimal] = None
sli_issue_date: Optional[datetime.datetime] = None
sli_premium: Optional[Decimal] = None
sli_type: Optional[str] = None
sli_type_of: Optional[str] = None
sli_cash_value: Optional[Decimal] = None
primary_l_t_c_insurance: Optional[bool] = None
pltc_premium: Optional[Decimal] = None
primary_disability_insurance: Optional[bool] = None
pdi_premium: Optional[Decimal] = None
spouse_l_t_c_insurance: Optional[bool] = None
sltc_premium: Optional[Decimal] = None
spouse_disability_insurance: Optional[bool] = None
sdi_premium: Optional[Decimal] = None
has_retirement_savings: Optional[bool] = None
has_prior_employment_retirement_savings: Optional[bool] = None
has_distribution_plan: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ContactSpouse:
contact_spouse_id: int = 0
contact_id: int = 0
name: Optional[str] = None
dob: Optional[datetime.datetime] = None
cell: Optional[str] = None
employer: Optional[str] = None
years: Optional[Decimal] = None
position: Optional[str] = None
email: Optional[str] = None
past_occupations: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ContactChild:
contact_child_id: int = 0
contact_id: int = 0
name: Optional[str] = None
dob: Optional[datetime.datetime] = None
fund: Optional[str] = None
contribution: Optional[Decimal] = None
balance: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ContactRetirementIncome:
contact_retirement_income_id: int = 0
contact_id: int = 0
account_owner: Optional[str] = None
account_type: Optional[str] = None
carrier: Optional[str] = None
total_value: Optional[Decimal] = None
surr_value: Optional[Decimal] = None
date_of_issue: Optional[datetime.datetime] = None
fees: Optional[Decimal] = None
policy_num: Optional[str] = None
contrib: Optional[Decimal] = None
emp_notes: Optional[str] = None
tax_code: Optional[str] = None
surr_charge: Optional[Decimal] = None
third_prty_pprwrk_o_k: Optional[bool] = None
addl_forms_reqd: Optional[bool] = None
original_forms_reqd: Optional[bool] = None
signature_guar_reqd: Optional[bool] = None
fax_accepted: Optional[bool] = None
fax_number: Optional[str] = None
mailing_addr: Optional[str] = None
mailing_city: Optional[str] = None
mailing_state: Optional[str] = None
mailing_zip: Optional[str] = None
has_outstanding_loans: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ContactExpense:
contact_expense_id: int = 0
contact_id: int = 0
expense_type: Optional[str] = None
description: Optional[str] = None
balance: Optional[Decimal] = None
interest_rate: Optional[Decimal] = None
minimum_payment: Optional[Decimal] = None
monthly_payment: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ContactClientReferral:
contact_client_referral_id: int = 0
contact_id: int = 0
name: Optional[str] = None
campus: Optional[str] = None
room: Optional[str] = None
phone: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ContactLTAInfo:
contact_l_t_a_info_id: int = 0
contact_id: int = 0
plan_type: Optional[str] = None
company: Optional[str] = None
contribution: Optional[Decimal] = None
balance: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ContactPension:
contact_pension_id: int = 0
contact_id: int = 0
pension_system: Optional[str] = None
pension_start_date: Optional[datetime.datetime] = None
service_credit: Optional[Decimal] = None
service_credit_as_of_date: Optional[datetime.datetime] = None
desired_retirement_date: Optional[datetime.datetime] = None
desired_retirement_age: int = 0
spousal_benefit_desired: Optional[bool] = None
formula_percent: Optional[Decimal] = None
formula_at: Optional[Decimal] = None
defined_benefit_balance: Optional[Decimal] = None
defined_benefit_spouse_balance: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class FactFinderSheetExtended:
contact: Optional[Contact] = None
fact_finder_sheet: Optional[FactFinderSheet] = None
spouse: Optional[ContactSpouse] = None
children: List[ContactChild] = field(default_factory=list)
income_sources: List[ContactRetirementIncome] = field(default_factory=list)
additional_notes: Optional[str] = None
expenses: List[ContactExpense] = field(default_factory=list)
referrals: List[ContactClientReferral] = field(default_factory=list)
lta_info: List[ContactLTAInfo] = field(default_factory=list)
pensions: List[ContactPension] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class FactFinderRequest:
fact_finder_sheet: Optional[FactFinderSheetExtended] = None
data_entry: bool = False
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /v1/FactFinder HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length
{"FactFinderSheet":{"Contact":{"ContactId":0,"ContactType":0,"FirstName":"String","LastName":"String","Name":"String","Role":"String","Title":"String","EmailWork":"String","EmailPersonal":"String","District":"String","DistrictID":0,"School":"String","SchoolID":0,"State":"String","StateName":"String","StateID":0,"CountyID":0,"County":"String","Phone":"String","Department":"String","Flow":"String","LastContact":"0001-01-01T00:00:00.0000000","DoNotContact":false,"Active":false,"AgentId":0,"PhoneAlt":"String","PeraContactId":0,"RoomNumber":"String","SourceTypeId":0,"SourceTypeDesc":"String","SourceNote":"String","ContactStatusId":0,"ContactStatusDesc":"String","SSN":"String","DateOfBirth":"0001-01-01T00:00:00.0000000","Deleted":false,"IsShared":false,"address_line1":"String","address_city":"String","address_state":"String","address_zip":"String","DeletedBy":"String","DeletedDateTimeUtc":"0001-01-01T00:00:00.0000000","HasNBC":false,"HasFactFinderSheet":false,"MiddleInitial":"String","Tags":"String","DateCreated":"0001-01-01T00:00:00.0000000","PhoneLabel":"String","AltPhoneLabel":"String","Carriers":"String","ContactImage":"String","CompanyAffiliation":"String","AdditionalInformation":"String","HasGiftCard":false,"ContactCategory":0,"WritingAgentId":0,"WritingAgentName":"String","MaritalStatus":"String","TotalDebtAmount":0,"NumberOfDebtAccounts":0,"FactFinderCodeId":0,"BusinessName":"String","DBA":"String","ContactGUID":"00000000000000000000000000000000","ProjectEndDate":"0001-01-01T00:00:00.0000000","Rate":0,"JobID":0,"JobName":"String","JobCount":0,"Locked":false,"LockedByAgentId":0,"LockedTimestamp":"0001-01-01T00:00:00.0000000","Initials":"String","ContactCategoryName":"String","SMSOptIn":false},"FactFinderSheet":{"FactFinderSheetId":0,"ContactId":0,"EmploymentYears":"String","PastOccupations":"String","ClientGrossMthlyIncome":0,"ClientNetMthlyIncome":0,"HouseholdGrossMthlyIncome":0,"HouseholdNetMthlyIncome":0,"EstimatedExpenses":0,"DiscretionaryIncome":0,"DesiredRetirementIncome":0,"RetirementGoals":"String","EmergencyFundMthlyContrib":0,"EmergencyFundBalance":0,"EmergencyFundComplete":false,"WorkStatus":"String","UnusedSickDays":0,"UnusedSickHours":0,"ContractBaseServPerYrDays":0,"ContractBaseServPerYrHours":0,"DaysPerWeek":0,"HoursPerWeek":0,"MonthsPerYear":0,"NumPreTaxChecksPerYr":0,"YearsWithOtherDistricts":0,"PrimaryLifeInsurance":false,"PLICarrier":"String","PLIFaceAmount":0,"PLIIssueDate":"0001-01-01T00:00:00.0000000","PLIPremium":0,"PLIType":"String","PLITypeOf":"String","PLICashValue":0,"SpouseLifeInsurance":false,"SLICarrier":"String","SLIFaceAmount":0,"SLIIssueDate":"0001-01-01T00:00:00.0000000","SLIPremium":0,"SLIType":"String","SLITypeOf":"String","SLICashValue":0,"PrimaryLTCInsurance":false,"PLTCPremium":0,"PrimaryDisabilityInsurance":false,"PDIPremium":0,"SpouseLTCInsurance":false,"SLTCPremium":0,"SpouseDisabilityInsurance":false,"SDIPremium":0,"HasRetirementSavings":false,"HasPriorEmploymentRetirementSavings":false,"HasDistributionPlan":false},"Spouse":{"ContactSpouseId":0,"ContactId":0,"Name":"String","DOB":"0001-01-01T00:00:00.0000000","Cell":"String","Employer":"String","Years":0,"Position":"String","Email":"String","PastOccupations":"String"},"Children":[{"ContactChildId":0,"ContactId":0,"Name":"String","DOB":"0001-01-01T00:00:00.0000000","Fund":"String","Contribution":0,"Balance":0}],"IncomeSources":[{"ContactRetirementIncomeId":0,"ContactId":0,"AccountOwner":"String","AccountType":"String","Carrier":"String","TotalValue":0,"SurrValue":0,"DateOfIssue":"0001-01-01T00:00:00.0000000","Fees":0,"PolicyNum":"String","Contrib":0,"EmpNotes":"String","TaxCode":"String","SurrCharge":0,"ThirdPrtyPprwrkOK":false,"AddlFormsReqd":false,"OriginalFormsReqd":false,"SignatureGuarReqd":false,"FaxAccepted":false,"FaxNumber":"String","MailingAddr":"String","MailingCity":"String","MailingState":"String","MailingZip":"String","HasOutstandingLoans":false}],"AdditionalNotes":"String","Expenses":[{"ContactExpenseId":0,"ContactId":0,"ExpenseType":"String","Description":"String","Balance":0,"InterestRate":0,"MinimumPayment":0,"MonthlyPayment":0}],"Referrals":[{"ContactClientReferralId":0,"ContactId":0,"Name":"String","Campus":"String","Room":"String","Phone":"String"}],"LTAInfo":[{"ContactLTAInfoId":0,"ContactId":0,"PlanType":"String","Company":"String","Contribution":0,"Balance":0}],"Pensions":[{"ContactPensionId":0,"ContactId":0,"PensionSystem":"String","PensionStartDate":"0001-01-01T00:00:00.0000000","ServiceCredit":0,"ServiceCreditAsOfDate":"0001-01-01T00:00:00.0000000","DesiredRetirementDate":"0001-01-01T00:00:00.0000000","DesiredRetirementAge":0,"SpousalBenefitDesired":false,"FormulaPercent":0,"FormulaAt":0,"DefinedBenefitBalance":0,"DefinedBenefitSpouseBalance":0}]},"DataEntry":false}