import { URLPayload } from '../../commonPayloadTypes/urlPayload'; import { ID } from '../../commonStateTypes/common'; import { SystemInfo } from '../../commonStateTypes/systemInfo'; import { ZeniAPIResponse } from '../../responsePayload'; import { CompanyPayload, UserReimbursementInfoDataPayload } from '../company/companyPayload'; import { SubscriptionSummaryPayload } from '../subscription/subscriptionSummary/subscriptionSummaryPayload'; import { MasterTOSInfoPayload } from '../userRole/userRolePayload'; import { CapitalizableClassificationType, CapitalizableMatchPattern, CapitalizableThresholdSource } from './tenantState'; type TenantsResponse = ZeniAPIResponse; export interface TenantsData { tenants: TenantPayload[]; user: TenantUserPayload; companies?: CompanyPayload[]; } /** * Platform intends to start sending user related details * at this level. currently there is a mix of details also * being sent within TenantPayload */ export interface TenantUserPayload { rewards_feature_last_viewed_time: string | null; is_treasury_promo_intro_closed_by_outside_click?: boolean; is_treasury_promo_video_played?: boolean; is_treasury_promo_video_remind_me_later_clicked?: boolean; login_counter_for_treasury_promo_video?: number; } interface TenantPayload { accounting_class_ids: string[]; accounting_method_for_avg_net_burn: string; book_close_date: string | null; chargebee_customer_id: ID; company_id: ID; company_name: string; create_time: string; hubspot_id: ID | null; invite_accept_time: string; invite_create_time: string; inviter_email: string; inviter_id: ID; is_accounting_classes_enabled: boolean; is_accounting_projects_enabled: boolean; is_admin: boolean; is_ap_analyst: boolean; is_banker: boolean; is_banking_enabled: boolean; is_bill_pay_admin: boolean; is_bill_pay_user: boolean; is_book_keeping_enabled: boolean; is_bookkeeping_admin: boolean; is_bookkeeping_user: boolean; is_card_enabled: boolean; is_cfo_enabled: boolean; is_charge_card_admin: boolean; is_charge_card_user: boolean; is_company_officer: boolean; is_controller: boolean; is_customer_created: boolean; is_customer_success_manager: boolean; is_deleted: boolean; is_deposit_accounts_admin: boolean; is_deposit_accounts_user: boolean; is_email_group_created: boolean; is_investor_or_banker: boolean; is_invite_accepted: boolean; is_invited: boolean; is_onboarding_completed: boolean; is_other_products_enabled: boolean; is_payroll_enabled: boolean; is_preparer: boolean; is_reimbursements_admin: boolean; is_reimbursements_user: boolean; is_reviewer: boolean; is_spend_management_enabled: boolean; is_tax_enabled: boolean; is_tax_lead: boolean; is_treasury_admin: boolean; is_treasury_enabled: boolean; is_treasury_user: boolean; is_zeni: boolean; is_zeni_support_user: boolean; manager_user_id: string | null; no_completed_months_used_for_avg_net_burn: number; qbo_realm_id: ID; tenant_email_domain: string; tenant_id: ID; time_span_id_for_avg_net_burn: string; update_time: string; user_email: string; user_email_domain: string; user_id: ID; user_last_check_in_time_into_tenant: string; user_role_id: ID; capitalizable_account_overrides?: Record | null; capitalizable_accounts?: CapitalizableAccountsPayload | null; capitalization_onboarding_dismissed_accounts?: Record | null; capitalization_onboarding_shown_for_fixed_asset?: boolean; capitalization_onboarding_shown_for_prepaid?: boolean; master_tos_info?: MasterTOSInfoPayload; receipts_email?: string | null; reimbursement_info?: UserReimbursementInfoDataPayload; zeni_book_close_date?: string; zeni_book_close_month_and_year?: string; } export interface CapitalizableAccountPayload { account_id: string; classification_type: CapitalizableClassificationType; match_pattern: CapitalizableMatchPattern; sample_count: number; threshold_source: CapitalizableThresholdSource | null; threshold_value: number | null; } export interface CapitalizableAccountsPayload { accounts: CapitalizableAccountPayload[]; computed_at: string; } interface LoggedInUserPayload { first_name: string | null; last_name: string | null; phone_number: string | null; photo: URLPayload; user_id: ID; } interface UserData { user: LoggedInUserPayload; } interface MagicLinkSignInData { otp_challenge?: string; phone_number?: string; user?: LoggedInUserPayload; user_email?: string; } interface Session { session_id: ID; } interface sendEmailMagicLinkToUserData { code_verifier: string; email: string; system_info?: SystemInfo; } interface VerifyDeviceWithTwoFAData { user: LoggedInUserPayload; } type SignInResponse = ZeniAPIResponse; type MagicLinkSignInResponse = ZeniAPIResponse; type VerifyDeviceWithTwoFAResponse = ZeniAPIResponse; type sendEmailMagicLinkToUserResponse = ZeniAPIResponse; type SignOutResponse = ZeniAPIResponse; interface RoleResourcePayload { create_time: string; is_exclude: boolean; is_zeni: boolean; resource: string; resource_version: number; role_resource_id: string; update_time: string; } interface RoleResourcesData { resources: RoleResourcePayload[]; } type RoleResourcesResponse = ZeniAPIResponse; interface ConnectionsPayload { connections: { accounting: ConnectionDataPayload[]; payments: ConnectionDataPayload[]; email?: ConnectionDataPayload[]; revenue?: ConnectionDataPayload[]; }; } interface ConnectionWithMetaPayload { connection_id: ID; connection_name: string; connection_type: string; user_id: ID; authorization_code?: ID | null; realm_id?: ID | null; } export interface ConnectionDataPayload extends ConnectionWithMetaPayload { connection_name_for_display: string; connection_type_for_display: string; create_time: string; is_valid: boolean; update_time: string; api_key?: ID | null; authorization_code?: ID | null; company_id?: ID | null; realm_id?: ID | null; site?: string | null; } type ConnectionsResponse = ZeniAPIResponse; type SaveConnectionResponse = ZeniAPIResponse; type SubscriptionSummaryForTenantResponse = ZeniAPIResponse; type OnboardingTenantResponse = ZeniAPIResponse; /** Lets export interfaces and types */ export { TenantsResponse, TenantPayload, LoggedInUserPayload, UserData, SignInResponse, SignOutResponse, RoleResourcePayload, RoleResourcesResponse, ConnectionsPayload, ConnectionWithMetaPayload, ConnectionsResponse, SaveConnectionResponse, SubscriptionSummaryForTenantResponse, OnboardingTenantResponse, MagicLinkSignInResponse, sendEmailMagicLinkToUserResponse, VerifyDeviceWithTwoFAResponse, };